FRESULT DFATFS::fsmkfs(DFSVOL& dfsVol) { FRESULT fr = FR_OK; DFSVOL * pDFSVolSave = _arDFSVOL[iMKFS]; // unmount the drive, in case it is mounted fsunmount(szFatFsVols[iMKFS]); // delay mount the volume if((fr = fsmount(dfsVol, szFatFsVols[iMKFS], 0)) != FR_OK) { return(fr); } // create the file system fr = f_mkfs(szFatFsVols[iMKFS], dfsVol._sfd, dfsVol._au); // unmount the drive fsunmount(szFatFsVols[iMKFS]); // restore the old mount if(pDFSVolSave != NULL) { fsmount(*pDFSVolSave, szFatFsVols[iMKFS], 0); } return(fr); }
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 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); }