chiark / gitweb /
chiarks, on mariner
[ian-dotfiles.git] / scripts / xterm-CT
diff --git a/scripts/xterm-CT b/scripts/xterm-CT
new file mode 100755 (executable)
index 0000000..15e8d7c
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+set -e
+titlebase="$1"
+shift
+touch "$HOME/.counters/l.$DISPLAY"
+newcount=`with-lock-ex -w "$HOME/.counters/l.$DISPLAY" perl -e '
+       chdir($ARGV[2]) or die $!;
+       $tb= unpack("H*",$ARGV[1]); $found=0;
+       open(X,"v.$ARGV[0]\0") or die $!;
+       open(Z,">n.$ARGV[0]\0") or die $!;
+       while (<X>) {
+               if (m/^(\d+) $tb$/o && !$found++) {
+                       $nx= $1+1;
+               } else {
+                       print Z "$_" or die $!;
+               }
+       }
+       if (!defined($nx)) { $nx= 1; }
+       print Z "$nx $tb\n" or die $!;
+       close(Z) or die $!;
+       rename("n.$ARGV[0]","v.$ARGV[0]") or die $!;
+       print "$nx\n";
+' "$DISPLAY" "$titlebase" "$HOME/.counters"`
+exec xterm -T "$titlebase"' ['$newcount']' "$@"