From owner-svn-src-projects@FreeBSD.ORG Fri Sep 21 19:26:22 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 81DCE1065672; Fri, 21 Sep 2012 19:26:22 +0000 (UTC) (envelope-from brooks@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 621CF8FC0A; Fri, 21 Sep 2012 19:26:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q8LJQM1I091695; Fri, 21 Sep 2012 19:26:22 GMT (envelope-from brooks@svn.freebsd.org) Received: (from brooks@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q8LJQMBG091688; Fri, 21 Sep 2012 19:26:22 GMT (envelope-from brooks@svn.freebsd.org) Message-Id: <201209211926.q8LJQMBG091688@svn.freebsd.org> From: Brooks Davis Date: Fri, 21 Sep 2012 19:26:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r240786 - projects/mtree/contrib/mtree X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 21 Sep 2012 19:26:22 -0000 Author: brooks Date: Fri Sep 21 19:26:21 2012 New Revision: 240786 URL: http://svn.freebsd.org/changeset/base/240786 Log: Implement the ability to compare two spec files with -f spec1 -f spec2. Obtained from: FreeBSD (phk) Added: projects/mtree/contrib/mtree/specspec.c (contents, props changed) - copied, changed from r240785, projects/mtree/usr.sbin/mtree/specspec.c Modified: projects/mtree/contrib/mtree/Makefile projects/mtree/contrib/mtree/extern.h projects/mtree/contrib/mtree/mtree.c projects/mtree/contrib/mtree/mtree.h projects/mtree/contrib/mtree/verify.c Modified: projects/mtree/contrib/mtree/Makefile ============================================================================== --- projects/mtree/contrib/mtree/Makefile Fri Sep 21 19:22:43 2012 (r240785) +++ projects/mtree/contrib/mtree/Makefile Fri Sep 21 19:26:21 2012 (r240786) @@ -7,7 +7,8 @@ PROG= mtree #CPPFLAGS+=-DDEBUG CPPFLAGS+= -DMTREE MAN= mtree.8 -SRCS= compare.c crc.c create.c excludes.c misc.c mtree.c spec.c verify.c \ +SRCS= compare.c crc.c create.c excludes.c misc.c mtree.c spec.c specspec.c \ + verify.c \ getid.c pack_dev.c .if (${HOSTPROG:U} == "") DPADD+= ${LIBUTIL} Modified: projects/mtree/contrib/mtree/extern.h ============================================================================== --- projects/mtree/contrib/mtree/extern.h Fri Sep 21 19:22:43 2012 (r240785) +++ projects/mtree/contrib/mtree/extern.h Fri Sep 21 19:26:21 2012 (r240786) @@ -67,7 +67,7 @@ void parsetags(slist_t *, char *); u_int parsetype(const char *); void read_excludes_file(const char *); const char *rlink(const char *); -int verify(void); +int verify(FILE *); extern int dflag, eflag, iflag, jflag, lflag, mflag, nflag, qflag, rflag, sflag, tflag, uflag; Modified: projects/mtree/contrib/mtree/mtree.c ============================================================================== --- projects/mtree/contrib/mtree/mtree.c Fri Sep 21 19:22:43 2012 (r240785) +++ projects/mtree/contrib/mtree/mtree.c Fri Sep 21 19:26:21 2012 (r240786) @@ -70,11 +70,14 @@ main(int argc, char **argv) { int ch, status; char *dir, *p; + FILE *spec1, *spec2; setprogname(argv[0]); dir = NULL; init_excludes(); + spec1 = stdin; + spec2 = NULL; while ((ch = getopt(argc, argv, "cCdDeE:f:I:ijk:K:lLmMnN:p:PqrR:s:StuUwWxX:")) @@ -99,8 +102,18 @@ main(int argc, char **argv) eflag = 1; break; case 'f': - if (!(freopen(optarg, "r", stdin))) - mtree_err("%s: %s", optarg, strerror(errno)); + if (spec1 == stdin) { + spec1 = fopen(optarg, "r"); + if (spec1 == NULL) + mtree_err("%s: %s", optarg, + strerror(errno)); + } else if (spec2 == NULL) { + spec2 = fopen(optarg, "r"); + if (spec2 == NULL) + mtree_err("%s: %s", optarg, + strerror(errno)); + } else + usage(); break; case 'i': iflag = 1; @@ -223,10 +236,13 @@ main(int argc, char **argv) exit(0); } if (Cflag || Dflag) { - dump_nodes("", spec(stdin), Dflag); + dump_nodes("", spec(spec1), Dflag); exit(0); } - status = verify(); + if (spec2 != NULL) + status = mtree_specspec(spec1, spec2); + else + status = verify(spec1); if (Uflag && (status == MISMATCHEXIT)) status = 0; exit(status); @@ -237,7 +253,8 @@ usage(void) { fprintf(stderr, - "usage: %s [-CcDdeLlMnPrSUuWx] [-i|-m] [-E tags] [-f spec]\n" + "usage: %s [-CcDdeLlMnPrSUuWx] [-i|-m] [-E tags]\n" + "\t\t[-f spec] [-f spec]\n" "\t\t[-I tags] [-K keywords] [-k keywords] [-N dbdir] [-p path]\n" "\t\t[-R keywords] [-s seed] [-X exclude-file]\n", getprogname()); Modified: projects/mtree/contrib/mtree/mtree.h ============================================================================== --- projects/mtree/contrib/mtree/mtree.h Fri Sep 21 19:22:43 2012 (r240785) +++ projects/mtree/contrib/mtree/mtree.h Fri Sep 21 19:26:21 2012 (r240786) @@ -120,6 +120,7 @@ const char *inotype(u_int); u_int nodetoino(u_int); int setup_getid(const char *); NODE *spec(FILE *); +int mtree_specspec(FILE *, FILE *); void free_nodes(NODE *); char *vispath(const char *); Copied and modified: projects/mtree/contrib/mtree/specspec.c (from r240785, projects/mtree/usr.sbin/mtree/specspec.c) ============================================================================== --- projects/mtree/usr.sbin/mtree/specspec.c Fri Sep 21 19:22:43 2012 (r240785, copy source) +++ projects/mtree/contrib/mtree/specspec.c Fri Sep 21 19:26:21 2012 (r240786) @@ -32,6 +32,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include "mtree.h" #include "extern.h" @@ -49,7 +51,7 @@ shownode(NODE *n, int f, char const *pat struct group *gr; struct passwd *pw; - printf("%s%s %s", path, n->name, ftype(n->type)); + printf("%s%s %s", path, n->name, inotype(nodetoino(n->type))); if (f & F_CKSUM) printf(" cksum=%lu", n->cksum); if (f & F_GID) @@ -85,7 +87,7 @@ shownode(NODE *n, int f, char const *pat if (f & F_SHA256) printf(" sha256digest=%s", n->sha256digest); if (f & F_FLAGS) - printf(" flags=%s", flags_to_string(n->st_flags)); + printf(" flags=%s", flags_to_string(n->st_flags, "none")); printf("\n"); } @@ -246,8 +248,8 @@ mtree_specspec(FILE *fi, FILE *fj) int rval; NODE *root1, *root2; - root1 = mtree_readspec(fi); - root2 = mtree_readspec(fj); + root1 = spec(fi); + root2 = spec(fj); rval = walk_in_the_forest(root1, root2, ""); rval += compare_nodes(root1, root2, ""); if (rval > 0) Modified: projects/mtree/contrib/mtree/verify.c ============================================================================== --- projects/mtree/contrib/mtree/verify.c Fri Sep 21 19:22:43 2012 (r240785) +++ projects/mtree/contrib/mtree/verify.c Fri Sep 21 19:26:21 2012 (r240786) @@ -64,11 +64,11 @@ static void miss(NODE *, char *); static int vwalk(void); int -verify(void) +verify(FILE *fi) { int rval; - root = spec(stdin); + root = spec(fi); rval = vwalk(); miss(root, path); return (rval);