예제 #1
0
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);
}
예제 #2
0
파일: 9p.c 프로젝트: 00001/plan9port
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);
	}
}
예제 #3
0
파일: 9p.c 프로젝트: 00001/plan9port
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);
	}
}
예제 #4
0
파일: 9p.c 프로젝트: 00001/plan9port
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);
}