int verbose = 0;
/* Forward Declarations */
-void HandleVolume(struct DiskPartition64 *partP, char *name, char *filename);
+void HandleVolume(struct DiskPartition64 *partP, char *name, char *filename, int fromtime);
Volume *AttachVolume(struct DiskPartition64 *dp, char *volname,
register struct VolumeHeader *header);
static void DoMyVolDump(Volume * vp, struct DiskPartition64 *dp,
- char *dumpfile);
+ char *dumpfile, int fromtime);
#ifndef AFS_NT40_ENV
#include "AFS_component_version_number.c"
struct DiskPartition64 *partP = NULL;
char name1[128];
char tmpPartName[20];
+ int fromtime = 0;
+ afs_int32 code;
#ifndef AFS_NT40_ENV
fileName = ti->data;
if ((ti = as->parms[3].items))
verbose = 1;
+ if (as->parms[4].items && strcmp(as->parms[4].items->data, "0")) {
+ code = ktime_DateToInt32(as->parms[4].items->data, &fromtime);
+ if (code) {
+ fprintf(STDERR, "failed to parse date '%s' (error=%d))\n",
+ as->parms[4].items->data, code);
+ return code;
+ }
+ }
DInit(10);
}
(void)afs_snprintf(name1, sizeof name1, VFORMAT, (unsigned long)volumeId);
- HandleVolume(partP, name1, fileName);
+ HandleVolume(partP, name1, fileName, fromtime);
return 0;
}
void
-HandleVolume(struct DiskPartition64 *dp, char *name, char *filename)
+HandleVolume(struct DiskPartition64 *dp, char *name, char *filename, int fromtime)
{
struct VolumeHeader header;
struct VolumeDiskHeader diskHeader;
exit(1);
}
- DoMyVolDump(vp, dp, filename);
+ DoMyVolDump(vp, dp, filename, fromtime);
}
cmd_AddParm(ts, "-file", CMD_LIST, CMD_OPTIONAL, "Dump filename");
cmd_AddParm(ts, "-verbose", CMD_FLAG, CMD_OPTIONAL,
"Trace dump progress (very verbose)");
+ cmd_AddParm(ts, "-time", CMD_SINGLE, CMD_OPTIONAL, "dump from time");
code = cmd_Dispatch(argc, argv);
return code;
}
static void
-DoMyVolDump(Volume * vp, struct DiskPartition64 *dp, char *dumpfile)
+DoMyVolDump(Volume * vp, struct DiskPartition64 *dp, char *dumpfile, int fromtime)
{
int code = 0;
- int fromtime = 0;
int dumpAllDirs = 0;
int dumpfd = 0;
if (dumpfile) {
unlink(dumpfile);
dumpfd =
- open(dumpfile, O_CREAT | O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR);
+ afs_open(dumpfile, O_CREAT | O_WRONLY | O_TRUNC, S_IRUSR | S_IWUSR);
if (dumpfd < 0) {
fprintf(stderr, "Failed to open dump file! Exiting.\n");
exit(1);