Package: dump
Version: 0.4b44-1
Severity: wishlist
Tags: patch upstream
Hello,
processing the output of restore -t (as amanda does) is much more
reliable, if the file names of the listing would be zero terminated,
instead of using a newline as terminator. (Newline can be part of the
filename and if the filename continues with "leaf 4711 …" it's not easy
to parse.
I've written a small patch and it would be great if this patch would
make it into debian and even the upstream.
-- System Information:
Debian Release: 7.0
APT prefers testing
APT policy: (990, 'testing'), (500, 'stable-updates'), (500, 'stable'), (1,
'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 3.6-trunk-amd64 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages dump depends on:
ii e2fslibs 1.42.5-1
ii libblkid1 2.20.1-5.3
ii libc6 2.13-38
ii libcomerr2 1.42.5-1
ii libreadline6 6.2+dfsg-0.1
ii libselinux1 2.1.9-5
ii libtinfo5 5.9-10
ii libuuid1 2.20.1-5.3
ii tar 1.26+dfsg-0.1
dump recommends no packages.
dump suggests no packages.
-- no debconf information
--- dump-0.4b44.orig/restore/main.c 2009-06-18 11:42:12.000000000 +0200
+++ dump-0.4b44/restore/main.c 2013-03-20 22:39:36.905605953 +0100
@@ -92,6 +92,7 @@
int aflag = 0, bflag = 0, cvtflag = 0, dflag = 0, vflag = 0, yflag = 0;
int hflag = 1, mflag = 1, Mflag = 0, Nflag = 0, Vflag = 0, zflag = 0;
int uflag = 0, lflag = 0, Lflag = 0, oflag = 0;
+int nullflag = 0; /* \0 terminated file names */
int ufs2flag = 0;
char *Afile = NULL;
int dokerberos = 0;
@@ -198,7 +199,7 @@
#ifdef USE_QFA
"P:Q:"
#endif
- "Rrs:tT:uvVxX:y")) != -1)
+ "Rrs:tT:uvVxX:y0")) != -1)
switch(ch) {
case 'a':
aflag = 1;
@@ -343,6 +344,9 @@
case 'y':
yflag = 1;
break;
+ case '0':
+ nullflag = 1;
+ break;
default:
usage();
}
--- dump-0.4b44.orig/restore/restore.8.in 2009-06-18 11:42:12.000000000 +0200
+++ dump-0.4b44/restore/restore.8.in 2013-03-20 22:44:45.511062849 +0100
@@ -79,7 +79,7 @@
[\fB\-T \fIdirectory\fR]
.PP
.B restore \-t
-[\fB\-cdhHklMNuvVy\fR]
+[\fB\-cdhHklMNuvV0y\fR]
[\fB\-A \fIfile\fR]
[\fB\-b \fIblocksize\fR]
[\fB\-f \fIfile\fR]
@@ -264,6 +264,10 @@
program. See also the
.B \-X
option below.
+If the
+.B \-0
+flag is used, the output is not line separated anymore, but the NULL
+byte is used as separator.
.TP
.B \-x
The named files are read from the given media. If a named file matches a
@@ -523,6 +527,12 @@
(verbose) flag causes it to type the name of each file it treats preceded by
its file type.
.TP
+.B \-0
+(zero terminated) flag causes the output lines to be zero terminated,
+not line feed terminated. This flag is recognized for
+.B \-t
+(listing) only.
+.TP
.B \-V
Enables reading multi-volume non-tape mediums like CDROMs.
.TP
--- dump-0.4b44.orig/restore/restore.c 2010-12-06 15:26:50.000000000 +0100
+++ dump-0.4b44/restore/restore.c 2013-03-20 22:33:44.463922398 +0100
@@ -100,9 +100,12 @@
fprintf(stdout, "%10lu\t%ld\t%lld\t%s\n", (unsigned long)ino,
tnum, tpos, name);
}
- else
+ else {
#endif
- fprintf(stdout, "%10lu\t%s\n", (unsigned long)ino, name);
+ fprintf(stdout, "%10lu\t%s", (unsigned long)ino, name);
+ if (nullflag) putchar('\0');
+ else putchar('\n');
+ }
return (descend);
}
--- dump-0.4b44.orig/restore/restore.h 2007-02-22 21:12:50.000000000 +0100
+++ dump-0.4b44/restore/restore.h 2013-03-20 22:36:16.976654545 +0100
@@ -64,6 +64,7 @@
extern int vflag; /* print out actions taken */
extern int yflag; /* always try to recover from tape errors */
extern int zflag; /* tape is in compressed format */
+extern int nullflag; /* \0 separated output in t mode */
extern int ufs2flag; /* tape is a FreeBSD UFS2 dump */
extern char* bot_script; /* beginning of tape script */
/*