Plan 9 from Bell Labs’s /usr/web/sources/extra/changes/2005/1005

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


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:[email protected]:/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 [email protected].
	+ 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


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].