projects
/
unix-history
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
BSD 4_2 release
[unix-history]
/
usr
/
src
/
etc
/
newfs.c
diff --git
a/usr/src/etc/newfs.c
b/usr/src/etc/newfs.c
index
67d8eb0
..
dafe394
100644
(file)
--- a/
usr/src/etc/newfs.c
+++ b/
usr/src/etc/newfs.c
@@
-1,5
+1,5
@@
#ifndef lint
#ifndef lint
-static char sccsid[] = "@(#)newfs.c 4.
6 2/20
/83";
+static char sccsid[] = "@(#)newfs.c 4.
12 8/28
/83";
#endif
/*
#endif
/*
@@
-8,14
+8,15
@@
static char sccsid[] = "@(#)newfs.c 4.6 2/20/83";
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/fs.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/fs.h>
+#include <sys/dir.h>
#include <stdio.h>
#include <stdio.h>
-#include <dir.h>
#include <disktab.h>
#define BOOTDIR "/usr/mdec" /* directory for boot blocks */
int verbose; /* show mkfs line before exec */
#include <disktab.h>
#define BOOTDIR "/usr/mdec" /* directory for boot blocks */
int verbose; /* show mkfs line before exec */
+int noboot; /* do not fill boot blocks */
int fssize; /* file system size */
int fsize; /* fragment size */
int bsize; /* block size */
int fssize; /* file system size */
int fsize; /* fragment size */
int bsize; /* block size */
@@
-23,8
+24,9
@@
int ntracks; /* # tracks/cylinder */
int nsectors; /* # sectors/track */
int sectorsize; /* bytes/sector */
int cpg; /* cylinders/cylinder group */
int nsectors; /* # sectors/track */
int sectorsize; /* bytes/sector */
int cpg; /* cylinders/cylinder group */
-int minfree
;
/* free space threshold */
+int minfree
= -1;
/* free space threshold */
int rpm; /* revolutions/minute of drive */
int rpm; /* revolutions/minute of drive */
+int density; /* number of bytes per inode */
char *av[20]; /* argv array and buffers for exec */
char a2[20];
char *av[20]; /* argv array and buffers for exec */
char a2[20];
@@
-35,6
+37,7
@@
char a6[20];
char a7[20];
char a8[20];
char a9[20];
char a7[20];
char a8[20];
char a9[20];
+char a10[20];
char device[MAXPATHLEN];
char cmd[BUFSIZ];
char device[MAXPATHLEN];
char cmd[BUFSIZ];
@@
-43,6
+46,7
@@
char *rindex();
char *sprintf();
main(argc, argv)
char *sprintf();
main(argc, argv)
+ int argc;
char *argv[];
{
char *cp, *special;
char *argv[];
{
char *cp, *special;
@@
-61,6
+65,10
@@
main(argc, argv)
verbose++;
break;
verbose++;
break;
+ case 'n':
+ noboot++;
+ break;
+
case 's':
if (argc < 1)
fatal("-s: missing file system size");
case 's':
if (argc < 1)
fatal("-s: missing file system size");
@@
-135,6
+143,16
@@
main(argc, argv)
fatal("%s: bad revs/minute\n", *argv);
goto next;
fatal("%s: bad revs/minute\n", *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;
+
default:
fatal("-%c: unknown flag", cp);
}
default:
fatal("-%c: unknown flag", cp);
}
@@
-153,23
+171,22
@@
next:
fprintf(stderr, "\t-m minimum free space %%\n");
fprintf(stderr, "\t-r revolutions/minute\n");
fprintf(stderr, "\t-S sector size\n");
fprintf(stderr, "\t-m minimum free space %%\n");
fprintf(stderr, "\t-r revolutions/minute\n");
fprintf(stderr, "\t-S sector size\n");
+ fprintf(stderr, "\t-i number of bytes per inode\n");
exit(1);
}
special = argv[0];
exit(1);
}
special = argv[0];
-again:
+ cp = rindex(special, '/');
+ if (cp != 0)
+ special = cp + 1;
+ if (*special == 'r' && special[1] != 'a' && special[1] != 'b')
+ special++;
+ special = sprintf(device, "/dev/r%s", special);
if (stat(special, &st) < 0) {
if (stat(special, &st) < 0) {
- if (*special != '/') {
- if (*special == 'r')
- special++;
- special = sprintf(device, "/dev/r%s", special);
- goto again;
- }
fprintf(stderr, "newfs: "); perror(special);
exit(2);
}
fprintf(stderr, "newfs: "); perror(special);
exit(2);
}
- if ((st.st_mode & S_IFMT) != S_IFBLK &&
- (st.st_mode & S_IFMT) != S_IFCHR)
- fatal("%s: not a block or character device", special);
+ if ((st.st_mode & S_IFMT) != S_IFCHR)
+ fatal("%s: not a character device", special);
dp = getdiskbyname(argv[1]);
if (dp == 0)
fatal("%s: unknown disk type", argv[1]);
dp = getdiskbyname(argv[1]);
if (dp == 0)
fatal("%s: unknown disk type", argv[1]);
@@
-216,7
+233,9
@@
again:
fatal("%s: no default revolutions/minute value",
argv[1]);
}
fatal("%s: no default revolutions/minute value",
argv[1]);
}
- if (minfree == 0)
+ if (density <= 0)
+ density = 2048;
+ if (minfree < 0)
minfree = 10;
if (cpg == 0)
cpg = 16;
minfree = 10;
if (cpg == 0)
cpg = 16;
@@
-229,6
+248,7
@@
again:
av[i++] = sprintf(a7, "%d", cpg);
av[i++] = sprintf(a8, "%d", minfree);
av[i++] = sprintf(a9, "%d", rpm / 60);
av[i++] = sprintf(a7, "%d", cpg);
av[i++] = sprintf(a8, "%d", minfree);
av[i++] = sprintf(a9, "%d", rpm / 60);
+ av[i++] = sprintf(a10, "%d", density);
av[i++] = 0;
sprintf(cmd, "/etc/mkfs %s", special);
for (i = 0; av[i] != 0; i++) {
av[i++] = 0;
sprintf(cmd, "/etc/mkfs %s", special);
for (i = 0; av[i] != 0; i++) {
@@
-239,14
+259,15
@@
again:
printf("%s\n", cmd);
if (status = system(cmd))
exit(status);
printf("%s\n", cmd);
if (status = system(cmd))
exit(status);
- if (*cp == 'a') {
+ if (*cp == 'a'
&& !noboot
) {
char type[3];
char type[3];
+ struct stat sb;
cp = rindex(special, '/');
if (cp == NULL)
fatal("%s: can't figure out disk type from name",
special);
cp = rindex(special, '/');
if (cp == NULL)
fatal("%s: can't figure out disk type from name",
special);
- if (
cp[1] == 'r'
)
+ if (
stat(special, &sb) >= 0 && (sb.st_mode & S_IFMT) == S_IFCHR
)
cp++;
type[0] = *++cp;
type[1] = *++cp;
cp++;
type[0] = *++cp;
type[1] = *++cp;