X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=dump%2Fmain.c;h=20c2ad2be442db2d05413af784d9f88441503653;hb=refs%2Fheads%2Fmaster;hp=ae3e3caa6ee64f3c12ebdcc47390db0a5bb628b4;hpb=c5e38bc12e0a29762e7a4561c815ab8a7c8ade56;p=dump.git diff --git a/dump/main.c b/dump/main.c index ae3e3ca..20c2ad2 100644 --- a/dump/main.c +++ b/dump/main.c @@ -37,7 +37,7 @@ #ifndef lint static const char rcsid[] = - "$Id: main.c,v 1.97 2010/04/28 09:29:50 stelian Exp $"; + "$Id: main.c,v 1.99 2011/06/10 13:41:41 stelian Exp $"; #endif /* not lint */ #include @@ -84,6 +84,9 @@ static const char rcsid[] = #include "pathnames.h" #include "bylabel.h" +#include "transformation.h" +#include "indexer.h" + #ifndef SBOFF #define SBOFF (SBLOCK * DEV_BSIZE) #endif @@ -149,13 +152,6 @@ int dev_bshift; /* log2(dev_bsize) */ int tp_bshift; /* log2(TP_BSIZE) */ dump_ino_t volinfo[TP_NINOS];/* which inode on which volume archive info */ -#ifdef USE_QFA -int gTapeposfd; -char *gTapeposfile; -char gTps[255]; -int32_t gThisDumpDate; -#endif /* USE_QFA */ - struct dumptime *dthead; /* head of the list version */ int nddates; /* number of records (might be zero) */ int ddates_in; /* we have read the increment file */ @@ -178,6 +174,7 @@ int sizest = 0; /* return size estimate only */ int compressed = 0; /* use zlib to compress the output, compress level 1-9 */ long long bytes_written = 0; /* total bytes written */ long uncomprblks = 0;/* uncompressed blocks written */ +Transformation *transformation = &transformation_null; long smtc_errno; @@ -197,6 +194,8 @@ static void incompat_flags __P((int, char, char)); static char* iexclude_bitmap = NULL; /* the inode exclude bitmap */ static unsigned int iexclude_bitmap_bytes = 0; /* size of bitmap in bytes */ +Indexer *indexer = &indexer_legacy; + int main(int argc, char *argv[]) { @@ -239,6 +238,7 @@ main(int argc, char *argv[]) quit("TP_BSIZE must be a multiple of DEV_BSIZE\n"); memset(&lastlevel, 0, NUM_STR_SIZE); memset(&level, 0, NUM_STR_SIZE); + transformation = &transformation_null; /* Default dump level is zero. */ level[0] = '0'; @@ -247,10 +247,6 @@ main(int argc, char *argv[]) obsolete(&argc, &argv); -#ifdef USE_QFA - gTapeposfd = -1; -#endif /* USE_QFA */ - while ((ch = getopt(argc, argv, "0123456789A:aB:b:cd:D:e:E:f:F:h:I:" #ifdef HAVE_BZLIB @@ -359,6 +355,7 @@ main(int argc, char *argv[]) case 'j': compressed = 2; zipflag = COMPRESS_BZLIB; + transformation = transformation_bzlib_factory(1, 2); if (optarg) compressed = numarg("compress level", 1L, 9L); break; @@ -410,7 +407,7 @@ main(int argc, char *argv[]) #ifdef USE_QFA case 'Q': /* create tapeposfile */ - gTapeposfile = optarg; + //gTapeposfile = optarg; // FIXME - communicate filename to indexer. tapepos = 1; break; #endif /* USE_QFA */ @@ -450,6 +447,7 @@ main(int argc, char *argv[]) #ifdef HAVE_LZO case 'y': compressed = 2; + transformation = transformation_lzo_factory(1); zipflag = COMPRESS_LZO; break; #endif /* HAVE_LZO */ @@ -457,6 +455,7 @@ main(int argc, char *argv[]) #ifdef HAVE_ZLIB case 'z': compressed = 2; + transformation = transformation_zlib_factory(1, 2); zipflag = COMPRESS_ZLIB; if (optarg) compressed = numarg("compress level", 1L, 9L); @@ -692,9 +691,6 @@ main(int argc, char *argv[]) msg("Date of this level %s dump: %s", level, ctime4(&spcl.c_date)); -#ifdef USE_QFA - gThisDumpDate = spcl.c_date; -#endif if (spcl.c_ddate) msg("Date of last level %s dump: %s", lastlevel, ctime4(&spcl.c_ddate)); @@ -793,7 +789,7 @@ main(int argc, char *argv[]) if (zipflag == COMPRESS_LZO) msg("Compressing output (lzo)\n"); else - msg("Compressing output at compression level %d (%s)\n", + msg("Compressing output at transformation level %d (%s)\n", compressed, zipflag == COMPRESS_ZLIB ? "zlib" : "bzlib"); } } @@ -926,22 +922,7 @@ main(int argc, char *argv[]) } #ifdef USE_QFA - if (tapepos) { - msg("writing QFA positions to %s\n", gTapeposfile); - if ((gTapeposfd = open(gTapeposfile, - O_WRONLY|O_CREAT|O_TRUNC, - S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP - | S_IROTH | S_IWOTH)) < 0) - quit("can't open tapeposfile\n"); - /* 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)) != (ssize_t)strlen(gTps)) - quit("can't write tapeposfile\n"); - sprintf(gTps, "ino\ttapeno\ttapepos\n"); - if (write(gTapeposfd, gTps, strlen(gTps)) != (ssize_t)strlen(gTps)) - quit("can't write tapeposfile\n"); - } + indexer->openQfa(); #endif /* USE_QFA */ /* @@ -1016,6 +997,8 @@ main(int argc, char *argv[]) tend_writing = time(NULL); spcl.c_type = TS_END; + indexer->foo(); + if (Afile >= 0) { volinfo[1] = ROOTINO; memcpy(spcl.c_inos, volinfo, TP_NINOS * sizeof(dump_ino_t)); @@ -1062,8 +1045,8 @@ main(int argc, char *argv[]) spcl.c_tapea, tapekb, rate); } - if (Afile >= 0) - msg("Archiving dump to %s\n", Apath); + indexer->close(); + indexer->closeQfa(); broadcast("DUMP IS DONE!\7\7\n"); msg("DUMP IS DONE\n");