#ifndef lint
static const char rcsid[] =
- "$Id: main.c,v 1.71 2002/04/04 08:20:23 stelian Exp $";
+ "$Id: main.c,v 1.77 2002/11/15 09:49:40 stelian Exp $";
#endif /* not lint */
#include <config.h>
int mflag; /* dump metadata only if possible */
int Mflag; /* multi-volume flag */
int qflag; /* quit on errors flag */
+int vflag; /* verbose flag */
int breademax = 32; /* maximum number of bread errors before we quit */
char *eot_script; /* end of volume script fiag */
int diskfd; /* disk file descriptor */
char *__progname;
#endif
-int maxbsize = 64*1024; /* XXX MAXBSIZE from sys/param.h */
+int maxbsize = 1024*1024; /* XXX MAXBSIZE from sys/param.h */
static long numarg __P((const char *, long, long));
static void obsolete __P((int *, char **[]));
static void usage __P((void));
#ifdef USE_QFA
"Q:"
#endif
- "s:ST:uWw"
+ "s:ST:uvWw"
#ifdef HAVE_ZLIB
"z::"
#endif
case 'b': /* blocks per tape write */
ntrec = numarg("number of blocks per write",
- 1L, 1000L);
+ 1L, 1048576L);
if (ntrec > maxbsize/1024) {
msg("Please choose a blocksize <= %dkB\n",
maxbsize/1024);
uflag = 1;
break;
+ case 'v': /* verbose */
+ vflag = 1;
+ break;
+
case 'W': /* what to do */
case 'w':
lastdump(ch);
if (TP_BSIZE != (1 << tp_bshift))
quit("TP_BSIZE (%d) is not a power of 2", TP_BSIZE);
maxino = fs->super->s_inodes_count + 1;
-#if 0
spcl.c_flags |= DR_NEWINODEFMT;
-#endif
#else /* __linux __*/
if ((diskfd = open(disk, O_RDONLY)) < 0) {
msg("Cannot open %s\n", disk);
/* print QFA-file header */
snprintf(gTps, sizeof(gTps), "%s\n%s\n%ld\n\n", QFA_MAGIC, QFA_VERSION, (unsigned long)spcl.c_date);
gTps[sizeof(gTps) - 1] = '\0';
- if (write(gTapeposfd, gTps, strlen(gTps)) != strlen(gTps))
+ if (write(gTapeposfd, gTps, strlen(gTps)) != (ssize_t)strlen(gTps))
quit("can't write tapeposfile\n");
sprintf(gTps, "ino\ttapeno\ttapepos\n");
- if (write(gTapeposfd, gTps, strlen(gTps)) != strlen(gTps))
+ if (write(gTapeposfd, gTps, strlen(gTps)) != (ssize_t)strlen(gTps))
quit("can't write tapeposfile\n");
}
#endif /* USE_QFA */
*/
if (dp->di_nlink == 0 || dp->di_dtime != 0)
continue;
+ if (vflag)
+ msg("dumping directory inode %lu\n", ino);
(void)dumpdirino(dp, ino);
#else
(void)dumpino(dp, ino);
* inodes since this is done in dumpino().
*/
#endif
+ if (vflag) {
+ if (mflag && TSTINO(ino, metainomap))
+ msg("dumping regular inode %lu (meta only)\n", ino);
+ else
+ msg("dumping regular inode %lu\n", ino);
+ }
(void)dumpino(dp, ino, mflag && TSTINO(ino, metainomap));
}
#ifdef KERBEROS
"k"
#endif
- "mMnqSu"
+ "mMnqSuv"
"] [-A file] [-B records] [-b blocksize]\n"
"\t%s [-d density] [-e inode#,inode#,...] [-E file] [-f file]\n"
"\t%s [-h level] [-I nr errors] "
exit(X_STARTUP);
}
if (reason)
- msg("Added inode %u to exclude list (%s)\n",
+ msg("Excluding inode %u (%s) from dump\n",
ino, reason);
else
- msg("Added inode %u to exclude list\n", ino);
+ msg("Excluding inode %u from dump\n", ino);
iexclude_list[iexclude_num++] = ino;
}
}
unsigned long inod;
inod = strtoul(ino, &r, 10);
- if (*r != '\0' || inod <= ROOTINO) {
+ if (( *r != '\0' && !isspace(*r) ) || inod <= ROOTINO) {
msg("Invalid inode argument %s\n", ino);
msg("The ENTIRE dump is aborted.\n");
exit(X_STARTUP);