Support multiple -v options like GNU tar (> 1 -v means do ls-like output).
authormillert <millert@openbsd.org>
Fri, 24 Jan 1997 19:41:19 +0000 (19:41 +0000)
committermillert <millert@openbsd.org>
Fri, 24 Jan 1997 19:41:19 +0000 (19:41 +0000)
bin/pax/ar_subs.c
bin/pax/extern.h
bin/pax/gen_subs.c
bin/pax/options.c

index cade8d4..164b447 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ar_subs.c,v 1.4 1996/10/27 06:45:09 downsj Exp $      */
+/*     $OpenBSD: ar_subs.c,v 1.5 1997/01/24 19:41:19 millert Exp $     */
 /*     $NetBSD: ar_subs.c,v 1.5 1995/03/21 09:07:06 cgd Exp $  */
 
 /*-
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)ar_subs.c  8.2 (Berkeley) 4/18/94";
 #else
-static char rcsid[] = "$OpenBSD: ar_subs.c,v 1.4 1996/10/27 06:45:09 downsj Exp $";
+static char rcsid[] = "$OpenBSD: ar_subs.c,v 1.5 1997/01/24 19:41:19 millert Exp $";
 #endif
 #endif /* not lint */
 
@@ -134,7 +134,7 @@ list()
                        if ((res = mod_name(arcn)) < 0)
                                break;
                        if (res == 0)
-                               ls_list(arcn, now);
+                               ls_list(arcn, now, stdout);
                }
 
                /*
@@ -175,6 +175,7 @@ extract()
        ARCHD archd;
        struct stat sb;
        int fd;
+       time_t now;
 
        arcn = &archd;
        /*
@@ -193,6 +194,8 @@ extract()
        if (iflag && (name_start() < 0))
                return;
 
+       now = time((time_t *)NULL);
+
        /*
         * step through each entry on the archive until the format read routine
         * says it is done
@@ -280,8 +283,12 @@ extract()
                }
 
                if (vflag) {
-                       (void)fputs(arcn->name, stderr);
-                       vfpart = 1;
+                       if (vflag > 1)
+                               ls_list(arcn, now, stderr);
+                       else {
+                               (void)fputs(arcn->name, stderr);
+                               vfpart = 1;
+                       }
                }
 
                /*
@@ -386,6 +393,7 @@ wr_archive(arcn, is_app)
        off_t cnt;
        int (*wrf)();
        int fd = -1;
+       time_t now;
 
        /*
         * if this format supports hard link storage, start up the database
@@ -413,6 +421,8 @@ wr_archive(arcn, is_app)
         */
        wr_one = is_app;
 
+       now = time((time_t *)NULL);
+
        /*
         * while there are files to archive, process them one at at time
         */
@@ -482,8 +492,12 @@ wr_archive(arcn, is_app)
                }
 
                if (vflag) {
-                       (void)fputs(arcn->name, stderr);
-                       vfpart = 1;
+                       if (vflag > 1)
+                               ls_list(arcn, now, stderr);
+                       else {
+                               (void)fputs(arcn->name, stderr);
+                               vfpart = 1;
+                       }
                }
                ++flcnt;
 
index 908c562..1a00cf3 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: extern.h,v 1.7 1996/12/09 12:00:14 deraadt Exp $      */
+/*     $OpenBSD: extern.h,v 1.8 1997/01/24 19:41:20 millert Exp $      */
 /*     $NetBSD: extern.h,v 1.5 1996/03/26 23:54:16 mrg Exp $   */
 
 /*-
@@ -166,7 +166,7 @@ int next_file __P((register ARCHD *));
 /*
  * gen_subs.c
  */
-void ls_list __P((register ARCHD *, time_t));
+void ls_list __P((register ARCHD *, time_t, FILE *));
 void ls_tty __P((register ARCHD *));
 void zf_strncpy __P((register char *, register char *, int));
 int l_strncpy __P((register char *, register char *, int));
index e4a6c15..554faf8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: gen_subs.c,v 1.3 1996/06/23 14:20:35 deraadt Exp $    */
+/*     $OpenBSD: gen_subs.c,v 1.4 1997/01/24 19:41:21 millert Exp $    */
 /*     $NetBSD: gen_subs.c,v 1.5 1995/03/21 09:07:26 cgd Exp $ */
 
 /*-
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)gen_subs.c 8.1 (Berkeley) 5/31/93";
 #else
-static char rcsid[] = "$OpenBSD: gen_subs.c,v 1.3 1996/06/23 14:20:35 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: gen_subs.c,v 1.4 1997/01/24 19:41:21 millert Exp $";
 #endif
 #endif /* not lint */
 
@@ -83,12 +83,13 @@ static char rcsid[] = "$OpenBSD: gen_subs.c,v 1.3 1996/06/23 14:20:35 deraadt Ex
 
 #if __STDC__
 void
-ls_list(register ARCHD *arcn, time_t now)
+ls_list(register ARCHD *arcn, time_t now, FILE *fp)
 #else
 void
-ls_list(arcn, now)
+ls_list(arcn, now, fp)
        register ARCHD *arcn;
        time_t now;
+       FILE *fp;
 #endif
 {
        register struct stat *sbp;
@@ -100,8 +101,8 @@ ls_list(arcn, now)
         * if not verbose, just print the file name
         */
        if (!vflag) {
-               (void)printf("%s\n", arcn->name);
-               (void)fflush(stdout);
+               (void)fprintf(fp, "%s\n", arcn->name);
+               (void)fflush(fp);
                return;
        }
 
@@ -128,8 +129,8 @@ ls_list(arcn, now)
         */
        if (strftime(f_date,DATELEN,timefrmt,localtime(&(sbp->st_mtime))) == 0)
                f_date[0] = '\0';
-       (void)printf("%s%2u %-*s %-*s ", f_mode, sbp->st_nlink, UT_NAMESIZE,
-               name_uid(sbp->st_uid, 1), UT_GRPSIZE,
+       (void)fprintf(fp, "%s%2u %-*s %-*s ", f_mode, sbp->st_nlink,
+               UT_NAMESIZE, name_uid(sbp->st_uid, 1), UT_GRPSIZE,
                name_gid(sbp->st_gid, 1));
 
        /*
@@ -137,30 +138,30 @@ ls_list(arcn, now)
         */
        if ((arcn->type == PAX_CHR) || (arcn->type == PAX_BLK))
 #              ifdef NET2_STAT
-               (void)printf("%4u,%4u ", MAJOR(sbp->st_rdev),
+               (void)fprintf(fp, "%4u,%4u ", MAJOR(sbp->st_rdev),
 #              else
-               (void)printf("%4lu,%4lu ", (unsigned long)MAJOR(sbp->st_rdev),
+               (void)fprintf(fp, "%4lu,%4lu ", (unsigned long)MAJOR(sbp->st_rdev),
 #              endif
                    (unsigned long)MINOR(sbp->st_rdev));
        else {
 #              ifdef NET2_STAT
-               (void)printf("%9lu ", sbp->st_size);
+               (void)fprintf(fp, "%9lu ", sbp->st_size);
 #              else
-               (void)printf("%9qu ", sbp->st_size);
+               (void)fprintf(fp, "%9qu ", sbp->st_size);
 #              endif
        }
 
        /*
         * print name and link info for hard and soft links
         */
-       (void)printf("%s %s", f_date, arcn->name);
+       (void)fprintf(fp, "%s %s", f_date, arcn->name);
        if ((arcn->type == PAX_HLK) || (arcn->type == PAX_HRG))
-               (void)printf(" == %s\n", arcn->ln_name);
+               (void)fprintf(fp, " == %s\n", arcn->ln_name);
        else if (arcn->type == PAX_SLK)
-               (void)printf(" => %s\n", arcn->ln_name);
+               (void)fprintf(fp, " => %s\n", arcn->ln_name);
        else
-               (void)putchar('\n');
-       (void)fflush(stdout);
+               (void)putc('\n', fp);
+       (void)fflush(fp);
        return;
 }
 
index 8d84828..9534605 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: options.c,v 1.12 1996/12/09 12:02:16 deraadt Exp $    */
+/*     $OpenBSD: options.c,v 1.13 1997/01/24 19:41:23 millert Exp $    */
 /*     $NetBSD: options.c,v 1.6 1996/03/26 23:54:18 mrg Exp $  */
 
 /*-
@@ -42,7 +42,7 @@
 #if 0
 static char sccsid[] = "@(#)options.c  8.2 (Berkeley) 4/18/94";
 #else
-static char rcsid[] = "$OpenBSD: options.c,v 1.12 1996/12/09 12:02:16 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: options.c,v 1.13 1997/01/24 19:41:23 millert Exp $";
 #endif
 #endif /* not lint */
 
@@ -697,7 +697,7 @@ tar_options(argc, argv)
                        /*
                         * verbose operation mode
                         */
-                       vflag = 1;
+                       vflag++;
                        break;
                case 'w':
                        /*