X-Git-Url: https://git.wh0rd.org/?a=blobdiff_plain;f=restore%2Fmain.c;h=0329554dcc3dc36fd68d9277539f0f5eee8f103d;hb=c3f69f06e7c87a8e39d2bc02396fa3ba8db76e84;hp=723a88f00ebf98348fb626b8b7569df99d343faf;hpb=a18d599791e977f3e3d26123031e6ed4e64d6d08;p=dump.git diff --git a/restore/main.c b/restore/main.c index 723a88f..0329554 100644 --- a/restore/main.c +++ b/restore/main.c @@ -41,7 +41,7 @@ #ifndef lint static const char rcsid[] = - "$Id: main.c,v 1.41 2002/07/19 14:57:39 stelian Exp $"; + "$Id: main.c,v 1.43 2003/03/26 10:58:22 stelian Exp $"; #endif /* not lint */ #include @@ -90,8 +90,8 @@ char command = '\0'; long dumpnum = 1; long volno = 0; long ntrec; -char *dumpmap; -char *usedinomap; +char *dumpmap = NULL; +char *usedinomap = NULL; dump_ino_t maxino; time_t dumptime; time_t dumpdate; @@ -124,6 +124,8 @@ static void obsolete __P((int *, char **[])); static void usage __P((void)); static void use_stdin __P((const char *)); +#define FORCED_UMASK (077) + int main(int argc, char *argv[]) { @@ -134,6 +136,7 @@ main(int argc, char *argv[]) char *p, name[MAXPATHLEN]; FILE *filelist = NULL; char fname[MAXPATHLEN]; + mode_t orig_umask; #ifdef DEBUG_QFA time_t tistart, tiend, titaken; #endif @@ -143,7 +146,7 @@ main(int argc, char *argv[]) #endif /* USE_QFA */ /* Temp files should *not* be readable. We set permissions later. */ - (void) umask(077); + orig_umask = umask(FORCED_UMASK); filesys[0] = '\0'; #if defined(__linux__) || defined(sunos) __progname = argv[0]; @@ -550,8 +553,12 @@ main(int argc, char *argv[]) #endif setup(); msg("writing QFA positions to %s\n", gTapeposfile); - if ((gTapeposfd = open(gTapeposfile, O_RDWR|O_CREAT, S_IRUSR|S_IWUSR)) < 0) + (void) umask(orig_umask); + if ((gTapeposfd = open(gTapeposfile, O_WRONLY|O_CREAT|O_TRUNC, + S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP + |S_IROTH|S_IWOTH)) < 0) errx(1, "can't create tapeposfile\n"); + (void) umask(FORCED_UMASK); /* print QFA-file header */ sprintf(gTps, "%s\n%s\n%ld\n\n", QFA_MAGIC, QFA_VERSION,(unsigned long)spcl.c_date); if (write(gTapeposfd, gTps, strlen(gTps)) != (ssize_t)strlen(gTps))