Add prototypes. Check malloc() return value. Use err(). Remove unused #includes
Do not \n nor dot terminate syslog()/err() messages. -Wall.
This commit is contained in:
parent
7485340223
commit
27750b35a5
@ -32,12 +32,21 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)mkfs.c 8.11 (Berkeley) 5/3/95";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
#include <err.h>
|
||||
#include <signal.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/resource.h>
|
||||
#include <ufs/ufs/dinode.h>
|
||||
@ -49,9 +58,15 @@ static char sccsid[] = "@(#)mkfs.c 8.11 (Berkeley) 5/3/95";
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
#ifndef STANDALONE
|
||||
#include <a.out.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#else
|
||||
extern int atoi __P((char *));
|
||||
extern char * getenv __P((char *));
|
||||
#endif
|
||||
|
||||
#ifdef FSIRAND
|
||||
extern long random __P((void));
|
||||
extern void srandomdev __P((void));
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -102,9 +117,6 @@ extern int bbsize; /* boot block size */
|
||||
extern int sbsize; /* superblock size */
|
||||
extern u_long memleft; /* virtual memory available */
|
||||
extern caddr_t membase; /* start address of memory based filesystem */
|
||||
#ifdef STANDALONE
|
||||
extern caddr_t malloc(), calloc();
|
||||
#endif
|
||||
extern char * filename;
|
||||
|
||||
union {
|
||||
@ -129,7 +141,27 @@ int randinit;
|
||||
daddr_t alloc();
|
||||
long calcipg();
|
||||
static int charsperline();
|
||||
void clrblock __P((struct fs *, unsigned char *, int));
|
||||
void fsinit __P((time_t));
|
||||
void initcg __P((int, time_t));
|
||||
int isblock __P((struct fs *, unsigned char *, int));
|
||||
void iput __P((struct dinode *, ino_t));
|
||||
int makedir __P((struct direct *, int));
|
||||
void rdfs __P((daddr_t, int, char *));
|
||||
void setblock __P((struct fs *, unsigned char *, int));
|
||||
void wtfs __P((daddr_t, int, char *));
|
||||
|
||||
#ifndef STANDALONE
|
||||
void get_memleft __P((void));
|
||||
void raise_data_limit __P((void));
|
||||
#else
|
||||
void free __P((char *));
|
||||
char * calloc __P((u_long, u_long));
|
||||
caddr_t malloc __P((u_long));
|
||||
caddr_t realloc __P((char *, u_long));
|
||||
#endif
|
||||
|
||||
void
|
||||
mkfs(pp, fsys, fi, fo)
|
||||
struct partition *pp;
|
||||
char *fsys;
|
||||
@ -141,7 +173,7 @@ mkfs(pp, fsys, fi, fo)
|
||||
off_t usedb;
|
||||
long mapcramped, inodecramped;
|
||||
long postblsize, rotblsize, totalsbsize;
|
||||
int ppid, status, fd;
|
||||
int ppid = 0, status, fd;
|
||||
time_t utime;
|
||||
quad_t sizepb;
|
||||
void started();
|
||||
@ -160,11 +192,9 @@ mkfs(pp, fsys, fi, fo)
|
||||
if (mfs) {
|
||||
ppid = getpid();
|
||||
(void) signal(SIGUSR1, started);
|
||||
if (i = fork()) {
|
||||
if (i == -1) {
|
||||
perror("mfs");
|
||||
exit(10);
|
||||
}
|
||||
if ((i = fork())) {
|
||||
if (i == -1)
|
||||
err(10, "mfs");
|
||||
if (waitpid(i, &status, 0) != -1 && WIFEXITED(status))
|
||||
exit(WEXITSTATUS(status));
|
||||
exit(11);
|
||||
@ -179,18 +209,14 @@ mkfs(pp, fsys, fi, fo)
|
||||
unsigned char buf[BUFSIZ];
|
||||
unsigned long l,l1;
|
||||
fd = open(filename,O_RDWR|O_TRUNC|O_CREAT,0644);
|
||||
if(fd < 0) {
|
||||
perror(filename);
|
||||
exit(12);
|
||||
}
|
||||
if(fd < 0)
|
||||
err(12, "%s", filename);
|
||||
for(l=0;l< fssize * sectorsize;l += l1) {
|
||||
l1 = fssize * sectorsize;
|
||||
if (BUFSIZ < l1)
|
||||
l1 = BUFSIZ;
|
||||
if (l1 != write(fd,buf,l1)) {
|
||||
perror(filename);
|
||||
exit(12);
|
||||
}
|
||||
if (l1 != write(fd,buf,l1))
|
||||
err(12, "%s", filename);
|
||||
}
|
||||
membase = mmap(
|
||||
0,
|
||||
@ -199,10 +225,8 @@ mkfs(pp, fsys, fi, fo)
|
||||
MAP_SHARED,
|
||||
fd,
|
||||
0);
|
||||
if(membase == MAP_FAILED) {
|
||||
perror("mmap");
|
||||
exit(12);
|
||||
}
|
||||
if(membase == MAP_FAILED)
|
||||
err(12, "mmap");
|
||||
close(fd);
|
||||
} else {
|
||||
#ifndef STANDALONE
|
||||
@ -210,10 +234,8 @@ mkfs(pp, fsys, fi, fo)
|
||||
#endif
|
||||
if (fssize * sectorsize > (memleft - 131072))
|
||||
fssize = (memleft - 131072) / sectorsize;
|
||||
if ((membase = malloc(fssize * sectorsize)) == NULL) {
|
||||
perror("malloc");
|
||||
exit(13);
|
||||
}
|
||||
if ((membase = malloc(fssize * sectorsize)) == NULL)
|
||||
errx(13, "malloc failed");
|
||||
}
|
||||
}
|
||||
fsi = fi;
|
||||
@ -610,10 +632,8 @@ mkfs(pp, fsys, fi, fo)
|
||||
for (sblock.fs_csshift = 0; i > 1; i >>= 1)
|
||||
sblock.fs_csshift++;
|
||||
fscs = (struct csum *)calloc(1, sblock.fs_cssize);
|
||||
if (fscs == NULL) {
|
||||
perror("calloc");
|
||||
exit(31);
|
||||
}
|
||||
if (fscs == NULL)
|
||||
errx(31, "calloc failed");
|
||||
sblock.fs_magic = FS_MAGIC;
|
||||
sblock.fs_rotdelay = rotdelay;
|
||||
sblock.fs_minfree = minfree;
|
||||
@ -718,13 +738,17 @@ mkfs(pp, fsys, fi, fo)
|
||||
/*
|
||||
* Initialize a cylinder group.
|
||||
*/
|
||||
void
|
||||
initcg(cylno, utime)
|
||||
int cylno;
|
||||
time_t utime;
|
||||
{
|
||||
daddr_t cbase, d, dlower, dupper, dmax, blkno;
|
||||
long i, j, s;
|
||||
long i;
|
||||
register struct csum *cs;
|
||||
#ifdef FSIRAND
|
||||
long j;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Determine block bounds for cylinder group.
|
||||
@ -807,7 +831,7 @@ initcg(cylno, utime)
|
||||
sblock.fs_dsize += dlower;
|
||||
}
|
||||
sblock.fs_dsize += acg.cg_ndblk - dupper;
|
||||
if (i = dupper % sblock.fs_frag) {
|
||||
if ((i = dupper % sblock.fs_frag)) {
|
||||
acg.cg_frsum[sblock.fs_frag - i]++;
|
||||
for (d = dupper + sblock.fs_frag - i; dupper < d; dupper++) {
|
||||
setbit(cg_blksfree(&acg), dupper);
|
||||
@ -914,10 +938,13 @@ struct odirect olost_found_dir[] = {
|
||||
#endif
|
||||
char buf[MAXBSIZE];
|
||||
|
||||
void
|
||||
fsinit(utime)
|
||||
time_t utime;
|
||||
{
|
||||
#ifdef LOSTDIR
|
||||
int i;
|
||||
#endif
|
||||
|
||||
/*
|
||||
* initialize the node
|
||||
@ -970,6 +997,7 @@ fsinit(utime)
|
||||
* construct a set of directory entries in "buf".
|
||||
* return size of directory.
|
||||
*/
|
||||
int
|
||||
makedir(protodir, entries)
|
||||
register struct direct *protodir;
|
||||
int entries;
|
||||
@ -1084,6 +1112,7 @@ calcipg(cpg, bpcg, usedbp)
|
||||
/*
|
||||
* Allocate an inode on the disk
|
||||
*/
|
||||
void
|
||||
iput(ip, ino)
|
||||
register struct dinode *ip;
|
||||
register ino_t ino;
|
||||
@ -1113,9 +1142,9 @@ iput(ip, ino)
|
||||
exit(32);
|
||||
}
|
||||
d = fsbtodb(&sblock, ino_to_fsba(&sblock, ino));
|
||||
rdfs(d, sblock.fs_bsize, buf);
|
||||
rdfs(d, sblock.fs_bsize, (char *)buf);
|
||||
buf[ino_to_fsbo(&sblock, ino)] = *ip;
|
||||
wtfs(d, sblock.fs_bsize, buf);
|
||||
wtfs(d, sblock.fs_bsize, (char *)buf);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1146,10 +1175,10 @@ malloc(size)
|
||||
i = (char *)((u_long)(base + pgsz) &~ pgsz);
|
||||
base = sbrk(i - base);
|
||||
if (getrlimit(RLIMIT_DATA, &rlp) < 0)
|
||||
perror("getrlimit");
|
||||
warn("getrlimit");
|
||||
rlp.rlim_cur = rlp.rlim_max;
|
||||
if (setrlimit(RLIMIT_DATA, &rlp) < 0)
|
||||
perror("setrlimit");
|
||||
warn("setrlimit");
|
||||
memleft = rlp.rlim_max - (u_long)base;
|
||||
}
|
||||
size = (size + pgsz) &~ pgsz;
|
||||
@ -1188,7 +1217,8 @@ calloc(size, numelm)
|
||||
caddr_t base;
|
||||
|
||||
size *= numelm;
|
||||
base = malloc(size);
|
||||
if ((base = malloc(size)) == NULL);
|
||||
return (NULL);
|
||||
memset(base, 0, size);
|
||||
return (base);
|
||||
}
|
||||
@ -1196,6 +1226,7 @@ calloc(size, numelm)
|
||||
/*
|
||||
* Replace libc function with one suited to our needs.
|
||||
*/
|
||||
void
|
||||
free(ptr)
|
||||
char *ptr;
|
||||
{
|
||||
@ -1205,15 +1236,16 @@ free(ptr)
|
||||
|
||||
#else /* !STANDALONE */
|
||||
|
||||
void
|
||||
raise_data_limit()
|
||||
{
|
||||
struct rlimit rlp;
|
||||
|
||||
if (getrlimit(RLIMIT_DATA, &rlp) < 0)
|
||||
perror("getrlimit");
|
||||
warn("getrlimit");
|
||||
rlp.rlim_cur = rlp.rlim_max;
|
||||
if (setrlimit(RLIMIT_DATA, &rlp) < 0)
|
||||
perror("setrlimit");
|
||||
warn("setrlimit");
|
||||
}
|
||||
|
||||
#ifdef __ELF__
|
||||
@ -1223,6 +1255,7 @@ extern char *_etext;
|
||||
extern char *etext;
|
||||
#endif
|
||||
|
||||
void
|
||||
get_memleft()
|
||||
{
|
||||
static u_long pgsz;
|
||||
@ -1235,7 +1268,7 @@ get_memleft()
|
||||
dstart = ((u_long)&etext) &~ pgsz;
|
||||
freestart = ((u_long)(sbrk(0) + pgsz) &~ pgsz);
|
||||
if (getrlimit(RLIMIT_DATA, &rlp) < 0)
|
||||
perror("getrlimit");
|
||||
warn("getrlimit");
|
||||
memused = freestart - dstart;
|
||||
memleft = rlp.rlim_cur - memused;
|
||||
}
|
||||
@ -1244,6 +1277,7 @@ get_memleft()
|
||||
/*
|
||||
* read a block from the file system
|
||||
*/
|
||||
void
|
||||
rdfs(bno, size, bf)
|
||||
daddr_t bno;
|
||||
int size;
|
||||
@ -1257,20 +1291,19 @@ rdfs(bno, size, bf)
|
||||
}
|
||||
if (lseek(fsi, (off_t)bno * sectorsize, 0) < 0) {
|
||||
printf("seek error: %ld\n", (long)bno);
|
||||
perror("rdfs");
|
||||
exit(33);
|
||||
err(33, "rdfs");
|
||||
}
|
||||
n = read(fsi, bf, size);
|
||||
if (n != size) {
|
||||
printf("read error: %ld\n", (long)bno);
|
||||
perror("rdfs");
|
||||
exit(34);
|
||||
err(34, "rdfs");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* write a block to the file system
|
||||
*/
|
||||
void
|
||||
wtfs(bno, size, bf)
|
||||
daddr_t bno;
|
||||
int size;
|
||||
@ -1286,20 +1319,19 @@ wtfs(bno, size, bf)
|
||||
return;
|
||||
if (lseek(fso, (off_t)bno * sectorsize, SEEK_SET) < 0) {
|
||||
printf("seek error: %ld\n", (long)bno);
|
||||
perror("wtfs");
|
||||
exit(35);
|
||||
err(35, "wtfs");
|
||||
}
|
||||
n = write(fso, bf, size);
|
||||
if (n != size) {
|
||||
printf("write error: %ld\n", (long)bno);
|
||||
perror("wtfs");
|
||||
exit(36);
|
||||
err(36, "wtfs");
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* check if a block is available
|
||||
*/
|
||||
int
|
||||
isblock(fs, cp, h)
|
||||
struct fs *fs;
|
||||
unsigned char *cp;
|
||||
@ -1332,6 +1364,7 @@ isblock(fs, cp, h)
|
||||
/*
|
||||
* take a block out of the map
|
||||
*/
|
||||
void
|
||||
clrblock(fs, cp, h)
|
||||
struct fs *fs;
|
||||
unsigned char *cp;
|
||||
@ -1363,6 +1396,7 @@ clrblock(fs, cp, h)
|
||||
/*
|
||||
* put a block into the map
|
||||
*/
|
||||
void
|
||||
setblock(fs, cp, h)
|
||||
struct fs *fs;
|
||||
unsigned char *cp;
|
||||
@ -1402,7 +1436,6 @@ charsperline()
|
||||
int columns;
|
||||
char *cp;
|
||||
struct winsize ws;
|
||||
extern char *getenv();
|
||||
|
||||
columns = 0;
|
||||
if (ioctl(0, TIOCGWINSZ, &ws) != -1)
|
||||
|
@ -30,6 +30,7 @@
|
||||
.\" SUCH DAMAGE.
|
||||
.\"
|
||||
.\" @(#)newfs.8 8.6 (Berkeley) 5/3/95
|
||||
.\" $Id$
|
||||
.\"
|
||||
.Dd May 3, 1995
|
||||
.Dt NEWFS 8
|
||||
@ -84,7 +85,7 @@ replaces the more obtuse
|
||||
.Xr mkfs 8
|
||||
program.
|
||||
Before running
|
||||
.Nm newfs
|
||||
.Nm
|
||||
or
|
||||
.Nm mount_mfs ,
|
||||
the disk must be labeled using
|
||||
@ -92,7 +93,7 @@ the disk must be labeled using
|
||||
.Nm Newfs
|
||||
builds a file system on the specified special device.
|
||||
Typically the defaults are reasonable, however
|
||||
.Nm newfs
|
||||
.Nm
|
||||
has numerous options to allow the defaults to be selectively overridden.
|
||||
.Pp
|
||||
.Nm Mount_mfs
|
||||
@ -110,7 +111,7 @@ corresponding file system.
|
||||
The parameters to
|
||||
.Nm mount_mfs
|
||||
are the same as those to
|
||||
.Nm newfs .
|
||||
.Nm Ns .
|
||||
If the
|
||||
.Fl T
|
||||
flag is specified (see below), the special file is unused.
|
||||
@ -121,33 +122,35 @@ since that is where the file system will be backed up when
|
||||
free memory gets low and the memory supporting
|
||||
the file system has to be paged.
|
||||
.Pp
|
||||
The following options define the general layout policies.
|
||||
.Bl -tag -width Fl
|
||||
The following options define the general layout policies:
|
||||
.Bl -tag -width indent
|
||||
.It Fl T Ar disktype
|
||||
For backward compatibility and for
|
||||
.Nm mount_mfs .
|
||||
.It Fl F Ar file
|
||||
.Nm mount_mfs
|
||||
.Nm Mount_mfs
|
||||
will use this file for the image of the filesystem. When
|
||||
.Nm mount_mfs
|
||||
exits, this file will be left behind.
|
||||
.It Fl N
|
||||
Causes the file system parameters to be printed out
|
||||
Cause the file system parameters to be printed out
|
||||
without really creating the file system.
|
||||
.It Fl O
|
||||
Creates a 4.3BSD format filesystem.
|
||||
Create a
|
||||
.Bx 4.3
|
||||
format filesystem.
|
||||
This options is primarily used to build root filesystems
|
||||
that can be understood by older boot ROMs.
|
||||
.It Fl T
|
||||
Uses information for the specified disk from
|
||||
Use information for the specified disk from
|
||||
.Pa /etc/disktab
|
||||
instead of trying to get the information from a disklabel.
|
||||
.It Fl a Ar maxcontig
|
||||
This specifies the maximum number of contiguous blocks that will be
|
||||
Specify the maximum number of contiguous blocks that will be
|
||||
laid out before forcing a rotational delay (see the
|
||||
.Fl d
|
||||
option).
|
||||
The default value is one.
|
||||
The default value is 1.
|
||||
See
|
||||
.Xr tunefs 8
|
||||
for more details on how to set this option.
|
||||
@ -157,7 +160,7 @@ The block size of the file system, in bytes.
|
||||
The number of cylinders per cylinder group in a file system.
|
||||
The default value is 16.
|
||||
.It Fl d Ar rotdelay
|
||||
This specifies the expected time (in milliseconds) to service a transfer
|
||||
Specify the expected time (in milliseconds) to service a transfer
|
||||
completion interrupt and initiate a new transfer on the same disk.
|
||||
The default is 0 milliseconds.
|
||||
See
|
||||
@ -165,7 +168,7 @@ See
|
||||
for more details on how to set this option.
|
||||
.ne 1i
|
||||
.It Fl e Ar maxbpg
|
||||
This indicates the maximum number of blocks any single file can
|
||||
Indicate the maximum number of blocks any single file can
|
||||
allocate out of a cylinder group before it is forced to begin
|
||||
allocating blocks from another cylinder group.
|
||||
The default is about one quarter of the total blocks in a cylinder group.
|
||||
@ -176,7 +179,7 @@ for more details on how to set this option.
|
||||
The fragment size of the file system in bytes.
|
||||
The default is 1024 bytes.
|
||||
.It Fl i Ar number of bytes per inode
|
||||
This specifies the density of inodes in the file system.
|
||||
Specify the density of inodes in the file system.
|
||||
The default is to create an inode for every (4 * frag-size) bytes of data space.
|
||||
If fewer inodes are desired, a larger number should be used;
|
||||
to create more inodes a smaller number should be given.
|
||||
@ -193,8 +196,9 @@ See
|
||||
.Xr tunefs 8
|
||||
for more details on how to set this option.
|
||||
.It Fl n Ar number of distinguished rotational positions
|
||||
Determines how many rotational time slots there are in one revolution of
|
||||
the disk. Defaults to 1, which essentially disables the rotational position table.
|
||||
Determine how many rotational time slots there are in one revolution of
|
||||
the disk. Defaults to 1, which essentially disables the rotational position
|
||||
table.
|
||||
.It Fl o Ar optimization\ preference
|
||||
.Pq ``space'' or ``time''
|
||||
The file system can either be instructed to try to minimize the time spent
|
||||
@ -213,15 +217,15 @@ The size of the file system in sectors.
|
||||
The following options override the standard sizes for the disk geometry.
|
||||
Their default values are taken from the disk label.
|
||||
Changing these defaults is useful only when using
|
||||
.Nm newfs
|
||||
.Nm
|
||||
to build a file system whose raw image will eventually be used on a
|
||||
different type of disk than the one on which it is initially created
|
||||
(for example on a write-once disk).
|
||||
Note that changing any of these values from their defaults will make
|
||||
it impossible for
|
||||
.Xr fsck
|
||||
.Xr fsck 8
|
||||
to find the alternate superblocks if the standard superblock is lost.
|
||||
.Bl -tag -width Fl
|
||||
.Bl -tag -width indent
|
||||
.It Fl S Ar sector-size
|
||||
The size of a sector in bytes (almost never anything but 512).
|
||||
.It Fl k Ar sector \&0 skew , per track
|
||||
@ -259,7 +263,7 @@ If zero is specified, the value from the disklabel will be used.
|
||||
This does not include sectors reserved at the end of each track for bad
|
||||
block replacement (see the
|
||||
.Fl p
|
||||
option.)
|
||||
option).
|
||||
.It Fl x Ar spare sectors per cylinder
|
||||
Spare sectors (bad sector replacements) are physical sectors that occupy
|
||||
space at the end of the last track in the cylinder.
|
||||
@ -272,7 +276,7 @@ system for data allocation.
|
||||
The options to the
|
||||
.Nm mount_mfs
|
||||
command are as described for the
|
||||
.Nm newfs
|
||||
.Nm
|
||||
command, except for the
|
||||
.Fl o
|
||||
option.
|
||||
@ -295,7 +299,9 @@ Mount a 64 MB large memory file system on /tmp, with
|
||||
.Xr mount 8
|
||||
options nosuid and nodev.
|
||||
.Sh BUGS
|
||||
The boot code of FreeBSD assumes that the file system that carries the
|
||||
The boot code of
|
||||
.Bx Free
|
||||
assumes that the file system that carries the
|
||||
kernel has blocks of 8 kilobytes and fragments of 1 kilobyte. You will
|
||||
not be able to boot from a file system that uses another size.
|
||||
.Sh SEE ALSO
|
||||
|
@ -32,13 +32,17 @@
|
||||
*/
|
||||
|
||||
#ifndef lint
|
||||
static char sccsid[] = "@(#)newfs.c 8.13 (Berkeley) 5/1/95";
|
||||
static const char copyright[] =
|
||||
"@(#) Copyright (c) 1983, 1989, 1993, 1994\n\
|
||||
The Regents of the University of California. All rights reserved.\n";
|
||||
#endif /* not lint */
|
||||
|
||||
#ifndef lint
|
||||
static char copyright[] =
|
||||
"@(#) Copyright (c) 1983, 1989, 1993, 1994\n\
|
||||
The Regents of the University of California. All rights reserved.\n";
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)newfs.c 8.13 (Berkeley) 5/1/95";
|
||||
#endif
|
||||
static const char rcsid[] =
|
||||
"$Id$";
|
||||
#endif /* not lint */
|
||||
|
||||
/*
|
||||
@ -46,17 +50,15 @@ static char copyright[] =
|
||||
*/
|
||||
#include <sys/param.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/disklabel.h>
|
||||
#include <sys/file.h>
|
||||
#include <sys/mount.h>
|
||||
|
||||
#include <ufs/ufs/dir.h>
|
||||
#include <ufs/ufs/dinode.h>
|
||||
#include <ufs/ffs/fs.h>
|
||||
#include <ufs/ufs/ufsmount.h>
|
||||
|
||||
#include <ctype.h>
|
||||
#include <err.h>
|
||||
#include <errno.h>
|
||||
#include <paths.h>
|
||||
#include <stdio.h>
|
||||
@ -65,10 +67,13 @@ static char copyright[] =
|
||||
#include <syslog.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#ifdef MFS
|
||||
#include <sys/types.h>
|
||||
#include <sys/mman.h>
|
||||
#endif
|
||||
|
||||
#if __STDC__
|
||||
#include <stdarg.h>
|
||||
#else
|
||||
#include <varargs.h>
|
||||
#endif
|
||||
|
||||
#include "mntopts.h"
|
||||
@ -201,13 +206,14 @@ int unlabeled;
|
||||
char device[MAXPATHLEN];
|
||||
char *progname;
|
||||
|
||||
extern void mkfs __P((struct partition *, char *, int, int));
|
||||
static void usage __P((void));
|
||||
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
extern char *optarg;
|
||||
extern int optind;
|
||||
register int ch;
|
||||
register struct partition *pp;
|
||||
register struct disklabel *lp;
|
||||
@ -217,13 +223,14 @@ main(argc, argv)
|
||||
struct stat st;
|
||||
struct statfs *mp;
|
||||
int fsi, fso, len, n;
|
||||
char *cp, *s1, *s2, *special, *opstring, buf[BUFSIZ];
|
||||
char *cp, *s1, *s2, *special, *opstring;
|
||||
#ifdef MFS
|
||||
struct vfsconf vfc;
|
||||
int error;
|
||||
char buf[BUFSIZ];
|
||||
#endif
|
||||
|
||||
if (progname = strrchr(*argv, '/'))
|
||||
if ((progname = strrchr(*argv, '/')))
|
||||
++progname;
|
||||
else
|
||||
progname = *argv;
|
||||
@ -258,7 +265,7 @@ main(argc, argv)
|
||||
break;
|
||||
case 'a':
|
||||
if ((maxcontig = atoi(optarg)) <= 0)
|
||||
fatal("%s: bad maximum contiguous blocks\n",
|
||||
fatal("%s: bad maximum contiguous blocks",
|
||||
optarg);
|
||||
break;
|
||||
case 'b':
|
||||
@ -272,11 +279,11 @@ main(argc, argv)
|
||||
break;
|
||||
case 'd':
|
||||
if ((rotdelay = atoi(optarg)) < 0)
|
||||
fatal("%s: bad rotational delay\n", optarg);
|
||||
fatal("%s: bad rotational delay", optarg);
|
||||
break;
|
||||
case 'e':
|
||||
if ((maxbpg = atoi(optarg)) <= 0)
|
||||
fatal("%s: bad blocks per file in a cylinder group\n",
|
||||
fatal("%s: bad blocks per file in a cylinder group",
|
||||
optarg);
|
||||
break;
|
||||
case 'f':
|
||||
@ -285,7 +292,7 @@ main(argc, argv)
|
||||
break;
|
||||
case 'i':
|
||||
if ((density = atoi(optarg)) <= 0)
|
||||
fatal("%s: bad bytes per inode\n", optarg);
|
||||
fatal("%s: bad bytes per inode", optarg);
|
||||
break;
|
||||
case 'k':
|
||||
if ((trackskew = atoi(optarg)) < 0)
|
||||
@ -297,11 +304,11 @@ main(argc, argv)
|
||||
break;
|
||||
case 'm':
|
||||
if ((minfree = atoi(optarg)) < 0 || minfree > 99)
|
||||
fatal("%s: bad free space %%\n", optarg);
|
||||
fatal("%s: bad free space %%", optarg);
|
||||
break;
|
||||
case 'n':
|
||||
if ((nrpos = atoi(optarg)) < 0)
|
||||
fatal("%s: bad rotational layout count\n",
|
||||
fatal("%s: bad rotational layout count",
|
||||
optarg);
|
||||
if (nrpos == 0)
|
||||
nrpos = 1;
|
||||
@ -315,7 +322,7 @@ main(argc, argv)
|
||||
else if (strcmp(optarg, "time") == 0)
|
||||
opt = FS_OPTTIME;
|
||||
else
|
||||
fatal("%s: unknown optimization preference: use `space' or `time'.");
|
||||
fatal("%s: unknown optimization preference: use `space' or `time'");
|
||||
}
|
||||
break;
|
||||
case 'p':
|
||||
@ -325,7 +332,7 @@ main(argc, argv)
|
||||
break;
|
||||
case 'r':
|
||||
if ((rpm = atoi(optarg)) <= 0)
|
||||
fatal("%s: bad revolutions/minute\n", optarg);
|
||||
fatal("%s: bad revolutions/minute", optarg);
|
||||
break;
|
||||
case 's':
|
||||
if ((fssize = atoi(optarg)) <= 0)
|
||||
@ -441,7 +448,7 @@ main(argc, argv)
|
||||
progname, special);
|
||||
cp = strchr(argv[0], '\0') - 1;
|
||||
if (cp == (char *)-1 ||
|
||||
(*cp < 'a' || *cp > 'h') && !isdigit(*cp))
|
||||
((*cp < 'a' || *cp > 'h') && !isdigit(*cp)))
|
||||
fatal("%s: can't figure out file system partition",
|
||||
argv[0]);
|
||||
#ifdef COMPAT
|
||||
@ -681,6 +688,7 @@ fatal(fmt, va_alist)
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
static void
|
||||
usage()
|
||||
{
|
||||
if (mfs) {
|
||||
|
Loading…
Reference in New Issue
Block a user