Use more-standard CPU server not cpu server. [rsc] --rw-rw-r-- M 923680 glenda sys 3804 Oct 4 23:31 sys/man/1/cpu [rsc] --rw-rw-r-- M 923680 rsc sys 779 Oct 4 23:31 sys/man/1/delkey [rsc] --rw-rw-r-- M 923680 glenda sys 14709 Oct 4 23:31 sys/man/4/factotum [rsc] --rw-rw-r-- M 923680 glenda sys 3397 Oct 4 23:31 sys/man/8/nfsserver [sys] --rwxrwxr-x M 923680 glenda sys 139098 Oct 5 23:09 386/bin/cpu /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/9sys/ctime.c:gmtime /sys/src/libc/port/strpbrk.c:strpbrk Describe changes since 1995. [rsc] --rw-rw-r-- M 923680 glenda sys 13304 Oct 4 23:32 sys/man/6/authsrv Update with current state of the world. [rsc] --rw-rw-r-- M 923680 glenda sys 1735 Oct 5 09:53 sys/src/cmd/unix/README /n/sourcesdump/2005/1005/plan9/sys/src/cmd/unix/README:1,25 - /n/sourcesdump/2005/1006/plan9/sys/src/cmd/unix/README:1,59 - This directory contains the source for programs that - live in both the Plan 9 and Unix worlds. The following - programs are supplied: - u9fs - a Unix resident file server that serves the - Plan 9 protocol, P9. + This directory contains source for some programs that + help Plan 9 co-exist with the non-Plan 9 world. - sam - an X-windows version of the sam editor that runs - on most popular Unix systems and Suns, too. + 9pfreebsd/ + Patches to FreeBSD 3.2 to add the IL network protocol + and the pre-9P2000 version of 9P. - bootp - program to allow a Unix machine to answer a Plan 9 bootp. + drawterm/ + Drawterm is a Unix and Windows program that simulates + a Plan 9 terminal to connect to a Plan 9 cpu server. + The version in this directory speaks the pre-9P2000 + protocols. - tcs.shar.Z - a compressed version of the Unix source for the - character set converter. + A new 9P2000 version is in progress but still crashes + with some regularity on Unix. It can be found at + http://cvs.pdos.csail.mit.edu/cvs/drawterm/ + or use + cvs -d :pserver:anoncvs@cvs.pdos.csail.mit.edu:/cvs co drawterm + For more information about CVS, see + http://swtch.com/plan9port/man/man1/cvs.html - spin - on-the-fly verification program for concurrent systems. + u9fs/ + U9fs is a simple 9P server that runs on Unix. + It serves both 9P2000 and the older 9P. - 9pfreebsd - IL and 9FS for FreeBSD 3.2. + netkey.c + A standalone Unix version of Plan 9's netkey(1). - A README file in each subdirectory further explains each - program. + winstart + winplumb.c + winplumb.exe + Winstart is a shell script to be used with the plumber + to relay plumbing messages (typically URLs) to a Windows + machine. It is particularly useful with VMware. - For a more up-to-date copy of sam and tcs, see Plan 9 from - User Space at http://swtch.com/plan9port. + The following programs at external locations may also be of interest: + + Plan 9 from User Space + a Unix port of acme, sam, tcs, and many other Plan 9 programs + - http://swtch.com/plan9port + + V9fs + a project to write 9P drivers for other operating systems + - 9p2000.ko is now part of the standard Linux 2.6 tree + - http://v9fs.sourceforge.net/ + + spin, the protocol verifier + - http://spinroot.com/ + + sam + older ports of Sam to Unix and Windows + - ftp://ftp.demon.co.uk/pub/unix/plan9 + - ftp://plan9.bell-labs.com/netlib/research/ + + 9pm + an old port of much of the Plan 9 tools to Windows + - http://plan9.bell-labs.com/plan9dist/ureg.html [rsc] --rw-rw-r-- M 923680 glenda drawterm 373 Oct 5 09:54 sys/src/cmd/unix/drawterm/README /n/sourcesdump/2005/1005/plan9/sys/src/cmd/unix/drawterm/README:5,9 - /n/sourcesdump/2005/1006/plan9/sys/src/cmd/unix/drawterm/README:5,9 This drawterm still uses the old (third edition) 9P, aka 9P1. A 9P2000 version of drawterm and many other tools is in - progress. If you are interested in helping, mail rsc@plan9.bell-labs.com. + progress. See ../README for details. Better test harness for newns. [rsc] --rw-rw-r-- M 923680 rsc sys 962 Oct 5 15:28 sys/src/cmd/auth/newns.c /n/sourcesdump/2005/1005/plan9/sys/src/cmd/auth/newns.c:5,22 - /n/sourcesdump/2005/1006/plan9/sys/src/cmd/auth/newns.c:5,43 void usage(void) { - fprint(2, "usage: newns [-n namespace] [cmd [args...]]\n"); + fprint(2, "usage: newns [-ad] [-n namespace] [cmd [args...]]\n"); exits("usage"); } + static int + rooted(char *s) + { + if(s[0] == '/') + return 1; + if(s[0] == '.' && s[1] == '/') + return 1; + if(s[0] == '.' && s[1] == '.' && s[2] == '/') + return 1; + return 0; + } + void main(int argc, char **argv) { - char *nsfile; + extern int newnsdebug; char *defargv[] = { "/bin/rc", "-i", nil }; + char *nsfile, err[ERRMAX]; + int add; + add = 0; nsfile = "/lib/namespace"; ARGBEGIN{ + case 'a': + add = 1; + break; + case 'd': + newnsdebug = 1; + break; case 'n': nsfile = ARGF(); break; /n/sourcesdump/2005/1005/plan9/sys/src/cmd/auth/newns.c:26,32 - /n/sourcesdump/2005/1006/plan9/sys/src/cmd/auth/newns.c:47,61 }ARGEND if(argc == 0) argv = defargv; - newns(getuser(), nsfile); + if (add) + addns(getuser(), nsfile); + else + newns(getuser(), nsfile); exec(argv[0], argv); + if(!rooted(argv[0])){ + rerrstr(err, sizeof err); + exec(smprint("/bin/%s", argv[0]), argv); + errstr(err, sizeof err); + } sysfatal("exec: %s: %r", argv[0]); } Parse quoting properly in name space files. [rsc] --rw-rw-r-- M 923680 glenda sys 7226 Oct 5 15:28 sys/src/libauth/newns.c /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:14,24 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:14,26 static int setenv(char*, char*); static char *expandarg(char*, char*); static int splitargs(char*, char*[], char*, int); - static int nsfile(Biobuf *, AuthRpc *); - static int nsop(int, char*[], AuthRpc*); + static int nsfile(char*, Biobuf *, AuthRpc *); + static int nsop(char*, int, char*[], AuthRpc*); static int callexport(char*, char*); static int catch(void*, char*); + int newnsdebug; + static int buildns(int newns, char *user, char *file) { /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:32,37 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:34,41 rpc = nil; /* try for factotum now because later is impossible */ afd = open("/mnt/factotum/rpc", ORDWR); + if (afd < 0 && newnsdebug) + fprint(2, "open /mnt/factotum/rpc: %r\n"); if(afd >= 0){ rpc = auth_allocrpc(afd); if(rpc == nil){ /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:59,65 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:63,69 snprint(home, 2*ANAMELEN, "/usr/%s", user); setenv("home", home); } - cdroot = nsfile(b, rpc); + cdroot = nsfile(newns ? "newns" : "addns", b, rpc); Bterm(b); if(rpc){ close(rpc->afd); /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:79,90 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:83,95 } static int - nsfile(Biobuf *b, AuthRpc *rpc) + nsfile(char *fn, Biobuf *b, AuthRpc *rpc) { int argc; char *cmd, *argv[NARG+1], argbuf[MAXARG*NARG]; - int cdroot = 0; + int cdroot; + cdroot = 0; atnotify(catch, 1); while(cmd = Brdline(b, '\n')){ cmd[Blinelen(b)-1] = '\0'; /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:94,100 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:99,105 continue; argc = splitargs(cmd, argv, argbuf, NARG); if(argc) - cdroot |= nsop(argc, argv, rpc); + cdroot |= nsop(fn, argc, argv, rpc); } atnotify(catch, 0); return cdroot; /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:128,143 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:133,154 } static int - nsop(int argc, char *argv[], AuthRpc *rpc) + nsop(char *fn, int argc, char *argv[], AuthRpc *rpc) { char *argv0; ulong flags; - int fd; + int fd, i; Biobuf *b; - int cdroot = 0; + int cdroot; + cdroot = 0; flags = 0; argv0 = 0; + if (newnsdebug){ + for (i = 0; i < argc; i++) + fprint(2, "%s ", argv[i]); + fprint(2, "\n"); + } ARGBEGIN{ case 'a': flags |= MAFTER; /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:160,184 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:171,199 b = Bopen(argv[0], OREAD); if(b == nil) return 0; - cdroot |= nsfile(b, rpc); + cdroot |= nsfile(fn, b, rpc); Bterm(b); - } else if(strcmp(argv0, "clear") == 0 && argc == 0) + }else if(strcmp(argv0, "clear") == 0 && argc == 0) rfork(RFCNAMEG); - else if(strcmp(argv0, "bind") == 0 && argc == 2) - bind(argv[0], argv[1], flags); - else if(strcmp(argv0, "unmount") == 0){ + else if(strcmp(argv0, "bind") == 0 && argc == 2){ + if(bind(argv[0], argv[1], flags) < 0 && newnsdebug) + fprint(2, "%s: bind: %s %s: %r\n", fn, argv[0], argv[1]); + }else if(strcmp(argv0, "unmount") == 0){ if(argc == 1) unmount(nil, argv[0]); else if(argc == 2) unmount(argv[0], argv[1]); - } else if(strcmp(argv0, "mount") == 0){ + }else if(strcmp(argv0, "mount") == 0){ fd = open(argv[0], ORDWR); - if(argc == 2) - famount(fd, rpc, argv[1], flags, ""); - else if(argc == 3) - famount(fd, rpc, argv[1], flags, argv[2]); + if(argc == 2){ + if(famount(fd, rpc, argv[1], flags, "") < 0 && newnsdebug) + fprint(2, "%s: mount: %s %s: %r\n", fn, argv[0], argv[1]); + }else if(argc == 3){ + if(famount(fd, rpc, argv[1], flags, argv[2]) < 0 && newnsdebug) + fprint(2, "%s: mount: %s %s %s: %r\n", fn, argv[0], argv[1], argv[2]); + } close(fd); - } else if(strcmp(argv0, "import") == 0){ + }else if(strcmp(argv0, "import") == 0){ fd = callexport(argv[0], argv[1]); if(argc == 2) famount(fd, rpc, argv[1], flags, ""); /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:185,193 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:200,209 else if(argc == 3) famount(fd, rpc, argv[2], flags, ""); close(fd); - } else if(strcmp(argv0, "cd") == 0 && argc == 1) + }else if(strcmp(argv0, "cd") == 0 && argc == 1){ if(chdir(argv[0]) == 0 && *argv[0] == '/') cdroot = 1; + } return cdroot; } /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:221,226 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:237,267 return fd; } + static char* + unquote(char *s) + { + char *r, *w; + int inquote; + + inquote = 0; + for(r=w=s; *r; r++){ + if(*r != '\''){ + *w++ = *r; + continue; + } + if(inquote){ + if(*(r+1) == '\''){ + *w++ = '\''; + r++; + }else + inquote = 0; + }else + inquote = 1; + } + *w = 0; + return s; + } + static int splitargs(char *p, char *argv[], char *argbuf, int nargv) { /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:227,233 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:268,274 char *q; int i, n; - n = gettokens(p, argv, nargv, " \t'\r"); + n = gettokens(p, argv, nargv, " \t\r"); if(n == nargv) return 0; for(i = 0; i < n; i++){ /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:234,245 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:275,303 q = argv[i]; argv[i] = argbuf; argbuf = expandarg(q, argbuf); - if(!argbuf) + if(argbuf == nil) return 0; + unquote(argv[i]); } return n; } + static char* + nextdollar(char *arg) + { + char *p; + int inquote; + + inquote = 0; + for(p=arg; *p; p++){ + if(*p == '\'') + inquote = !inquote; + if(*p == '$' && !inquote) + return p; + } + return nil; + } + /* * copy the arg into the buffer, * expanding any environment variables. /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:253,263 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:311,321 static char * expandarg(char *arg, char *buf) { - char env[3+ANAMELEN], *p, *q, *x; + char env[3+ANAMELEN], *p, *x; int fd, n, len; n = 0; - while(p = utfrune(arg, L'$')){ + while(p = nextdollar(arg)){ len = p - arg; if(n + len + ANAMELEN >= MAXARG-1) return 0; /n/sourcesdump/2005/1005/plan9/sys/src/libauth/newns.c:264,281 - /n/sourcesdump/2005/1006/plan9/sys/src/libauth/newns.c:322,332 memmove(&buf[n], arg, len); n += len; p++; - arg = utfrune(p, L'\0'); - q = utfrune(p, L'/'); - if(q && q < arg) - arg = q; - q = utfrune(p, L'.'); - if(q && q < arg) - arg = q; - q = utfrune(p, L'$'); - if(q && q < arg) - arg = q; + arg = strpbrk(p, "/.!'$"); + if(arg == nil) + arg = p+strlen(p); len = arg - p; - if(len >= ANAMELEN) + if(len == 0 || len >= ANAMELEN) continue; strcpy(env, "#e/"); strncpy(env+3, p, len); [sys] --rwxrwxr-x M 923680 glenda sys 162241 Oct 5 23:09 386/bin/exportfs /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 101371 Oct 5 23:09 386/bin/import /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/fmt/fmt.c:_fmtinstall /sys/src/libc/port/rune.c:chartorune /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 143960 Oct 5 23:09 386/bin/auth/cron /sys/src/cmd/auth/cron.c:main /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/9sys/ctime.c:gmtime /sys/src/libc/fmt/fmt.c:_fmtinstall /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 104451 Oct 5 23:09 386/bin/auth/login /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/rune.c:chartorune /sys/src/libc/port/strpbrk.c:strpbrk /sys/src/libsec/port/des.c:block_cipher /sys/src/libsec/port/des.c:des_key_setup /sys/src/libsec/port/des.c:keycompperm /sys/src/libsec/port/des.c:triple_block_cipher [sys] --rwxrwxr-x M 923680 rsc sys 89687 Oct 5 23:09 386/bin/auth/newns /sys/src/cmd/auth/newns.c:main /sys/src/cmd/auth/newns.c:rooted /sys/src/cmd/auth/newns.c:usage /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/fmt/fmt.c:_fmtinstall /sys/src/libc/fmt/smprint.c:smprint /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 rsc sys 89021 Oct 5 23:09 386/bin/auth/none /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 100637 Oct 5 23:09 386/bin/auth/warning /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/9sys/dirread.c:dirread /sys/src/libc/9sys/dirread.c:dirreadall /sys/src/libc/port/rune.c:chartorune /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 107968 Oct 5 23:09 386/bin/aux/listen /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/9sys/dirread.c:dirread /sys/src/libc/9sys/dirread.c:dirreadall /sys/src/libc/fmt/fmt.c:_fmtinstall /sys/src/libc/fmt/sprint.c:sprint /sys/src/libc/port/pool.c:blocksetdsize /sys/src/libc/port/pool.c:trim /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 rsc sys 94491 Oct 5 23:09 386/bin/aux/listen1 [sys] --rwxrwxr-x M 923680 glenda sys 252710 Oct 5 23:09 386/bin/aux/sshserve [sys] --rwxrwxr-x M 923680 glenda sys 170299 Oct 5 23:09 386/bin/ip/ftpd /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 292364 Oct 5 23:09 386/bin/ip/httpd/httpd /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote [sys] --rwxrwxr-x M 923680 glenda sys 237569 Oct 5 23:09 386/bin/ip/imap4d [sys] --rwxrwxr-x M 923680 glenda sys 219956 Oct 5 23:09 386/bin/ip/ppp [sys] --rwxrwxr-x M 923680 glenda sys 89977 Oct 5 23:09 386/bin/ip/rexexec /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 123067 Oct 5 23:09 386/bin/ip/telnetd /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/9sys/ctime.c:gmtime /sys/src/libc/fmt/fmt.c:_fmtinstall /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 130567 Oct 5 23:09 386/bin/ip/tftpd /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/9sys/ctime.c:gmtime /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 262187 Oct 5 23:09 386/bin/upas/pop3 /sys/src/cmd/upas/pop3/pop3.c:setuser /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 192895 Oct 5 23:09 386/bin/upas/send /sys/src/cmd/upas/smtp/rfc822.y:yylex1 /sys/src/cmd/upas/smtp/rfc822.y:yytokname /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 331205 Oct 5 23:09 386/bin/upas/smtpd /sys/src/cmd/upas/smtp/rfc822.y:yylex1 /sys/src/cmd/upas/smtp/smtpd.y:zzlex1 /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/fmt/fmt.c:_fmtinstall /sys/src/libc/port/strpbrk.c:strpbrk [sys] --rwxrwxr-x M 923680 glenda sys 101180 Oct 5 23:09 386/init /sys/src/libauth/newns.c:buildns /sys/src/libauth/newns.c:callexport /sys/src/libauth/newns.c:expandarg /sys/src/libauth/newns.c:famount /sys/src/libauth/newns.c:nextdollar /sys/src/libauth/newns.c:nsfile /sys/src/libauth/newns.c:nsop /sys/src/libauth/newns.c:setenv /sys/src/libauth/newns.c:splitargs /sys/src/libauth/newns.c:unquote /sys/src/libc/port/rune.c:chartorune /sys/src/libc/port/strpbrk.c:strpbrk /sys/src/libsec/port/des.c:block_cipher /sys/src/libsec/port/des.c:des_key_setup /sys/src/libsec/port/des.c:keycompperm /sys/src/libsec/port/des.c:triple_block_cipher [sys] --rw-rw-r-- M 923680 glenda sys 58648 Oct 5 23:09 386/lib/libauth.a New program from Christoph Lohmann. [rsc] --rw-rw-r-- M 923680 rsc sys 1233 Oct 5 20:02 sys/man/4/httpfile [rsc] --rw------- M 923680 rsc sys 10037 Oct 5 20:02 sys/src/cmd/ip/httpfile.c