chiark / gitweb /
Merge old CVS `ian-dotfiles' repo, as a subtree where we can pick bits
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 16 Dec 2015 23:16:02 +0000 (23:16 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Wed, 16 Dec 2015 23:16:02 +0000 (23:16 +0000)
97 files changed:
from-cvs/.cvsignore [new file with mode: 0644]
from-cvs/autotitle/.cvsignore [new file with mode: 0644]
from-cvs/autotitle/Makefile [new file with mode: 0644]
from-cvs/autotitle/autotitle.c [new file with mode: 0644]
from-cvs/config [new file with mode: 0644]
from-cvs/execute [new file with mode: 0755]
from-cvs/files/_.bash__history [new file with mode: 0644]
from-cvs/files/_.bashrc [new file with mode: 0644]
from-cvs/files/_.configs_Xresources [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-colours=colour [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-colours=mono [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-font=fixed [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-font=larger [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-font=puffball [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-size=normal [new file with mode: 0644]
from-cvs/files/_.configs_Xresources-size=small [new file with mode: 0644]
from-cvs/files/_.configs_checkconfig [new file with mode: 0755]
from-cvs/files/_.configs_chiarks [new file with mode: 0755]
from-cvs/files/_.configs_configure [new file with mode: 0755]
from-cvs/files/_.configs_configure.old [new file with mode: 0644]
from-cvs/files/_.configs_eliforp [new file with mode: 0755]
from-cvs/files/_.configs_list [new file with mode: 0644]
from-cvs/files/_.configs_manualsession [new file with mode: 0755]
from-cvs/files/_.configs_rxprofile [new file with mode: 0755]
from-cvs/files/_.configs_rxprofile-root [new file with mode: 0755]
from-cvs/files/_.configs_setenvir [new file with mode: 0755]
from-cvs/files/_.configs_setenvir-SunOS4 [new file with mode: 0755]
from-cvs/files/_.configs_setenvir-SunOS5 [new file with mode: 0755]
from-cvs/files/_.configs_startemacs [new file with mode: 0755]
from-cvs/files/_.configs_x11start [new file with mode: 0755]
from-cvs/files/_.configs_x11start-colours=colour [new file with mode: 0644]
from-cvs/files/_.configs_x11start-colours=mono [new file with mode: 0644]
from-cvs/files/_.configs_xbiffs [new file with mode: 0755]
from-cvs/files/_.configs_xclients [new file with mode: 0755]
from-cvs/files/_.configs_xmodmap-kb=archim [new file with mode: 0755]
from-cvs/files/_.configs_xmodmap-kb=ds [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=ds3100 [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=dsxt [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=hp [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=liberator [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=mint [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=none [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=pc [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=pericom [new file with mode: 0644]
from-cvs/files/_.configs_xmodmap-kb=sun4 [new file with mode: 0755]
from-cvs/files/_.configs_xmodmap-kb=tektronix [new file with mode: 0644]
from-cvs/files/_.configs_xprofile [new file with mode: 0755]
from-cvs/files/_.configs_xtools [new file with mode: 0755]
from-cvs/files/_.cvsrc [new file with mode: 0644]
from-cvs/files/_.emacs [new file with mode: 0644]
from-cvs/files/_.gdbinit [new file with mode: 0644]
from-cvs/files/_.inputrc [new file with mode: 0644]
from-cvs/files/_.ircrc [new file with mode: 0644]
from-cvs/files/_.lynxrc [new file with mode: 0644]
from-cvs/files/_.mailcap [new file with mode: 0644]
from-cvs/files/_.profile [new file with mode: 0755]
from-cvs/files/_.screenrc [new file with mode: 0644]
from-cvs/files/_.ssh_authorized__keys [new file with mode: 0644]
from-cvs/files/_.trninit [new file with mode: 0644]
from-cvs/files/_.trnmac [new file with mode: 0644]
from-cvs/files/_.vtwmrc [new file with mode: 0644]
from-cvs/files/_.w3m_config [new file with mode: 0644]
from-cvs/files/_.xsession [new file with mode: 0755]
from-cvs/files/bitmap_circle [new file with mode: 0644]
from-cvs/files/bitmap_circle-inv [new file with mode: 0644]
from-cvs/files/bitmap_circle-neg [new file with mode: 0644]
from-cvs/files/bitmap_fischer [new file with mode: 0644]
from-cvs/files/bitmap_mail.bitmap [new file with mode: 0644]
from-cvs/files/bitmap_mail.mask [new file with mode: 0644]
from-cvs/files/bitmap_network.bitmap [new file with mode: 0644]
from-cvs/files/bitmap_network.mask [new file with mode: 0644]
from-cvs/files/bitmap_nomail.bitmap [new file with mode: 0644]
from-cvs/files/bitmap_nomail.mask [new file with mode: 0644]
from-cvs/files/bitmap_server.bitmap [new file with mode: 0644]
from-cvs/files/emacs_dired-alternate.el [new file with mode: 0644]
from-cvs/files/emacs_find-alternate-18style.el [new file with mode: 0644]
from-cvs/files/emacs_ian-aliases.el [new file with mode: 0644]
from-cvs/files/emacs_ian-x.el [new file with mode: 0644]
from-cvs/files/emacs_ian-x19.el [new file with mode: 0644]
from-cvs/files/emacs_ian.el [new file with mode: 0644]
from-cvs/files/emacs_quicker-compile.el [new file with mode: 0644]
from-cvs/files/emacs_x-fix-mouse.el [new file with mode: 0644]
from-cvs/files/personal_scripts_bin_cvsstat [new file with mode: 0755]
from-cvs/files/personal_scripts_bin_iwjendian [new file with mode: 0755]
from-cvs/files/personal_scripts_bin_remoteshell [new file with mode: 0755]
from-cvs/files/personal_scripts_bin_xloadt [new file with mode: 0755]
from-cvs/files/personal_scripts_bin_xterm-CT [new file with mode: 0755]
from-cvs/files/private_ircpass [new file with mode: 0644]
from-cvs/files/private_private.el [new file with mode: 0644]
from-cvs/gpt [new file with mode: 0755]
from-cvs/misc/.cvsignore [new file with mode: 0644]
from-cvs/misc/Makefile [new file with mode: 0644]
from-cvs/misc/close3onwards.c [new file with mode: 0644]
from-cvs/misc/with-lock-ex.c [new file with mode: 0644]
from-cvs/perms [new file with mode: 0644]
from-cvs/process [new file with mode: 0755]
from-cvs/showresult [new file with mode: 0644]

diff --git a/from-cvs/.cvsignore b/from-cvs/.cvsignore
new file mode 100644 (file)
index 0000000..3e75765
--- /dev/null
@@ -0,0 +1 @@
+new
diff --git a/from-cvs/autotitle/.cvsignore b/from-cvs/autotitle/.cvsignore
new file mode 100644 (file)
index 0000000..5d5f986
--- /dev/null
@@ -0,0 +1 @@
+autotitle
diff --git a/from-cvs/autotitle/Makefile b/from-cvs/autotitle/Makefile
new file mode 100644 (file)
index 0000000..6a82f13
--- /dev/null
@@ -0,0 +1,22 @@
+INSTALLDIR=    $(HOME)/bin
+INSTALLED=     $(INSTALLDIR)/autotitle
+X11=           /usr/X11R6
+
+CC=            gcc
+CPPFLAGS=      $(OPTIONS) -I$(X11)/include
+CFLAGS=                $(OPTIMISE)
+OPTIMISE=      -O2
+OPTIONS=       -DNOXTERM
+XLIB=          -L$(X11)/lib -lX11
+
+default:       autotitle
+
+install:       $(INSTALLED)
+
+$(INSTALLED):  autotitle
+               rm -f $@
+               ln autotitle $@
+
+autotitle:     autotitle.c Makefile
+               $(CC) $(CFLAGS) $(CPPFLAGS) autotitle.c -o $@ $(XLIB)
+               strip autotitle
diff --git a/from-cvs/autotitle/autotitle.c b/from-cvs/autotitle/autotitle.c
new file mode 100644 (file)
index 0000000..3ccf235
--- /dev/null
@@ -0,0 +1,609 @@
+/*
+ * Autotitle - copyright (C)1991 Ian Jackson (iwj10@phx.cam.ac.uk)
+ *
+ * Automatically set window titles, prompts etc.
+ * 
+ * Will output the string in AUTOTITLE_STDOUT (in the environment)
+ * to standard output, eg for use in your prompt.
+ * If it can find your X server or your TERM is xterm it will
+ * set your icon name to AUTOTITLE_ICON and your window name
+ * to AUTOTITLE_WINDOW.
+ *
+ * Defaults are, respectively,
+ *  "" (ie no output)
+ *  "%h: %d2. %Y.[U..[U..[D./..%X.L]..R]./.."
+ *  "%h - %d. %Y.[U..[U..[D./..%X.L]..R]./.. %U%?G(%G)%!"
+ *
+ * Environment configuration strings work a bit like printf etc:
+ *
+ * Conversion characters
+ *  %x                         Left edge position of window (if WINDOWID and DISPLAY set).
+ *  %y                 Top edge height.
+ *  %X.p..q..r./.s.    (pqrstrings)[ len(str)*ypos/(yscreen-ysize+1)+0.5 ]
+ *  %Y.p..q..r./.s.    Same for x,y.   If window is off screen, is string s.
+ *                     The dots are delimiters - any char allowed, must
+ *                     be same at both ends of one string p, q or r etc.
+ *                      Number of strings may be 1..oo but /.string. is mandatory.
+ *  %d***.             Current directory; examples of ***'s:
+ *     %d2.            Last two components only
+ *     %d~.            Display home directory as ~ (as opposed to '' or ~)
+ *      %de.            Never use PWD environment variable even if it is correct.
+ *      %dE.            Always use PWD environment variable.
+ *     %dU.            Use home directory for uid from passwd file, not $HOME
+ *     %d3~U.          Combination of the above.
+ *  %n                 Nice value
+ *  %N.p..q..r./.s.    Like %Y and %X only for nice value (range 0..39)
+ *  %U                 Name of uid
+ *  %u                 Numerical uid
+ *  %G                 Name of gid
+ *  %g                 Numerical gid
+ *  %E***.              Environment variable ***, or null string.
+ *  %m                 Umask in numerical form (3 digits) (as set by umask)
+ *  %M                 Umask in rwx--- form (shows perms of file opened 777)
+ *  %h                 Hostname, but truncated to just the host, not FQDN
+ *  %H                 Hostname - FQDN if available, otherwise just machine
+ *  %?g***%!           Do *** if gid != default for this uid
+ *  %?G***%!            Do *** if gid or group name != $GROUP (or uid's grp if no $GROUP)
+ *  %?u***%!           Do *** if uid != $USER (or $LOGNAME if no $USER)
+ *  %?n***%!           Do *** if nice value != 20
+ *  %?mXXX***%!                Do *** if umask != XXX
+ *  %?E###.***%!        Do *** if ### is not an environment variable.
+ *
+ */
+
+#ifndef NOXWINDOWS
+#include <X11/X.h>
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#endif
+#ifndef NOSTDLIB
+#include <stdlib.h>
+#endif
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <pwd.h>
+#include <grp.h>
+#include <limits.h>
+#include <string.h>
+#include <unistd.h>
+#include <math.h>
+#include <ctype.h>
+#ifndef PATH_MAX
+#define PATH_MAX 1024
+#endif
+
+#define forever for(;;)
+
+/* #define NOXWINDOWS /* Define this to remove the X handling code */
+/* #define NODETACH /* Define this to stop autotitle from forking ever */
+/* #define NOXTERM /* Define this to make autotitle not set xterm's titles */
+/* #define NOSTDOUT /* Define this to disable the stdout output */
+#define DEFAULTTITLE "%h - %d. %Y.[U..[U..[D./..%X.L]..R]./.. %U%?G(%G)%!"
+#define DEFAULTICON "%h: %d2. %Y.[U..[U..[D./..%X.L]..R]./.."
+
+#define BUILDMAX 10000
+#define SMALLBUFMAX 100
+#define MAXSCALED 50
+
+#ifndef __HPUX
+static char lto_buf[20];
+char *ltoa(n) long n; { sprintf(lto_buf,"%ld",n); return lto_buf; }
+char *ltoaoct(n) long n; { sprintf(lto_buf,"%lo",n); return lto_buf; }
+#else
+# define ltoaoct(n) ltostr((n),8)
+#endif
+
+#ifndef NOXWINDOWS
+struct geom {
+  int valid;
+  struct geom *child;
+  Window window, root;
+  int x,y;
+  unsigned w,h;
+};
+void geom_force();
+struct geom wg, rg={0,&wg};
+void X_force();
+int X_error_handler();
+#endif /* !NOXWINDOWS */
+
+char *user_name(), *user_nameonly(), *user_home();
+void user_force();
+gid_t user_gid();
+struct passwd *pwent;
+void uid_force();
+uid_t uid;
+
+char *group_name();
+void group_force();
+struct group *grent;
+void gid_force();
+gid_t gid;
+
+char *cwd_force();
+void cwd_setmode();
+int cwd_mode;
+
+void mkstring();
+
+char build[BUILDMAX], *bp;
+char *bp_end= build+BUILDMAX;
+char *cp;
+char *envuser=0;
+
+int umsk;
+
+#ifndef NOXWINDOWS
+Display *display;
+Window window;
+#endif
+int iflevel, ifskiplevel;
+
+void add_string(), add_number(), add_scaled(), add_currentdir();
+void add_umask(), detach(), add_envir();
+char *scaledstr_chop();
+
+main(){
+  char *controlstring, *termtype;
+  int child, newfd;
+
+  umsk= umask(0);  umask(umsk);
+
+#ifndef NOSTDOUT
+  mkstring(0,0, "AUTOTITLE_STDOUT","");
+  if (*build) {
+    write(1,build,strlen(build));
+  }
+#endif /* !NOSTDOUT */
+
+#ifndef NOXTERM
+  termtype= getenv("TERM");
+  if (termtype && !strcmp(termtype,"xterm")) {
+# if !defined(NODETACH) && !defined(NOEARLYDETACH)
+    newfd=dup(2);
+    detach();
+    dup(newfd);
+    close(newfd);
+# endif
+    mkstring("\033]2;","\007", "AUTOTITLE_WINDOW",DEFAULTTITLE);
+    write(2,build,strlen(build));
+    mkstring("\033]1;","\007", "AUTOTITLE_ICON",DEFAULTICON);
+    write(2,build,strlen(build));
+# if !defined(NODETACH) && defined(NOEARLYDETACH)
+    detach();
+# endif
+  } else {
+#endif /* !NOXTERM */
+#ifndef NOXWINDOWS
+# ifndef NODETACH
+    detach();
+# endif /* !NODETACH */
+    X_force();
+    if (window) {
+      mkstring(0,0, "AUTOTITLE_WINDOW",DEFAULTTITLE);
+      XStoreName(display,window,build);
+      mkstring(0,0, "AUTOTITLE_ICON",DEFAULTICON);
+      XSetIconName(display,window,build);
+      XSync(display,0);
+    }
+#endif /* ~ NOXWINDOWS */
+#ifndef NOXTERM
+  }
+#endif
+  exit(0);
+}
+
+void mkstring(initialstring,finalstring,controlenv,controlstring)
+     char *initialstring, *finalstring;
+     char *controlenv, *controlstring;
+{
+  static char *envuser=0, *envstring, *envgroup=0;
+  int inc, chkum, ifskipthis;
+  char smallbuffer[SMALLBUFMAX+1], *p;
+
+  envstring= getenv(controlenv);
+  if (envstring) controlstring= envstring;
+
+  bp= build;
+  ifskiplevel=0; iflevel=0;
+  cp=controlstring;
+  if (initialstring) add_string(initialstring);
+  forever {
+    char *pcp= strchr(cp,'%');
+    if (!pcp) {
+      add_string(cp);
+      break;
+    }
+    *pcp= 0;
+    add_string(cp);
+    cp= pcp+1;
+    switch (*cp++) {
+#ifndef NOXWINDOWS
+    case 'y': geom_force(&wg); add_number(wg.y); break;
+    case 'Y': geom_force(&rg); add_scaled(wg.y,rg.h-wg.h+1); break;
+    case 'x': geom_force(&wg); add_number(wg.x); break;
+    case 'X': geom_force(&rg); add_scaled(wg.x,rg.w-wg.w+1); break;
+#else
+    case 'X': case 'Y': add_scaled(INT_MAX,0); /* skip scaled parameter */
+    case 'x': case 'y': break;
+#endif /* !NOXWINDOWS */
+    case 'd': add_currentdir(); break;
+    case 'G': add_string(group_name()); break; 
+    case 'g': gid_force(); add_number((long)gid); break;
+    case 'U': add_string(user_name()); break;
+    case 'u': uid_force(); add_number((long)uid); break;
+    case 'n': add_number(nice(0)); break;
+    case 'N': add_scaled(nice(0)+20,40); break;
+    case 'm': add_string(ltoaoct((long)umsk)); break;
+    case 'M': add_umask(umsk); break;
+    case 'E': add_envir(); break;
+    case 'h': case 'H':
+      if (!gethostname(smallbuffer,SMALLBUFMAX)) {
+       if (cp[-1] == 'h') {
+         p=strchr(smallbuffer,'.');
+         if (p) *p=0;
+       }
+       add_string(smallbuffer);
+      }
+      break;
+    case '!':
+      if (iflevel>0) iflevel--;
+      if (ifskiplevel>0) ifskiplevel--;
+      break;
+    case '%': add_string("%%"); break;
+    case '?':
+      switch (*cp++) {
+      case 'E':
+       p= strchr(cp,'.');
+       if (p) {
+         *p=0;
+         ifskipthis= 0!=getenv(cp);
+         cp= p+1;
+       } else ifskipthis=0;
+       break;
+      case 'g':        gid_force(); ifskipthis= (gid==user_gid()); break;
+      case 'G':
+       gid_force(); 
+       envgroup= envgroup?envgroup: getenv("GROUP");
+       ifskipthis=
+         envgroup ? (gid==atol(envgroup) || !strcmp(group_name(),envgroup))
+                  : (gid==user_gid());
+       break;
+      case 'u':
+       envuser= envuser?envuser: getenv("USER");
+       envuser= envuser?envuser: getenv("LOGNAME");
+       ifskipthis= (envuser && user_nameonly() &&
+                    !strcmp(envuser,user_nameonly()));
+       break;
+      case 'n':        ifskipthis= (nice(0)==0); break;
+      case 'm':
+       if (sscanf(cp,"%3o%n",&chkum,&inc)==1) {
+         cp+=inc;
+         ifskipthis= umsk==chkum;
+       }
+      } /* switch() for if's */
+      iflevel+=1;
+      ifskiplevel+= ifskiplevel ? 1 : ifskipthis;
+      break;
+    } /* switch for %'s */
+  }
+  if (finalstring) add_string(finalstring);
+}
+
+void add_envir() {
+  char *p, *e;
+
+  p= strchr(cp,'.');
+  if (p) {
+    *p=0;
+    e=getenv(cp);
+    cp=p+1;
+    if (e) add_string(e);
+  }
+}
+    
+void add_string(ns)
+     char *ns;
+{
+  char *nbp= bp+strlen(ns);
+  if (ifskiplevel || nbp > bp_end) return;
+  strcpy(bp,ns);
+  bp=nbp;
+}
+
+void add_number(number)
+     long number;
+{
+  add_string(ltoa(number));
+}
+
+void add_scaled(num,denom)
+     int num,denom;
+{
+  char *sd, *sn[MAXSCALED];
+  int n= 0;
+  double v;
+
+  while (*cp && n<MAXSCALED && *cp!='/') {
+    sn[n++]= scaledstr_chop();
+  }
+  if (*cp) cp++; /* skip the '/' */
+  sd= scaledstr_chop();
+  if (num==INT_MAX && denom==0) return;
+  v= denom? (num/(double)denom) : -1;
+  if (v<0 || v>1) {
+    add_string(sd);
+  } else {
+    add_string(sn[(int)(v*n)]);
+  }
+}
+
+char *scaledstr_chop() {
+  char tc= *cp++;
+  char *rp= cp;
+  char *ep= strchr(cp,tc);
+  if (ep) {
+    cp= ep;
+    *cp++= 0;
+  }
+  return(rp);
+}
+
+void add_umask(u)
+     int u;
+{
+  char buf[4], *bp;
+  int oi, h;
+  if (ifskiplevel) return;
+
+  for (oi=3;
+       oi;
+       oi--, u<<=3) {
+    strcpy(buf,"rwx");
+    h= ((u>>6) & 7);
+    for (bp=buf;
+        bp<buf+3;
+        h<<=1, bp++) {
+      if (h&4) *bp='-';
+    }
+    add_string(buf);
+  }
+}
+
+void add_currentdir() {
+  char *homestring="", *p, *homedir, *amdhome;
+  int comps=10000, chars, totalslashes, skipslashes, len, homeskip;
+  char *buf, nbuf[PATH_MAX+10], nhome[PATH_MAX+10];
+
+  amdhome= getenv("HOME_AMDTMP");
+  homedir= getenv("HOME");
+  cwd_mode= 0;
+  if (ifskiplevel) return;
+  while (*cp && *cp!='.') {
+    if (*cp == 'U') {
+      homedir= 0;
+      cp++;
+    } else if (*cp == 'E') {
+      cwd_setmode(2); cp++;
+    } else if (*cp == 'e') {
+      cwd_setmode(1); cp++;
+    } else if (*cp == '~') {
+      homestring="~/";
+      cp++;
+    } else if (isdigit(*cp)) {
+      if (sscanf(cp,"%d%n",&comps,&chars)==1) {
+       cp+= chars;
+      } else
+       cp++;
+    }
+  }
+  if (*cp) cp++;
+  if (!homedir) {
+    homedir= user_home();
+  }
+  buf= cwd_force();
+  homeskip= 0;
+  if (homedir) {
+    len=strlen(homedir);
+    if (homedir[len-1] != '/') {
+      strcpy(nhome, homedir);
+      strcat(nhome, "/");
+      homedir= nhome;
+      len++;
+    }
+    if (len>1 && !strncmp(buf,homedir,len-1) &&
+       (buf[len-1]=='/' || !(buf[len-1]))) {
+      strcpy(nbuf,homestring);
+      strcat(nbuf,buf+len);
+      buf= nbuf;
+      if (!strlen(buf)) buf="~";
+      homeskip= strlen(homestring);
+    }
+  }
+  if (amdhome) {
+    len=strlen(amdhome);
+    if (amdhome[len-1] != '/') {
+      strcpy(nhome, amdhome);
+      strcat(nhome, "/");
+      amdhome= nhome;
+      len++;
+    }
+    if (len>1 && !strncmp(buf,amdhome,len-1) &&
+       (buf[len-1]=='/' || !(buf[len-1]))) {
+      strcpy(nbuf,homestring);
+      strcat(nbuf,buf+len);
+      buf= nbuf;
+      if (!strlen(buf)) buf="~";
+      homeskip= strlen(homestring);
+    }
+  }
+  totalslashes=0;
+  for (p= buf+homeskip; *p; p++)
+    if (*p=='/') totalslashes++;
+  while (p>buf && p[-1]=='/') { *--p=0; totalslashes--; }
+  skipslashes= totalslashes-comps+1;
+
+  for (p= buf+homeskip;
+       skipslashes>0;
+       p++)
+    if (*p=='/') skipslashes--;
+  if (p==buf+1 || p==buf+homeskip || p==buf+homeskip) p=buf;
+
+  add_string(p);
+}
+
+gid_t user_gid() {
+  user_force();
+  return pwent? pwent->pw_gid: -1;
+}
+
+char *user_nameonly() {
+  user_force();
+  return pwent? pwent->pw_name: 0;
+}
+
+char *user_home() {
+  user_force();
+  return pwent? pwent->pw_dir: 0;
+}
+
+char *user_name() {
+  user_force();
+  if (pwent) return(pwent->pw_name);
+  return(ltoa((long)uid));
+}
+
+void uid_force() {
+  static int valid;
+  if (valid) return;
+  uid= getuid();
+}
+
+void user_force() {
+  static int valid;
+  if (valid) return;
+  uid_force();
+  valid=1;
+  pwent= getpwuid(uid);
+}
+
+char *group_name() {
+  group_force();
+  if (grent) return(grent->gr_name);
+  return(ltoa((long)gid));
+}
+
+void group_force() {
+  static int valid;
+  if (valid) return;
+  gid_force();
+  valid=1;
+  grent= getgrgid(gid);
+}
+
+void gid_force() {
+  static int valid;
+  if (valid) return;
+  gid= getgid();
+}
+
+void cwd_setmode(mode)
+     int mode;
+{
+  cwd_mode=mode; /* 0= default,  1= 'e',  2= 'E' */
+}
+
+int different_files(a,b)
+     char *a, *b;
+{
+  struct stat staa, stab;
+
+  return stat(a,&staa) || stat(b,&stab) ||
+    staa.st_ino != stab.st_ino || staa.st_dev != stab.st_dev;
+}
+       
+char *cwd_force() {
+  static int valid=0, fail;
+  static char buffer[PATH_MAX+1];
+  if (!valid) {
+    if (cwd_mode!=1 /* not 'e' */) {
+      char *result= getenv("PWD");
+      if (result && (cwd_mode /* 'E' */ || !different_files(".",result))) {
+       strncpy(buffer,result,PATH_MAX); buffer[PATH_MAX]=0;
+       valid= 1;
+      }
+    }
+    if (!valid) {
+      valid= getcwd(buffer,PATH_MAX)!=0;
+    }
+    valid=1;
+  }
+  return buffer;
+}
+
+#if (!defined(NOXWINDOWS) || !defined(NOXTERM)) && !defined(NODETACH)
+void detach() {
+  close(0); close(1); close(2); if (fork()!=0) exit(0);
+}
+#endif /* !NODETACH */
+
+#ifndef NOXWINDOWS
+
+void X_force() {
+  static valid;
+  char *widname, *dispname;
+
+  if (valid) return;
+  window= (XID)0; display= (Display*)0;
+  XSetErrorHandler(X_error_handler);
+
+  dispname= getenv("DISPLAY");
+  if (!dispname) return;
+  display= XOpenDisplay(dispname);
+  if (!display) return;
+
+  widname= getenv("WINDOWID");
+  if (!widname) return;
+  window= (XID)(atol(widname));
+  wg.window= window;
+}
+
+int X_error_handler(edisp,eevent)
+     Display *edisp;
+     XErrorEvent *eevent;
+{
+  display= (Display*)0;
+  window= (XID)0;
+  wg.window= rg.window= window;
+  wg.x= wg.y= rg.x= rg.y= -1000;
+  return(0);
+}
+
+void geom_force(g)
+     struct geom *g;
+{
+  unsigned dummyu;
+  int dummys;
+  Window dummyw;
+
+  if (g->valid) return;
+  if (g->child) {
+    geom_force(g->child);
+    g->window= g->child->root;
+  }
+  X_force();
+  if (g->window) {
+    XGetGeometry(display,
+                g->window,&g->root,
+                &dummys,&dummys,&g->w,&g->h,
+                &dummyu,&dummyu);
+    XTranslateCoordinates(display,g->window,g->root,0,0,&g->x,&g->y,&dummyw);
+  } else {
+    g->x= -1000;
+    g->y= -1000;
+  }
+  g->valid= 1;
+}
+#endif /* !NOXWINDOWS */
diff --git a/from-cvs/config b/from-cvs/config
new file mode 100644 (file)
index 0000000..54bf8c7
--- /dev/null
@@ -0,0 +1,50 @@
+@@-
+chomp($nodename= `uname -n`); $? and die "uname $?";
+chomp($username= `whoami`); $? and die "whoami $?";
+
+@he= gethostbyname $nodename or die "gethostbyname $nodename ?";
+@hostnames= ($he[0], split /\s/, $he[1]);
+($hostname)= grep /\./, @hostnames or die "no fqdn in @hostnames";
+
+$nodename =~ s/\..*//;
+$xbindir= '/usr/bin/X11';
+
+chomp($uname= `uname`); $? and die "platform $?";
+if ($uname =~ m/^Linux$/) {
+    chomp($_= `uname -m`); $? and die "platform $?";
+    if (m/^i\d86/) {
+       $platform= 'linux-i386';
+    } else {
+       die "$_ ?";
+    }
+} elsif ($uname =~ m/^SunOS$/) {
+    chomp($_= `uname -r`); $? and die "platform $?";
+    m/^\d+\.\d+/ or die "$_ ?";
+    $platform= "SunOS$&";
+    $xbindir= '/usr/openwin/bin';
+} elsif ($uname =~ m/^FreeBSD/) {
+    chomp($_= `uname -r`); $? and die "platform $?";
+    m/^(\d+\.\d+)\-/ or die "$_ ?";
+    $platform= "FreeBSD-$1";
+    $xbindir= '/usr/X11R6/bin';
+} elsif ($uname =~ m/^HP\-UX/) {
+    chomp($_= `uname -r`); $? and die "platform $?";
+    m/^B\.(\d+\.\d+)$/ or die "$_ ?";
+    $platform= "HP-UX$1";
+} elsif ($uname =~ m/^AIX/) {
+    chomp($_= `uname -rv`); $? and die "platform $?";
+    m/^\d+ (\d+)$/ or die "$_ ?";
+    $platform= "AIX$1";
+} else {
+    die "$uname ?";
+}
+
+$ncipher= $hostname =~ m/\.(ncipher\.com$)/    ? 'cam' :
+          $hostname =~ m/\.(ncipherusa\.com$)/ ? 'bos' :
+          0;
+
+$chiark=  $hostname =~ m/chiark/;
+$laptop=  $hostname =~ m/liberator|norway/;
+
+%ncipherdom= ('cam' => 'ncipher.com',
+             'bos' => 'ncipherusa.com');
diff --git a/from-cvs/execute b/from-cvs/execute
new file mode 100755 (executable)
index 0000000..d2aa2b2
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+set -ex
+
+for f in       autotitle misc
+do
+       cd $f
+       make
+       make install INSTALLDIR=$HOME/personal/@@$platform@@/bin
+       cd ..
+done
diff --git a/from-cvs/files/_.bash__history b/from-cvs/files/_.bash__history
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/from-cvs/files/_.bashrc b/from-cvs/files/_.bashrc
new file mode 100644 (file)
index 0000000..a2984fc
--- /dev/null
@@ -0,0 +1,26 @@
+# Ian Jackson's shell rc
+
+hostname_completion_file=~/.hosts 
+
+export PWD
+
+# My own functions
+ls() { /bin/ls -FC "$@"; }
+ll() { /bin/ls -FCla "$@"; }
+setprompt() { PS1=`autotitle`; export PS1; }
+rs() { eval `/usr/openwin/bin/resize` ; setprompt ; }
+cd() { builtin cd "$@"; setprompt; }
+pu() { builtin pushd "$@"; setprompt; }
+po() { builtin popd "$@"; setprompt; }
+
+# Set up history and prompt
+if [ "$PS1" ]
+then
+       HISTFILE=$HOME/.history/$HOST~$$~
+       AUTOTITLE_STDOUT="@@?
+ $chiark && $username eq 'ian' ?@@-@@;%?u%U%!%?g(%G)%!%?u@%!%h:%d1~.> "
+       AUTOTITLE_WINDOW="%h - %d~. %Y.[U..[M..[D./..%X.L]..M]..R]./.. %U%?G(%G)%!"
+       AUTOTITLE_ICON="%h: %d3~. %Y.[U..[M..[D./..%X.L]..M]..R]./.."
+       export AUTOTITLE_STDOUT AUTOTITLE_WINDOW AUTOTITLE_ICON
+       setprompt
+fi
diff --git a/from-cvs/files/_.configs_Xresources b/from-cvs/files/_.configs_Xresources
new file mode 100644 (file)
index 0000000..506b1e5
--- /dev/null
@@ -0,0 +1,113 @@
+*cut:                          none | left
+*paste:                                none | middle
+*enter:                                none | right
+
+epoch.nonlocal.minibuf:                 false
+
+xv*geometry:                   +10+10
+
+wish*foreground:               grey90
+wish*background:               grey25
+wish*activeForeground:         white
+wish*activeBackground:         grey35
+wish*disabledForeground:       black
+wish*disabledBackground:       grey25
+
+povray*geometry:               +40+10
+povray*background:             black
+povray*foreground:             black
+
+xbiff*title:                   xb iwj
+xbiff*geometry:                        -0-0
+xbiff*foreground:              red3
+xbiff*background:              white
+xbiff*fullPixmap:              bitmap/mail.bitmap
+xbiff*fullPixmapMask:          bitmap/mail.mask
+xbiff*emptyPixmap:             bitmap/nomail.bitmap
+xbiff*emptyPixmapMask:         bitmap/nomail.mask
+xbiff*shapeWindow:             true
+
+xbiffc*title:                  xb chiark
+xbiffc*geometry:               -52-0
+xbiffc*foreground:             black
+xbiffc*background:             white
+xbiffc*fullPixmap:             bitmap/mail.bitmap
+xbiffc*fullPixmapMask:         bitmap/mail.mask
+xbiffc*emptyPixmap:            bitmap/nomail.bitmap
+xbiffc*emptyPixmapMask:                bitmap/nomail.mask
+xbiffc*shapeWindow:            true
+xbiffc*volume:                 -100
+
+xbiffs*title:                  xb sysadmin
+xbiffs*geometry:               -104-0
+xbiffs*foreground:             #203000
+xbiffs*background:             #f0fff0
+xbiffs*fullPixmap:             bitmap/mail.bitmap
+xbiffs*fullPixmapMask:         bitmap/mail.mask
+xbiffs*emptyPixmap:            bitmap/nomail.bitmap
+xbiffs*emptyPixmapMask:                bitmap/nomail.mask
+xbiffs*shapeWindow:            true
+xbiffs*volume:                 -100
+
+xbiffp*title:                  xb ian
+xbiffp*geometry:               -156-0
+xbiffp*foreground:             #400050
+xbiffp*background:             #ffe0ff
+xbiffp*fullPixmap:             bitmap/mail.bitmap
+xbiffp*fullPixmapMask:         bitmap/mail.mask
+xbiffp*emptyPixmap:            bitmap/nomail.bitmap
+xbiffp*emptyPixmapMask:                bitmap/nomail.mask
+xbiffp*shapeWindow:            true
+xbiffp*volume:                 -100
+
+xclock*update:                 1
+xclock*analog:                 true
+
+xlock.mode:                    qix
+
+xman*verticalList:             true
+xman*topBox:                   false
+
+xterm*multiScroll:              True
+xterm*saveLines:                512
+xterm*scrollBar:                TRUE
+xterm*scrollKey:               TRUE
+xterm*scrollTtyOutput:         false
+xterm*visualBell:               False
+xterm*reverseWrap:             TRUE
+
+xlbiff*resetSaver:             TRUE
+
+mwm*XCalc*clientDecoration:    -minimize -maximize
+mwm*XClock*clientDecoration:   -minimize
+mwm*XLoad*clientDecoration:    -minimize
+mwm*iconPlacement:             top left
+mwm*interactivePlacement:      false
+mwm*keyboardFocusPolicy:       pointer
+mwm*resizeBorderWidth:         10
+
+Mosaic*confirmExit:            false
+Mosaic*editCommand:            emacs
+Mosaic*editCommandUseXterm:    false
+Mosaic*trackFullURLs:          true
+Mosaic*urlExpired:             100000000
+Mosaic*homeDocument:           http://www.cl.cam.ac.uk/users/iwj10/
+Mosaic*bodyColors:             false
+Mosaic*bodyImages:             false
+
+Xarchie.archieHost:            archie.doc.ic.ac.uk
+!# archie.doc.ic.ac.uk
+Xarchie.ftpDir:                        /home/quince/iwj/out
+Xarchie.expert:                        TRUE
+Xarchie.searchType:            regexp
+! Xgopher resources
+
+Emacs.internalBorder:          1
+Emacs.verticalScrollBars:      off
+Emacs.menuBar:                 off
+
+emacs.font:                            fixed
+Emacs.font:                            fixed
+emacs19.font:                          fixed
+
+xacpi-simple*geometry:         150x50-52-0
diff --git a/from-cvs/files/_.configs_Xresources-colours=colour b/from-cvs/files/_.configs_Xresources-colours=colour
new file mode 100644 (file)
index 0000000..56d4ff1
--- /dev/null
@@ -0,0 +1,88 @@
+!# Ian Jackson's X Resources file
+!# Colour specifications for colour displays
+
+!# *foreground:                        white
+!# *background:                        black
+!# *borderColor:               brown
+!# *cursorColor:               white
+!# *topShadowColor:            red
+!# *bottomShadowColor:         firebrick
+
+nfast-manager*foreground:                      grey90
+nfast-manager*background:                      grey22
+nfast-manager*HighlightBackground:             grey22
+nfast-manager*activeForeground:                        white
+nfast-manager*activeBackground:                        grey35
+nfast-manager*DisabledForeground:              black
+nfast-manager*DisabledBackground:              grey22
+
+nfast-wish8*foreground:                                grey90
+nfast-wish8*background:                                grey22
+nfast-wish8*HighlightBackground:               grey22
+nfast-wish8*activeForeground:                  white
+nfast-wish8*activeBackground:                  grey35
+nfast-wish8*DisabledForeground:                        black
+nfast-wish8*DisabledBackground:                        grey22
+
+emacs.background:       Black
+emacs.foreground:       White
+emacs.pointerColor:     Cyan
+emacs18.background:       Black
+emacs18.foreground:       White
+emacs18.pointerColor:     Cyan
+emacs19.background:       Black
+emacs19.foreground:       White
+emacs19.pointerColor:     Cyan
+
+xcalc.FKeyFore:        White
+xcalc.FKeyBack:        LightGray
+
+xclock*highlight:              white
+xclock*foreground:             white
+xclock*background:             black
+xclock*hands:                  light blue
+
+xload*highlight:               white
+xload*foreground:              light blue
+xload*background:              black
+
+xterm*background:              black
+xterm*cursorColor:             white
+xterm*pointerColor:             red
+xterm*pointerColorBackground:  white
+xterm*foreground:              white
+xterm*borderColor:             brown
+
+xlbiff*foreground:             white
+xlbiff*background:             red4
+
+mwm*activeBackground:          light steel blue
+mwm*activeBottomShadowColor:   dark slate blue
+mwm*activeForeground:          cyan
+mwm*activeTopShadowColor:      medium blue
+mwm*background:                        brown
+mwm*backgroundTile:            background
+mwm*bottomShadowColor:         black
+mwm*bottomShadowTile:          background
+mwm*foreground:                        cyan
+mwm*foregroundTile:            background
+mwm*iconImageBackground:       dark grey
+mwm*iconImageForeground:       White
+mwm*makeActiveColors:          all
+mwm*makeColors:                        shadow
+mwm*makeIconColors:            shadow
+mwm*menu*background:           black
+mwm*menu*foreground:           goldenrod
+mwm*topShadowColor:            dark blue
+mwm*topShadowTile:             background
+
+xeyes*foreground:              black
+
+bitmap*customization:          
+bitmap*grid:                   TRUE
+bitmap*frame:                  blue
+
+Emacs.region.attributeForeground:              white
+Emacs.highlight.attributeBackground:           blue4
+Emacs.region.attributeBackground:              #005000
+Emacs.secondary-selection.attributeBackground: red4
diff --git a/from-cvs/files/_.configs_Xresources-colours=mono b/from-cvs/files/_.configs_Xresources-colours=mono
new file mode 100644 (file)
index 0000000..8504740
--- /dev/null
@@ -0,0 +1,56 @@
+!# Ian Jackson's X Resources file
+!# Colour specifications for monochrome displays
+
+X-ray*WindowForeground:                black
+X-ray*WindowBackground:                white
+X-ray.ForegroundColor:         black
+X-ray.BackgroundColor:         white
+X-ray.CursorForeground:                black
+X-ray.CursorBackground:                white
+
+*foreground:                   black
+*background:                   white
+*borderColor:                  brown
+*cursorColor:                  white
+*topShadowColor:               red
+*bottomShadowColor:            firebrick
+
+xdvi*cursorColor:      black
+
+emacs*background:       black
+emacs*foreground:       white
+emacs*PaneBackground:  black
+emacs*PaneForeground:  white
+emacs.pointerColor:     Cyan
+
+emacs18*background:       black
+emacs18*foreground:       white
+emacs18*PaneBackground:        black
+emacs18*PaneForeground:        white
+emacs18.pointerColor:     Cyan
+
+xcalc.FKeyFore:        White
+xcalc.FKeyBack:        LightGray
+
+xclock*highlight:              white
+xclock*foreground:             white
+xclock*background:             black
+xclock*hands:                  light blue
+
+xload*background:              black
+xload*highlight:               white
+xload*foreground:              light blue
+
+xterm*background:              white
+xterm*cursorColor:             black
+xterm*pointerColor:             white
+xterm*pointerColorBackground:  black
+xterm*foreground:              black
+
+xlbiff*foreground:             black
+xlbiff*background:             white
+
+xab*foreground:                        white
+xab*background:                        black
+other-xab*foreground:          white
+other-xab*background:          black
diff --git a/from-cvs/files/_.configs_Xresources-font=fixed b/from-cvs/files/_.configs_Xresources-font=fixed
new file mode 100644 (file)
index 0000000..d5c9efc
--- /dev/null
@@ -0,0 +1,10 @@
+!# Ian Jackson's X resources file
+!# Font specifications for small fonts (fixed by default)
+
+emacs.font:                            fixed
+
+xlock.font:                    fr-25
+
+xlbiff*font:                   -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
+
+mwm*font:                      r14
diff --git a/from-cvs/files/_.configs_Xresources-font=larger b/from-cvs/files/_.configs_Xresources-font=larger
new file mode 100644 (file)
index 0000000..7b04ba2
--- /dev/null
@@ -0,0 +1,14 @@
+!# Ian Jackson's X Resources file
+!# Font specifications for larger fonts
+
+*font:                         -*-fixed-bold-r-normal-*-15-*-*-*-*-*-*-*
+
+emacs.font:                    -*-fixed-bold-r-normal-*-15-*-*-*-*-*-*-*
+
+xlock.font:                    -*-charter-bold-r-*-*-24-*-*-*-*-*-iso8859-*
+
+xterm*font:                    -*-fixed-bold-r-normal-*-15-*-*-*-*-*-*-*
+
+xab*NewList.font:              -*-courier-bold-r-*-*-17-*-*-*-*-*-iso8859-*
+
+xlbiff*font:                   -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
diff --git a/from-cvs/files/_.configs_Xresources-font=puffball b/from-cvs/files/_.configs_Xresources-font=puffball
new file mode 100644 (file)
index 0000000..cdc6848
--- /dev/null
@@ -0,0 +1,12 @@
+!# Ian Jackson's X resources file
+!# Font specifications for small fonts (fixed by default)
+
+*font:                         fixed
+
+emacs.font:                            fixed
+
+xlock.font:                    fr-25
+
+xlbiff*font:                   -*-courier-bold-r-*-*-14-*-*-*-*-*-*-*
+
+mwm*font:                      r14
diff --git a/from-cvs/files/_.configs_Xresources-size=normal b/from-cvs/files/_.configs_Xresources-size=normal
new file mode 100644 (file)
index 0000000..26ff366
--- /dev/null
@@ -0,0 +1,27 @@
+!# Ian Jackson's X Resources file
+!# Geometry specifications for normal-sized screen
+
+emacs.geometry:                80x48-0+0
+emacs18.geometry:              80x48-0+0
+emacs19.geometry:              80x48-0+0
+epoch*geometry:                 80x48-0+0
+
+xcalc.Geometry:                130x230+710+0
+
+xclock*geometry:               120x120+163+0
+
+xdvi*geometry:                 865x714+98-0
+
+xload*geometry:                        120x120+295+0
+
+xeyes*geometry:                        150x100+179+280
+
+Ups.Geometry:                  650x875+382+0
+
+Xarchie.toplevel.geometry:     1042x322+52+52
+Xarchie.hostList.geometry:     300x300+0+0
+
+xlbiff*geometry:               -0-0
+xlbiff*bottom:                 TRUE
+
+other-xab*geometry:            +-14--95
diff --git a/from-cvs/files/_.configs_Xresources-size=small b/from-cvs/files/_.configs_Xresources-size=small
new file mode 100644 (file)
index 0000000..f3a672a
--- /dev/null
@@ -0,0 +1,15 @@
+!# Ian Jackson's X Resources file
+!# Geometry specifications for small-sized screen
+
+emacs.geometry:                80x31-0+0
+emacs18.geometry:              80x31-0+0
+
+xcalc.Geometry:                130x230+710+0
+
+xload*geometry:                        120x120+295+0
+
+xclock*geometry:               120x120+163+0
+
+xeyes*geometry:                        150x100+150+250
+
+xlbiff*geometry:               -0+0
diff --git a/from-cvs/files/_.configs_checkconfig b/from-cvs/files/_.configs_checkconfig
new file mode 100755 (executable)
index 0000000..77f6473
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/perl
+# New configuration script
+
+$ENV{'PATH'}.= ':/usr/openwin/bin';
+
+$_= $ENV{'DISPLAY'};
+$_= $ENV{'HOST'}.':0' if m/^:/ || m/^unix:/; 
+s/:.*$//;
+s/\.[^0-9].*$//;
+
+$pfx= shift @ARGV;
+@ARGV && warn "arguments beyond the first ignored\n";
+
+if ($_) {
+    $c{'display'}= $_;
+    $_= `xauth -i extract /dev/null $c{'display'}:0 2>&1`;
+    $c{'xauth'}= length($_) ? 'false' : 'true';
+    $_= `xdpyinfo`;
+    $c{'keycodes'}="$1-$2" if m/range:\s+minimum (\d+), maximum (\d+)\s/;
+    if (m/default screen number:\s+(\d+)\s/) {
+        $defscreen= $1;
+        $_=$' if m/\nscreen \#$defscreen:/;
+        $_="$`\n" if m/\n\S/;
+    }
+    ($c{'pixels_x'}, $c{'pixels_y'}) = ($1,$2)
+                if m/dimensions:\s+(\d+)x(\d+) pixels/;
+    ($c{'mm_x'}, $c{'mm_y'}) = ($1,$2)
+                if m/dimensions:.*\D(\d+)x(\d+) millimeters/;
+    ($c{'dpi_x'}, $c{'dpi_y'}) = ($1,$2)
+        if m/resolution:\s+(\d+)x(\d+) dots per inch/;
+    $c{'depth'} = $1 if m/depth of root window:\s+(\d+) planes/;
+    if (m/default visual id:\s+(\w+)\s/) {
+        $defvisual= $1;
+        $_=$' if m/\n  visual:\s+visual id:\s+$defvisual\s/;
+        $_="$`\n" if m/\n  visual:/;
+    }
+    $c{'visual'} = $1 if m/class:\s+(\w+)\s/;
+    $c{'depth'} = $1 if m/depth:\s+(\d+) planes/;
+}
+
+$c{'host'}= $ENV{'HOST'};
+#$c{'arch'}= $ENV{'ARCH'};
+$_= `uname -sr`; s/\s(\d+)\.\S*/$1/;
+$c{'arch'}= $_;
+
+chdir($ENV{'HOME'});
+chdir('.configs');
+
+open(L, "list") || die "$0: list: $!\n";
+
+while(<L>) {
+    s/\s*$//;
+    next if m/^#/ || m/^$/;
+    $ol= $l= $_;
+    $true=0;
+    while ($l =~ s/\s*(\S+)// && $1 ne ':') {
+        next if $true;
+        $_= $1;
+        if (m/^default$/) {
+            $true= 1;
+        } elsif (m/[<>]=?/) {
+            $lhs= $`;
+            $rhs= $';
+            $op= $&;
+            next unless defined($c{$lhs});
+            $true= eval '$c{$lhs} '.$op.' $rhs';
+        } elsif (m/=/) {
+            $lhs= $`;
+            $rhs= $';
+            next unless defined($c{$lhs});
+            $true= $c{$lhs} eq $rhs;
+        } else {
+            warn "condition `$_' in line $. not understood\n";
+        }
+    }
+    next unless $true;
+    while ($l =~ s/\s*(\S+)//) {
+        unless ($1 =~ m/=/) {
+            warn "consequence `$1' in line $. not understood\n";
+            next;
+        }
+        $c{$`}= $';
+    }
+}
+
+close(L);
+
+while (($k,$v) = each %c) {
+    print " $pfx$k=$v";
+}
+print "\n";
diff --git a/from-cvs/files/_.configs_chiarks b/from-cvs/files/_.configs_chiarks
new file mode 100755 (executable)
index 0000000..d467500
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+eval `cd $HOME && .configs/configure`
+
+ssh -L 6667:chiark:6667 -L 3128:chiark:3128 ijackson@chiark.greenend.org.uk sleep 604800 </dev/null &
+
+case "$1" in
+-q)    exit 0;;
+'')    ;;
+*)     echo >&2 'usage: .../chiarks [-q]'; exit 1;;
+esac
+
+for x in 3 2 1
+do
+       sz=80x55
+       y=$(( 35*$x+100+$pixels_y ))
+       xb=$(( (($pixels_x-503)*(3-$x))/2 ))
+       xterm-CT "chiark ssh #$x" -geometry $sz+$xb+$y \
+               -e ssh chiark.greenend.org.uk -l ijackson &
+       echo -n :
+       xterm-CT "chiark ssh ian #$x" -geometry $sz+$(( $pixels_x + $xb ))+$y \
+               -e ssh chiark.greenend.org.uk -l ian &
+       echo -n :
+done
diff --git a/from-cvs/files/_.configs_configure b/from-cvs/files/_.configs_configure
new file mode 100755 (executable)
index 0000000..a454f04
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+set -e
+cd $HOME/.configs
+HOST=`hostname`
+export HOST
+cache=cache/$HOST%$DISPLAY
+newcache=cache/.$$@$HOST
+trap 'rm -f $newcache; exit 0' 0
+if cat $cache 2>/dev/null; then exit 0; fi
+./checkconfig | tee $newcache
+mv $newcache $cache
diff --git a/from-cvs/files/_.configs_configure.old b/from-cvs/files/_.configs_configure.old
new file mode 100644 (file)
index 0000000..cb10d3b
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+# Configuration script
+
+display=`echo $DISPLAY | sed -e 's/:.*$//' -e 's/\.[^0-9].*$//'`
+[ "x$display" = x ] && display=$HOST
+
+echo `
+
+grep '^host='"$display"' ' $HOME/.configs/list
+[ "x$HOST" = "x$display" ] && grep '^arch='"$ARCH"' ' $HOME/.configs/list
+grep '^default ' $HOME/.configs/list | sed -e 's/^default //'
+
+` | sed -e 's/^/ /' -e 's/ \([a-z][^   =]*\)=/ '$1'\1=/g'
diff --git a/from-cvs/files/_.configs_eliforp b/from-cvs/files/_.configs_eliforp
new file mode 100755 (executable)
index 0000000..eac2620
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+# logout sequence
+
+cd
+rm -f .history/$HOST~*~
diff --git a/from-cvs/files/_.configs_list b/from-cvs/files/_.configs_list
new file mode 100644 (file)
index 0000000..0b34d96
--- /dev/null
@@ -0,0 +1,33 @@
+default : kb=none colours=mono font=fixed maccel=2 mthresh=1 size=normal
+default : lxtermopts=-rv printer=wind brokenserver=false brokenbadges=true
+default : echo=echo bvolume=100 bpitch=500 bduration=150
+
+keycodes=8-108      : kb=pericom
+keycodes=8-114      : kb=pc
+keycodes=8-134      : kb=pc
+keycodes=8-157      : kb=pc
+keycodes=8-119      : kb=archim bvolume=70 bpitch=900 bduration=70
+keycodes=8-132      : kb=sun4
+keycodes=8-144      : kb=dsxt
+keycodes=8-254      : kb=tektronix
+keycodes=8-255     : kb=pc
+keycodes=10-135     : kb=hp
+keycodes=86-251     : kb=ds
+
+depth>3             : colours=colour
+pixels_x<1024       : size=small
+dpi_x>104           : font=larger
+pixels_x>1024          : maccel=4 mthresh=5
+dpi_x>99               : maccel=3 mthresh=5
+
+display=lettuce     : font=fixed
+display=flamingo    : font=fixed
+
+display=liberator      : kb=liberator
+
+display=mint        : maccel=15 kb=mint printer=gas
+display=parsley     : maccel=15 kb=mint printer=gas
+display=ufford      : kb=ds3100
+display=grover      : maccel=10
+
+display=puffball    : font=puffball brokenserver=true
diff --git a/from-cvs/files/_.configs_manualsession b/from-cvs/files/_.configs_manualsession
new file mode 100755 (executable)
index 0000000..0dccc07
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+emacs -f make-session&
+xbiff&
+unclutter -noevents&
+xterm -geometry 80x41-0+130&
diff --git a/from-cvs/files/_.configs_rxprofile b/from-cvs/files/_.configs_rxprofile
new file mode 100755 (executable)
index 0000000..416b472
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+. .configs/setenvir
+
+stty cs8 2>/dev/null || :
+
+xloadt&
+cat /etc/motd
+exec $SHELL
diff --git a/from-cvs/files/_.configs_rxprofile-root b/from-cvs/files/_.configs_rxprofile-root
new file mode 100755 (executable)
index 0000000..cab8a01
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+. .configs/setenvir
+
+stty cs8 2>/dev/null || :
+
+#xloadt&
+exec really
diff --git a/from-cvs/files/_.configs_setenvir b/from-cvs/files/_.configs_setenvir
new file mode 100755 (executable)
index 0000000..def819f
--- /dev/null
@@ -0,0 +1,86 @@
+#!/bin/sh
+# Set up the environment:
+
+PATH=$HOME/personal/@@$platform@@/bin:$HOME/personal/scripts/bin
+
+@@?$ncipher?@@
+PATH=$PATH:$HOME/personal/crypto/scripts:/opt/nfast/gcc/bin
+CVS_RSH=ssh
+
+@@:
+CVS_RSH=fsh
+@@;
+
+@@? -d '/opt/bin' ?@@
+PATH=$PATH:/opt/bin
+@@;
+
+@@? $uname eq 'HP-UX' ?@@
+PATH=$PATH:/usr/contrib/bin
+@@;
+
+PATH=$PATH:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/sbin:/usr/sbin
+
+@@? $uname eq 'SunOS' ?@@
+PATH=$PATH:/usr/ccs/bin
+@@;
+
+@@? $uname eq 'AIX' ?@@
+PATH=$PATH:/usr/vac/bin
+@@;
+
+PATH=$PATH:@@$xbindir@@
+
+export PATH
+
+CDPATH=:..:$HOME:$HOME/things
+
+unset MAILPATH
+
+@@?$ncipher?@@
+PATH=$PATH:/opt/nfast/bin
+CVSROOT=:ext:cvs:/ncipher/local-CVS
+@@;
+
+@@?$chiark?@@
+CVSROOT=/usr/src/CVS
+NNTPAUTH="md5cookie1way ian"
+MAILPATH=/var/spool/mail/@@$username@@:$HOME/mail/SINBOX.DROP
+ORGANIZATION="Linux Unlimited"
+
+export MAILPATH NNTPAUTH ORGANISATION
+@@;
+
+EDITOR=emacs
+HISTORY=256
+HOST=`hostname`
+LANG=C
+LESS="-eMfQj10"
+# NNTPAUTH="md5cookie1way ian"
+PAGER=less
+# PERLLIB=$HOME/personal/linux/lib/perl5
+PS1="$ "
+TRNINIT=$HOME/.trninit
+WWW_HOME=http://www.chiark.greenend.org.uk/~ijackson/
+
+export CDPATH CVS_RSH CVSROOT EDITOR ESHELL HISTORY HOST LANG LESS
+export PAGER PERLLIB PS1 TRNINIT WWW_HOME
+
+# NNTPAUTH
+
+@@?$ncipher?@@
+NC_SITES=@@$ncipher@@:@@ $ncipher eq 'bos' ? 'cam' : 'bos' @@
+export NC_SITES
+
+if type -p strongarm-codesafe-elf-gcc >/dev/null 2>&1; then
+       NC_PLATFORM_COMPILERS="$NC_PLATFORM_COMPILERS arm-gcc"
+fi
+if type -p powerpc-codesafe-elf-gcc >/dev/null 2>&1; then
+       NC_PLATFORM_COMPILERS="$NC_PLATFORM_COMPILERS ppc-gcc"
+fi
+export NC_PLATFORM_COMPILERS
+@@;
+
+unset ignoreeof
+
+umask 002
diff --git a/from-cvs/files/_.configs_setenvir-SunOS4 b/from-cvs/files/_.configs_setenvir-SunOS4
new file mode 100755 (executable)
index 0000000..735e20c
--- /dev/null
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+PATH=$HOME/personal/SunOS4/bin:$HOME/public/SunOS4/bin
+PATH=$PATH:/usr/local/bin:/applic/X11R5/bin:/usr/lang:/usr/ucb:/usr/bin
+PATH=$PATH:/etc:/usr/etc:/usr/local/etc
+
+MANPATH=$HOME/personal/SunOS4/man:$HOME/public/SunOS4/man
+MANPATH=$MANPATH:/usr/local/man:/applic/X11R5/man:/usr/lang/man:/usr/man
diff --git a/from-cvs/files/_.configs_setenvir-SunOS5 b/from-cvs/files/_.configs_setenvir-SunOS5
new file mode 100755 (executable)
index 0000000..72fe16e
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+PATH=$HOME/personal/SunOS5/bin:$HOME/public/SunOS5/bin
+PATH=$PATH:/opt/local/bin:/opt/gnu/bin:/opt/X11R5/bin:/opt/SUNWspro/bin
+PATH=$PATH:/usr/ccs/bin:/usr/bin:/usr/ucb:/sbin:/usr/sbin
+
+MANPATH=$HOME/personal/SunOS5/man:$HOME/public/SunOS5/man
+MANPATH=$MANPATH:/opt/local/man:/opt/gnu/man:/opt/X11R5/man
+MANPATH=$MANPATH:/opt/SUNWspro/man:/usr/man
diff --git a/from-cvs/files/_.configs_startemacs b/from-cvs/files/_.configs_startemacs
new file mode 100755 (executable)
index 0000000..8a304e4
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+echo -n '#'
+
+cd
+eval `cd $HOME && .configs/configure`
+
+emacs -f make-session -geometry 80x60+$(( $pixels_x * 3 - 486 ))+0 &
+
+# if [ "x$chost" = x ]
+# then
+#      emacs -f make-session &
+# else
+#      (cat .configs/setenvir;
+#       echo DISPLAY=$display:0 export DISPLAY
+#       echo echo -n ,
+#       echo emacs -f make-session &
+#       echo echo -n ,) | rsh $chost sh &
+# fi
+
+echo -n '#'
diff --git a/from-cvs/files/_.configs_x11start b/from-cvs/files/_.configs_x11start
new file mode 100755 (executable)
index 0000000..00fc4b2
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/sh
+
+eval `.configs/configure`
+
+>".counters/v.$DISPLAY"
+
+echo -n 'starting clients '
+
+#       xsetroot -fg '#883030' -bg '#204050' -bitmap bitmap/root
+#       xsetroot -cursor bitmap/circle bitmap/circle-inv -fg white -bg black
+#        xset b 75 300
+#if [ "x$1" != "xnotwm" ]; then
+# echo -n . ;   twm &
+#fi
+#echo -n . ;    xload &
+#echo -n . ;    xterm -n 'xterm d' -T xterm -geometry 80x25+0-10 &
+#echo -n . ;    emacs -f make-session &
+#echo -n . ;    unclutter -noevents &
+#echo -n . ;    xbiff -name xbiffs & xbiff & xbiff -name xbiff2 &
+#echo -n . ;    stty -isig
+#echo -n . ;    (while cat /dev/xconsole; do sleep 10; done) & sleep 1
+#really start-stop-daemon --stop --exec /usr/bin/X11/xconsole --user root --quie
+#
+#echo    . ;     exec xclock
+
+echo -n .
+
+sh .configs/x11start-colours=$colours
+
+echo -n .
+
+.configs/xclients &
+# /usr/bin/X11/xload -geometry 120x120+34+0 &
+
+.configs/startemacs
+# if [ "x$HOST" != xquince ]
+# then
+#      xrsh quince /usr/bin/X11/xload -geometry 120x120+432+0 &
+# fi
+
+xsetroot -cursor bitmap/circle bitmap/circle-inv -bg black -fg white
+xset b $bvolume $bpitch $bduration
+xset m $maccel $mthresh c off b 60
+
+echo -n .
+
+# xterm -T "local" -sb -iconic -geometry 80x25-0-0 &
+
+# if [ "x$thost" = x ]
+# then
+#      .configs/xtools &
+# else
+#      cat .configs/setenvir - .configs/xtools <<END | rsh $thost sh &
+#              DISPLAY=$display:0 export DISPLAY
+# END
+#      $echo -n .
+# fi
+
+.configs/xtools &
+
+echo -n .
+
+exec xclock
diff --git a/from-cvs/files/_.configs_x11start-colours=colour b/from-cvs/files/_.configs_x11start-colours=colour
new file mode 100644 (file)
index 0000000..e236d28
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+xsetroot -fg dimgrey -bg darkslategrey -bitmap bitmap/root
diff --git a/from-cvs/files/_.configs_x11start-colours=mono b/from-cvs/files/_.configs_x11start-colours=mono
new file mode 100644 (file)
index 0000000..e1a7519
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+xsetroot -grey
diff --git a/from-cvs/files/_.configs_xbiffs b/from-cvs/files/_.configs_xbiffs
new file mode 100755 (executable)
index 0000000..55d6b3b
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+echo -n @
+
+d="$DISPLAY"
+if [ "x$d" = "x:0.0" ]; then d="`hostname -f`$DISPLAY"; fi
+@@? $ncipher eq 'bos' ?@@
+#rcp .Xauthority dover.ncipher.com:.
+@@;
+
+#rsh dover <<END sh
+echo -n @
+. ./.configs/setenvir
+#DISPLAY="$d"
+#export DISPLAY
+#exec 2>>.remoteshell-errors
+xbiff &
+MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffc -user ijackson &
+MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffp -user ian &
+MAILHOST=login.chiark.greenend.org.uk xbiff1339 -name xbiffs -user sysadmin &
+echo -n @
+#END
diff --git a/from-cvs/files/_.configs_xclients b/from-cvs/files/_.configs_xclients
new file mode 100755 (executable)
index 0000000..b33c5af
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+eval `cd $HOME && .configs/configure`
+
+#xconsole -geometry -0-0 &
+#
+#echo -n :
+
+exec vtwm &
+
+echo -n :
+
+xloadt &
+
+echo -n :
+
+xterm -n 'xterm d' -T xterm -geometry 80x25+0-10 &
+
+@@?!$chiark?@@
+.configs/chiarks
+@@;
+
+#@@?$laptop?@@
+#if test -d /proc/acpi/battery; then
+#      xacpi-simple &
+#fi
+#@@;
+
+@@?$ncipher?@@
+remoteshell -rrsh keynes -geometry 80x25+172+159 &
+@@;
+
+.configs/xbiffs
+
+(while sleep 590; do xrefresh -geometry 200x100-0-0; done) &
+
+echo -n :
diff --git a/from-cvs/files/_.configs_xmodmap-kb=archim b/from-cvs/files/_.configs_xmodmap-kb=archim
new file mode 100755 (executable)
index 0000000..56cde61
--- /dev/null
@@ -0,0 +1,32 @@
+#!/usr/bin/perl
+
+open(I,"xmodmap -pk |") || die "popen xmodmap -pk: $!\n";
+
+while(<I>) {
+    m/^\s+(\d+)\s+\w+\s+\((\w+)\)\s+\w+\s+\((\w+)\)\s+\w+\s+\(/
+        || next;
+    if ($3 eq 'NoSymbol') {
+        print "keycode $1 = $2\n";
+    } else {
+        print "keycode $1 = $2 $3\n";
+    }
+}
+
+print <<'END'
+keycode 38 = Delete
+keycode 37 = Delete
+keycode 64 = Up
+keycode 80 = Left
+keycode 82 = Right
+keycode 99 = Down
+keycode 40 = F27
+keycode 41 = F29
+keycode 61 = F33
+keycode 62 = F35
+keycode 63 = F27 
+keycode 65 = F29
+keycode 81 = F31
+keycode 98 = F33
+keycode 100 = F35
+END
+    ;
diff --git a/from-cvs/files/_.configs_xmodmap-kb=ds b/from-cvs/files/_.configs_xmodmap-kb=ds
new file mode 100644 (file)
index 0000000..ec6144b
--- /dev/null
@@ -0,0 +1,37 @@
+! keycode 172 = Multi_key
+! keycode 124 = Escape
+! keycode 140 = Prior
+! keycode 201 = Escape
+! keycode 232 = comma less
+! keycode 237 = period greater
+
+
+! keycode 175 = Caps_Lock
+! keycode 176 = Control_L
+
+! keysym Control_L = Caps_Lock
+! keysym Caps_Lock = Control_L
+! remove Lock = Caps_Lock
+! remove Control = Control_L
+! add Lock = Caps_Lock
+! add Control = Control_L
+! add Mod1 = Multi_key Alt_L
+
+!          remove Lock = Caps_Lock
+!          remove Control = Control_L
+!          keysym Control_L = Caps_Lock
+!          keysym Caps_Lock = Control_L
+!          add Lock = Caps_Lock
+!          add Control = Control_L
+
+
+
+
+
+keycode 176 = Control_L
+clear Lock
+clear Control
+add Control = Control_L
+
+keycode 175 = Caps_Lock
+add Lock = Caps_Lock
diff --git a/from-cvs/files/_.configs_xmodmap-kb=ds3100 b/from-cvs/files/_.configs_xmodmap-kb=ds3100
new file mode 100644 (file)
index 0000000..9f352f0
--- /dev/null
@@ -0,0 +1,12 @@
+remove Lock = Caps_Lock
+remove Control = Control_L
+keysym Control_L = Caps_Lock
+keysym Caps_Lock = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
+
+keycode 124 = Escape
+
+keycode 140 = Prior
+
+keycode 201 = Escape
diff --git a/from-cvs/files/_.configs_xmodmap-kb=dsxt b/from-cvs/files/_.configs_xmodmap-kb=dsxt
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/from-cvs/files/_.configs_xmodmap-kb=hp b/from-cvs/files/_.configs_xmodmap-kb=hp
new file mode 100644 (file)
index 0000000..0d7cdcc
--- /dev/null
@@ -0,0 +1,7 @@
+remove Lock = Caps_Lock
+keycode 101 = Delete
+keycode 55 = Control_L
+keycode 87 = Caps_Lock
+keycode 11 = Multi_Char
+add Control = Control_L
+add Lock = Caps_Lock
diff --git a/from-cvs/files/_.configs_xmodmap-kb=liberator b/from-cvs/files/_.configs_xmodmap-kb=liberator
new file mode 100644 (file)
index 0000000..a1ed0c1
--- /dev/null
@@ -0,0 +1,18 @@
+pointer = 1 3 2
+
+keycode 11 = 2 quotedbl
+keycode 12 = 3 numbersign
+keycode 22 = BackSpace
+keycode 48 = apostrophe at
+keycode 51 = numbersign asciitilde
+keycode 94 = backslash bar
+keycode 234 = Prior
+keycode 233= Next
+keycode 113 = Alt_R Meta_R
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 37 = Caps_Lock
+keycode 66 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
diff --git a/from-cvs/files/_.configs_xmodmap-kb=mint b/from-cvs/files/_.configs_xmodmap-kb=mint
new file mode 100644 (file)
index 0000000..99dcb94
--- /dev/null
@@ -0,0 +1 @@
+keycode 102 = Delete
diff --git a/from-cvs/files/_.configs_xmodmap-kb=none b/from-cvs/files/_.configs_xmodmap-kb=none
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/from-cvs/files/_.configs_xmodmap-kb=pc b/from-cvs/files/_.configs_xmodmap-kb=pc
new file mode 100644 (file)
index 0000000..f6fcda5
--- /dev/null
@@ -0,0 +1,15 @@
+keycode 11 = 2 quotedbl
+keycode 12 = 3 numbersign
+keycode 22 = BackSpace
+keycode 48 = apostrophe at
+keycode 51 = numbersign asciitilde
+keycode 94 = backslash bar
+keycode 103 = Prior
+keycode 99 = End
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 37 = Caps_Lock
+keycode 66 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
diff --git a/from-cvs/files/_.configs_xmodmap-kb=pericom b/from-cvs/files/_.configs_xmodmap-kb=pericom
new file mode 100644 (file)
index 0000000..799c030
--- /dev/null
@@ -0,0 +1,7 @@
+keycode 21 = Delete
+remove Lock = Caps_Lock
+remove Control = Control_L
+keysym Control_L = Caps_Lock
+keysym Caps_Lock = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
diff --git a/from-cvs/files/_.configs_xmodmap-kb=sun4 b/from-cvs/files/_.configs_xmodmap-kb=sun4
new file mode 100755 (executable)
index 0000000..47b5833
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/sh
+xmodmap - <<END
+keycode 49 = grave asciitilde
+keycode 95 = numbersign asciitilde
+keycode 50 = Delete
+
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 83 = Caps_Lock
+keycode 126 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
+
+remove mod4 = Alt_L
+add mod1 = Alt_L
+END
+
+xset r 103
+xset r 130
diff --git a/from-cvs/files/_.configs_xmodmap-kb=tektronix b/from-cvs/files/_.configs_xmodmap-kb=tektronix
new file mode 100644 (file)
index 0000000..3b5c758
--- /dev/null
@@ -0,0 +1,9 @@
+keycode 17 = Escape Escape
+keycode 73 = comma less
+keycode 81 = period greater
+remove Lock = Caps_Lock
+remove Control = Control_L
+keycode 25 = Caps_Lock
+keycode 28 = Control_L
+add Lock = Caps_Lock
+add Control = Control_L
diff --git a/from-cvs/files/_.configs_xprofile b/from-cvs/files/_.configs_xprofile
new file mode 100755 (executable)
index 0000000..2a5ba1d
--- /dev/null
@@ -0,0 +1,17 @@
+#!/bin/bash
+# Ian Jackson's .xprofile, mostly copied from.... .profile, from
+# (eng.cam.ac.uk) CUED default .profile for /bin/sh or /bin/ksh initialization,
+# then customised for Engineering dept system. This version copied
+# to cl then customised for cl, thence to cam-orl.co.uk, thence
+# to cus.cam.ac.uk.
+
+echo '\e[10;0H'
+
+echo -n 'Hit return for windows... '
+read inputline
+if [ "x$inputline" = x ]
+then
+       exec .configs/x11start
+else
+       exec $SHELL
+fi
diff --git a/from-cvs/files/_.configs_xtools b/from-cvs/files/_.configs_xtools
new file mode 100755 (executable)
index 0000000..94bfb51
--- /dev/null
@@ -0,0 +1,9 @@
+#!/bin/bash
+
+eval `.configs/configure`
+
+echo -n +
+# xlbiff &
+echo -n +
+unclutter -noevents &
+echo -n +
diff --git a/from-cvs/files/_.cvsrc b/from-cvs/files/_.cvsrc
new file mode 100644 (file)
index 0000000..1361831
--- /dev/null
@@ -0,0 +1,2 @@
+update -d
+diff -u
diff --git a/from-cvs/files/_.emacs b/from-cvs/files/_.emacs
new file mode 100644 (file)
index 0000000..eba2f90
--- /dev/null
@@ -0,0 +1,5 @@
+; Ian Jackson's Emacs startup file - runs ~ian/emacs/ian.el
+;
+(setq load-path (append '("~@@$username@@/emacs") load-path))
+(load-library "ian")
+(menu-bar-mode -1)
diff --git a/from-cvs/files/_.gdbinit b/from-cvs/files/_.gdbinit
new file mode 100644 (file)
index 0000000..04b08e1
--- /dev/null
@@ -0,0 +1 @@
+set confirm off
diff --git a/from-cvs/files/_.inputrc b/from-cvs/files/_.inputrc
new file mode 100644 (file)
index 0000000..3e6af4f
--- /dev/null
@@ -0,0 +1 @@
+set convert-meta on
diff --git a/from-cvs/files/_.ircrc b/from-cvs/files/_.ircrc
new file mode 100644 (file)
index 0000000..b16f61d
--- /dev/null
@@ -0,0 +1,30 @@
+/SET NOVICE OFF
+/SET MAIL 0
+
+/alias unzen {
+  ignore $0 none
+}
+/alias zen {
+  me exudes an air of Zen-like calm.
+  ignore $0 all
+  timer 300 unzen $0
+}
+/alias chans {
+  join #serious
+  join #topics
+  join #gr
+  join #chiark
+}
+@@?$ncipher?@@
+/alias chann {
+  join #cards
+  join #support
+  join #jukebox
+  join #intsys
+  join #devel
+}
+@@;
+/load private/ircpass
+/alias fastness-id {
+  exec -msg Fastness -name fastness-id-proc irc-fastness-id
+}
diff --git a/from-cvs/files/_.lynxrc b/from-cvs/files/_.lynxrc
new file mode 100644 (file)
index 0000000..e0baf23
--- /dev/null
@@ -0,0 +1,288 @@
+# Lynx User Defaults File
+#
+# This file contains options saved from the Lynx Options Screen (normally
+# with the '>' key).  There is normally no need to edit this file manually,
+# since the defaults here can be controlled from the Options Screen, and the
+# next time options are saved from the Options Screen this file will be
+# completely rewritten.  You have been warned...
+# If you are looking for the general configuration file - it is normally
+# called lynx.cfg, and it has different content and a different format.
+# It is not this file.
+
+# file_editor specifies the editor to be invoked when editing local files
+# or sending mail.  If no editor is specified, then file editing is disabled
+# unless it is activated from the command line, and the built-in line editor
+# will be used for sending mail.
+file_editor=
+
+show_color=never
+
+# bookmark_file specifies the name and location of the default bookmark
+# file into which the user can paste links for easy access at a later
+# date.
+bookmark_file=lynx_bookmarks.html
+
+# If sub_bookmarks is not turned "off", and multiple bookmarks have
+# been defined (see below), then all bookmark operations will first
+# prompt the user to select an active sub-bookmark file.  If the default
+# Lynx bookmark_file is defined (see above), it will be used as the
+# default selection.  When this option is set to "advanced", and the
+# user mode is advanced, the 'v'iew bookmark command will invoke a
+# statusline prompt instead of the menu seen in novice and intermediate
+# user modes.  When this option is set to "standard", the menu will be
+# presented regardless of user mode.
+sub_bookmarks=off
+
+# The following allow you to define sub-bookmark files and descriptions.
+# The format is multi_bookmark<capital_letter>=<filename>,<description>
+# Up to 26 bookmark files (for the English capital letters) are allowed.
+# We start with "multi_bookmarkB" since 'A' is the default (see above).
+multi_bookmarkB=
+multi_bookmarkC=
+multi_bookmarkD=
+multi_bookmarkE=
+multi_bookmarkF=
+multi_bookmarkG=
+multi_bookmarkH=
+multi_bookmarkI=
+multi_bookmarkJ=
+multi_bookmarkK=
+multi_bookmarkL=
+multi_bookmarkM=
+multi_bookmarkN=
+multi_bookmarkO=
+multi_bookmarkP=
+multi_bookmarkQ=
+multi_bookmarkR=
+multi_bookmarkS=
+multi_bookmarkT=
+multi_bookmarkU=
+multi_bookmarkV=
+multi_bookmarkW=
+multi_bookmarkX=
+multi_bookmarkY=
+multi_bookmarkZ=
+
+# The file_sorting_method specifies which value to sort on when viewing
+# file lists such as FTP directories.  The options are:
+#    BY_FILENAME -- sorts on the name of the file
+#    BY_TYPE     -- sorts on the type of the file
+#    BY_SIZE     -- sorts on the size of the file
+#    BY_DATE     -- sorts on the date of the file
+file_sorting_method=BY_FILENAME
+
+# personal_mail_address specifies your personal mail address.  The
+# address will be sent during HTTP file transfers for authorization and
+# logging purposes, and for mailed comments.
+# If you do not want this information given out, set the NO_FROM_HEADER
+# to TRUE in lynx.cfg, or use the -nofrom command line switch.  You also
+# could leave this field blank, but then you won't have it included in
+# your mailed comments.
+personal_mail_address=
+
+# If case_sensitive_searching is "on" then when the user invokes a search
+# using the 's' or '/' keys, the search performed will be case sensitive
+# instead of case INsensitive.  The default is usually "off".
+case_sensitive_searching=off
+
+# The character_set definition controls the representation of 8 bit
+# characters for your terminal.  If 8 bit characters do not show up
+# correctly on your screen you may try changing to a different 8 bit
+# set or using the 7 bit character approximations.
+# Current valid characters sets are:
+#    ISO Latin 1         
+#    DosLatin1 (cp850)   
+#    WinLatin1 (cp1252)  
+#    DosLatinUS (cp437)  
+#    DEC Multinational   
+#    Macintosh (8 bit)   
+#    NeXT character set  
+#    Chinese             
+#    Japanese (EUC)      
+#    Japanese (SJIS)     
+#    Korean              
+#    Taipei (Big5)       
+#    Vietnamese (VISCII) 
+#    7 bit approximations
+#    Transparent         
+#    ISO Latin 2         
+#    DosLatin2 (cp852)   
+#    WinLatin2 (cp1250)  
+#    ISO Latin 3         
+#    ISO Latin 4         
+#    DosBaltRim (cp775)  
+#    WinBaltRim (cp1257) 
+#    ISO 8859-5 Cyrillic 
+#    DosCyrillic (cp866) 
+#    WinCyrillic (cp1251)
+#    KOI8-R Cyrillic     
+#    ISO 8859-6 Arabic   
+#    DosArabic (cp864)   
+#    WinArabic (cp1256)  
+#    ISO 8859-7 Greek    
+#    DosGreek (cp737)    
+#    DosGreek2 (cp869)   
+#    WinGreek (cp1253)   
+#    ISO 8859-8 Hebrew   
+#    DosHebrew (cp862)   
+#    WinHebrew (cp1255)  
+#    ISO 8859-9 (Latin 5)
+#    ISO 8859-10         
+#    UNICODE UTF-8       
+#    RFC 1345 w/o Intro  
+#    RFC 1345 Mnemonic   
+character_set=ISO Latin 1         
+
+# preferred_language specifies the language in MIME notation (e.g., en,
+# fr, may be a comma-separated list in decreasing preference)
+# which Lynx will indicate you prefer in requests to http servers.
+# If a file in that language is available, the server will send it.
+# Otherwise, the server will send the file in it's default language.
+preferred_language=en
+
+# preferred_charset specifies the character set in MIME notation (e.g.,
+# ISO-8859-2, ISO-8859-5) which Lynx will indicate you prefer in requests
+# to http servers using an Accept-Charset header.  The value should NOT
+# include ISO-8859-1 or US-ASCII, since those values are always assumed
+# by default.  May be a comma-separated list.
+# If a file in that character set is available, the server will send it.
+# If no Accept-Charset header is present, the default is that any
+# character set is acceptable.  If an Accept-Charset header is present,
+# and if the server cannot send a response which is acceptable
+# according to the Accept-Charset header, then the server SHOULD send
+# an error response, though the sending of an unacceptable response
+# is also allowed.
+preferred_charset=
+
+# show_color specifies how to set the color mode at startup.  A value of
+# "never" will force color mode off (treat the terminal as monochrome)
+# at startup even if the terminal appears to be color capable.  A value of
+# "always" will force color mode on even if the terminal appears to be
+# monochrome, if this is supported by the library used to build lynx.
+# A value of "default" will yield the behavior of assuming
+# a monochrome terminal unless color capability is inferred at startup
+# based on the terminal type, or the -color command line switch is used, or
+# the COLORTERM environment variable is set. The default behavior always is
+# used in anonymous accounts or if the "option_save" restriction is set.
+# The effect of the saved value can be overridden via
+# the -color and -nocolor command line switches.
+# The mode set at startup can be changed via the "show color" option in
+# the 'o'ptions menu.  If the option settings are saved, the "on" and
+# "off" "show color" settings will be treated as "default".
+show_color=default
+
+# If vi_keys is set to "on", then the normal VI movement keys:
+#   j = down    k = up
+#   h = left    l = right
+# will be enabled.  These keys are only lower case.
+# Capital 'H', 'J' and 'K will still activate help, jump shortcuts,
+# and the keymap display, respectively.
+vi_keys=off
+
+# If emacs_keys is to "on" then the normal EMACS movement keys:
+#   ^N = down    ^P = up
+#   ^B = left    ^F = right
+# will be enabled.
+emacs_keys=on
+
+# show_dotfiles specifies that the directory listing should include
+# "hidden" (dot) files/directories.  If set "on", this will be
+# honored only if enabled via userdefs.h and/or lynx.cfg, and not
+# restricted via a command line switch.  If display of hidden files
+# is disabled, creation of such files via Lynx also is disabled.
+show_dotfiles=off
+
+# select_popups specifies whether the OPTIONs in a SELECT block which
+# lacks a MULTIPLE attribute are presented as a vertical list of radio
+# buttons or via a popup menu.  Note that if the MULTIPLE attribute is
+# present in the SELECT start tag, Lynx always will create a vertical list
+# of checkboxes for the OPTIONs.  A value of "on" will set popup menus
+# as the default while a value of "off" will set use of radio boxes.
+# The default can be overridden via the -popup command line toggle.
+select_popups=on
+
+# show_cursor specifies whether to 'hide' the cursor to the right (and
+# bottom, if possible) of the screen, or to place it to the left of the
+# current link in documents, or current option in select popup windows.
+# Positioning the cursor to the left of the current link or option is
+# helpful for speech or braille interfaces, and when the terminal is
+# one which does not distingish the current link based on highlighting
+# or color.  A value of "on" will set positioning to the left as the
+# default while a value of "off" will set 'hiding' of the cursor.
+# The default can be overridden via the -show_cursor command line toggle.
+show_cursor=off
+
+# If keypad_mode is set to "NUMBERS_AS_ARROWS", then the numbers on
+# your keypad when the numlock is on will act as arrow keys:
+#             8 = Up Arrow
+#   4 = Left Arrow    6 = Right Arrow
+#             2 = Down Arrow
+# and the corresponding keyboard numbers will act as arrow keys,
+# regardless of whether numlock is on.
+# If keypad_mode is set to "LINKS_ARE_NUMBERED", then numbers will
+# appear next to each link and numbers are used to select links.
+# If keypad_mode is set to "LINKS_AND_FORM_FIELDS_ARE_NUMBERED", then
+# numbers will appear next to each link and visible form input field.
+# Numbers are used to select links, or to move the "current link" to a
+# form input field or button.  In addition, options in popup menus are
+# indexed so that the user may type an option number to select an option in
+# a popup menu, even if the option isn't visible on the screen.  Reference
+# lists and output from the list command also enumerate form inputs.
+# NOTE: Some fixed format documents may look disfigured when
+# "LINKS_ARE_NUMBERED" or "LINKS_AND_FORM_FIELDS_ARE_NUMBERED" are
+# enabled.
+keypad_mode=LINKS_AND_FORM_FIELDS_ARE_NUMBERED
+
+# linedit_mode specifies the key binding used for inputting strings in
+# prompts and forms.  If lineedit_mode is set to "Default Binding" then
+# the following control characters are used for moving and deleting:
+#
+#              Prev  Next       Enter = Accept input
+#    Move char: <-    ->        ^G    = Cancel input
+#    Move word: ^P    ^N        ^U    = Erase line
+#  Delete char: ^H    ^R        ^A    = Beginning of line
+#  Delete word: ^B    ^F        ^E    = End of line
+#
+# Current lineedit modes are:
+#    Default Binding     
+lineedit_mode=Default Binding     
+
+# dir_list_styles specifies the directory list style under DIRED_SUPPORT
+# (if implemented).  The default is "MIXED_STYLE", which sorts both
+# files and directories together.  "FILES_FIRST" lists files first and
+# "DIRECTORIES_FIRST" lists directories first.
+dir_list_style=MIXED_STYLE
+
+# user_mode specifies the users level of knowledge with Lynx.  The
+# default is "NOVICE" which displays two extra lines of help at the
+# bottom of the screen to aid the user in learning the basic Lynx
+# commands.  Set user_mode to "INTERMEDIATE" to turn off the extra info.
+# Use "ADVANCED" to see the URL of the currently selected link at the
+# bottom of the screen.
+user_mode=ADVANCED
+
+# If run_all_execution_links is set "on" then all local exection links
+# will be executed when they are selected.
+#
+# WARNING - This is potentially VERY dangerous.  Since you may view
+#           information that is written by unknown and untrusted sources
+#           there exists the possibility that Trojan horse links could be
+#           written.  Trojan horse links could be written to erase files
+#           or compromise security.  This should only be set to "on" if
+#           you are viewing trusted source information.
+run_all_execution_links=off
+
+# If run_execution_links_on_local_files is set "on" then all local
+# execution links that are found in LOCAL files will be executed when they
+# are selected.  This is different from run_all_execution_links in that
+# only files that reside on the local system will have execution link
+# permissions.
+#
+# WARNING - This is potentially dangerous.  Since you may view
+#           information that is written by unknown and untrusted sources
+#           there exists the possibility that Trojan horse links could be
+#           written.  Trojan horse links could be written to erase files
+#           or compromise security.  This should only be set to "on" if
+#           you are viewing trusted source information.
+run_execution_links_on_local_files=off
+
diff --git a/from-cvs/files/_.mailcap b/from-cvs/files/_.mailcap
new file mode 100644 (file)
index 0000000..97da631
--- /dev/null
@@ -0,0 +1,2 @@
+application/pdf;gv %s
+application/postscript;gv %s
diff --git a/from-cvs/files/_.profile b/from-cvs/files/_.profile
new file mode 100755 (executable)
index 0000000..7cc97b9
--- /dev/null
@@ -0,0 +1,19 @@
+# Ian Jackson's .profile now in CVS
+
+. .configs/setenvir
+
+echo --------------------------------------------------
+uptime
+
+if [ "x$TERM" = "xnetwork" ]
+then
+       defterm=vt100
+       echo -n "Terminal type (default=$defterm) ... "
+       read TERM
+       [ "x$TERM" = x ] && TERM=$defterm
+       export TERM
+fi
+
+[ "x`tty`" = x/dev/console ] || stty cs8 2>/dev/null || true
+
+exec $SHELL
diff --git a/from-cvs/files/_.screenrc b/from-cvs/files/_.screenrc
new file mode 100644 (file)
index 0000000..da8c394
--- /dev/null
@@ -0,0 +1,4 @@
+c1 off
+escape ^]^]
+defescape ^Z^A
+nethack on
diff --git a/from-cvs/files/_.ssh_authorized__keys b/from-cvs/files/_.ssh_authorized__keys
new file mode 100644 (file)
index 0000000..96dbcd9
--- /dev/null
@@ -0,0 +1,13 @@
+@@?$ncipher?@@@@#
+ssh-dss AAAAB3NzaC1kc3MAAACBAKtwpwMT0T7JqpViR8VBJww2RHJpHdVOw6V0prErdxllDMUZyUtMWrlWZ+sA1oDfngxxYyOIC+0EUgVhme5WvNVEEXpEm4G3LuLt5at16+wrsbbWd281xA//Txpo715ZI/tpcJ/gojHGp2tCMGz72bpyF8pl7NFIFd6Ge8DtprA3AAAAFQD7zbMXTCesj5+1DGiJfkf1eEJgHQAAAIAHYrZknbn4t7JjujtpBGuEZxx7VOk37qI4UWE0yKrxTJKy4ZgNvD7zKYoZTKxzemyUTKKO1PAr6tST/D31zM0SRpXRxXDN5FAtTyGwOf2So8OcBKzCz0iFvfn7IprM/aPEusOZNWBWfw1cuEi1J/hQEG9RN8tAva71L/uMr8n/JwAAAIBtHIC0v/rI+HULjXf6k+H+D++/dV5hqUOpc5K/UMq5z7+je1PnrzR0Epo7rZEXHtJ3MdS7M8z5aA917jvgv4iZR7fKBg4Un8R/NNXtt0R7pNRPW+y6OQgAwhfVmQe5u7YOVcoxZJ7ZUMCYFbGqpJG3McJdcvAnv/j6F1mq5KCcdw== iwj@balvenie
+1024 35 124727093412869632210263466417759242176790041687223093518914962129684023865952801914633807133755957225954278607077890842192959548391801041329501180145555377246506227504828656309512118726200550407574141947474234643175425541196125080366794434559997737586651352988080871785769962995754972148401196674851406329533 iwj@jura
+1024 35 135047455186571843789905571461945788275487904273952799234884182791638391546698100438749397661361178522316171137229882562124078333098401119682569663784772893574153874302122949096568131843594317192162954024097127739981884906438565334258376559799523769409732386846697962043742250146214988585802131763619509305509 iwj@arrakis
+1024 35 148780507378541680494280394108554299015037193585292512851812455915529658349865812687568891228487704660170331711931348193171516881257175763082076084596513815163768197764684788055990975969082961319931599344140263610714054218278566122307211482149172102613250471032726893903298818190491384104033084902392054166859 iwj@pell.ncipherusa.com
+1024 35 155700069287664501281681012869914271738712974299223445134728148917038244934339506504036512587991354975597079464444531884524081235753658398521680648485217523189744866663620343244202894740688556556622894141027300629903247301893674346724263212189132860262301370559174882976578675034232773283098826237416726866517 iwj@newry
+1024 35 167024110043807390607791306968454709497383749367015887174525332872314230930819309173928755814031476357971033137981565695750851881200107954702727545222482244305854125457318066584672832766743125764695178980303010103131554068164375735120099921543449674127090714858103433637118604657374828557743842903894941567989 iwj@glastonbury
+ssh-dss AAAAB3NzaC1kc3MAAACBAKtwpwMT0T7JqpViR8VBJww2RHJpHdVOw6V0prErdxllDMUZyUtMWrlWZ+sA1oDfngxxYyOIC+0EUgVhme5WvNVEEXpEm4G3LuLt5at16+wrsbbWd281xA//Txpo715ZI/tpcJ/gojHGp2tCMGz72bpyF8pl7NFIFd6Ge8DtprA3AAAAFQD7zbMXTCesj5+1DGiJfkf1eEJgHQAAAIAHYrZknbn4t7JjujtpBGuEZxx7VOk37qI4UWE0yKrxTJKy4ZgNvD7zKYoZTKxzemyUTKKO1PAr6tST/D31zM0SRpXRxXDN5FAtTyGwOf2So8OcBKzCz0iFvfn7IprM/aPEusOZNWBWfw1cuEi1J/hQEG9RN8tAva71L/uMr8n/JwAAAIBtHIC0v/rI+HULjXf6k+H+D++/dV5hqUOpc5K/UMq5z7+je1PnrzR0Epo7rZEXHtJ3MdS7M8z5aA917jvgv4iZR7fKBg4Un8R/NNXtt0R7pNRPW+y6OQgAwhfVmQe5u7YOVcoxZJ7ZUMCYFbGqpJG3McJdcvAnv/j6F1mq5KCcdw== iwj@balvenie
+@@:@@#
+ssh-dss AAAAB3NzaC1kc3MAAACBAJijbPuhQjRlFW3q1aSakxzxjt2Im88MUQHwnBlFWNdnTiB8A4rXs6uq/XiF/NMf2SsgYxyVSps33t/fSIYs+cg17TCXHvznD4MUc0imk05wKPVLVVKrUJ89KeB3fa5s/1kU7FDqTiglpwx8dla7ZxAkWfnrr6y+lG6MTs7EoptRAAAAFQDXqO1IrImPCFPVEZsr9Mr6ytv4PwAAAIBXCSOIyMdfxdfRYRS+m/Xz7ayvS6K4XSe2n1UtzGRA+eFTPljFnxGJ5pin8cs/HhfDq5cRHCl4c8aXNDuX6weC1HBiNlWC72fqf2rg/oPpfr1lf/psP72qnaohdxgif0+vHr+XkAdvmIJbveZjEbfR/BGm3clPZBOfBW2jcJFJ0AAAAIBDjN08EurM7/fUuEY5o+3XmK4mjE5ItBzDLAXm3M5jzJSDqE71paDYm8/T/rBk+epJXNt0/pU+ncAPnntAts/9NY7nO4+ZyYU6rWtmylhGrDZVgIOsmJ8ctzlf5h4WYseoT4UdKqZzQnLIqVulN3XBpOCj67zt+hmR13CGOfyVsw== ian@davenant
+1024 33 109486980624691212016537928927789555105570667590778629695119626606037290078357956852293942585162652212461873956040610823397588255673523716724198888164674950140679849288143321734989153986407456580203768872125550429838545829894226261217250871489580972625787278345408642821047938849899139909163640791790916745691 ian@xenophobe
+1024 37 114223756903340773737608579329085839382020791979736852897726277982559389793302114526103225904320756038997462296301370610774013038444101889238876847092945042766480649371592361006971658511398276730528419747175919370766977513252930677382598327313801504631359688491528774577170532365918524223750023784578256015129 iwj@jura
+@@;@@#
diff --git a/from-cvs/files/_.trninit b/from-cvs/files/_.trninit
new file mode 100644 (file)
index 0000000..d5d5937
--- /dev/null
@@ -0,0 +1,17 @@
+-xsml
+-XDD
+-l
+-m=u
+-M
+-S5
+-h
++hFrom
++hDate
++hSummary
+-EEXSAVER="%e <%A"
+-EUNSHAR="unshar -s"
+-f
+-a
+-B
+-EFAST_PNEWS=y
+-T
diff --git a/from-cvs/files/_.trnmac b/from-cvs/files/_.trnmac
new file mode 100644 (file)
index 0000000..f7522ac
--- /dev/null
@@ -0,0 +1,10 @@
+u       %(%m=[aefnp]?U:u)
+U       %(%m=[aefnp]?U+:U)
+^U      %(%m=t?+u:u)
+=       %(%m=[aep]?_a:=)
++       %(%m=[aep]?_T:+)
+^P      %(%m=[aep]?_P:^P)
+^N      %(%m=[aep]?_N:^N)
+f       %(%m=[ap]?fy^j:f)
+^A     %(%m=t?\:|newsbinsave -s^j\:-^j@J:)
+^W     |findurl-runbrowser\n
diff --git a/from-cvs/files/_.vtwmrc b/from-cvs/files/_.vtwmrc
new file mode 100644 (file)
index 0000000..2ab6b4e
--- /dev/null
@@ -0,0 +1,414 @@
+#
+# Ian's twm configuration file.
+#
+
+# RandomPlacement
+DecorateTransients
+TitleFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+ResizeFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+MenuFont "-adobe-helvetica-bold-r-normal--*-120-*-*-*-*-*-*"
+IconFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*-*-*-*"
+IconManagerFont "-adobe-helvetica-bold-r-normal--*-100-*-*-*"
+IconifyByUnmapping
+NoCaseSensitive
+IconManagerGeometry "119x286+0+0"
+NoDefaults
+DontMoveOff
+OpaqueMove
+Zoom
+NoRaiseOnMove
+NoRaiseOnResize
+SortIconManager
+SqueezeTitle
+RestartPreviousState
+WarpCursor
+Function "select" { f.iconify f.deiconify }
+WindowFunction f.function "select"
+WindowRing { "emacs" "emacs18" "XTerm" }
+OldFashionedTwmWindowsMenu
+
+VirtualDesktop "6432x3608-208-0" 48
+#VirtualDesktop "6400x3600-208-0" 48
+# +32,+8
+
+#VirtualDesktop "5136x3076-208-0" 48
+#VirtualDesktop "5120x3072-237-0" 48
+# +16,+4
+
+#VirtualDesktop "4x3-208-0" 48
+
+NotVirtualGeometries
+PanDistanceX 100
+PanDistanceY 100
+
+FixManagedVirtualGeometries
+FixTransientVirtualGeometries
+SnapRealScreen
+
+NoTitle {
+       "TWM Icon Manager"
+       "VTWM Desktop"
+       "xclock"
+       "xload"
+       "xacpi-simple"
+}
+
+DontSqueezeTitle {
+       "emacs"
+       "emacs18"
+       "epoch"
+       "Emacs"
+}
+
+DontShowInDisplay { 
+       "VTWM Desktop"
+       "xb ian"
+       "xb sysadmin"
+       "xb chiark"
+       "xb iwj"
+       "xclock"
+       "xload"
+       "XLoad"
+       "xacpi-simple"
+}
+
+NailedDown {
+       "VTWM Desktop"
+       "xb ian"
+       "xb sysadmin"
+       "xb chiark"
+       "xb iwj"
+       "xclock"
+       "xwrits"
+       "xload"
+       "XLoad"
+       "xacpi-simple"
+}
+
+Cursors
+{
+       Frame           "crosshair"
+       Title           "crosshair"
+       Icon            "crosshair"
+       IconMgr         "crosshair"
+       Move            "fleur"
+       Resize          "fleur"
+       Menu            "sb_left_arrow"
+       Button          "hand2"
+       Wait            "watch"
+       Select          "dot"
+       Destroy         "pirate"
+}
+
+Color
+{
+    BorderColor "yellow"
+    DefaultBackground "black"
+    DefaultForeground "white"
+    TitleBackground "midnight blue"
+    TitleForeground "light steel blue"
+    MenuBackground "midnight blue"
+    MenuForeground "light steel blue"
+    MenuTitleBackground "midnight blue"
+    MenuTitleForeground "light steel blue"
+    IconBackground "midnight blue"
+    IconForeground "light steel blue"
+    IconBorderColor "red"
+    IconManagerBackground "orange1"
+    IconManagerForeground "black"
+    BorderTileForeground "red"
+    BorderTileBackground "red"
+
+    VirtualBackground "midnight blue"
+    DesktopDisplayBackground "black"
+    DesktopDisplayBorder "light steel blue"
+    RealScreenBackground "white"
+}
+
+Monochrome
+{
+    BorderColor "black"
+    DefaultBackground "black"
+    DefaultForeground "white"
+    TitleBackground "white"
+    TitleForeground "black"
+    MenuBackground "black"
+    MenuForeground "white"
+    MenuTitleBackground "black"
+    MenuTitleForeground "white"
+    IconBackground "black"
+    IconForeground "white"
+    IconBorderColor "white"
+    IconManagerBackground "white"
+    IconManagerForeground "black"
+    BorderTileForeground "black"
+    BorderTileBackground "white"
+}
+
+# Define some useful functions for motion-based actions.
+MoveDelta 3
+Function "forcemove-or-lower" { f.forcemove f.deltastop f.lower }
+Function "move-or-raise" { f.move f.deltastop f.raise }
+
+# Root window buttons
+Button1 =      : root          : f.menu "hosts"
+Button2 =      : root          : f.menu "TwmWindows"
+Button3 =      : root          : f.menu "programs"
+Button1 = m    : root          : f.unfocus
+
+Button1 = : desktop : f.movescreen
+Button2 = : desktop : f.movescreen
+#Button3 = : desktop : f.iconify
+
+# Per window buttons
+Button1 =              : icon|iconmgr|frame|title      : f.function "move-or-raise"
+Button2 =              : icon|iconmgr|frame|title      : f.function "forcemove-or-lower"
+Button3 =              : icon|iconmgr|frame|title      : f.menu "windowmenu"
+Button1 = shift                : icon|iconmgr|frame|title      : f.iconify
+Button2 = shift        : icon|iconmgr|frame|title      : f.resize
+Button3 = shift        : icon|iconmgr|frame|title      : f.zoom
+Button1 = m            : icon|iconmgr|frame|title      : f.focus
+Button3 = m            : icon|iconmgr|frame|title      : f.saveyourself
+Button1 = control      : icon|iconmgr|frame|title      : f.forcemove
+Button3 = control      : icon|iconmgr|frame|title      : f.delete
+Button3 = control|shift        : icon|iconmgr|frame|title      : f.destroy
+Button1 = control|shift|m : window|frame|title         : f.destroy
+Button2 = control|shift|m : window|frame|title         : f.forcemove
+Button3 = control|shift|m : window|frame|title         : f.menu "windowmenu"
+
+"Up"   = m : all                               : f.panup    "100"
+"Down" = m : all                               : f.pandown  "100"
+"Left" = m : all                               : f.panleft  "100"
+"Right"        = m : all                               : f.panright "100"
+
+Function "drag-with-up" {
+       f.nail
+       f.panup "100"
+       f.raise
+       f.nail
+}
+
+Function "drag-with-down" {
+       f.nail
+       f.pandown "100"
+       f.raise
+       f.nail
+}
+
+Function "drag-with-left" {
+       f.nail
+       f.panleft "100"
+       f.raise
+       f.nail
+}
+
+Function "drag-with-right" {
+       f.nail
+       f.panright "100"
+       f.raise
+       f.nail
+}
+
+"Up"   = m|shift : window|frame|title  : f.function "drag-with-up"
+"Down" = m|shift : window|frame|title  : f.function "drag-with-down"
+"Left" = m|shift : window|frame|title  : f.function "drag-with-left"
+"Right"        = m|shift : window|frame|title  : f.function "drag-with-right"
+
+# Accelerators out of icon manager
+"F1"           =       : icon|window|frame|title       : f.iconify
+"F2"           =       : icon|window|frame|title       : f.raise
+"F3"           =       : icon|window|frame|title       : f.lower
+"F1"           =       : iconmgr                       : f.hideiconmgr
+"F2"           =       : iconmgr                       : f.hideiconmgr
+"F7"           =       : all                           : f.warpring "prev"
+"F8"           =       : all                           : f.warpring "next"
+"Menu"         =       : icon|window|frame|title       : f.showiconmgr
+
+# Accelerators in icon manager
+"F7"           =       : iconmgr                       : f.previconmgr
+"F8"           =       : iconmgr                       : f.nexticonmgr
+"Menu"         =       : iconmgr                       : f.function "select"
+
+# Accelerators everywhere for new clients
+"F4"           =       : all                   : !"xtrlock &"
+"F6"           =       : all                   : !"xterm &"
+
+menu "windowmenu"
+{
+       "Window Menu"   f.title
+       "Close"         f.delete
+       "Destroy"       f.destroy
+       ""              f.nop
+       "Icon"          f.iconify
+       "Nail"          f.nail
+       "Zoom"          f.zoom
+       "Resize"        f.resize
+       "Identify"      f.identify
+       "Forced move"   f.forcemove
+       ""              f.nop
+       "Mouse help"    f.menu "windowmice"
+}
+
+menu "windowmice"
+{
+        "Modifiers      Leftbutton      Middle      Right"      f.nop
+        ""                                                      f.nop
+        "                 Move/Raise    Move/Lower   Menu"       f.nop
+        " Shift:            Iconify           Resize       Zoom"       f.nop
+        "  Meta:       Focus/Unfocus                Checkpoint" f.nop
+        " Control:       Forced Move                       Delete"     f.nop
+        "Control+Shift:                                    Destroy"    f.nop
+}
+
+menu "special"
+{
+       "Management"            f.title
+       "Refresh"               f.refresh
+       "Restart"               f.restart
+       ""                      f.nop
+       "Kill twm"              f.quit
+       ""                      f.nop
+       "Show icon list"        f.showiconmgr
+       "Hide icon list"        f.hideiconmgr
+}
+
+menu "programs"
+{
+       "Programs"      f.title
+       "Emacs restart" !".configs/startemacs"
+       "Emacs left"    !"emacs -geometry 79x40+0+35 &"
+       ""              f.nop
+ "IRC Diziet" !"xterm -geometry 80x70+240-0 -T 'IRC Diziet' -e irc Diziet localhost &"
+ "IRC iwj" !"xterm -geometry 80x70+340-0 -T 'IRC iwj' -e irc iwj cam.irc.devel.ncipher.com &"
+       ""              f.nop
+       "Trn"           !"xterm -geometry 80x45+240+95 -e trn &"
+       "Archie"        !"xarchie &"
+       "Calc"          !"xcalc &"
+#      "Xab large"     !"xab &"
+#      "Xab small"     !"perl -e '$xab=\"xab\"; exec $xab \"other-xab\"' &"
+       ""              f.nop
+       "Management"    f.menu "special"
+       "Hosts"         f.menu "hosts"
+       "Games"         f.menu "games"
+       "Demos"         f.menu "demos"
+}
+
+
+Menu "hosts"
+{
+        "Hosts"                f.title
+@@-
+       sub host {
+               my ($x,$xfqdn,$usex,$rsh) = @_;
+               $x =~ m/^(.)(.*)$/;
+               my ($y) = (uc $1).$2;
+               my ($rlss) = $rsh ? 'rlogin' : 'ssh';
+               return " \"$y\"\t\t!\"".
+ ($usex ? "remoteshell ".($rsh?'-rrsh ':'')."$x" :
+       "xterm-CT '$x $rlss' -e $rlss $xfqdn"). "\t&\"";
+       }
+@@
+
+@@? $ncipher ?@@
+@@-
+       sub host_nc {
+               my ($x,$h,$rsh) = @_;
+               &host($x,"$x.$ncipherdom{$h}", $ncipher eq $h, $rsh);
+       }
+@@
+@@ &host_nc(   'dover',        'cam',  1)      @@
+ ""            f.nop
+@@ &host_nc(   'dounreay',     'cam',  0)      @@
+@@ &host(      'titanic','titanic.ncipher.com',        0,      1)      @@
+@@ &host(      'belgrano','belgrano.ncipher.com',      0,      0)      @@
+ ""            f.nop
+@@ &host_nc(   'pell',         'bos',  0)      @@
+ ""            f.nop
+@@ &host_nc(   'jura',         'cam',  0)      @@
+@@ &host_nc(   'islay',        'cam',  0)      @@
+@@ &host_nc(   'keynes',       'cam',  1)      @@
+@@ &host_nc(   'scarp',        'cam',  1)      @@
+@@ &host_nc(   'fowey',        'cam',  1)      @@
+@@ &host_nc(   'ludlow',       'cam',  1)      @@
+@@ &host_nc(   'greenock',     'cam',  0)      @@
+ ""            f.nop
+@@ &host_nc(   'viking',       'bos',  0)      @@
+@@ &host_nc(   'arrakis',      'bos',  0)      @@
+@@;
+
+ ""            f.nop
+ "Relativity"  !"xterm-CT 'Relativity' -e ssh -p24 r-ian@relativity.dynamic.greenend.org.uk &"
+ ""            f.nop
+ "Lewes"       !"xterm-CT 'lewes rlogin' -e rlogin lewes &"
+ "Scunthorpe"  !"xterm-CT 'scunthorpe rlogin' -e rlogin scunthorpe &"
+ "Saintpaul"   !"xterm-CT 'saintpaul rlogin' -e rlogin saintpaul &"
+ "Slough"      !"xterm-CT 'slough rlogin' -e rlogin slough &"
+ "Guildford"   !"xterm-CT 'guildford rlogin' -e rlogin guildford &"
+ "York"                !"xterm-CT 'york rlogin' -e rlogin york &"
+# "Greenock"   !"xterm-CT 'greenock rlogin' -e rlogin greenock &"
+ ""            f.nop
+ "Ursa"                !"xterm-CT 'ursa rlogin' -e rlogin ursa.cus.cam.ac.uk -l iwj10 &"
+ "Taurus"      !"xterm-CT 'taurus ssh' -e ssh taurus.cus.cam.ac.uk -l iwj10 &"
+ "Taurus rlogin" !"xterm-CT 'taurus rlogin' -e rlogin taurus.cus.cam.ac.uk -l iwj10 &"
+ "Bootes"      !"xterm-CT 'bootes rlogin' -e rlogin bootes.cus.cam.ac.uk -l iwj10 &"
+ "Thor"                !"xterm-CT 'thor rlogin' -e rlogin hammer.thor.cam.ac.uk -l iwj10 &"
+ ""            f.nop
+ "Leek"                !"xterm-CT 'leek rlogin' -e rlogin leek.cam-orl.co.uk -l iwj&"
+ "Lobster"     !"xterm-CT 'lobster rlogin' -e rlogin lobster.cam-orl.co.uk -l iwj&"
+ ""            f.nop
+ "Shep"                !"xterm-CT 'shep ssh' -e ssh shep.cl.cam.ac.uk -l iwj10 &"
+ "Ouse"                !"xterm-CT 'ouse ssh' -e ssh ouse.cl.cam.ac.uk -l iwj10 &"
+       ""              f.nop
+ "Chiark"      !"xterm-CT 'chiark ssh' -e ssh chiark.greenend.org.uk -l ijackson &"
+ "Chiark ian"  !"xterm-CT 'chiark ssh ian' -e ssh chiark.greenend.org.uk -l ian &"
+ "Chiark II"   !"xterm-CT 'chiark ssh II' -e ssh chiark.greenend.org.uk -t -l ijackson personal/linux/bin/II &"
+ "Iguana"      !"xterm-CT 'iguana ssh' -e ssh iguana.ucam.org -l ijackson &"
+ "Utter"       !"xterm-CT 'utter ssh' -e ssh utter.chaos.org.uk -l ijackson &"
+       ""              f.nop
+ "Club"                !"xterm-CT 'club rlogin' -e rlogin club.damtp.cam.ac.uk -l iwj10 &"
+ "Greed"       !"xterm-CT 'greed rlogin' -e rlogin greed.damtp.cam.ac.uk -l iwj10 &"
+ "Enghp"     !"xterm -geometry 80x50 -T 'enghp' -e rlogin enghp.chu.cam.ac.uk -l iwj10 &"
+ "Impren"    !"xterm-CT 'impren rlogin' -e rlogin impren.al.cl.cam.ac.uk -l ijackson &"
+ ""            f.nop
+ "Novare -v"   !"xterm-CT 'novare -v' -e ssh -v debian.novare.net -l iwj &"
+ "Novare"      !"xterm-CT 'novare' -e ssh debian.novare.net -l iwj &"
+ "Debian"      !"xterm-CT 'debian' -e rlogin ftp.debian.org -l iwj &"
+ "Debra"               !"xterm-CT 'debra' -e rlogin debra.debian.org -l iwj &"
+ "GNU"         !"xterm-CT 'gnu' -e rlogin mescaline.gnu.org -l ijackson &"
+ "GNU dist"    !"xterm-CT 'gnudist' -e rlogin gnudist.gnu.org -l ijackson &"
+ "Master"      !"xterm-CT 'master' -e ssh master.debian.org -l iwj &"
+ "Va"          !"xterm-CT 'va' -e ssh va.debian.org -l iwj &"
+ "Nyx"         !"xterm-CT 'nyx - rlogin' -e rlogin nyx.cs.du.edu -l ijackson &"
+ "Sunsite"     !"xterm-CT 'sunsite' -e rlogin sunsite.unc.edu -l iwj &"
+ "White"               !"xterm-CT 'white' -geometry 80x25 -e sh -c \
+               'rlogin white.dogwood.com; line >/dev/null' &"
+}
+
+Menu "demos"
+{
+       "Demos - probably broken"       f.title
+       "Ico"                           !"ico &"
+       "Maze"                          !"maze &"
+       "Muncher"                       !"muncher &"
+       "Plaid"                         !"plaid &"
+       "Worm"                          !"worm &"
+       "Colors"                        !"xcolors &"
+       "Eyes"                          !"xeyes &"
+       "Life"                          !"xlife &"
+       "XLogo"                         !"xlogo &"
+}
+
+Menu "games"
+{
+       "Games - probably broken"       f.title
+       "Chomp"                         !"xchomp &"
+       "Cbzone"                        !"cbzone &"
+       "MazeWar"                       !"xterm -e mazewar &"
+       "Mille"                         !"xmille &"
+       "Reversi"                       !"reversi &"
+       "Roids"                         !"roids &"
+       "Robots"                        !"xrobots &"
+       "Shanghai"                      !"xmj &"
+       "Solitaire"                     !"xsol &"
+       "Spider"                        !"spider &"
+}
diff --git a/from-cvs/files/_.w3m_config b/from-cvs/files/_.w3m_config
new file mode 100644 (file)
index 0000000..1d0e9ba
--- /dev/null
@@ -0,0 +1,24 @@
+extbrowser lynx
+mailer mailx
+editor sensible-editor
+dns_order 0
+noproxy_netaddr 1
+use_cookie 0
+wrap_search 1
+show_lnum 0
+confirm_qq 0
+pagerline 10000
+form_color 4
+image_color 2
+anchor_color 3
+basic_color 7
+color 1
+multicol 0
+display_link 1
+frame 1
+tabstop 8
+@@?$chiark?@@@@#
+http_proxy http://www-cache.chiark.greenend.org.uk:3128/
+gopher_proxy http://www-cache.chiark.greenend.org.uk:3128/
+ftp_proxy http://www-cache.chiark.greenend.org.uk:3128/
+@@;@@#
diff --git a/from-cvs/files/_.xsession b/from-cvs/files/_.xsession
new file mode 100755 (executable)
index 0000000..d54d437
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+exec >>.configs/xsession-errors 2>&1
+echo xsession running
+
+. .configs/setenvir
+
+eval `.configs/configure`
+
+set
+
+if [ -x .configs/xmodmap-kb=$kb ]
+then
+       .configs/xmodmap-kb=$kb | xmodmap -
+else
+       xmodmap .configs/xmodmap-kb=$kb
+fi
+
+xrdb -merge .configs/Xresources
+xrdb -merge .configs/Xresources-colours=$colours
+xrdb -merge .configs/Xresources-font=$font
+xrdb -merge .configs/Xresources-size=$size
+
+${lxtermpath}xterm -C $lxtermopts -T "login" -e .configs/xprofile
+echo xterm done logging out again
+rm .configs/xsession-errors
+.configs/eliforp
diff --git a/from-cvs/files/bitmap_circle b/from-cvs/files/bitmap_circle
new file mode 100644 (file)
index 0000000..8999c1f
--- /dev/null
@@ -0,0 +1,8 @@
+#define circle_width 16
+#define circle_height 16
+#define circle_x_hot 7
+#define circle_y_hot 7
+static char circle_bits[] = {
+   0x00, 0x00, 0xe0, 0x03, 0x18, 0x0c, 0x04, 0x10, 0x04, 0x10, 0x02, 0x20,
+   0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x02, 0x20, 0x04, 0x10, 0x04, 0x10,
+   0x18, 0x0c, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_circle-inv b/from-cvs/files/bitmap_circle-inv
new file mode 100644 (file)
index 0000000..3b544bc
--- /dev/null
@@ -0,0 +1,6 @@
+#define circle_inv_width 16
+#define circle_inv_height 16
+static char circle_inv_bits[] = {
+   0x00, 0x00, 0xe0, 0x03, 0xf8, 0x0f, 0xfc, 0x1f, 0xfc, 0x1f, 0xfe, 0x3f,
+   0xfe, 0x3f, 0xfe, 0x3f, 0xfe, 0x3f, 0xfe, 0x3f, 0xfc, 0x1f, 0xfc, 0x1f,
+   0xf8, 0x0f, 0xe0, 0x03, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_circle-neg b/from-cvs/files/bitmap_circle-neg
new file mode 100644 (file)
index 0000000..95d62f6
--- /dev/null
@@ -0,0 +1,8 @@
+#define circle-neg_width 16
+#define circle-neg_height 16
+#define circle-neg_x_hot 7
+#define circle-neg_y_hot 7
+static char circle-neg_bits[] = {
+   0xff, 0xff, 0x1f, 0xfc, 0xe7, 0xf3, 0xfb, 0xef, 0xfb, 0xef, 0xfd, 0xdf,
+   0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0xdf, 0xfd, 0xdf, 0xfb, 0xef, 0xfb, 0xef,
+   0xe7, 0xf3, 0x1f, 0xfc, 0xff, 0xff, 0xff, 0xff};
diff --git a/from-cvs/files/bitmap_fischer b/from-cvs/files/bitmap_fischer
new file mode 100644 (file)
index 0000000..88f272c
--- /dev/null
@@ -0,0 +1,14 @@
+#define ft_width 32
+#define ft_height 32
+static char ft_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00,
+   0xe8, 0x02, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00,
+   0x08, 0x02, 0x00, 0x00, 0x0c, 0x06, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00,
+   0xe8, 0x02, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0xc0, 0xdd, 0x3f,
+   0x00, 0xc0, 0xdd, 0x3f, 0x00, 0xc0, 0xdd, 0x2f, 0x00, 0xc0, 0x3d, 0x00,
+   0x00, 0xc0, 0xdd, 0x2f, 0x00, 0xc0, 0xdd, 0x3f, 0x00, 0xc0, 0xd8, 0x3f,
+   0xc0, 0xdf, 0x1d, 0x00, 0xc0, 0xdf, 0x1d, 0x00, 0xd0, 0xdf, 0x1d, 0x00,
+   0x30, 0xe0, 0x1d, 0x00, 0xd0, 0xdf, 0x1d, 0x00, 0xc0, 0xdf, 0x18, 0x00,
+   0xc0, 0xdf, 0x1d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_mail.bitmap b/from-cvs/files/bitmap_mail.bitmap
new file mode 100644 (file)
index 0000000..5ee0d50
--- /dev/null
@@ -0,0 +1,30 @@
+#define mail_width 60
+#define mail_height 40
+static unsigned char mail_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00,
+   0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x06, 0x00, 0x00,
+   0x00, 0x00, 0x1e, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00,
+   0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x01, 0x00, 0x00,
+   0x00, 0x00, 0x19, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x80, 0x19, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x19, 0x00, 0x80, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x19, 0x00, 0x00, 0x18, 0x00, 0x04, 0x15, 0x10, 0x18, 0x00,
+   0x00, 0x18, 0x00, 0x82, 0x0a, 0x08, 0x18, 0x00, 0x00, 0x18, 0x00, 0x41,
+   0x05, 0x04, 0x18, 0x00, 0x00, 0x18, 0x80, 0xa0, 0x02, 0x02, 0x18, 0x00,
+   0x00, 0x18, 0x40, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x18, 0x20, 0x00,
+   0x80, 0x00, 0x18, 0x00, 0x00, 0x18, 0x10, 0x00, 0x40, 0x00, 0x18, 0x00,
+   0x00, 0xf8, 0x0f, 0x80, 0xe0, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0x07, 0xc0,
+   0xf1, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x02, 0xe0, 0x08, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x01, 0x60, 0x04, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
+   0x02, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_mail.mask b/from-cvs/files/bitmap_mail.mask
new file mode 100644 (file)
index 0000000..c0c9185
--- /dev/null
@@ -0,0 +1,30 @@
+#define mail_width 60
+#define mail_height 40
+static unsigned char mail_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x80, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x80, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff,
+   0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00,
+   0x00, 0xe0, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_network.bitmap b/from-cvs/files/bitmap_network.bitmap
new file mode 100644 (file)
index 0000000..b9f3e62
--- /dev/null
@@ -0,0 +1,16 @@
+#define network_width 40
+#define network_height 30
+static unsigned char network_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x07,
+   0x00, 0x00, 0x00, 0x54, 0x44, 0x02, 0xdb, 0x00, 0x00, 0xc0, 0x03, 0xdb,
+   0x00, 0x00, 0x44, 0x02, 0xff, 0x03, 0x00, 0x40, 0x02, 0x00, 0x02, 0x7c,
+   0x44, 0x02, 0x00, 0x02, 0x54, 0x40, 0x02, 0x00, 0x02, 0xec, 0x7f, 0x82,
+   0x0f, 0x1f, 0x54, 0x40, 0xfe, 0xf8, 0x71, 0x7c, 0x04, 0x82, 0x0f, 0x1f,
+   0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00,
+   0x02, 0x01, 0x00, 0x54, 0x04, 0x02, 0x81, 0x0a, 0xfc, 0x1f, 0x02, 0xe1,
+   0x0f, 0x00, 0xf0, 0xfa, 0x23, 0x00, 0x00, 0x10, 0x02, 0x22, 0x00, 0x00,
+   0x10, 0x02, 0x22, 0x00, 0xfe, 0xd7, 0x83, 0xff, 0x7f, 0x00, 0x10, 0x82,
+   0x35, 0x67, 0x00, 0x10, 0x82, 0xda, 0x5a, 0x00, 0x10, 0x82, 0x15, 0x42,
+   0x50, 0x15, 0x82, 0xda, 0x5a, 0xf0, 0x1f, 0x82, 0xd5, 0x5a, 0xa0, 0x02,
+   0x80, 0x3a, 0x67, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_network.mask b/from-cvs/files/bitmap_network.mask
new file mode 100644 (file)
index 0000000..4d130e1
--- /dev/null
@@ -0,0 +1,16 @@
+#define network_width 40
+#define network_height 30
+static unsigned char network_bits[] = {
+   0xfe, 0x01, 0x00, 0x00, 0x00, 0xfe, 0x07, 0x00, 0x00, 0x00, 0xfe, 0xe7,
+   0x87, 0xff, 0x01, 0xfe, 0xe5, 0x87, 0xff, 0x01, 0xfe, 0xe5, 0x87, 0xff,
+   0x07, 0x00, 0xe4, 0x87, 0xff, 0x07, 0xfe, 0xe4, 0x87, 0xff, 0x07, 0xfe,
+   0xe4, 0x07, 0x00, 0x07, 0xfe, 0xff, 0xc7, 0x9f, 0x7f, 0xfe, 0xff, 0xff,
+   0xff, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0x7f, 0xfe, 0xe4, 0xff, 0xff, 0x7f,
+   0xfe, 0x04, 0xc7, 0x9f, 0x7f, 0x00, 0x04, 0x87, 0x01, 0x00, 0xfe, 0x04,
+   0x87, 0xc1, 0x1f, 0xfe, 0x07, 0x87, 0xf1, 0x1f, 0xfe, 0xff, 0xff, 0xf7,
+   0x1f, 0xfe, 0xff, 0xff, 0xf7, 0x1f, 0x00, 0xf8, 0xff, 0x77, 0x00, 0xfe,
+   0x3f, 0xc7, 0xf7, 0xff, 0xfe, 0xff, 0xc7, 0xff, 0xff, 0xfe, 0xff, 0xc7,
+   0xff, 0xff, 0x00, 0x38, 0xc7, 0xff, 0xff, 0xf8, 0x3f, 0xc7, 0xff, 0xff,
+   0xf8, 0x3f, 0xc7, 0xff, 0xff, 0xf8, 0x3f, 0xc7, 0xff, 0xff, 0xf8, 0x3f,
+   0xc7, 0xff, 0xff, 0xf8, 0x3f, 0xc7, 0xff, 0xff, 0x00, 0x00, 0xc0, 0xff,
+   0xff, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_nomail.bitmap b/from-cvs/files/bitmap_nomail.bitmap
new file mode 100644 (file)
index 0000000..d26e691
--- /dev/null
@@ -0,0 +1,30 @@
+#define nomail_width 60
+#define nomail_height 40
+static unsigned char nomail_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00,
+   0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00,
+   0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0xf8, 0xff, 0xff,
+   0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_nomail.mask b/from-cvs/files/bitmap_nomail.mask
new file mode 100644 (file)
index 0000000..4d5fe21
--- /dev/null
@@ -0,0 +1,30 @@
+#define nomail_width 60
+#define nomail_height 40
+static unsigned char nomail_bits[] = {
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff,
+   0xff, 0xff, 0x3f, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
diff --git a/from-cvs/files/bitmap_server.bitmap b/from-cvs/files/bitmap_server.bitmap
new file mode 100644 (file)
index 0000000..5d5b694
--- /dev/null
@@ -0,0 +1,7 @@
+#define server_width 20
+#define server_height 15
+static unsigned char server_bits[] = {
+   0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f, 0xff, 0xff, 0x0f,
+   0xff, 0xff, 0x0f, 0xff, 0xc1, 0x0f, 0xff, 0xdf, 0x0f, 0xff, 0xdf, 0x0f,
+   0xff, 0xdf, 0x0f, 0x57, 0xdf, 0x0f, 0x03, 0x00, 0x00, 0xab, 0xfb, 0x0d,
+   0xff, 0xfb, 0x0d, 0xff, 0xfb, 0x0f, 0x3f, 0x00, 0x00};
diff --git a/from-cvs/files/emacs_dired-alternate.el b/from-cvs/files/emacs_dired-alternate.el
new file mode 100644 (file)
index 0000000..8c6c258
--- /dev/null
@@ -0,0 +1,30 @@
+; dired-alternate.el
+; (C)1991 Ian Jackson
+; This file is placed under the protection of the GNU General Public Licence.
+;
+; Patch to make "F" in dired-mode replace the current (dired) buffer with
+; a buffer visiting the file the cursor is on.
+;
+; Also new dired-run-file function.
+
+(defun dired-find-alternate-file ()
+  "Like dired-find-file and find-alternate-file put together"
+  (interactive)
+  (find-alternate-file (dired-get-filename)))
+
+(defun dired-run-file ()
+  "Runs the file pointed to in dired - output if any is put in the *Shell Command Output* buffer"
+  (interactive)
+  (let ((file (dired-get-filename))
+       (shelco (get-buffer-create "*Shell Command Output*"))
+       (oldbuf (current-buffer)))
+    (message "Running %s..." file)
+    (set-buffer shelco)
+    (erase-buffer)
+    (set-buffer-modified-p nil)
+    (call-process file nil shelco nil)
+    (if (buffer-modified-p)
+       (display-buffer shelco))
+    (message "Running %s...done" file)
+    (set-buffer oldbuf)
+    (revert-buffer)))
diff --git a/from-cvs/files/emacs_find-alternate-18style.el b/from-cvs/files/emacs_find-alternate-18style.el
new file mode 100644 (file)
index 0000000..beaa39d
--- /dev/null
@@ -0,0 +1,43 @@
+(defun find-alternate-file (filename)
+  "Find file FILENAME, select its buffer, kill previous buffer.
+If the current buffer now contains an empty file that you just visited
+\(presumably by mistake), use this command to visit the file you really want.
+
+This function has been modified by Ian Jackson so as to revert to the
+old (Emacs 18) behaviour of not requiring you to cut out the current
+buffer's filename."
+  (interactive
+   (let ((file buffer-file-name)
+        (file-dir nil))
+     (and file
+         (setq file-dir (file-name-directory file)))
+     (list (read-file-name
+           "Find alternate file: " file-dir nil nil nil))))
+  (and (buffer-modified-p)
+       ;; (not buffer-read-only)
+       (not (yes-or-no-p (format "Buffer %s is modified; kill anyway? "
+                                (buffer-name))))
+       (error "Aborted"))
+  (let ((obuf (current-buffer))
+       (ofile buffer-file-name)
+       (onum buffer-file-number)
+       (otrue buffer-file-truename)
+       (oname (buffer-name)))
+    (rename-buffer " **lose**")
+    (setq buffer-file-name nil)
+    (setq buffer-file-number nil)
+    (setq buffer-file-truename nil)
+    (unwind-protect
+       (progn
+         (unlock-buffer)
+         (find-file filename))
+      (cond ((eq obuf (current-buffer))
+            (setq buffer-file-name ofile)
+            (setq buffer-file-number onum)
+            (setq buffer-file-truename otrue)
+            (lock-buffer)
+            (rename-buffer oname))))
+    (or (eq (current-buffer) obuf)
+       (kill-buffer obuf))))
+
+(provide 'find-alternate-18style)
diff --git a/from-cvs/files/emacs_ian-aliases.el b/from-cvs/files/emacs_ian-aliases.el
new file mode 100644 (file)
index 0000000..ff6e330
--- /dev/null
@@ -0,0 +1,33 @@
+;;    Ian Jackson's mail nicknames file.    -*- fundamental -*-
+;;                                         (don't edit as elisp)
+
+;; Address translations for PGP
+(setq autopgp-outgoing-address-translation-alist '(
+  ("ian".                                "Ian Jackson <ijackson@nyx.cs.du.edu>")
+  ("Ian Jackson <ian@chiark>".           "Ian Jackson <ijackson@nyx.cs.du.edu>")
+  ("Owen Dunn <O.S.Dunn@cai.cam.ac.uk>".  "Owen S. Dunn <O.S.Dunn@cai.cam.ac.uk>")
+  ("Stephen Early <sde1000@cam.ac.uk>".   "Stephen Early <sde1000@hermes.cam.ac.uk>")
+  ("Pete.Chown@dale.dircon.co.uk".        "Pete Chown <pc@dale.demon.co.uk>")
+  ("(Pete Chown) pc@dale.demon.co.uk".    "Pete Chown <pc@dale.demon.co.uk>")
+  ("Richard Brooksby <richard@harlequin.co.uk>".
+                                          "Richard Brooksby <richard@harlqn.co.uk>")
+  ("Ron Pritchett <pritchet@scsn.net>".
+                                "Ron Pritchett <pritchet@usceast.cs.scarolina.edu>")
+  ("szahn%masterix@goesser.sie.siemens.co.at".
+                                          "Steffen Zahn <szahn@ets5.uebemc.siemens.de>")
+  ("Phil Karn <karn@unix.ka9q.ampr.org>". "Phil Karn <karn@qualcomm.com>")
+  ("Alan Bain <afrb2@hermes.cam.ac.uk>".  "Alan F. R. Bain <afrb2@cam.ac.uk>")
+  ("Andrew Burt <aburt@nyx.cs.du.edu>".
+                                          "Andrew Burt <aburt@cs.du.edu>")
+  ("Grant.Denkinson@nottingham.ac.uk".
+                                "Grant W. Denkinson <G.W.Denkinson@geog.nott.ac.uk>")
+  ("Ian Murdock <imurdock@gnu.ai.mit.edu>".
+                                          "Ian Murdock <imurdock@debian.org>")
+  ("Ian A. Murdock <imurdock@debian.org>"."Ian Murdock <imurdock@debian.org>")
+  ("Tim Morley <tim@island.demon.co.uk>". "Tim Morley <tim@derwent.co.uk>")
+  ("Eva R. Myers <erm1001@phy.cam.ac.uk>". "Eva Rebecca Myers <erm1001@cam.ac.uk>")
+  ("Patrick.Weemeeuw@kulnet.kuleuven.ac.be".
+                  "Patrick J.G.C. Weemeeuw <patrick.weemeeuw@kulnet.kuleuven.ac.be>")
+  ("Allen Wheelwright <apw24@hermes.cam.ac.uk>".
+                                          "Allen Wheelwright <apw24@cam.ac.uk>")
+))
diff --git a/from-cvs/files/emacs_ian-x.el b/from-cvs/files/emacs_ian-x.el
new file mode 100644 (file)
index 0000000..2879ecd
--- /dev/null
@@ -0,0 +1,19 @@
+; Ian's X initialisations.
+
+(if (not (string-match "^18\." emacs-version))
+    (require 'ian-x19)
+    
+  (require 'x-fix-mouse)
+  (define-key mouse-map x-button-left-up 'x-cut-text-if-moved)
+  (define-key mouse-map x-button-middle 'x-cut-text)
+  (define-key mouse-map x-button-c-middle 'x-cut-and-wipe-text)
+  (define-key mouse-map x-button-right 'x-paste-text))
+
+; (x-set-cursor-color "white")
+; (x-set-foreground-color "white")
+; (x-set-background-color "black")
+
+(if (boundp 'tool-bar-mode)
+    (tool-bar-mode -1))
+  
+; End of this file.
diff --git a/from-cvs/files/emacs_ian-x19.el b/from-cvs/files/emacs_ian-x19.el
new file mode 100644 (file)
index 0000000..f002b11
--- /dev/null
@@ -0,0 +1,87 @@
+; Ian's X, Emacs-19 (and higher) initialisations
+
+;(setq frame-title-format
+;      '(multiple-frames "%b" ("" invocation-name " : "
+;                              user-real-login-name "@" system-name)))
+
+;(setq default-frame-alist
+;      (append '((internal-border-width . 1)) default-frame-alist))
+;(scroll-bar-mode nil)
+;(modify-frame-parameters (selected-frame) '((internal-border-width . 1)))
+;(let ((bd (cdr (assoc 'border-width (frame-parameters)))))
+;  (set-frame-position (selected-frame)
+;                      (- 1024 ; was (string-to-number (ians-configure "pixels_x"))
+;                         (+ (frame-pixel-width) bd))
+;                      bd))
+
+(setq mouse-yank-at-point t)
+(setq x-pointer-shape x-pointer-left-ptr)
+(set-mouse-color (cdr (assoc 'mouse-color (frame-parameters))))
+
+(global-set-key [mode-line mouse-1]
+                '(lambda (event) (interactive "e\n")
+                   (let ((old-window (selected-window)))
+                     (unwind-protect
+                         (progn (select-window (posn-window (event-end event)))
+                                (scroll-up))
+                       (select-window old-window)))))
+
+(global-set-key [mode-line C-mouse-3] 'mouse-delete-window)
+
+(global-set-key [mode-line mouse-3]
+                '(lambda (event) (interactive "e\n")
+                   (let ((old-window (selected-window)))
+                     (unwind-protect
+                         (progn (select-window (posn-window (event-end event)))
+                                (scroll-down))
+                       (select-window old-window)))))
+
+(global-set-key [mode-line down-mouse-2] 'mouse-buffer-menu)
+
+(global-unset-key [C-down-mouse-1])
+(global-set-key [C-mouse-1] 'save-buffer)
+(global-unset-key [C-down-mouse-2])
+(global-set-key [C-mouse-2] 'mouse-kill)
+
+(fset 'run-programs-menu '(keymap
+                           "Programs"
+                           ([compile] . ("Quicker Compile" . quicker-compile))
+                           ([vm] . ("VM" . vm))))
+
+(global-unset-key [down-C-mouse-3])
+(global-set-key [down-C-mouse-3] 'run-programs-menu)
+
+(global-set-key [mouse-2] 'mouse-yank-at-click)
+(global-set-key [mouse-3] 'mouse-save-then-kill)
+
+(setq interprogram-paste-function
+      '(lambda () (x-get-cut-buffer 0)))
+
+;      (append '((vertical-scroll-bars . nil) (horizontal-scroll-bars . nil)
+;              (menu-bar-lines . 0))
+;            default-frame-alist))
+
+;(if (assoc 'user-position default-frame-alist) t
+;  (setq default-frame-alist
+;        (append '((top . 0) (left . -1)) 
+;              default-frame-alist))
+;  (set-frame-position (selected-frame) -1 0))
+
+;(if (equal (ians-configure "colours") "mono")
+;    (progn
+;      (setq default-frame-alist
+;            (append '((foreground-color . "black") (background-color . "white")
+;                      (mouse-color . "white") (cursor-color . "black"))
+;                    default-frame-alist))
+;      (set-face-foreground 'modeline "white")
+;      (set-face-background 'modeline "black")
+;      (modify-frame-parameters (selected-frame) '((cursor-color . "black")))
+;      ))
+;(if (equal (ians-configure "colours") "mono")
+;    (setq inverse-video t))
+;
+; (append '((foreground-color . "black") (background-color . "white")
+;                  (mouse-color . "white") (cursor-color . "black"))
+;                    default-frame-alist)))
+
+(provide 'ian-x19)
diff --git a/from-cvs/files/emacs_ian.el b/from-cvs/files/emacs_ian.el
new file mode 100644 (file)
index 0000000..e11181c
--- /dev/null
@@ -0,0 +1,518 @@
+; This is my real emacs start-up file (for chiark).
+; 
+(make-variable-buffer-local 'indent-line-function)
+; Un-disable narrow and eval-expression
+(put 'narrow-to-region 'disabled nil)
+(put 'eval-expression 'disabled nil)
+(standard-display-european t)
+;
+; Make sure we don't disturb links or change ownership, use numbers
+(setq backup-by-copying-when-mismatch t)
+(setq backup-by-copying-when-linked t)
+;(setq version-control t
+;      kept-new-versions 4
+;      kept-old-versions 4
+;      trim-versions-without-asking t)
+;
+; Various one-liners
+(setq require-final-newline "ask")
+(if (string= window-system 'x) (load-library "ian-x"))
+(load-library "ian-aliases")
+; (load-library "auto-pgp")
+; (load-library "debian-changelog-mode")
+; (if (string= (getenv "TERM") "bbcb32") (setq term-file-prefix nil))
+; (setq explicit-shell-file-name "/usr/local/bin/tcsh")
+(setq inhibit-local-variables t)
+(setq enable-local-variables 'ask-me)
+(setq enable-recursive-minibuffers t)
+(setq compile-command "make")
+(setq diff-switches "-u")
+(display-time)
+;
+(set-variable 'search-repeat-char 28)
+(if (string-match "^19\." emacs-version)
+    (progn
+      (setq file-name-handler-alist     ; Disable nasty auto-loading of ange-ftp
+            (delq (rassq 'ange-ftp-completion-hook-function file-name-handler-alist)
+                  file-name-handler-alist))
+      (require 'find-alternate-18style)
+      (defun unset-down-mouse-23 ()
+        (local-set-key [mouse-2] 'mouse-yank-at-click)
+        (local-unset-key [down-mouse-2])
+        (local-unset-key [down-mouse-3])
+        (local-unset-key [C-down-mouse-3]))
+      (add-hook 'vm-mode-hook 'unset-down-mouse-23)
+      (add-hook 'vm-mail-mode-hook 'unset-down-mouse-23)
+      (add-hook 'text-mode-hook 'unset-down-mouse-23)
+      (add-hook 'Info-mode-hook
+                (function (lambda ()
+                            (local-set-key " " 'scroll-up)
+                            (local-set-key "\7f" 'scroll-down))))
+      (define-key isearch-mode-map "\1c" 'isearch-repeat-forward)
+      (define-key isearch-mode-map "\1d" 'isearch-quote-char)))
+;
+(menu-bar-mode -1)
+(defun terminal-keybindings ()
+  "This function should be called by the term-setup-hook mechanism"
+  (interactive)
+  ; Set my own keybindings
+  ;
+  ; Set keybindings generally (including I-search on C-\)
+;  (global-set-key "   " 'self-insert-command)
+  (global-set-key "\1c" 'isearch-forward)
+  (global-set-key "\r" 'newline-and-indent)
+  (global-set-key "\ f" 'set-mark-command)
+  (global-set-key "\1d" 'quoted-insert)
+  ;
+  ; Set keybindings on esc-map
+  (global-set-key "\e#" 'query-replace-regexp)
+  (global-set-key "\e+" 'toggle-truncate-lines)
+  (global-set-key "\eg" 'goto-line)
+  (global-set-key "\es" 'isearch-forward-regexp)
+  (global-set-key "\e\e" 'eval-expression)
+  ;
+  ; Set keybindings on ^X-map.
+  (global-set-key "\18m" 'vm-mail)
+  (global-set-key "\18\1c" 'save-buffer)
+  (global-set-key "\18\1d" 'toggle-read-only)
+  (global-set-key "\18#" 'recover-file)
+  (global-set-key "\18\12" 'bury-buffer)
+  (global-set-key "\18\v" 'quicker-compile)
+  (global-set-key "\18\18" 'exchange-point-and-mark)
+  (global-set-key "\18\1a" 'load-ange-ftp)
+  (global-set-key "\184\16" 'scroll-other-window)
+  (global-set-key "\184m" 'vm-mail-other-window)
+  (global-set-key "\189" 'vm-visit-folder)
+  (global-set-key "\188" 'rmail-input)
+  (global-set-key "\18p" 'cite-region)
+  (global-set-key "\18F" 'mail-formletter)
+  ;
+  ; Set keybindings for Sun numeric pad.
+  (setq esc-bracket-map (make-keymap))
+  (define-key esc-bracket-map "D" 'backward-char)
+  (define-key esc-bracket-map "C" 'forward-char)
+  (define-key esc-bracket-map "A" 'previous-line)
+  (define-key esc-bracket-map "B" 'next-line)
+  (define-key esc-map "[" esc-bracket-map)
+  (global-set-key "\e[214z" 'beginning-of-buffer)
+  (global-set-key "\e[220z" 'end-of-buffer)
+  (global-set-key "\e[216z" 'scroll-down)
+  (global-set-key "\e[222z" 'scroll-up)
+  (global-set-key "\e[192z" 'save-buffer)
+  (global-set-key "\e[194z" 'save-some-buffers)
+  (global-set-key "\e[195z" 'undo)
+  (global-set-key "\e[193z" 'call-last-kbd-macro)
+  (global-set-key "\e[196z" 'switch-to-buffer-other-window)
+  (global-set-key "\e[197z" 'copy-region-as-kill)
+  (global-set-key "\e[198z" 'find-file)
+  (global-set-key "\e[199z" 'yank)
+  (global-set-key "\e[198z" 'find-alternate-file)
+  (global-set-key "\e[200z" 'find-file)
+  (global-set-key "\e[201z" 'kill-region)
+  (global-set-key "\e[-1z" 'info)
+  ;
+  ; Set keybindings for Chiarks' x11emacs
+  (global-set-key "\e[5~" 'scroll-down)
+  (global-set-key "\e[6~" 'scroll-up)
+  ;
+  ; Set keybindings for knackered vt100-like terminal emulators.
+  (global-set-key "\eOt" 'scroll-down)
+  (global-set-key "\eOu" 'scroll-up)
+  (global-set-key "\eOD" 'backward-char)
+  (global-set-key "\eOC" 'forward-char)
+  (global-set-key "\eOA" 'previous-line)
+  (global-set-key "\eOB" 'next-line))
+(setq term-setup-hook 'terminal-keybindings)     ; remap keys in due course
+;
+; Autoload definitions
+(autoload 'tar-mode "tar-mode")
+(autoload 'uncompress-while-visiting "uncompress")
+; (autoload 'c++-mode "c++-mode" "Mode for editing C and C++ programs" t)
+(autoload 'hide-ifdef-mode "hideif" "For editing code with #ifdefs" t)
+;(setq-default indent-tabs-mode nil)
+(autoload 'dired-find-alternate-file "dired-alternate" "Find alternately" t)
+(autoload 'dired-run-file "dired-alternate" "Run this file" t)
+(autoload 'perl-mode "perl-mode" "Mode for Perl code" t)
+; (autoload 'rmail "rmail-fixed" "Patched mail reader" t)
+(autoload 'quicker-compile "quicker-compile" "Patched Compile mode" t)
+
+(autoload 'vm "vm" "Start VM on your primary inbox." t)
+(autoload 'vm-visit-folder "vm" "Start VM on an arbitrary folder." t)
+(autoload 'vm-visit-virtual-folder "vm" "Visit a VM virtual folder." t)
+(autoload 'vm-mode "vm" "Run VM major mode on a buffer" t)
+(autoload 'vm-mail "vm" "Send a mail message using VM." t)
+(autoload 'vm-submit-bug-report "vm" "Send a bug report about VM." t)
+;
+; (autoload 'info "info-fixed" "Patched info browser" t)
+(setq shell-mode-hook
+      '(lambda ()
+         (make-variable-buffer-local 'scroll-step)
+         (setq scroll-step 1)))
+; (setq inferior-lisp-program "kcl")
+(setq dired-mode-hook
+      '(lambda ()
+        (define-key dired-mode-map "F" 'dired-find-alternate-file)
+        (define-key dired-mode-map "X" 'dired-run-file)))
+;
+; Prevent loading of default init file and do some of the things it did
+; (setq inhibit-default-init t)
+;
+; Additional alist handling function
+;(defun alist-remove-elem (s s-list)
+;  "Delete the element of the alist S-LIST whose car is S"
+;  (if s-list (if (equal s (car (car s-list)))
+;               (cdr s-list)
+;             (cons (car s-list) (alist-remove-elem s (cdr s-list))))
+;    (nil)))
+;
+; Load C++ mode and edit Perl in perl mode
+(setq auto-mode-alist
+      (append '(("\\.[ch]$" . c-mode)
+                ("\\.[CH]$" . c++-mode)
+                ("\\.cc$" . c++-mode)
+                ("\\.hh$" . c++-mode)
+;                ("\\.tar$" . tar-mode)
+                ("\\.pl$" . perl-mode)
+                ("\\.ci$" . tex-mode)
+                ("\\.Z$" . uncompress-while-visiting))
+              auto-mode-alist))
+(setq interpreter-mode-alist
+      (append '(("sh" . fundamental-mode)
+                ("bash" . fundamental-mode))
+              interpreter-mode-alist))
+;
+; Use auto-fill when editing text
+(add-hook 'text-mode-hook '(lambda () (auto-fill-mode 1)))
+; (add-hook 'text-mode-hook '(lambda () (local-set-key "       " 'self-insert-command)))
+;
+; Set up newline to auto-indent & other stuff for perl, c++ and c modes.
+(setq perl-mode-hook '(lambda () 
+                        (local-set-key ";" 'self-insert-command)))
+(setq c++-mode-hook '(lambda ()
+                       (hide-ifdef-mode 1)
+                       (local-set-key ":" 'electric-c++-terminator)))
+; c++-electric-colon
+(setq c-mode-hook '(lambda ()
+                     (hide-ifdef-mode 1)
+                     (c-set-offset 'substatement-open 0 nil)
+                     (local-set-key "\r" 'newline-and-indent)))
+(setq c-hanging-comment-ender-p nil)
+;
+(defun vm-mail-other-window ()
+  "Like `vm-mail' command, but display buffer in another window."
+  (interactive)
+  (switch-to-buffer-other-window (current-buffer))
+  (vm-mail))
+;
+; mail precedences
+(setq mail-precedence-key-alist
+      '((?0  . "special-delivery")
+        (?1  . "air-mail")
+        (?2  . "first-class")
+        (?3  . "second-class")
+        (?5  . "third-class")
+        (?\  . nil)
+        (?6  . "bulk")
+        (?9  . "junk")))
+;
+(defun mail-precedence-as-key ()
+  "Set precedence by looking up last command char in mail-precedence-key-alist"
+  (interactive)
+  (message "%s" (concat "Precedence ["
+                        (mapconcat '(lambda (c) (char-to-string (car c)))
+                                   mail-precedence-key-alist "")
+                        "] ?"))
+  (let* ((key (read-char))
+         (prec (assoc key mail-precedence-key-alist)))
+    (if prec (mail-precedence (cdr prec))
+      (error "mail-precedence-as-key `%s' not found" key))))
+;
+(defun mail-precedence-as-key-send-and-exit (arg)
+  "Set precedence by looking up last command char in mail-precedence-key-alist,
+then call send-and-exit."
+  (interactive "P")
+  (mail-precedence-as-key)
+  (execute-kbd-macro "\ 3\ 3"))
+;
+(defun mail-precedence (prec)
+  (save-excursion
+    (mail-position-on-field "Precedence")
+    (let ((p (point)))
+      (beginning-of-line)
+      (delete-region (point) p)
+      (if prec
+          (insert "Precedence: " prec)
+        (delete-char 1)))))
+;
+(defun mail-mode-setup-keys ()
+  (local-set-key "\ 3\10" 'mail-precedence-as-key)
+  (local-set-key "\ 3p" 'mail-precedence-as-key-send-and-exit))
+(add-hook 'mail-mode-hook 'mail-mode-setup-keys)
+(add-hook 'vm-mail-mode-hook 'mail-mode-setup-keys)
+;
+(defun vm-mail-other-window ()
+  "Like `vm-mail' command, but display buffer in another window."
+  (interactive)
+  (switch-to-buffer-other-window (current-buffer))
+  (vm-mail))
+;
+(defun mail-formletter ()
+  "Run VM-mail with ,Formletter"
+  (interactive)
+  (vm-mail)
+  (rename-buffer (generate-new-buffer-name "form letter") t)
+  (delete-region (point-min) (point-max))
+  (insert-file (concat vm-folder-directory ",Formletter")))
+;
+; This function bound to C-x C-z
+(defun load-ange-ftp ()
+  "Load ange-ftp using require, if it isn't loaded already"
+  (interactive)
+  (message "Loading ange-ftp...")
+  (require 'ange-ftp) ; -extended
+  (message "Loading ange-ftp...done"))
+;
+; This function bound to M-+
+(defun toggle-truncate-lines ()
+  "Toggle truncation or folding of long lines"
+  (interactive)
+  (set-variable 'truncate-lines (not truncate-lines))
+  (redraw-display))
+;
+; RMAIL stuff
+;(setq rmail-file-name "~/mail/RMAIL"
+;      mail-archive-file-name "~/mail/Outbound"
+;      rmail-primary-inbox-list '("~/mbox" "~/mail/Outbound" "~/mail/Record"
+;                                 "~/mail/Import" "/var/spool/mail/ian")
+;      rmail-delete-after-output t
+;      rmail-last-rmail-file ""
+;      rmail-ignored-headers (concat
+;                             "^Content-Identifier:\\|^X400-[^O][A-Za-z-]+:\\|"
+;                             rmail-ignored-headers))
+;
+(defun make-regexps-ignore-non-address (list)
+  (apply 'append (mapcar
+                  '(lambda (item)
+                     (let ((item (mapconcat
+                                  '(lambda (ch)
+                                     (let ((s (char-to-string ch)))
+                                       (if (string-match "[][.*+?^$\\]" s)
+                                           (concat "\\" s)
+                                         s)))
+                                  item "")))
+                       (list
+                        (concat "<" item ">")
+                        (concat "^" item " *\\((.*)\\)?$"))))
+                  list)))
+;
+; BBDB
+(setq bbdb-north-american-phone-numbers-p nil
+      bbdb/mail-auto-create-p t
+      bbdb-auto-revert-p t
+      bbdb-notice-auto-save-file-p t
+      bbdb-message-caching-enabled t)      
+;
+; VM stuff
+(load-file "~/private/private.el")
+(if (file-exists-p "~/private/private2.el")
+  (load-file "~/private/private2.el"))
+(setq vm-included-text-attribution-format "%F writes (\"%s\"):\n"
+      vm-reply-subject-prefix "Re: "
+      vm-folder-directory "~/mail/"
+      vm-delete-after-saving t
+      vm-delete-empty-folders t
+      vm-mutable-windows t
+      vm-auto-get-new-mail nil
+      vm-auto-next-message nil
+      vm-jump-to-new-messages nil
+      vm-jump-to-unread-messages nil
+      vm-mime-digest-discard-header-regexp "only-drop-this-header"
+      vm-preview-lines nil
+      vm-included-text-prefix "> "
+      vm-confirm-quit 1
+      vm-auto-center-summary t
+      vm-confirm-new-folders t
+      vm-circular-folders nil
+      vm-visit-when-saving 0
+      vm-move-after-deleting t
+      vm-keep-sent-messages t
+      vm-follow-summary-cursor t
+      vm-frame-per-composition nil
+      vm-frame-per-edit nil
+      vm-frame-per-summary nil
+      vm-frame-per-folder nil
+      vm-tale-is-an-idiot t
+      vm-primary-inbox (concat vm-folder-directory "INBOX")
+      vm-sinbin-inbox (concat vm-folder-directory "SINBOX")
+      vm-uninteresting-senders "ian"
+      vm-reply-ignored-addresses
+      (make-regexps-ignore-non-address
+       '("ian@chiark.chu.cam.ac.uk" "ian" "iwj10@cus.cam.ac.uk"
+         "ian@chiark.greenend.org.uk"
+         "ijackson@nyx.cs.du.edu" "ijackson@gnu.ai.mit.edu"))
+      vm-primary-inbox (concat vm-folder-directory "INBOX")
+
+      vm-uninteresting-senders "ian"
+      vm-reply-ignored-addresses
+      (make-regexps-ignore-non-address
+       '("ijackson@chiark.chu.cam.ac.uk" "ijackson"
+         "iwj10@thor.cam.ac.uk" "iwj10@hermes.cam.ac.uk" "iwj10@cl.cam.ac.uk"
+         "iwj10@cam.ac.uk" "Ian.Jackson@cl.cam.ac.uk"))
+      mail-archive-file-name "~/mail/Outbound"
+
+@@?!$ncipher?@@
+      vm-spool-files
+      '((vm-primary-inbox "/var/spool/mail/@@$username@@"
+                         "~/mail/INBOX.CRASH")
+        (vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+       (vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+       (vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+       (vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+       (vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+       (vm-sinbin-inbox "/var/spool/mail/ian" "~/mail/SINBOX.CRASH"))
+      vm-startup-with-summary t
+
+@@:
+      vm-spool-files (list
+                      "~/mbox"
+                      "~/mail/Outbound"
+                      "~/mail/Record"
+                      "~/mail/Import"
+                      "~/mail/inbox"
+;                       "/var/spool/mail/ijackson"
+                      (concat "mail:110:pass:iwj:" ijackson-pop-password)
+                      "/u/ijackson/mail/INBOX.CRASH"
+                      "~/News/r")
+      mail-host-address "ncipher.com"
+      user-mail-address "iwj@ncipher.com"
+@@;
+
+;      vm-spool-files
+;      (list
+;       (list vm-primary-inbox "~/mbox" "~/mail/INBOX.CRASH")
+;       (list vm-primary-inbox "~/mail/Outbound" "~/mail/INBOX.CRASH")
+;       (list vm-primary-inbox "~/mail/Record" "~/mail/INBOX.CRASH")
+;       (list vm-primary-inbox "~/mail/Import" "~/mail/INBOX.CRASH")
+;       (list vm-primary-inbox "/var/spool/mail/ian" "~/mail/INBOX.CRASH")
+;       (list vm-primary-inbox "~/News/r" "~/mail/INBOX.CRASH")
+;       (list vm-sysadmin-inbox "~/mbox" "~/mail/SINBOX.CRASH")
+;       (list vm-sysadmin-inbox "~/mail/SOutbound" "~/mail/SINBOX.CRASH")
+;       (list vm-sysadmin-inbox "~/mail/Import" "~/mail/SINBOX.CRASH")
+;       (list vm-sysadmin-inbox "/var/spool/mail/sysadmin" "~/mail/SINBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mbox" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Outbound"
+;       "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Record" "/u/ijackson/mail/INBOX.CRASH")
+; (list "/u/ijackson/mail/INBOX" "/u/ijackson/mail/Import" "/u/ijackson/mail/INBOX.CRASH")
+;        (list "/u/ijackson/mail/INBOX"
+;         (concat "localhost:110:pass:ijackson:" ijackson-pop-password)
+;         "/u/ijackson/mail/INBOX.CRASH"))
+      vm-startup-with-summary nil
+      vm-summary-format "%3n %a %2d %3m  %-19.19F  %s\n"
+      mail-archive-file-name "~/mail/Outbound"
+      vm-mime-8bit-text-transfer-encoding '8bit)
+;
+(add-hook 'vm-mode-hook
+          '(lambda ()
+             (local-set-key "Q" 'vm-quit)
+             (local-set-key "q" "###Q")))
+(add-hook 'mail-mode-hook
+          '(lambda ()
+             (if (and (boundp 'folder-buffer)
+                      folder-buffer
+                      (string= (buffer-file-name folder-buffer)
+                               (file-truename vm-sysadmin-inbox)))
+                 (progn
+                   (make-local-variable 'vm-mail-header-from)
+                   (setq vm-mail-header-from
+                         "sysadmin@chiark.greenend.org.uk (Ian Jackson)")
+                   (make-local-variable 'mail-archive-file-name)
+                   (setq mail-archive-file-name
+                         "~/mail/SOutbound")))))
+;
+;(defun vmi ()
+;  (interactive)
+;  (vm "/u/ijackson/mail/INBOX"))
+;;
+(defun vms ()
+  (interactive)
+  (vm vm-sinbin-inbox))
+;
+(defun make-session ()
+  "Makes this emacs hard to kill by requiring ^X^Cy to kill it
+instead of just ^X^C."
+  (interactive)
+  (global-unset-key "\18\ 3")
+  (global-set-key "\18\ 3y" 'save-buffers-kill-emacs))
+;
+; Fix problems with M-| setting window title of emacs' parent xterm
+(defun envdelete-term-termcap-windowid (list)
+  (let ((l list))
+    (mapcar '(lambda (x)
+               (if x (delq x l)))
+            (mapcar '(lambda (x)
+                       (if (or (string-match "^TERM=" x)
+                               (string-match "^TERMCAP=" x)
+                               (string-match "^WINDOWID=" x))
+                           x
+                         nil))
+                    l))
+    l))
+(setq process-environment
+      (envdelete-term-termcap-windowid process-environment))
+;
+(defun add-insertion-keys (table)
+  "Adds keybindings according to TABLE.  Each element of
+TABLE should be a four-element list.
+
+BINDING should be the key to bind; FUNCTION will be the name of the
+function defined to do the insertion; DESCRIPTION will be inserted
+into \"Inserts ... .\", and used as the descriptive string for the
+generated function; STRING is the string which will actually be
+inserted into the buffer when the keystroke is pressed."
+  (while table
+    (let* ((head (car table))
+           (key (car head))
+           (func (nth 1 head))
+           (desc (nth 2 head))
+           (string (nth 3 head)))
+      (defalias func
+        (list
+         'lambda () 
+         (concat "Inserts " desc ".")
+         '(interactive)
+         (list 'insert string)))
+      (funcall 'local-set-key key func))
+    (setq table (cdr table))))
+
+(defun ian-sgml-setup ()
+  (interactive)
+  (add-insertion-keys
+   '(("\ 3\r" sgml-insert-new-para "new paragraph markup" "\n<p>\n")
+     ("\ 3\14" sgml-insert-tt-emph "tt emph markup" "<tt/")
+     ("\ 3\10" sgml-insert-prgn-emph "prgn emph markup" "<prgn/")
+     ("\ 3\ 5" sgml-insert-em-emph "em emfh markup" "<em/")
+     ("\ 3\16" sgml-insert-var-empfh "var emph markup" "<var/"))))
+(setq sgml-local-catalogs '("/jura:/usr/lib/debiandoc-sgml/sgml/catalog"))
+  
+(add-hook 'sgml-mode-hook 'ian-sgml-setup)
+;
+(defvar cite-string "> " "String to insert when citing")
+;
+(defun cite-region (start end)
+  "Quote each line in the region with an angle-bracket and space.
+
+The citation string is taken from cite-string."
+  (interactive "r")
+  (save-excursion
+    (save-restriction
+      (narrow-to-region start end)
+      (goto-char (point-min))
+      (insert cite-string)
+      (while
+          (and
+           (= (forward-line) 0)
+           (> (point-max) (point)))
+        (insert cite-string)))))
+;
+; End of this file.
diff --git a/from-cvs/files/emacs_quicker-compile.el b/from-cvs/files/emacs_quicker-compile.el
new file mode 100644 (file)
index 0000000..1163ac1
--- /dev/null
@@ -0,0 +1,12 @@
+; Fixup of compile so it doesn't ask unless you want it to.
+
+(require 'compile)
+(provide 'quicker-compile)
+
+(defun quicker-compile (prompt-for-command)
+  "Runs compile. Will prompt for the compile command only if given
+a prefix argument."
+  (interactive "P")
+  (if prompt-for-command
+      (setq compile-command (read-string "Compile command: " compile-command)))
+  (compile compile-command))
diff --git a/from-cvs/files/emacs_x-fix-mouse.el b/from-cvs/files/emacs_x-fix-mouse.el
new file mode 100644 (file)
index 0000000..e676bfe
--- /dev/null
@@ -0,0 +1,41 @@
+;;; x-fix-mouse.el
+;;;
+;;; make mouse-based paste ignore the mouse position and use the emacs point
+;;; instead.  Make cut-text set the mark so the mouse can be used naturally
+;;; to select a region (e.g. to indent code).
+;;;
+;;; Jean-Francois Lamy 1989-09-21
+;;; lamy@ai.utoronto.ca
+
+(require 'x-mouse); These two lines
+(provide 'x-fix-mouse); added by 89iwj@eng.cam.ac.uk
+
+(defun x-cut-text (arg &optional kill)
+  "Copy text between point and mouse into window system cut buffer.
+Set mark to current mouse position. Save in Emacs kill ring also."
+  (if (coordinates-in-window-p arg (selected-window))
+      (progn
+       (x-mouse-set-mark arg)
+        (let ((beg (point)) (end (mark)))
+          (x-store-cut-buffer (buffer-substring beg end))
+          (copy-region-as-kill beg end)
+          (if kill (delete-region beg end))))
+    (message "Mouse not in selected window")))
+
+(defun x-paste-text (arg)
+  "Insert window system cut buffer contents at current point."
+  (insert (x-get-cut-buffer)))
+
+(defun x-cut-and-wipe-text (arg)
+  "Kill text between point and mark; also copy to window system cut buffer."
+  (x-cut-text arg t))
+
+(defun x-cut-text-if-moved (arg &optional kill)
+  (let ((opoint (point)))
+    (x-mouse-set-point arg)
+    (cond 
+     ((not (equal (point) opoint))
+      (goto-char opoint)
+      (x-cut-text arg kill)))))
+
+;------- End of Forwarded Message
diff --git a/from-cvs/files/personal_scripts_bin_cvsstat b/from-cvs/files/personal_scripts_bin_cvsstat
new file mode 100755 (executable)
index 0000000..fd84cb9
--- /dev/null
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec cvs -q -n update
diff --git a/from-cvs/files/personal_scripts_bin_iwjendian b/from-cvs/files/personal_scripts_bin_iwjendian
new file mode 100755 (executable)
index 0000000..ad70999
--- /dev/null
@@ -0,0 +1,2 @@
+#!/usr/bin/perl
+printf "%x\n", unpack "L", "\1\2\3\4" or die $!;
diff --git a/from-cvs/files/personal_scripts_bin_remoteshell b/from-cvs/files/personal_scripts_bin_remoteshell
new file mode 100755 (executable)
index 0000000..1be2331
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/perl --
+# Perl wrapper around rsh/remsh to export DISPLAY and run an xterm
+# Usage:
+#  remoteshell hostname [-l remoteuser]
+
+$rsh= 'ssh';
+$usesh= '';
+
+$rsh= shift if $ARGV[0] =~ s/^-r//;
+$usesh= shift if $ARGV[0] =~ s/^-s//;
+
+($remotehost= shift) || die "need hostname\n";
+$remotehost= (gethostbyname($remotehost))[0] || $remotehost;
+
+if ($ARGV[0] eq '-l') {
+    shift;
+    ($remoteuser= shift) || die "need username after -l\n";
+    $remoteuser= "-l $remoteuser";
+} elsif (open(H,"$ENV{'HOME'}/.rhosts")) {
+    while (<H>) {
+        m/^(\S+)\s+(\S+)\s*$/ || next;
+        if (&canon($1) eq &canon($remotehost)) {
+            $remoteuser= "-l $2";
+            last;
+        }
+    }
+}
+
+$_= $ENV{'DISPLAY'};
+m/:/ || die "\$DISPLAY variable format `$_' bad";
+$ENV{'DISPLAY'}= &canon($`).':'.$';
+
+sub canon {
+    local ($h) = @_;
+    local ($v,@h,@v);
+    chomp($h= `hostname`) unless length($h);
+    @h= gethostbyname($h);
+    return $h unless @h;
+    @v= gethostbyaddr($h[4],$h[2]);
+    $v= $v[0];
+#    unless ($v =~ m/\./) {
+#        $v .= '.';
+#        $v .= `domainname`;
+#        $v =~ s/\n$//;
+#    }
+    return $v;
+}
+
+open(U,"|$rsh $remotehost $remoteuser perl")
+    || die "failed to run $rsh: $!";
+
+print U <<'END' ;
+    $_= <DATA>; chop; @ar= split(/\0/,$_) if length($_);
+    $_= <DATA>; chop; $ENV{'DISPLAY'}= $_;
+    $_= <DATA>; chop; $usesh= $_;
+    $host= <DATA>; chop($host);
+    $pcmd= '. .configs/setenvir; echo ok $PATH';
+    $pout= `$pcmd`;
+    $pout =~ m/^ok (\S+)\n$/ || die "pcmd gave `$pout'";
+    $ENV{'PATH'}= $1;
+    open(X,"|xauth nmerge -");
+    while (<DATA>) { print X; }
+    close(X);
+    $? && die "xauth gave code $?";
+    defined($c= fork) || die "fork: $!";
+    exit 0 if $c;
+    close(STDIN); close(STDOUT);
+    open(STDIN,"</dev/null") || die "/dev/null for stdin: $!";
+    open(STDOUT,">>.remoteshell-errors") || die "append .remoteshell-errors: $!";
+    chmod(0600,".remoteshell-errors");
+    close(STDERR); open(STDERR,">&STDOUT");
+    if ($usesh eq '') {
+        exec('close3onwards','xterm','-T',$host,@ar,'-e','.configs/rxprofile');
+    } else {
+       exec('close3onwards',$usesh,'-xc','. .configs/setenvir; exec "$@"','-',@ar);
+    }
+    print STDERR "close3onwards: $!\n";
+    exit 1;
+__END__
+END
+
+print U join("\0",@ARGV),"\n";
+print U $ENV{'DISPLAY'},"\n";
+print U $usesh,"\n";
+print U $remotehost,"\n";
+print U `xauth nextract - $ENV{'DISPLAY'}`;
+
+close(U);
+$? && die "remoteshell $rsh gave code $?";
+
+exit 0;
diff --git a/from-cvs/files/personal_scripts_bin_xloadt b/from-cvs/files/personal_scripts_bin_xloadt
new file mode 100755 (executable)
index 0000000..d713216
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/sh -
+hostname="`hostname | sed -e 's/\..*//'`"
+xlsclients | egrep \
+ '[^ ]* xload -geometry [^ ]* -title '"'xload - $hostname'" \
+ >/dev/null && exit 0
+xload -geometry 120x120+@@
+
+@hostlist=
+($ncipher eq 'bos' ? qw(viking dover pell arrakis) :
+ $ncipher eq 'cam' ? qw(jura islay dover dounreay marple belgrano greenock) :
+ $chiark ? qw(chiark) :
+ qw(davenant anarres liberator norway));
+
+for ($i=0; $i<@hostlist; $i++) { last if $hostlist[$i] eq $nodename; }
+if ($i>=@hostlist) {
+    print STDERR "!! nodename $nodename not in $ncipher list @hostlist\n";
+    $i=-2;
+}
+
+302+141*$i;
+
+@@+0 -title "xload - $hostname"
diff --git a/from-cvs/files/personal_scripts_bin_xterm-CT b/from-cvs/files/personal_scripts_bin_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']' "$@"
diff --git a/from-cvs/files/private_ircpass b/from-cvs/files/private_ircpass
new file mode 100644 (file)
index 0000000..6ce3584
--- /dev/null
@@ -0,0 +1,15 @@
+/alias blight-id {
+  msg blight identpass ijackson Wfd38Blo
+}
+/alias priv {
+  /blight-id
+  /oper Diziet pbzQYt0
+  /msg blight op #chiark
+}
+/alias npriv {
+  /fastness-id
+  /oper iwj m3dEePAP
+  /msg fastness op #devel
+  /msg fastness op #support
+  /msg fastness op #test
+}
diff --git a/from-cvs/files/private_private.el b/from-cvs/files/private_private.el
new file mode 100644 (file)
index 0000000..af42ede
--- /dev/null
@@ -0,0 +1 @@
+(setq ijackson-pop-password "")
diff --git a/from-cvs/gpt b/from-cvs/gpt
new file mode 100755 (executable)
index 0000000..e4ce91d
--- /dev/null
@@ -0,0 +1,292 @@
+#!/usr/bin/perl
+
+#
+#                          =====deeper=nesting===>>
+#
+#                     end of Perl fragment
+#                      \n@@ \_@@  ;@@ )@@ }@@  \w@@
+#                   <------------------------------------
+#
+#                   ------------------------------------>
+#                      if    eval    eval+     eval+
+#                       @@?   @@\_   ignore    include
+#                             @@$     @@-      file
+#    ___                      @@\n              @@<
+#  ,'   `
+#  |      processing                                       processing
+#  `--->  as TEXT                                          as PERL
+#  endif
+#   @@;     vA      <------------------------------------
+#           ||         then
+#   comment ||          ?@@
+#       @@# \/
+#           /\       included text fragment as
+#      else ||         string value    code to write out
+#       @@: ||          (@@             {@@
+#           ||      <------------------------------------
+#           `'
+#                   ------------------------------------>
+#                     end of included text fragment
+#                       @@)  @@}
+#
+#                          <<====deeper=nesting====
+#
+
+# gpt - a generic preprocessing tool
+#  
+#  This file is
+#    Copyright (C) 2001 Ian Jackson <ian@davenant.greenend.org.uk>
+#  
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2, or (at your option)
+#  any later version.
+#  
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#  
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
+
+package GenericPrepTemplate;
+
+#BEGIN {
+#    use Exporter ();
+#    use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
+#    $VERSION= 1.00;
+#    @ISA= qw(Exporter);
+#    @EXPORT= qw(&process_input);
+#    %EXPORT_TAGS= ();
+#    @EXPORT_OK= qw();
+#}
+#use vars @EXPORT_OK;
+#use vars qw($fh);
+
+use IO::Handle;
+use IO::File;
+
+open DEBUG, ">/dev/null" or die "gpt: /dev/null: $!\n";
+
+while ($main::ARGV[0] =~ m/^-/) {
+    $_= shift @main::ARGV;
+    next if m/^--$/;
+    while (m/^-./) {
+       if (s/^-d/-/) {
+           open DEBUG, ">&2" or die "gpt: debug to stderr: $!\n";
+       } else {
+           die "gpt: unknown option \`$_'\n";
+       }
+    }
+}
+
+$fn= '<command line>';
+if (!@main::ARGV) {
+    $lno= '<empty>';
+    $fh= new IO::Handle;
+    $fh->fdopen(fileno(STDIN),'r') or err("fdopen stdin: $!");
+    process_fh($fh,'<standard input>');
+    $fh->close or err("close stdin: $!\n");
+} else {
+    for ($i=0; $i<@main::ARGV; $i++) {
+       $lno= '<arg#'.($i+1).'>';
+       process_file($main::ARGV[$i]);
+    }
+}
+close STDOUT or die "gpt: close stdout: $!\n";
+exit 0;
+
+sub process_file ($) {
+    my ($value) = @_;
+    $fh= new IO::File $value,'r' or err("cannot open file \`$value': $!");
+    process_fh($fh,$value);
+    $fh->close or err("gpt: cannot close file \`$value': $!");
+}
+
+sub err ($) { die "gpt: $fn:$lno: $_[0]\n"; }
+
+sub add_perl ($) {
+    my ($str) = @_;
+    if (@oplist>1) { $substr.= $str; }
+    else { $expr.= $str; }
+}
+
+sub add_text ($) {
+    my ($str) = @_;
+    if (@oplist) { $substr.=$str; }
+    else { output($str); }
+}
+
+sub eval_expr () {             
+    my ($value);
+    $@='';
+    print DEBUG "E $fn:$lno:e\`$expr'\n";
+    $value= do {
+       package main;
+       eval $GenericPrepTemplate::expr;
+    };
+    if (length $@) {
+       chomp $@; err("error: $@");
+    }
+    print DEBUG "E $fn:$lno:v\`$value'\n";
+    $value;
+}
+
+sub process_input () {
+    my ($esc,$top,$want,$fh,$value,$wasyes);
+    while (length $l) {
+       print DEBUG "L $fn:${lno}_",join('',@oplist),
+                   "_`$l' e\`$expr' s\`$substr'\n";
+       if (@oplist & 1) { # scanning perl
+           if ($l =~ m/^()\@\@/ || $l =~ m/([^\000])\@\@/) {
+               ($to,$op,$esc,$l) = ($`,$1,$&,$');
+               add_perl($to);
+               if ($op =~ m/[ \t\n0-9a-zA-Z_\;\)\}?]/ || $op eq '') {
+                   $top= pop @oplist;
+                   if ($top eq '?') {
+                       $op eq '?' or err("expected ?\@\@, got \@\@");
+                   } else {
+                       $op ne '?' or err("found ?\@\@ not after \@\@?");
+                   }
+                   if (!@oplist) {
+                       # And evaluate.
+                       $expr.= $op unless $op eq '?';
+                       $value= eval_expr();
+                       if ($top eq '<') {
+                           process_file($value);
+                       } elsif ($top eq '?') {
+                           push @oplist, '?',':;'.!!$value;
+                       } elsif ($top ne '-') {
+                           output($value);
+                       }
+                       $expr='';
+                   } else {
+                       $substr.= $esc;
+                   }
+               } elsif ($op =~ m/[\(\{]/) {
+                   if (@oplist>1) { $substr.= $esc; }
+                   push @oplist, $op;
+               } else {
+                   err("bad escape sequence $op\@\@ in perl part");
+               }
+           } else {
+               add_perl($l);
+               $l= '';
+           }
+       } else { # scanning text
+           if ($l =~ m/\@\@(.|\n)/) {
+               ($to,$op,$esc,$l) = ($`,$1,$&,$');
+               add_text($to);
+               if ($op =~ m/[-< \$?\n]/) {
+                   if (!@oplist) {
+                       add_perl($op) if $op =~ m/[\$]/;
+                   } else {
+                       $substr.= $esc;
+                   }
+                   push @oplist, $op;
+               } elsif ($op =~ m/[\)\}\;\:]/) {
+                   err("unmatched closing \@\@$op") unless @oplist;
+                   $want= pop @oplist;
+                   if ($want =~ y/({/)}/) {
+                       $wasyes=-1;
+                       err("found \@\@$op but wanted \@\@$want")
+                           unless $want eq $op;
+                   } elsif ($want =~ m/^([:;]+)(1?)$/) {
+                       ($want,$wasyes)=($1,$2);
+                       err("found \@\@$op where not expected (wanted ".
+                           join(' or ', map { "\@\@$_" } split //, $want).")")
+                           unless $op =~ m/^[$want]$/;
+                       '?' eq pop @oplist or die;
+                       if ($wasyes) {
+                           local ($l) = ($substr);
+                           local ($substr,$expr,$to,$op);
+                           process_input();
+                       };
+                       $substr='';
+                       $esc='';
+                       if ($op eq ':') {
+                           push @oplist, '?',';'.!$wasyes;
+                       }
+                   } else {
+                       die "internal /$want/ /$op/";
+                   }
+                   if (@oplist==1) {
+                       # Just finished a substr.
+                       $substri++;
+                       $substrs[$substri]= $substr;
+                       print DEBUG "S $fn:$lno:S$substri\`$substr'\n";
+                       $expr.= ' GenericPrepTemplate::output(' if $op eq '}';
+                       $expr.= " GenericPrepTemplate::process_i($substri) ";
+                       $expr.= " );\n" if $op eq '}';
+                       $substr='';
+                   } else {
+                       $substr.= $esc;
+                   }
+               } elsif ($op eq '#') {
+                   $l =~ s/^[^\n]*//; $l =~ s/^\n//;
+               } else {
+                   err("bad escape sequence \@\@$op in text part");
+               }
+           } else {
+               add_text($l);
+               $l= '';
+           }
+       }
+    }
+}
+
+sub close_nesteds () {
+    my ($op);
+    while (@oplist) {
+       $op= $oplist[$#oplist];
+       if (@oplist & 1) {
+           err("unterminated \@\@?") if $op eq '?';
+           $l=' @@';
+       } else {
+           if ($op =~ y/({/)}/) {
+               $l= '@@'.$op;
+           } elsif ($op =~ m/^[;:]+/) {
+               $l= '@@;';
+           } else {
+               die "intern /@oplist/";
+           }
+       }
+       process_input();
+    }
+}
+
+sub process_fh ($$) {
+    local ($fh,$fn) = @_;
+    local ($l,$lno, @oplist,$substr,$expr,$to,$op);
+
+    while (defined ($l= $fh->getline)) {
+       next if $l =~ m,^\#\! ?/\S+/gpt\b, && $.==1;
+       $lno= $.;
+       process_input();
+    }
+    
+    die "gpt: $fn: read error: $!" if $fh->error;
+    close_nesteds();
+}
+
+sub output ($) {
+    if (defined $outbuf) {
+       print DEBUG "O \`$outbuf'+\`$_[0]'\n";
+       $outbuf.= $_[0];
+    } else {
+       print DEBUG "O w\`$_[0]'\n";
+       print STDOUT $_[0] or err("write stdout: $!");
+    }
+}
+
+sub process_i ($) {
+    my ($i) = @_;
+    local ($l,$fn,$lno) = ($substrs[$i], "$fn<sub#$i>", '');
+    local ($outbuf, @oplist,$substr,$expr,$to,$op);
+    $outbuf='';
+    process_input();
+    close_nesteds();
+    return $outbuf;
+}
diff --git a/from-cvs/misc/.cvsignore b/from-cvs/misc/.cvsignore
new file mode 100644 (file)
index 0000000..20b81cc
--- /dev/null
@@ -0,0 +1,2 @@
+with-lock-ex
+close3onwards
diff --git a/from-cvs/misc/Makefile b/from-cvs/misc/Makefile
new file mode 100644 (file)
index 0000000..64249b7
--- /dev/null
@@ -0,0 +1,17 @@
+INSTALLDIR=    $(HOME)/bin
+
+TARGETS=       with-lock-ex close3onwards
+
+CC=            gcc
+CPPFLAGS=      $(OPTIONS)
+CFLAGS=                $(OPTIMISE)
+OPTIMISE=      -O2
+OPTIONS=
+
+default:       $(TARGETS)
+
+install:
+               set -e; for f in $(TARGETS); do \
+                       rm -f $(INSTALLDIR)/$$f; \
+                       ln $$f $(INSTALLDIR)/$$f; \
+               done
diff --git a/from-cvs/misc/close3onwards.c b/from-cvs/misc/close3onwards.c
new file mode 100644 (file)
index 0000000..9788652
--- /dev/null
@@ -0,0 +1,7 @@
+#include <stdlib.h>
+int main(int ac, char **av) {
+  int i;
+  for (i=3; i<32; i++) close(i);
+  execvp(av[1],av+1);
+  perror(av[1]);
+}
diff --git a/from-cvs/misc/with-lock-ex.c b/from-cvs/misc/with-lock-ex.c
new file mode 100644 (file)
index 0000000..1850d1f
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * File locker
+ *
+ * Usage: with-lock-ex -<mode> <lockfile> <command> <args>...
+ *
+ * modes are
+ *  w    wait for the lock
+ *  f    fail if the lock cannot be acquired
+ *  q    silently do nothing if the lock cannot be acquired
+ *
+ * with-lock-ex will open and lock the lockfile for writing and
+ * then feed the remainder of its arguments to exec(2); when
+ * that process terminates the fd will be closed and the file
+ * unlocked automatically by the kernel.
+ *
+ * If invoked as with-lock, behaves like with-lock-ex -f (for backward
+ * compatibility with an earlier version).
+ *
+ * This file written by me, Ian Jackson, in 1993, 1994, 1995, 1996,
+ * 1998, 1999.  I hereby place it in the public domain.
+ */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+#include <sys/stat.h>
+
+static const char *cmd;
+
+static void fail(const char *why) __attribute__((noreturn));
+
+static void fail(const char *why) {
+  fprintf(stderr,"with-lock-ex %s: %s: %s\n",cmd,why,strerror(errno));
+  exit(255);
+}
+
+int main(int argc, char **argv) {
+  int fd, mode, um;
+  struct stat stab, fstab;
+  long cloexec;
+  struct flock fl;
+  const char *p;
+
+  if (argc >= 3 && !strcmp((p= strrchr(argv[0],'/')) ? ++p : argv[0], "with-lock")) {
+    mode= 'f';
+  } else if (argc < 4 || argv[1][0] != '-' || argv[1][2] ||
+            ((mode= argv[1][1]) != 'w' && mode != 'q' && mode != 'f')) {
+    fputs("usage: with-lock-ex -w|-q|-f <lockfile> <command> <args>...\n"
+         "       with-lock             <lockfile> <command> <args>...\n",
+         stderr);
+    exit(255);
+  } else {
+    argv++; argc--;
+  }
+  cmd= argv[2];
+  um= umask(0777); if (um==-1) fail("find umask");
+  if (umask(um)==-1) fail("reset umask");
+
+  for (;;) {
+  
+    fd= open(argv[1],O_RDWR|O_CREAT,0666&~(um|((um&0222)<<1)));
+    if (fd<0) fail(argv[1]);
+  
+    for (;;) {
+      fl.l_type= F_WRLCK;
+      fl.l_whence= SEEK_SET;
+      fl.l_start= 0;
+      fl.l_len= 1;
+      if (fcntl(fd, mode=='w' ? F_SETLKW : F_SETLK, &fl) != -1) break;
+      if (mode=='q' &&
+         (errno == EAGAIN || errno == EWOULDBLOCK || errno == EBUSY))
+       exit(0);
+      if (errno != EINTR) fail("could not acquire lock");
+    }
+
+    if (fstat(fd, &fstab)) fail("could not fstat lock fd");
+    if (stat(argv[1], &stab)) {
+      if (errno != ENOENT) fail("could not stat lockfile");
+    } else {
+      if (stab.st_dev == fstab.st_dev &&
+         stab.st_ino == fstab.st_ino) break;
+    }
+    close(fd);
+  }
+
+  cloexec= fcntl(fd, F_GETFD); if (cloexec==-1) fail("fcntl F_GETFD");
+  cloexec &= ~1;
+  if (fcntl(fd, F_SETFD, cloexec)==-1) fail("fcntl F_SETFD");
+
+  execvp(cmd,argv+2);
+  fail("unable to execute command");
+}
diff --git a/from-cvs/perms b/from-cvs/perms
new file mode 100644 (file)
index 0000000..5e6469c
--- /dev/null
@@ -0,0 +1,39 @@
+.bash_history                          0400
+
+.configs/checkconfig                   +x
+.configs/configure                     +x
+.configs/rxprofile                     +x
+.configs/rxprofile-root                        +x
+.configs/startemacs                    +x
+.configs/x11start                      +x
+.configs/xbiffs                                +x
+.configs/xclients                      +x
+.configs/xprofile                      +x
+.configs/xtools                                +x
+
+@@?$ncipher?@@
+.configs/chiarks                       +x
+@@:
+.configs/chiarks                       --
+@@;
+
+personal/scripts/bin/cvsstat           +x
+personal/scripts/bin/iwjendian         +x
+personal/scripts/bin/remoteshell       +x
+personal/scripts/bin/xloadt            +x
+personal/scripts/bin/xterm-CT          +x
+
+personal/@@$platform@@/bin/            /
+junk/                                  /
+
+.configs/cache/                                2770
+.counters/                             2770
+.w3m/                                  2770
+private/                               2770
+
+.ssh/                                  2755
+.ssh/authorized_keys                   644
+
+bitmap/root -> fischer
+
+.
diff --git a/from-cvs/process b/from-cvs/process
new file mode 100755 (executable)
index 0000000..1d8e39d
--- /dev/null
@@ -0,0 +1,200 @@
+#!/usr/bin/perl
+
+use POSIX;
+
+$action=0;
+defined($umask=umask) or die $!;
+$home= $ENV{'HOME'}.'/';
+
+while ($ARGV[0] =~ m/^-/) {
+    $_= shift(@ARGV);
+    last if m/^--$/;
+    while (m/^-./) {
+       if (s/^-y/-/) {
+           $action=1;
+       } elsif (s/^-u([0-7]{3})/-/) {
+           $umask= oct $1;
+       } elsif (s/^-h/-/) {
+           $home= $';
+       } else {
+           die;
+       }
+    }
+}
+die if @ARGV;
+
+stat $home or die $!;
+-d _ or die;
+
+sub read_prep ($) {
+    my ($inputfile) = @_;
+    defined($c= open P, "-|") or die $!;
+    if (!$c) { exec './gpt','config',$inputfile; die $!; }
+}
+sub fin_prep () {
+    close P; die "$?" if $?;
+}
+
+read_prep('perms');
+for (;;) {
+    $!=0; defined($_=<P>) or die $!;
+    chomp; s/^\s+//; s/\s+$//;
+    next if m/^\#/; next unless m/\S/;
+    last if m/^\.$/;
+    if (m/(.*\S)\s+\-\>\s+(\S.*)/) {
+       $linktargs{$1}= $2;
+    } elsif (m/^(.*\S)\s+\-\-$/) {
+       $exclude{$1}= 1;
+    } elsif (m/^(.*\S)\s+(\S+)$/) {
+       ($of,$pe)=($1,$2);
+       $isdir= $of =~ s,/$,,;
+       if ($pe =~ m/^[0-7]+$/) {
+           $pe= oct $&;
+       } elsif ($pe eq '+x') {
+           $pe= 0777&~$umask;
+       } elsif ($pe eq '/') {
+           $pe= 02777&~$umask;
+       } else {
+           die "$pe ?";
+       }
+       ($isdir ? $dirperms{$of} : $fileperms{$of}) = $pe;
+    }
+}
+fin_prep();
+
+sub mkparents ($) {
+    my ($parent) = @_;
+    $parent =~ s,/[^/]+$,, or return;
+    ensuredir($parent);
+}
+
+sub maybe_chmod ($$$) {
+    my ($nowperms,$perms,$obj) = @_;
+    return if $nowperms==$perms;
+    if ($action) {
+       chmod $perms, $home.$obj or die $!;
+    } else {
+       would($obj, sprintf 'chmod %04o -> %04o', $nowperms, $perms);
+    }
+}
+
+sub ensuredir ($) {
+    my ($dir) = @_;
+    mkparents($dir);
+    $perms= exists $dirperms{$dir} ? $dirperms{$dir} : 02777&~$umask;
+    if (stat $home.$dir) {
+       -d _ or die "$dir is not a directory!";
+       $nowperms= (stat _)[2] & 07777;
+       maybe_chmod($nowperms,$perms,$dir);
+    } else {
+       die $! unless $!==&ENOENT;
+       if ($action) {
+           mkdir $home.$dir, $perms or die $!;
+       } else {
+           would($dir, sprintf 'mkdir %04o', $perms);
+       }
+    }
+}
+
+-d 'new' or mkdir 'new', 02700 or die $!;
+
+sub prep_proc ($$) {
+    my ($if,$newf) = @_;
+    my ($c);
+    defined($c= fork) or die $!;
+    if (!$c) {
+       unlink $newf;
+       open STDOUT, "> $newf" or die "$newf $!";
+       exec './gpt','config',$if; die $!;
+    }
+    $!=0; waitpid($c,0)==$c or die $!;
+    $? and die $?;
+}
+
+opendir D, "files" or die $!;
+while ($if=readdir D) {
+    next unless $if =~ m/^[_a-z0-9\\]/;
+    next if $if =~ m/\~$/;
+    $of= $if; 
+    $of =~ s,_,/,g; 
+    $of =~ s,^/,,;
+    $of =~ s,//,_,g;
+    $of =~ s/\\([0-9a-f][0-9a-f]|_|\\)/
+       length $1 eq 1 ? $1 : sprintf '%c', hex $1 
+           /ge;
+
+    next if $exclude{$of};
+
+    mkparents($of);
+    $newf= 'new/'.$if;
+    prep_proc('files/'.$if,$newf);
+
+    $perms= exists $fileperms{$of} ? $fileperms{$of} : 00666&~$umask;
+    chmod $perms, $newf or die $!;
+    
+    if (stat $home.$of) {
+       -f _ or die "$of is not a file!";
+       $nowperms= (stat _)[2] & 07777;
+       if ($nowperms != $perms) {
+           would($of, sprintf 'chmod %04o -> %04o', $nowperms, $perms);
+       }
+       system 'diff','-u',$home.$of,$newf;
+       $?==0 or $?==256 or die $?;
+       $changes++ if $?;
+    } else {
+       die unless $!==&ENOENT;
+       would($of, sprintf 'create %04o', $perms);
+    }
+    if ($action) {
+       rename $newf,$home.$of or die $!;
+    }
+
+    delete $fileperms{$of};
+}
+closedir D or die $!;
+
+die join(', ', keys %fileperms) if %fileperms;
+
+foreach $link (keys %linktargs) {
+    mkparents($link);
+    $targ= $linktargs{$link};
+    if (lstat $home.$link) {
+       -l _ or die "$link is not a link!";
+       defined($rl= readlink $home.$link) or die $!;
+    } else {
+       die unless $!==&ENOENT;
+       $rl= undef;
+    }
+    if ($rl ne $targ) {
+       would($link, "symlink $targ <-");
+       if ($action) {
+           unlink $home.$link if defined $rl;
+           symlink $targ,$home.$link or die $!;
+       }
+    }
+}
+
+foreach $dir (keys %dirperms) {
+    ensuredir($dir);
+}
+
+sub would ($$) {
+    my ($obj,$what) = @_;
+    return if $would_done{$obj}++;
+    print STDOUT "*** $what $obj\n" or die $!;
+    $changes++;
+}
+
+if ($changes) {
+    print STDOUT "=== $changes changes\n" or die $!;
+} else {
+    print STDOUT "=== no changes\n" or die $!;
+}
+
+prep_proc('execute','new/,execute');
+if ($action) {
+    chmod 0700,'new/,execute' or die $!;
+    system 'new/,execute'; $? and die $?;
+}
+
+close STDOUT or die $!;
diff --git a/from-cvs/showresult b/from-cvs/showresult
new file mode 100644 (file)
index 0000000..4e8d86a
--- /dev/null
@@ -0,0 +1,5 @@
+platform @@$platform@@
+nodename @@$nodename@@
+hostname @@$hostname@@
+ncipher  @@$ncipher@@
+chiark   @@$chiark@@