- argc--, argv++;
- while (argc > 0 && argv[0][0] == '-') {
- for (cp = &argv[0][1]; *cp; cp++)
- switch (*cp) {
-
- case 'N':
- Nflag++;
- break;
-
- case 'S':
- if (argc < 1)
- fatal("-S: missing sector size");
- argc--, argv++;
- sectorsize = atoi(*argv);
- if (sectorsize <= 0)
- fatal("%s: bad sector size", *argv);
- goto next;
-
- case 'a':
- if (argc < 1)
- fatal("-a: missing max contiguous blocks\n");
- argc--, argv++;
- maxcontig = atoi(*argv);
- if (maxcontig <= 0)
- fatal("%s: bad max contiguous blocks\n",
- *argv);
- goto next;
-
- case 'b':
- if (argc < 1)
- fatal("-b: missing block size");
- argc--, argv++;
- bsize = atoi(*argv);
- if (bsize < MINBSIZE)
- fatal("%s: bad block size", *argv);
- goto next;
-
- case 'c':
- if (argc < 1)
- fatal("-c: missing cylinders/group");
- argc--, argv++;
- cpg = atoi(*argv);
- if (cpg <= 0)
- fatal("%s: bad cylinders/group", *argv);
- cpgflg++;
- goto next;
-
- case 'd':
- if (argc < 1)
- fatal("-d: missing rotational delay\n");
- argc--, argv++;
- rotdelay = atoi(*argv);
- if (rotdelay < 0)
- fatal("%s: bad rotational delay\n",
- *argv);
- goto next;
-
- case 'e':
- if (argc < 1)
- fatal("-e: missing blocks pre file in a cyl group\n");
- argc--, argv++;
- maxbpg = atoi(*argv);
- if (maxbpg <= 0)
- fatal("%s: bad blocks per file in a cyl group\n",
- *argv);
- goto next;
-
- case 'f':
- if (argc < 1)
- fatal("-f: missing frag size");
- argc--, argv++;
- fsize = atoi(*argv);
- if (fsize <= 0)
- fatal("%s: bad frag size", *argv);
- goto next;
-
- case 'i':
- if (argc < 1)
- fatal("-i: missing bytes per inode\n");
- argc--, argv++;
- density = atoi(*argv);
- if (density <= 0)
- fatal("%s: bad bytes per inode\n",
- *argv);
- goto next;
-
- case 'k':
- if (argc < 1)
- fatal("-k: track skew");
- argc--, argv++;
- trackskew = atoi(*argv);
- if (trackskew < 0)
- fatal("%s: bad track skew", *argv);
- goto next;
-
- case 'l':
- if (argc < 1)
- fatal("-l: interleave");
- argc--, argv++;
- interleave = atoi(*argv);
- if (interleave <= 0)
- fatal("%s: bad interleave", *argv);
- goto next;
-
- case 'm':
- if (argc < 1)
- fatal("-m: missing free space %%\n");
- argc--, argv++;
- minfree = atoi(*argv);
- if (minfree < 0 || minfree > 99)
- fatal("%s: bad free space %%\n",
- *argv);
- goto next;
-
- case 'n':
- if (argc < 1)
- fatal("-n: missing rotational layout count\n");
- argc--, argv++;
- nrpos = atoi(*argv);
- if (nrpos <= 0)
- fatal("%s: bad rotational layout count\n",
- *argv);
- goto next;
-
- case 'o':
- if (argc < 1)
- fatal("-o: missing optimization preference");
- argc--, argv++;
- if (strcmp(*argv, "space") == 0)
- opt = FS_OPTSPACE;
- else if (strcmp(*argv, "time") == 0)
- opt = FS_OPTTIME;
- else
- fatal("%s: bad optimization preference %s",
- *argv,
- "(options are `space' or `time')");
- goto next;
-
- case 'p':
- if (argc < 1)
- fatal("-p: spare sectors per track");
- argc--, argv++;
- trackspares = atoi(*argv);
- if (trackspares < 0)
- fatal("%s: bad spare sectors per track", *argv);
- goto next;
-
- case 'r':
- if (argc < 1)
- fatal("-r: missing revs/minute\n");
- argc--, argv++;
- rpm = atoi(*argv);
- if (rpm <= 0)
- fatal("%s: bad revs/minute\n", *argv);
- goto next;
-
- case 's':
- if (argc < 1)
- fatal("-s: missing file system size");
- argc--, argv++;
- fssize = atoi(*argv);
- if (fssize <= 0)
- fatal("%s: bad file system size",
- *argv);
- goto next;
-
- case 't':
- if (argc < 1)
- fatal("-t: missing track total");
- argc--, argv++;
- ntracks = atoi(*argv);
- if (ntracks <= 0)
- fatal("%s: bad total tracks", *argv);
- goto next;
-
- case 'u':
- if (argc < 1)
- fatal("-u: missing sectors/track");
- argc--, argv++;
- nsectors = atoi(*argv);
- if (nsectors <= 0)
- fatal("%s: bad sectors/track", *argv);
- goto next;
-
- case 'x':
- if (argc < 1)
- fatal("-x: spare sectors per cylinder");
- argc--, argv++;
- cylspares = atoi(*argv);
- if (cylspares < 0)
- fatal("%s: bad spare sectors per cylinder", *argv);
- goto next;
-
- default:
- fatal("-%c: unknown flag", *cp);
- }
-next:
- argc--, argv++;
- }
- if (argc < 1) {
- if (memfs)
- fprintf(stderr,
- "usage: memfs [ fsoptions ] special-device %s\n",
- "mount-point");
- else