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); } }
int xopenfd(char *name, int mode) { CFsys *fs; fs = xparse(name, &name); return fsopenfd(fs, name, mode); }
CFid* xopen(char *name, int mode) { CFid *fid; CFsys *fs; fs = xparse(name, &name); fid = fsopen(fs, name, mode); if(fid == nil) sysfatal("fsopen %s: %r", name); return fid; }
expression *parse_xpath(elcgen *gen, expression *pnode, const char *str) { X_BUFFER_STATE bufstate; int r; expression *expr; pthread_mutex_lock(&xpath_lock); parse_node = pnode ? pnode->xmlnode : NULL; parse_firstline = parse_node ? parse_node->line : 0; parse_expr = NULL; lex_lineno = 0; bufstate = x_scan_string(str); x_switch_to_buffer(bufstate); r = xparse(); x_delete_buffer(bufstate); #if HAVE_XLEX_DESTROY xlex_destroy(); #endif if (0 != r) { gen_error(gen,"XPath parse error"); pthread_mutex_unlock(&xpath_lock); return NULL; } expr = parse_expr; parse_expr = NULL; pthread_mutex_unlock(&xpath_lock); if (NULL == expr) gen_error(gen,"XPath parse returned NULL expr"); else expr_set_parents(expr,pnode); return expr; }
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 xstat(int argc, char **argv) { Dir *d; CFsys *fs; char *name; ARGBEGIN{ default: usage(); }ARGEND if(argc != 1) usage(); name = argv[0]; fs = xparse(name, &name); if((d = fsdirstat(fs, name)) == 0) sysfatal("dirstat: %r"); fmtinstall('D', dirfmt); fmtinstall('M', dirmodefmt); print("%D\n", d); threadexitsall(0); }
void xls(int argc, char **argv) { char *err, *name, *xname, *f[4], buf[4096]; int i, j, l, sort; int lflag, dflag, tflag, n, len[4]; Dir *d; CFid *fid; CFsys *fs; err = nil; sort = 1; lflag = dflag = tflag = 0; ARGBEGIN{ case 'n': sort = 0; break; case 'l': lflag = 1; break; case 'd': dflag = 1; break; case 't': tflag = 1; break; }ARGEND fmtinstall('D', dirfmt); fmtinstall('M', dirmodefmt); quotefmtinstall(); fmtinstall('T', timefmt); if(argc == 0){ argv = dot; argc = 1; } for(i=0; i<argc; i++){ name = argv[i]; fs = xparse(name, &xname); if((d = fsdirstat(fs, xname)) == nil){ fprint(2, "dirstat %s: %r\n", name); fsunmount(fs); err = "errors"; continue; } if((d->mode&DMDIR) && !dflag){ if((fid = fsopen(fs, xname, OREAD)) == nil){ fprint(2, "open %s: %r\n", name); fsunmount(fs); free(d); err = "errors"; continue; } free(d); n = fsdirreadall(fid, &d); fsclose(fid); if(n < 0){ fprint(2, "dirreadall %s: %r\n", name); fsunmount(fs); err = "errors"; continue; } if(sort){ if(tflag) qsort(d, n, sizeof d[0], timecmp); else qsort(d, n, sizeof d[0], dircmp); } for(j=0; j<4; j++) len[j] = 0; for(i=0; i<n; i++){ d[i].type = 'M'; d[i].dev = 0; snprint(buf, sizeof buf, "%d %s %s %lld", d[i].dev, d[i].uid, d[i].gid, d[i].length); getfields(buf, f, 4, 0, " "); for(j=0; j<4; j++){ l = strlen(f[j]); if(l > len[j]) len[j] = l; } } for(i=0; i<n; i++){ if(!lflag){ print("%q\n", d[i].name); continue; } print("%M %C %*d %*s %*s %*lld %T %q\n", d[i].mode, d[i].type, len[0], d[i].dev, -len[1], d[i].uid, -len[2], d[i].gid, len[3], d[i].length, d[i].mtime, d[i].name); } }else{ d->type = 'M'; d->dev = 0; if(lflag) print("%M %C %d %s %s %lld %T %q\n", d->mode, d->type, d->dev, d->uid, d->gid, d->length, d->mtime, d->name); else print("%q\n", d->name); } free(d); } threadexitsall(err); }