Fix restore when symtab file is over 2GB in size.
authorStelian Pop <stelian@popies.net>
Thu, 7 Jul 2005 08:47:13 +0000 (08:47 +0000)
committerStelian Pop <stelian@popies.net>
Thu, 7 Jul 2005 08:47:13 +0000 (08:47 +0000)
CHANGES
compat/include/compatlfs.h
restore/symtab.c

diff --git a/CHANGES b/CHANGES
index 1c3488f7a2d8bb474778da168fa7f9164c80d383..2099f0eaf6202940514f7a840fc3c6aab3770e69 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,4 @@
-$Id: CHANGES,v 1.277 2005/06/08 13:24:08 stelian Exp $
+$Id: CHANGES,v 1.278 2005/07/07 08:47:13 stelian Exp $
 
 Changes between versions 0.4b40 and 0.4b41 (released ???????????)
 =================================================================
 
 Changes between versions 0.4b40 and 0.4b41 (released ???????????)
 =================================================================
@@ -10,6 +10,8 @@ Changes between versions 0.4b40 and 0.4b41 (released ???????????)
 2.     Fix some issues with restoration of EA on big endian
        platforms.
 
 2.     Fix some issues with restoration of EA on big endian
        platforms.
 
+3.     Fix restore when the symtab is over 2GB in size.
+
 Changes between versions 0.4b39 and 0.4b40 (released May 2, 2005)
 =================================================================
 
 Changes between versions 0.4b39 and 0.4b40 (released May 2, 2005)
 =================================================================
 
index fe7db5f2fb7857dbbe17d1d0e0b0f3d6ebf21ecf..b5cb0a780a5de2e24996cc95d65698a19a7794a5 100644 (file)
@@ -3,7 +3,7 @@
  *     dump and restore backup suit
  *     Stelian Pop <stelian@popies.net> - Alcôve <www.alcove.com>, 2000-2002
  *
  *     dump and restore backup suit
  *     Stelian Pop <stelian@popies.net> - Alcôve <www.alcove.com>, 2000-2002
  *
- *     $Id: compatlfs.h,v 1.5 2004/03/29 13:57:29 stelian Exp $
+ *     $Id: compatlfs.h,v 1.6 2005/07/07 08:47:16 stelian Exp $
  */
 
 /*-
  */
 
 /*-
 
 #define _LARGEFILE64_SOURCE
 #define OPEN open64
 
 #define _LARGEFILE64_SOURCE
 #define OPEN open64
+#define FOPEN fopen64
 #define LSEEK lseek64
 #define STAT stat64
 #define LSEEK lseek64
 #define STAT stat64
+#define FSTAT fstat64
 #define LSTAT lstat64
 #define FTRUNCATE ftruncate64
 #define OFF_T __off64_t
 #define LSTAT lstat64
 #define FTRUNCATE ftruncate64
 #define OFF_T __off64_t
 #else
 
 #define OPEN open
 #else
 
 #define OPEN open
+#define FOPEN fopen
 #define LSEEK lseek
 #define STAT stat
 #define LSEEK lseek
 #define STAT stat
+#define FSTAT fstat
 #define LSTAT lstat
 #define FTRUNCATE ftruncate
 #define OFF_T off_t
 #define LSTAT lstat
 #define FTRUNCATE ftruncate
 #define OFF_T off_t
index b69259a7fe9185986fddbe54477cac1c6ace6dfc..06548bcee6e5a84c7bbd0e8eae6c614eb877b57d 100644 (file)
@@ -37,7 +37,7 @@
 
 #ifndef lint
 static const char rcsid[] =
 
 #ifndef lint
 static const char rcsid[] =
-       "$Id: symtab.c,v 1.25 2005/03/30 13:34:00 stelian Exp $";
+       "$Id: symtab.c,v 1.26 2005/07/07 08:47:16 stelian Exp $";
 #endif /* not lint */
 
 /*
 #endif /* not lint */
 
 /*
@@ -50,6 +50,7 @@ static const char rcsid[] =
  */
 
 #include <config.h>
  */
 
 #include <config.h>
+#include <compatlfs.h>
 #include <sys/param.h>
 #include <sys/stat.h>
 
 #include <sys/param.h>
 #include <sys/stat.h>
 
@@ -554,7 +555,7 @@ dumpsymtable(char *filename, long checkpt)
        Vprintf(stdout, "Check pointing the restore\n");
        if (Nflag)
                return;
        Vprintf(stdout, "Check pointing the restore\n");
        if (Nflag)
                return;
-       if ((fd = fopen(filename, "w")) == NULL) {
+       if ((fd = FOPEN(filename, "w")) == NULL) {
                warn("fopen");
                panic("cannot create save file %s for symbol table\n",
                        filename);
                warn("fopen");
                panic("cannot create save file %s for symbol table\n",
                        filename);
@@ -654,7 +655,7 @@ initsymtable(char *filename)
        struct entry *ep;
        struct entry *baseep, *lep;
        struct symtableheader hdr;
        struct entry *ep;
        struct entry *baseep, *lep;
        struct symtableheader hdr;
-       struct stat stbuf;
+       struct STAT stbuf;
        long i;
        int fd;
 
        long i;
        int fd;
 
@@ -669,11 +670,11 @@ initsymtable(char *filename)
                ep->e_flags |= NEW;
                return;
        }
                ep->e_flags |= NEW;
                return;
        }
-       if ((fd = open(filename, O_RDONLY, 0)) < 0) {
+       if ((fd = OPEN(filename, O_RDONLY, 0)) < 0) {
                warn("open");
                errx(1, "cannot open symbol table file %s", filename);
        }
                warn("open");
                errx(1, "cannot open symbol table file %s", filename);
        }
-       if (fstat(fd, &stbuf) < 0) {
+       if (FSTAT(fd, &stbuf) < 0) {
                warn("stat");
                errx(1, "cannot stat symbol table file %s", filename);
        }
                warn("stat");
                errx(1, "cannot stat symbol table file %s", filename);
        }