#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 <config.h>
#include "pathnames.h"
#include "bylabel.h"
+#include "transformation.h"
+#include "indexer.h"
+
#ifndef SBOFF
#define SBOFF (SBLOCK * DEV_BSIZE)
#endif
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 */
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;
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[])
{
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';
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
case 'j':
compressed = 2;
zipflag = COMPRESS_BZLIB;
+ transformation = transformation_bzlib_factory(1, 2);
if (optarg)
compressed = numarg("compress level", 1L, 9L);
break;
#ifdef USE_QFA
case 'Q': /* create tapeposfile */
- gTapeposfile = optarg;
+ //gTapeposfile = optarg; // FIXME - communicate filename to indexer.
tapepos = 1;
break;
#endif /* USE_QFA */
#ifdef HAVE_LZO
case 'y':
compressed = 2;
+ transformation = transformation_lzo_factory(1);
zipflag = COMPRESS_LZO;
break;
#endif /* HAVE_LZO */
#ifdef HAVE_ZLIB
case 'z':
compressed = 2;
+ transformation = transformation_zlib_factory(1, 2);
zipflag = COMPRESS_ZLIB;
if (optarg)
compressed = numarg("compress level", 1L, 9L);
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));
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");
}
}
}
#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 */
/*
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));
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");