Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.sbin/mtree Do not print a trailing space on each line wi...



details:   https://anonhg.NetBSD.org/src/rev/59fed236668c
branches:  trunk
changeset: 747545:59fed236668c
user:      apb <apb%NetBSD.org@localhost>
date:      Sat Sep 19 21:41:43 2009 +0000

description:
Do not print a trailing space on each line with "mtree -C".

diffstat:

 usr.sbin/mtree/spec.c |  69 ++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 46 insertions(+), 23 deletions(-)

diffs (149 lines):

diff -r abd4d4a4bfbe -r 59fed236668c usr.sbin/mtree/spec.c
--- a/usr.sbin/mtree/spec.c     Sat Sep 19 20:42:06 2009 +0000
+++ b/usr.sbin/mtree/spec.c     Sat Sep 19 21:41:43 2009 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: spec.c,v 1.76 2009/09/19 20:42:06 apb Exp $    */
+/*     $NetBSD: spec.c,v 1.77 2009/09/19 21:41:43 apb Exp $    */
 
 /*-
  * Copyright (c) 1989, 1993
@@ -67,7 +67,7 @@
 #if 0
 static char sccsid[] = "@(#)spec.c     8.2 (Berkeley) 4/28/95";
 #else
-__RCSID("$NetBSD: spec.c,v 1.76 2009/09/19 20:42:06 apb Exp $");
+__RCSID("$NetBSD: spec.c,v 1.77 2009/09/19 21:41:43 apb Exp $");
 #endif
 #endif /* not lint */
 
@@ -79,6 +79,7 @@
 #include <errno.h>
 #include <grp.h>
 #include <pwd.h>
+#include <stdarg.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -100,6 +101,7 @@
 static void    unset(char *, NODE *);
 static void    addchild(NODE *, NODE *);
 static int     nodecmp(const NODE *, const NODE *);
+static int     appendfield(int, const char *, ...);
 
 #define REPLACEPTR(x,v)        do { if ((x)) free((x)); (x) = (v); } while (0)
 
@@ -280,6 +282,27 @@
 }
 
 /*
+ * appendfield --
+ *     Like printf(), but output a space either before or after
+ *     the regular output, according to the pathlast flag.
+ */
+static int
+appendfield(int pathlast, const char *fmt, ...)
+{
+       va_list ap;
+       int result;
+
+       va_start(ap, fmt);
+       if (!pathlast)
+               printf(" ");
+       result = vprintf(fmt, ap);
+       if (pathlast)
+               printf(" ");
+       va_end(ap);
+       return result;
+}
+
+/*
  * dump_nodes --
  *     dump the NODEs from `cur', based in the directory `dir'.
  *     if pathlast is none zero, print the path last, otherwise print
@@ -304,57 +327,57 @@
                        mtree_err("Pathname too long.");
 
                if (!pathlast)
-                       printf("%s ", vispath(path));
+                       printf("%s", vispath(path));
 
 #define MATCHFLAG(f)   ((keys & (f)) && (cur->flags & (f)))
                if (MATCHFLAG(F_TYPE))
-                       printf("type=%s ", nodetype(cur->type));
+                       appendfield(pathlast, "type=%s", nodetype(cur->type));
                if (MATCHFLAG(F_UID | F_UNAME)) {
                        if (keys & F_UNAME &&
                            (name = user_from_uid(cur->st_uid, 1)) != NULL)
-                               printf("uname=%s ", name);
+                               appendfield(pathlast, "uname=%s", name);
                        else
-                               printf("uid=%u ", cur->st_uid);
+                               appendfield(pathlast, "uid=%u", cur->st_uid);
                }
                if (MATCHFLAG(F_GID | F_GNAME)) {
                        if (keys & F_GNAME &&
                            (name = group_from_gid(cur->st_gid, 1)) != NULL)
-                               printf("gname=%s ", name);
+                               appendfield(pathlast, "gname=%s", name);
                        else
-                               printf("gid=%u ", cur->st_gid);
+                               appendfield(pathlast, "gid=%u", cur->st_gid);
                }
                if (MATCHFLAG(F_MODE))
-                       printf("mode=%#o ", cur->st_mode);
+                       appendfield(pathlast, "mode=%#o", cur->st_mode);
                if (MATCHFLAG(F_DEV) &&
                    (cur->type == F_BLOCK || cur->type == F_CHAR))
-                       printf("device=%#llx ", (long long)cur->st_rdev);
+                       appendfield(pathlast, "device=%#llx", (long long)cur->st_rdev);
                if (MATCHFLAG(F_NLINK))
-                       printf("nlink=%d ", cur->st_nlink);
+                       appendfield(pathlast, "nlink=%d", cur->st_nlink);
                if (MATCHFLAG(F_SLINK))
-                       printf("link=%s ", vispath(cur->slink));
+                       appendfield(pathlast, "link=%s", vispath(cur->slink));
                if (MATCHFLAG(F_SIZE))
-                       printf("size=%lld ", (long long)cur->st_size);
+                       appendfield(pathlast, "size=%lld", (long long)cur->st_size);
                if (MATCHFLAG(F_TIME))
-                       printf("time=%lld.%ld ",
+                       appendfield(pathlast, "time=%lld.%ld ",
                            (long long)cur->st_mtimespec.tv_sec,
                            cur->st_mtimespec.tv_nsec);
                if (MATCHFLAG(F_CKSUM))
-                       printf("cksum=%lu ", cur->cksum);
+                       appendfield(pathlast, "cksum=%lu", cur->cksum);
                if (MATCHFLAG(F_MD5))
-                       printf("md5=%s ", cur->md5digest);
+                       appendfield(pathlast, "md5=%s", cur->md5digest);
                if (MATCHFLAG(F_RMD160))
-                       printf("rmd160=%s ", cur->rmd160digest);
+                       appendfield(pathlast, "rmd160=%s", cur->rmd160digest);
                if (MATCHFLAG(F_SHA1))
-                       printf("sha1=%s ", cur->sha1digest);
+                       appendfield(pathlast, "sha1=%s", cur->sha1digest);
                if (MATCHFLAG(F_SHA256))
-                       printf("sha256=%s ", cur->sha256digest);
+                       appendfield(pathlast, "sha256=%s", cur->sha256digest);
                if (MATCHFLAG(F_SHA384))
-                       printf("sha384=%s ", cur->sha384digest);
+                       appendfield(pathlast, "sha384=%s", cur->sha384digest);
                if (MATCHFLAG(F_SHA512))
-                       printf("sha512=%s ", cur->sha512digest);
+                       appendfield(pathlast, "sha512=%s", cur->sha512digest);
                if (MATCHFLAG(F_FLAGS)) {
                        str = flags_to_string(cur->st_flags, "none");
-                       printf("flags=%s ", str);
+                       appendfield(pathlast, "flags=%s", str);
                        free(str);
                }
                if (MATCHFLAG(F_IGN))
@@ -369,7 +392,7 @@
                        q = p + strlen(p);
                        while(q > p && q[-1] == ',')
                                q--;
-                       printf("tags=%.*s ", (int)(q - p), p);
+                       appendfield(pathlast, "tags=%.*s", (int)(q - p), p);
                }
                puts(pathlast ? vispath(path) : "");
 



Home | Main Index | Thread Index | Old Index