Plan 9 from Bell Labs’s /usr/web/sources/contrib/uriel/changes/2005/1005/5

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


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


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.