Date: Wed, 17 Dec 2008 21:54:08 +0000 (UTC) From: Sam Leffler <sam@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r186256 - in projects/makefs: . compat compat/mtree Message-ID: <200812172154.mBHLs8ds016205@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: sam Date: Wed Dec 17 21:54:08 2008 New Revision: 186256 URL: http://svn.freebsd.org/changeset/base/186256 Log: First step toward proper mtree integration: o use mtree code directly from ../mtree; s/spec(fp)/mtree_readspec(fp)/ (assume this will eventually go in usr.sbin) o nuke st_rdev use; there's no reason to create filesystems with device nodes o shim missing compat bits for inotype and nodetoino o remove now unneeded compat/mtree bits, pack_dev.?, and stat_flags.? o temporarily move getid.c code up to compat to keep this building Added: projects/makefs/compat/getid.c (contents, props changed) - copied, changed from r186109, projects/makefs/compat/mtree/getid.c Deleted: projects/makefs/compat/mtree/getid.c projects/makefs/compat/pack_dev.c projects/makefs/compat/pack_dev.h projects/makefs/compat/stat_flags.c projects/makefs/compat/stat_flags.h Modified: projects/makefs/Makefile projects/makefs/walk.c Modified: projects/makefs/Makefile ============================================================================== --- projects/makefs/Makefile Wed Dec 17 21:04:43 2008 (r186255) +++ projects/makefs/Makefile Wed Dec 17 21:54:08 2008 (r186256) @@ -10,20 +10,20 @@ CFLAGS+=-DHAVE_NBTOOL_CONFIG_H=1 -D_FILE CFLAGS+=-I. SRCS= ffs.c makefs.c walk.c -.PATH: ffs +.PATH: ${.CURDIR}/ffs CFLAGS+=-Iffs SRCS+= buf.c ffs_alloc.c ffs_balloc.c mkfs.c ufs_bmap.c -.PATH: sys/ufs/ffs +.PATH: ${.CURDIR}/sys/ufs/ffs CFLAGS+=-Isys -Isys/ufs SRCS+= ffs_bswap.c ffs_subr.c ffs_tables.c -.PATH: ${.CURDIR}/compat/mtree -CFLAGS+=-Icompat/mtree -SRCS+= getid.c misc.c spec.c +.PATH: ${.CURDIR}/../mtree +CFLAGS+=-I../mtree +SRCS+= misc.c spec.c -.PATH: compat +.PATH: ${.CURDIR}/compat CFLAGS+=-Icompat -SRCS+= fparseln.c getmode.c pack_dev.c pwcache.c stat_flags.c strsuftoll.c +SRCS+= fparseln.c getid.c getmode.c pwcache.c strsuftoll.c .include <bsd.prog.mk> Copied and modified: projects/makefs/compat/getid.c (from r186109, projects/makefs/compat/mtree/getid.c) ============================================================================== --- projects/makefs/compat/mtree/getid.c Mon Dec 15 02:06:02 2008 (r186109, copy source) +++ projects/makefs/compat/getid.c Wed Dec 17 21:54:08 2008 (r186256) @@ -82,6 +82,7 @@ #include <time.h> #include <unistd.h> +#include "mtree.h" #include "extern.h" static struct group * gi_getgrnam(const char *); Modified: projects/makefs/walk.c ============================================================================== --- projects/makefs/walk.c Wed Dec 17 21:04:43 2008 (r186255) +++ projects/makefs/walk.c Wed Dec 17 21:54:08 2008 (r186256) @@ -92,7 +92,9 @@ __RCSID("$NetBSD: walk.c,v 1.17 2004/06/ #include <unistd.h> #include "makefs.h" + #include "mtree.h" +#include "extern.h" /* NB: mtree */ static void apply_specdir(const char *, NODE *, fsnode *); static void apply_specentry(const char *, NODE *, fsnode *); @@ -228,7 +230,7 @@ apply_specfile(const char *specfile, con if ((fp = fopen(specfile, "r")) == NULL) err(1, "Can't open `%s'", specfile); TIMER_START(start); - root = spec(fp); + root = mtree_readspec(fp); TIMER_RESULTS(start, "spec"); if (fclose(fp) == EOF) err(1, "Can't close `%s'", specfile); @@ -243,6 +245,32 @@ apply_specfile(const char *specfile, con apply_specdir(dir, root, parent); } +static u_int +nodetoino(u_int type) +{ + + switch (type) { + case F_BLOCK: + return S_IFBLK; + case F_CHAR: + return S_IFCHR; + case F_DIR: + return S_IFDIR; + case F_FIFO: + return S_IFIFO; + case F_FILE: + return S_IFREG; + case F_LINK: + return S_IFLNK; + case F_SOCK: + return S_IFSOCK; + default: + printf("unknown type %d", type); + abort(); + } + /* NOTREACHED */ +} + static void apply_specdir(const char *dir, NODE *specnode, fsnode *dirnode) { @@ -306,9 +334,6 @@ apply_specdir(const char *dir, NODE *spe curnode->flags & F_GNAME, "group"); NODETEST(curnode->flags & F_UID || curnode->flags & F_UNAME, "user"); - if (curnode->type == F_BLOCK || curnode->type == F_CHAR) - NODETEST(curnode->flags & F_DEV, - "device number"); #undef NODETEST if (debug & DEBUG_APPLY_SPECFILE) @@ -425,11 +450,6 @@ apply_specentry(const char *dir, NODE *s dirnode->inode->st.st_flags = specnode->st_flags; } #endif - if (specnode->flags & F_DEV) { - ASEPRINT("rdev", "%#x", - dirnode->inode->st.st_rdev, specnode->st_rdev); - dirnode->inode->st.st_rdev = specnode->st_rdev; - } #undef ASEPRINT dirnode->flags |= FSNODE_F_HASSPEC; @@ -479,15 +499,29 @@ dump_fsnodes(const char *dir, fsnode *ro /* * inode_type -- * for a given inode type `mode', return a descriptive string. - * for most cases, uses inotype() from mtree/misc.c */ const char * inode_type(mode_t mode) { + if (S_ISREG(mode)) + return ("file"); + if (S_ISLNK(mode)) + return ("symlink"); + if (S_ISDIR(mode)) + return ("dir"); if (S_ISLNK(mode)) - return ("symlink"); /* inotype() returns "link"... */ - return (inotype(mode)); + return ("link"); + if (S_ISFIFO(mode)) + return ("fifo"); + if (S_ISSOCK(mode)) + return ("socket"); + /* XXX should not happen but handle them */ + if (S_ISCHR(mode)) + return ("char"); + if (S_ISBLK(mode)) + return ("block"); + return ("unknown"); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812172154.mBHLs8ds016205>