X-Git-Url: https://git.wh0rd.org/?p=dump.git;a=blobdiff_plain;f=restore%2Ftape.c;h=b383866a6dd99bc9535d3d81d66ec7d35d107e39;hp=2f344dbc85e87785dc3629c44ce690ee105c13e1;hb=47acd076f971d347c39c498e69634a3aa0f73031;hpb=6466785009d6e9260d2e6bd67378fed5411e6f02 diff --git a/restore/tape.c b/restore/tape.c index 2f344db..b383866 100644 --- a/restore/tape.c +++ b/restore/tape.c @@ -42,7 +42,7 @@ #ifndef lint static const char rcsid[] = - "$Id: tape.c,v 1.81 2004/05/25 10:39:31 stelian Exp $"; + "$Id: tape.c,v 1.83 2004/12/10 13:31:21 stelian Exp $"; #endif /* not lint */ #include @@ -1317,10 +1317,13 @@ xtrlnkfile(char *buf, size_t size) { pathlen += size; - if (pathlen > MAXPATHLEN) + if (pathlen > MAXPATHLEN) { + buf[size - 1] = '\0'; errx(1, "symbolic link name: %s->%s%s; too long %d", curfile.name, lnkbuf, buf, pathlen); + } (void) strcat(lnkbuf, buf); + lnkbuf[pathlen] = '\0'; } /* @@ -1426,7 +1429,7 @@ xtrcmpskip(UNUSED(char *buf), size_t size) #if !COMPARE_ONTHEFLY static int -do_cmpfiles(int fd_tape, int fd_disk, long size) +do_cmpfiles(int fd_tape, int fd_disk, OFF_T size) { static char buf_tape[BUFSIZ]; static char buf_disk[BUFSIZ]; @@ -1475,8 +1478,8 @@ cmpfiles(char *tapefile, char *diskfile, struct STAT *sbuf_disk) if (sbuf_disk->st_size != sbuf_tape.st_size) { fprintf(stderr, - "%s: size changed from %ld to %ld.\n", - diskfile, (long)sbuf_tape.st_size, (long)sbuf_disk->st_size); + "%s: size changed from %lld to %lld.\n", + diskfile, (long long)sbuf_tape.st_size, (long long)sbuf_disk->st_size); do_compare_error; #ifdef COMPARE_FAIL_KEEP_FILE return (0); @@ -1568,8 +1571,8 @@ comparefile(char *name) return; } - Vprintf(stdout, "comparing %s (size: %ld, mode: 0%o)\n", name, - (long)sb.st_size, mode); + Vprintf(stdout, "comparing %s (size: %lld, mode: 0%o)\n", name, + (long long)sb.st_size, mode); if (sb.st_mode != mode) { fprintf(stderr, "%s: mode changed from 0%o to 0%o.\n",