OSDN Git Service

* src/lhadd.c (add_one): Use chsize() if system does not have
authorarai <arai@6a8cc165-1e22-0410-a132-eb4e3f353aba>
Fri, 13 Sep 2002 20:39:23 +0000 (20:39 +0000)
committerarai <arai@6a8cc165-1e22-0410-a132-eb4e3f353aba>
Fri, 13 Sep 2002 20:39:23 +0000 (20:39 +0000)
ftruncate(2). (For MinGW)

* configure.ac: ditto.

* config.h.in: ditto.

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

config.h.in
configure.ac
src/lhadd.c

index 4dff470..c513833 100644 (file)
@@ -9,6 +9,9 @@
 /* Define to 1 if the 2nd argument of gettimeofday() is effective. */
 #undef GETTIMEOFDAY_HAS_2ND_ARG
 
+/* Define to 1 if you have the `chsize' function. */
+#undef HAVE_CHSIZE
+
 /* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
    */
 #undef HAVE_DIRENT_H
index efbd07a..0f2d561 100644 (file)
@@ -58,7 +58,7 @@ AC_FUNC_FORK
 AC_FUNC_UTIME_NULL
 AC_CHECK_FUNCS(strchr strdup memcpy memset memmove strcasecmp)
 AC_CHECK_FUNCS(mktime timelocal tzset ftime gettimeofday utime)
-AC_CHECK_FUNCS(mkdir rmdir ftruncate lchown mkstemp link)
+AC_CHECK_FUNCS(mkdir rmdir ftruncate chsize lchown mkstemp link)
 AC_CHECK_FUNCS(getpwuid getgrgid getpwnam getgrnam)
 AC_CHECK_FUNCS(iconv)
 AC_REPLACE_FUNCS(vsnprintf)
index 369d91a..8199a4d 100644 (file)
@@ -56,7 +56,13 @@ add_one(fp, nafp, hdr)
                fflush(nafp);
                next_pos = ftell(nafp);
 #if HAVE_FTRUNCATE
-               ftruncate(fileno(nafp), next_pos);
+               if (ftruncate(fileno(nafp), next_pos) == -1)
+            error("cannot truncate archive");
+#elif HAVE_CHSIZE
+        if (chsize(fileno(nafp), next_pos) == -1)
+            error("cannot truncate archive");
+#else
+        CAUSE COMPILE ERROR
 #endif
                memcpy(hdr->method, LZHUFF0_METHOD, METHOD_TYPE_STORAGE);
        }