OSDN Git Service

* configure.ac: use fseeko(), ftello() instead of fseek(), ftell().
authorarai <arai@6a8cc165-1e22-0410-a132-eb4e3f353aba>
Thu, 22 May 2003 18:36:58 +0000 (18:36 +0000)
committerarai <arai@6a8cc165-1e22-0410-a132-eb4e3f353aba>
Thu, 22 May 2003 18:36:58 +0000 (18:36 +0000)
* config.h.in: ditto.
* src/lha.h, src/lhlist.c, src/lhext.c, src/lharc.c: ditto.
* src/lhadd.c, src/header.c: ditto.

git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/lha/lha/trunk@696 6a8cc165-1e22-0410-a132-eb4e3f353aba

config.h.in
configure.ac
src/header.c
src/lha.h
src/lhadd.c
src/lharc.c
src/lhext.c
src/lhlist.c

index 51c2576..e808496 100644 (file)
 /* Define to 1 if you have the <fnmatch.h> header file. */
 #undef HAVE_FNMATCH_H
 
+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
+#undef HAVE_FSEEKO
+
+/* Define to 1 if you have the `ftello' function. */
+#undef HAVE_FTELLO
+
 /* Define to 1 if you have the `ftime' function. */
 #undef HAVE_FTIME
 
 /* Version number of package */
 #undef VERSION
 
+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
+#undef _LARGEFILE_SOURCE
+
 /* Define to 1 if on MINIX. */
 #undef _MINIX
 
index f28100b..d380827 100644 (file)
@@ -57,9 +57,10 @@ AC_CHECK_MEMBERS([struct tm.tm_gmtoff, struct stat.st_ino],,,
 AC_TYPE_SIGNAL
 AC_FUNC_UTIME_NULL
 AC_FUNC_FNMATCH
+AC_FUNC_FSEEKO
 AC_CHECK_FUNCS(strchr strdup memcpy memset memmove strcasecmp)
 AC_CHECK_FUNCS(mktime timelocal tzset ftime gettimeofday utime)
-AC_CHECK_FUNCS(ftruncate chsize lchown mkstemp)
+AC_CHECK_FUNCS(ftruncate chsize lchown mkstemp ftello)
 AC_CHECK_FUNCS(getpwuid getgrgid getpwnam getgrnam)
 AC_CHECK_FUNCS(iconv basename)
 AC_REPLACE_FUNCS(vsnprintf fnmatch)
index 7e35be5..c71ab74 100644 (file)
@@ -1155,7 +1155,7 @@ seek_lha_header(fp)
         if ((p[I_HEADER_LEVEL] == 0 || p[I_HEADER_LEVEL] == 1)
             && p[I_HEADER_SIZE] > 20
             && p[I_HEADER_CHECKSUM] == calc_sum(p+2, p[I_HEADER_SIZE])) {
-            if (fseek(fp, (p - buffer) - n, SEEK_CUR) == -1)
+            if (fseeko(fp, (p - buffer) - n, SEEK_CUR) == -1)
                 fatal_error("cannot seek header");
             return 0;
         }
@@ -1164,13 +1164,13 @@ seek_lha_header(fp)
         if (p[I_HEADER_LEVEL] == 2
             && p[I_HEADER_SIZE] >= 24
             && p[I_ATTRIBUTE] == 0x20) {
-            if (fseek(fp, (p - buffer) - n, SEEK_CUR) == -1)
+            if (fseeko(fp, (p - buffer) - n, SEEK_CUR) == -1)
                 fatal_error("cannot seek header");
             return 0;
         }
     }
 
-    if (fseek(fp, -n, SEEK_CUR) == -1)
+    if (fseeko(fp, -n, SEEK_CUR) == -1)
         fatal_error("cannot seek header");
     return -1;
 }
index 6d49182..f1f4a11 100644 (file)
--- a/src/lha.h
+++ b/src/lha.h
@@ -192,6 +192,13 @@ int fnmatch(const char *pattern, const char *string, int flags);
 #define LONG_MIN (LONG_MAX-ULONG_MAX)
 #endif
 
+#if !HAVE_FSEEKO
+# define fseeko  fseek
+#endif
+#if !HAVE_FTELLO
+# define ftello  ftell
+#endif
+
 #endif /* HAVE_LIMITS_H */
 
 #include "lha_macro.h"
index 379277f..58ced7c 100644 (file)
@@ -27,7 +27,7 @@ add_one(fp, nafp, hdr)
 
     if (!fp && generic_format)  /* [generic] doesn't need directory info. */
         return;
-    header_pos = ftell(nafp);
+    header_pos = ftello(nafp);
     write_header(nafp, hdr);/* DUMMY */
 
     if ((hdr->unix_mode & UNIX_FILE_SYMLINK) == UNIX_FILE_SYMLINK) {
@@ -39,22 +39,22 @@ add_one(fp, nafp, hdr)
         finish_indicator2(hdr->name, "Frozen", 0);
         return;     /* previous write_header is not DUMMY. (^_^) */
     }
-    org_pos = ftell(fp);
-    data_pos = ftell(nafp);
+    org_pos = ftello(fp);
+    data_pos = ftello(nafp);
 
     hdr->crc = encode_lzhuf(fp, nafp, hdr->original_size,
           &v_original_size, &v_packed_size, hdr->name, hdr->method);
 
     if (v_packed_size < v_original_size) {
-        next_pos = ftell(nafp);
+        next_pos = ftello(nafp);
     }
     else {          /* retry by stored method */
-        fseek(fp, org_pos, SEEK_SET);
-        fseek(nafp, data_pos, SEEK_SET);
+        fseeko(fp, org_pos, SEEK_SET);
+        fseeko(nafp, data_pos, SEEK_SET);
         hdr->crc = encode_stored_crc(fp, nafp, hdr->original_size,
                       &v_original_size, &v_packed_size);
         fflush(nafp);
-        next_pos = ftell(nafp);
+        next_pos = ftello(nafp);
 #if HAVE_FTRUNCATE
         if (ftruncate(fileno(nafp), next_pos) == -1)
             error("cannot truncate archive");
@@ -68,9 +68,9 @@ add_one(fp, nafp, hdr)
     }
     hdr->original_size = v_original_size;
     hdr->packed_size = v_packed_size;
-    fseek(nafp, header_pos, SEEK_SET);
+    fseeko(nafp, header_pos, SEEK_SET);
     write_header(nafp, hdr);
-    fseek(nafp, next_pos, SEEK_SET);
+    fseeko(nafp, next_pos, SEEK_SET);
 }
 
 
@@ -115,7 +115,7 @@ append_it(name, oafp, nafp)
 
     cmp = 0;                    /* avoid compiler warnings `uninitialized' */
     while (oafp) {
-        old_header = ftell(oafp);
+        old_header = ftello(oafp);
         if (!get_header(oafp, &ahdr)) {
             /* end of archive or error occurred */
             fclose(oafp);
@@ -127,17 +127,17 @@ append_it(name, oafp, nafp)
         if (cmp < 0) {          /* SKIP */
             /* copy old to new */
             if (!noexec) {
-                fseek(oafp, old_header, SEEK_SET);
+                fseeko(oafp, old_header, SEEK_SET);
                 copy_old_one(oafp, nafp, &ahdr);
             }
             else
-                fseek(oafp, ahdr.packed_size, SEEK_CUR);
+                fseeko(oafp, ahdr.packed_size, SEEK_CUR);
         } else if (cmp == 0) {  /* REPLACE */
             /* drop old archive's */
-            fseek(oafp, ahdr.packed_size, SEEK_CUR);
+            fseeko(oafp, ahdr.packed_size, SEEK_CUR);
             break;
         } else {                /* cmp > 0, INSERT */
-            fseek(oafp, old_header, SEEK_SET);
+            fseeko(oafp, old_header, SEEK_SET);
             break;
         }
     }
@@ -159,7 +159,7 @@ append_it(name, oafp, nafp)
         }
         else {                  /* copy old to new */
             if (!noexec) {
-                fseek(oafp, old_header, SEEK_SET);
+                fseeko(oafp, old_header, SEEK_SET);
                 copy_old_one(oafp, nafp, &ahdr);
             }
         }
@@ -189,7 +189,7 @@ find_update_files(oafp)
     struct stat     stbuf;
     int             len;
 
-    pos = ftell(oafp);
+    pos = ftello(oafp);
 
     init_sp(&sp);
     while (get_header(oafp, &hdr)) {
@@ -205,10 +205,10 @@ find_update_files(oafp)
             if (stat(name, &stbuf) >= 0)    /* exist ? */
                 add_sp(&sp, name, len + 1);
         }
-        fseek(oafp, hdr.packed_size, SEEK_CUR);
+        fseeko(oafp, hdr.packed_size, SEEK_CUR);
     }
 
-    fseek(oafp, pos, SEEK_SET);
+    fseeko(oafp, pos, SEEK_SET);
 
     finish_sp(&sp, &cmd_filec, &cmd_filev);
 }
@@ -221,10 +221,10 @@ delete(oafp, nafp)
     LzHeader        ahdr;
     long            old_header_pos;
 
-    old_header_pos = ftell(oafp);
+    old_header_pos = ftello(oafp);
     while (get_header(oafp, &ahdr)) {
         if (need_file(ahdr.name)) { /* skip */
-            fseek(oafp, ahdr.packed_size, SEEK_CUR);
+            fseeko(oafp, ahdr.packed_size, SEEK_CUR);
             if (noexec || !quiet) {
                 if ((ahdr.unix_mode & UNIX_FILE_TYPEMASK) == UNIX_FILE_SYMLINK)
                     message("delete %s -> %s", ahdr.realname, ahdr.name);
@@ -234,14 +234,14 @@ delete(oafp, nafp)
         }
         else {      /* copy */
             if (noexec) {
-                fseek(oafp, ahdr.packed_size, SEEK_CUR);
+                fseeko(oafp, ahdr.packed_size, SEEK_CUR);
             }
             else {
-                fseek(oafp, old_header_pos, SEEK_SET);
+                fseeko(oafp, old_header_pos, SEEK_SET);
                 copy_old_one(oafp, nafp, &ahdr);
             }
         }
-        old_header_pos = ftell(oafp);
+        old_header_pos = ftello(oafp);
     }
     return;
 }
@@ -521,15 +521,15 @@ cmd_add()
     }
 
     if (oafp) {
-        old_header = ftell(oafp);
+        old_header = ftello(oafp);
         while (get_header(oafp, &ahdr)) {
             if (noexec)
-                fseek(oafp, ahdr.packed_size, SEEK_CUR);
+                fseeko(oafp, ahdr.packed_size, SEEK_CUR);
             else {
-                fseek(oafp, old_header, SEEK_SET);
+                fseeko(oafp, old_header, SEEK_SET);
                 copy_old_one(oafp, nafp, &ahdr);
             }
-            old_header = ftell(oafp);
+            old_header = ftello(oafp);
         }
         fclose(oafp);
     }
@@ -537,7 +537,7 @@ cmd_add()
     new_archive_size = 0;       /* avoid compiler warnings `uninitialized' */
     if (!noexec) {
         write_archive_tail(nafp);
-        new_archive_size = ftell(nafp);
+        new_archive_size = ftello(nafp);
         fclose(nafp);
     }
 
@@ -601,7 +601,7 @@ cmd_delete()
     new_archive_size = 0;       /* avoid compiler warnings `uninitialized' */
     if (!noexec) {
         write_archive_tail(nafp);
-        new_archive_size = ftell(nafp);
+        new_archive_size = ftello(nafp);
         fclose(nafp);
     }
 
index 48a15c8..b688f37 100644 (file)
@@ -1285,7 +1285,7 @@ copy_old_one(oafp, nafp, hdr)
     LzHeader       *hdr;
 {
     if (noexec) {
-        fseek(oafp, hdr->header_size + hdr->packed_size, SEEK_CUR);
+        fseeko(oafp, hdr->header_size + hdr->packed_size, SEEK_CUR);
     }
     else {
         reading_filename = archive_name;
index 83f66b3..452ded1 100644 (file)
@@ -443,13 +443,13 @@ cmd_extract()
     /* extract each files */
     while (get_header(afp, &hdr)) {
         if (need_file(hdr.name)) {
-            pos = ftell(afp);
+            pos = ftello(afp);
             read_size = extract_one(afp, &hdr);
             if (read_size != hdr.packed_size) {
                 /* when error occurred in extract_one(), should adjust
                    point of file stream */
                 if (pos != -1 && afp != stdin)
-                    fseek(afp, pos + hdr.packed_size - read_size, SEEK_SET);
+                    fseeko(afp, pos + hdr.packed_size - read_size, SEEK_SET);
                 else {
                     size_t i = hdr.packed_size - read_size;
                     while (i--) fgetc(afp);
@@ -457,7 +457,7 @@ cmd_extract()
             }
         } else {
             if (afp != stdin)
-                fseek(afp, hdr.packed_size, SEEK_CUR);
+                fseeko(afp, hdr.packed_size, SEEK_CUR);
             else {
                 size_t i = hdr.packed_size;
                 while (i--) fgetc(afp);
index b1733ab..52d9010 100644 (file)
@@ -338,7 +338,7 @@ cmd_list()
         }
 
         if (afp != stdin)
-            fseek(afp, hdr.packed_size, SEEK_CUR);
+            fseeko(afp, hdr.packed_size, SEEK_CUR);
         else {
             i = hdr.packed_size;
             while (i--)