diff options
Diffstat (limited to 'ufs-utils')
-rw-r--r-- | ufs-utils/ChangeLog | 109 | ||||
-rw-r--r-- | ufs-utils/Makefile | 3 | ||||
-rw-r--r-- | ufs-utils/dlabel.c | 20 | ||||
-rw-r--r-- | ufs-utils/mkfs.c | 55 | ||||
-rw-r--r-- | ufs-utils/stati.c | 3 |
5 files changed, 49 insertions, 141 deletions
diff --git a/ufs-utils/ChangeLog b/ufs-utils/ChangeLog deleted file mode 100644 index 9883880d..00000000 --- a/ufs-utils/ChangeLog +++ /dev/null @@ -1,109 +0,0 @@ -Tue Jul 23 19:34:58 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * mkfs.c (fsinit): `struct timespec' now uses a field prefix of `tv_'. - * stati.c (timespec_rep): Likewise. - -Fri Jun 21 02:12:16 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * dlabel.c (fd_get_device): Supply new args to store_create. - -Sat May 11 01:20:18 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * mkfs.c (parse_opt): Use ARGP_ERR_UNKNOWN instead of EINVAL. - -Fri May 10 15:50:38 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * dlabel.c (fd_get_device): Update to use libstore. - <hurd/store.h>: New include. - * Makefile (mkfs.ufs): Depend on ../libstore/libstore.a. - -Tue Apr 30 10:06:21 1996 Michael I. Bushnell, p/BSG <mib@gnu.ai.mit.edu> - - * Makefile (include ../Makeconf): BEFORE dependencies. - (all): Delete target. - ($(targets)): Each target depends on its associated .o. - -Wed Apr 3 16:31:13 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * mkfs.c (main): In `Can't get disklabel' error message, specify - which flag the user can use to supply the needed information. - (mkfs): Fiddle with info message. - -Sun Mar 31 14:34:28 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * stati.c (mode_rep): Prefix octal number with `0'. - -Fri Mar 29 11:56:52 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * stati.c (main): Print mode & {in,}direct blocks too. - (mode_rep): New function. - (timespec_rep): P shouldn't be static. - - * mkfs.c (main): Argp interface changes. - -Wed Mar 13 18:30:55 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * mkfs.c (options, args_doc, doc): New variables for option parsing. - (struct amark): New type. - (amarks_add, amarks_contains): New functions. - (default_disklabel): New variable. - (main): Most arguments are now options (and optional). Allow many - more parameters to be specified. Consult the disk label for some - defaults. - (most functions): Add explicit return type declarations. Fix - printf format specifications. Get rid of #ifdefs for MFS. - (started, malloc, realloc, calloc, free): Functions removed. - (mfs, membase): Variables removed. - <stddef.h>, <stdlib.h>, <argp.h>, <assert.h>, <error.h>, - <string.h>: New includes - * dlabel.c: New file. - * Makefile (SRCS): Add dlabel.c. - (mkfs.ufs): New target. - -Tue Feb 27 14:52:00 1996 Miles Bader <miles@gnu.ai.mit.edu> - - * clri.c: Move here from ../utils. - - [Entire directory renamed to `ufs-utils' from `newfs'] - -Sat Sep 9 12:17:11 1995 Miles Bader <miles@churchy.gnu.ai.mit.edu> - - * Makefile (target): Changed to `mkfs.ufs'. - (installationdir): New variable, install into $(sbindir). - -Thu Nov 24 18:39:30 1994 Roland McGrath <roland@churchy.gnu.ai.mit.edu> - - * mkfs.c: Protect all mfs code with #ifdef MFS. - -Wed Oct 12 12:59:01 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu> - - * mkfs.c (main): MAXCONTIG should be zero because we don't - do clustering. - -Fri Sep 9 09:45:23 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu> - - * mkfs.c: Include <sys/stat.h> and <fcntl.h>. - (main): New function. Punt newfs.c for now. - * Makefile (SRCS, OBJS): Comment out uses of newfs.c. - (target): Build mkfs, not newfs. - - * newfs.c (mopts): Comment out. - (mntflags): Comment out. - (main): Omit check for `mfs'. Omit var `partition'. - (main) [case 'o']: Comment out mfs specific code. - (main): Comment out check for already-mounted partition. - (main): Comment out MFS specific open of FSI. - - * mkfs.c (fsinit): Use DI_MODE to read mode from NODE, and - set di_model and di_modeh instead of di_mode. - (mkfs): Don't set fields in *PP. - - * newfs.c: Include ufs header files with "../ufs/foo.h" instead of - <ufs/ufs/foo.h>. Don't include <sys/disklabel.h>, <sys/mount.h>, - or "mntopts.h". - -Thu Sep 8 15:52:05 1994 Michael I Bushnell <mib@churchy.gnu.ai.mit.edu> - - * mkfs.c: Include ufs header files with "../ufs/foo.h" instead of - <ufs/ufs/foo.h>. Don't include <sys/disklabel.h>. - diff --git a/ufs-utils/Makefile b/ufs-utils/Makefile index b27b76c4..df22440e 100644 --- a/ufs-utils/Makefile +++ b/ufs-utils/Makefile @@ -1,5 +1,5 @@ # -# Copyright (C) 1994, 1996 Free Software Foundation +# Copyright (C) 1994, 1996, 2008 Free Software Foundation # Written by Michael I. Bushnell. # # This file is part of the GNU Hurd. @@ -27,6 +27,7 @@ SRCS = mkfs.c clri.c stati.c dlabel.c installationdir = $(sbindir) OBJS = $(SRCS:.c=.o) +HURDLIBS = store shouldbeinlibc include ../Makeconf diff --git a/ufs-utils/dlabel.c b/ufs-utils/dlabel.c index e3678310..355cb3f6 100644 --- a/ufs-utils/dlabel.c +++ b/ufs-utils/dlabel.c @@ -1,8 +1,8 @@ /* Get the disklabel from a device node - Copyright (C) 1996 Free Software Foundation, Inc. + Copyright (C) 1996,99,2001 Free Software Foundation, Inc. - Written by Miles Bader <miles@gnu.ai.mit.edu> + Written by Miles Bader <miles@gnu.org> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -23,9 +23,15 @@ #include <mach.h> #include <string.h> #include <device/device.h> -#include <mach/sa/sys/ioctl.h> /* Ick */ #include <device/disk_status.h> #include <hurd/store.h> + +/* XXX Ick. */ +#define IOCPARM_MASK 0x1fff/* parameter length, at most 13 bits */ +#define IOC_OUT 0x40000000/* copy out parameters */ +#define _IOC(inout,group,num,len) \ + (inout | ((len & IOCPARM_MASK) << 16) | ((group) << 8) | (num)) +#define _IOR(g,n,t) _IOC(IOC_OUT,(g), (n), sizeof(t)) static error_t fd_get_device (int fd, device_t *device) @@ -37,10 +43,10 @@ fd_get_device (int fd, device_t *device) if (node == MACH_PORT_NULL) return errno; - err = store_create (node, 0, 0, &store); + err = store_create (node, 0, 0, &store); /* consumes NODE on success */ if (! err) { - if (store->class != STORAGE_DEVICE + if (store->class->id != STORAGE_DEVICE /* In addition to requiring a device, we also want the *whole* device -- one contiguous run starting at 0. */ || store->num_runs != 1 @@ -57,8 +63,8 @@ fd_get_device (int fd, device_t *device) } store_free (store); } - - mach_port_deallocate (mach_task_self (), node); + else + mach_port_deallocate (mach_task_self (), node); return err; } diff --git a/ufs-utils/mkfs.c b/ufs-utils/mkfs.c index 43093b9b..aef3ea92 100644 --- a/ufs-utils/mkfs.c +++ b/ufs-utils/mkfs.c @@ -33,7 +33,7 @@ #ifndef lint /*static char sccsid[] = "from: @(#)mkfs.c 8.3 (Berkeley) 2/3/94";*/ -static char *rcsid = "$Id: mkfs.c,v 1.13 1996/07/23 23:37:21 miles Exp $"; +static char *rcsid = "$Id: mkfs.c,v 1.22 2006/03/14 23:27:50 tschwinge Exp $"; #endif /* not lint */ #include <unistd.h> @@ -54,6 +54,7 @@ static char *rcsid = "$Id: mkfs.c,v 1.13 1996/07/23 23:37:21 miles Exp $"; #include <sys/stat.h> #include <fcntl.h> #include <dirent.h> +#include <version.h> #include <device/device_types.h> #include <device/disk_status.h> @@ -62,7 +63,7 @@ static char *rcsid = "$Id: mkfs.c,v 1.13 1996/07/23 23:37:21 miles Exp $"; /* Begin misc additions for GNU Hurd */ -/* For GNU Hurd: the ufs DIRSIZ macro is different than the BSD +/* For GNU Hurd: the ufs DIRSIZ macro is different than the BSD 4.4 version that mkfs expects. So we provide here the BSD version. */ #undef DIRSIZ #if (BYTE_ORDER == LITTLE_ENDIAN) @@ -89,6 +90,7 @@ static char *rcsid = "$Id: mkfs.c,v 1.13 1996/07/23 23:37:21 miles Exp $"; #ifndef STANDALONE #include <a.out.h> #include <stdio.h> +#include <time.h> #endif /* @@ -163,7 +165,7 @@ struct dinode zino[MAXBSIZE / sizeof(struct dinode)]; int fsi, fso; daddr_t alloc(); -char *argp_program_version = "mkfs.ufs 1.0 (GNU " HURD_RELEASE ")"; +const char *argp_program_version = STANDARD_HURD_VERSION (mkfs.ufs); #define _STRINGIFY(arg) #arg #define STRINGIFY(arg) _STRINGIFY (arg) @@ -173,22 +175,22 @@ static const struct argp_option options[] = { {"just-print", 'N', 0, 0, "Just print the file system parameters that would be used"}, {"old-format", 'O', 0, 0, "Create a 4.3BSD format filesystem"}, - {"max-contig", 'a', "BLOCKS", 0, + {"max-contig", 'a', "BLOCKS", 0, "The maximum number of contiguous blocks that will be laid out before" " forcing a rotational delay; the default is no limit"}, {"block-size", 'b', "BYTES", 0, "The block size of the file system"}, {"group-cylinders", 'c', "N", 0, "The number of cylinders per cylinder group; the default 16"}, - {"rot-delay", 'd', "MSEC", 0, + {"rot-delay", 'd', "MSEC", 0, "The expected time to service a transfer completion interrupt and" " initiate a new transfer on the same disk; the default is 0"}, - {"max-bpg", 'e', "BLOCKS", 0, + {"max-bpg", 'e', "BLOCKS", 0, "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"}, {"frag-size", 'f', "BYTES", 0, "The fragment size"}, - {"inode-density", 'i', "BYTES", 0, + {"inode-density", 'i', "BYTES", 0, "The density of inodes in the file system, in bytes of data space per" " inode; the default is one inode per 4 filesystem frags"}, {"minfree", 'm', "PERCENT", 0, @@ -210,7 +212,7 @@ static const struct argp_option options[] = { {"tracks", 't', "N", 0, "The number of tracks/cylinder"}, {"sectors", 'u', "N", 0, "The number of sectors per track (does not include sectors reserved for" - " bad block replacement"}, + " bad block replacement"}, {"spare-sectors", 'p', "N", 0, "Spare sectors (for bad sector replacement) at the end of each track"}, {"cyl-spare-sectors", 'x', "N", 0, @@ -219,7 +221,7 @@ static const struct argp_option options[] = { {0, 0} }; static char *args_doc = "DEVICE"; -static char *doc = 0; +static char *doc = "Write a ufs filesystem image onto DEVICE."; struct amark { void *addr; struct amark *next; }; @@ -260,7 +262,7 @@ char *device = 0; #define deverr(code, err, fmt, args...) \ error (code, err, "%s: " fmt, device , ##args) -void +int main (int argc, char **argv) { int fdo, fdi; @@ -276,11 +278,9 @@ main (int argc, char **argv) { case 'N': Nflag = 1; break; case 'O': Oflag = 1; break; - - /* Mark &VAR as being a uparam, and return a lvalue for VAR. */ -#define UP(var) (amarks_add (&uparams, &var), var) - /* Record an integer uparam into VAR. */ -#define UP_INT(var) { int _i = atoi (arg); UP (var) = _i; } + +/* Mark &VAR as being a uparam, and set VAR. */ +#define UP_INT(var) { amarks_add (&uparams, &var); var = atoi (arg); } case 'a': UP_INT (maxcontig); break; case 'b': UP_INT (bsize); break; @@ -301,7 +301,7 @@ main (int argc, char **argv) case 'p': UP_INT (nspares); break; case 'x': UP_INT (ncspares); break; - case 'o': + case 'o': amarks_add (&uparams, &opt); if (strcmp (arg, "time") == 0) opt = FS_OPTTIME; @@ -412,7 +412,7 @@ main (int argc, char **argv) nphyssectors = nsectors + nspares; secpercyl = nsectors * ntracks; - + DEFAULT (rpm, DL_INT (0, d_rpm)); DEFAULT (interleave, DL_INT (0, d_interleave)); DEFAULT (trackskew, DL_SECS (0, d_trackskew)); @@ -421,7 +421,7 @@ main (int argc, char **argv) DEFAULT (fsize, 1024); DEFAULT (bsize, 8192); - + DEFAULT (cpg, 16); DEFAULT (minfree, MINFREE); DEFAULT (opt, DEFAULTOPT); @@ -438,7 +438,7 @@ main (int argc, char **argv) mkfs (0, device, fdi, fdo); - exit (0); + return 0; } void @@ -655,7 +655,7 @@ mkfs(pp, fsys, fi, fo) } else exit(23); - /* + /* * Calculate the number of cylinders per group */ sblock.fs_cpg = cpg; @@ -862,6 +862,7 @@ next: sblock.fs_cstotal.cs_nffree = 0; sblock.fs_fmod = 0; sblock.fs_ronly = 0; + sblock.fs_clean = 1; /* * Dump out summary information about file system. @@ -903,7 +904,7 @@ next: sblock.fs_cssize - i < sblock.fs_bsize ? sblock.fs_cssize - i : sblock.fs_bsize, ((char *)fscs) + i); - /* + /* * Write out the duplicate super blocks */ for (cylno = 0; cylno < sblock.fs_ncg; cylno++) @@ -961,7 +962,7 @@ initcg(cylno, utime) acg.cg_nclusterblks = acg.cg_ndblk / sblock.fs_frag; acg.cg_btotoff = &acg.cg_space[0] - (u_char *)(&acg.cg_link); acg.cg_boff = acg.cg_btotoff + sblock.fs_cpg * sizeof(long); - acg.cg_iusedoff = acg.cg_boff + + acg.cg_iusedoff = acg.cg_boff + sblock.fs_cpg * sblock.fs_nrpos * sizeof(short); acg.cg_freeoff = acg.cg_iusedoff + howmany(sblock.fs_ipg, NBBY); if (sblock.fs_contigsumsize <= 0) { @@ -1155,6 +1156,14 @@ fsinit(utime) node.di_model = IFDIR | UMASK; node.di_modeh = 0; node.di_nlink = PREDEFDIR; + + /* Set the uid/gid to non-root if run by a non-root user. This + is what mke2fs does in e2fsprogs-1.18 (actually it uses the + real IDs iff geteuid()!=0, but that is just wrong). */ + node.di_uid = geteuid(); + if (node.di_uid != 0) + node.di_gid = getegid(); + if (Oflag) node.di_size = makedir((struct directory_entry *)oroot_dir, PREDEFDIR); else @@ -1268,7 +1277,7 @@ iput(ip, ino) sblock.fs_cstotal.cs_nifree--; fscs[0].cs_nifree--; if (ino >= sblock.fs_ipg * sblock.fs_ncg) - deverr (32, 0, "fsinit: inode value out of range (%d)", ino); + deverr (32, 0, "fsinit: inode value out of range (%Ld)", ino); d = fsbtodb(&sblock, ino_to_fsba(&sblock, ino)); rdfs(d, sblock.fs_bsize, buf); buf[ino_to_fsbo(&sblock, ino)] = *ip; diff --git a/ufs-utils/stati.c b/ufs-utils/stati.c index 2c0147d0..ba545bf2 100644 --- a/ufs-utils/stati.c +++ b/ufs-utils/stati.c @@ -61,6 +61,7 @@ static char sccsid[] __attribute__ ((unused)); #include <stdlib.h> #include <string.h> #include <stdio.h> +#include <time.h> #include <unistd.h> #include <pwd.h> #include <grp.h> @@ -94,7 +95,7 @@ mode_rep (unsigned short mode) case S_IFIFO: *p++ = 'f'; break; default: *p++ = '?'; } - + add_perms (0, S_ISUID); add_perms (3, S_ISGID); add_perms (6, 0); |