| tadd -n to ls; add rm and create - plan9port - [fork] Plan 9 from user space | |
| git clone git://src.adamsgaard.dk/plan9port | |
| Log | |
| Files | |
| Refs | |
| README | |
| LICENSE | |
| --- | |
| commit 1b404fe6e4a50425853434086895517fbe2da4b3 | |
| parent 39e5957ace14f1dcff62014fd26f368e87c79c29 | |
| Author: rsc <devnull@localhost> | |
| Date: Sun, 5 Feb 2006 15:34:46 +0000 | |
| add -n to ls; add rm and create | |
| Diffstat: | |
| M src/cmd/9p.c | 64 +++++++++++++++++++++++++++++… | |
| 1 file changed, 61 insertions(+), 3 deletions(-) | |
| --- | |
| diff --git a/src/cmd/9p.c b/src/cmd/9p.c | |
| t@@ -20,7 +20,7 @@ usage(void) | |
| fprint(2, " writefd name\n"); | |
| fprint(2, " stat name\n"); | |
| fprint(2, " rdwr name\n"); | |
| - fprint(2, " ls [-ld] name\n"); | |
| + fprint(2, " ls [-ldn] name\n"); | |
| fprint(2, "without -a, name elem/path means /path on server unix!$ns/e… | |
| threadexitsall("usage"); | |
| } | |
| t@@ -33,6 +33,8 @@ void xwritefd(int, char**); | |
| void xstat(int, char**); | |
| void xls(int, char**); | |
| void xrdwr(int, char**); | |
| +void xrm(int, char**); | |
| +void xcreate(int, char**); | |
| void xcon(int, char**); | |
| struct { | |
| t@@ -47,6 +49,8 @@ struct { | |
| "stat", xstat, | |
| "rdwr", xrdwr, | |
| "ls", xls, | |
| + "rm", xrm, | |
| + "create", xcreate, | |
| }; | |
| void | |
| t@@ -321,6 +325,55 @@ xrdwr(int argc, char **argv) | |
| } | |
| void | |
| +xcreate(int argc, char **argv) | |
| +{ | |
| + int i; | |
| + CFsys *fs; | |
| + CFid *fid; | |
| + char *p; | |
| + | |
| + ARGBEGIN{ | |
| + default: | |
| + usage(); | |
| + }ARGEND | |
| + | |
| + if(argc == 0) | |
| + usage(); | |
| + | |
| + for(i=0; i<argc; i++){ | |
| + fs = xparse(argv[i], &p); | |
| + if((fid=fscreate(fs, p, OREAD, 0666)) == nil) | |
| + fprint(2, "create %s: %r\n", argv[i]); | |
| + else | |
| + fsclose(fid); | |
| + fsunmount(fs); | |
| + } | |
| +} | |
| + | |
| +void | |
| +xrm(int argc, char **argv) | |
| +{ | |
| + int i; | |
| + CFsys *fs; | |
| + char *p; | |
| + | |
| + ARGBEGIN{ | |
| + default: | |
| + usage(); | |
| + }ARGEND | |
| + | |
| + if(argc == 0) | |
| + usage(); | |
| + | |
| + for(i=0; i<argc; i++){ | |
| + fs = xparse(argv[i], &p); | |
| + if(fsremove(fs, p) < 0) | |
| + fprint(2, "remove %s: %r\n", argv[i]); | |
| + fsunmount(fs); | |
| + } | |
| +} | |
| + | |
| +void | |
| rdcon(void *v) | |
| { | |
| int n; | |
| t@@ -417,15 +470,19 @@ void | |
| xls(int argc, char **argv) | |
| { | |
| char *err, *name, *xname, *f[4], buf[4096]; | |
| - int nf, i, j, l; | |
| + int nf, i, j, l, sort; | |
| int lflag, dflag, n, len[4]; | |
| Dir *d; | |
| CFid *fid; | |
| CFsys *fs; | |
| err = nil; | |
| + sort = 0; | |
| lflag = dflag = 0; | |
| ARGBEGIN{ | |
| + case 'n': | |
| + sort = 0; | |
| + break; | |
| case 'l': | |
| lflag = 1; | |
| break; | |
| t@@ -465,7 +522,8 @@ xls(int argc, char **argv) | |
| err = "errors"; | |
| continue; | |
| } | |
| - qsort(d, n, sizeof d[0], dircmp); | |
| + if(sort) | |
| + qsort(d, n, sizeof d[0], dircmp); | |
| for(j=0; j<5; j++) | |
| len[j] = 0; | |
| for(i=0; i<n; i++){ |