Răsfoiți Sursa

Removed llseek().

Use Linux's off64_t support instead.
Ryan C. Gordon 14 ani în urmă
părinte
comite
1030e5d5ec
3 a modificat fișierele cu 7 adăugiri și 28 ștergeri
  1. 0 2
      CMakeLists.txt
  2. 4 0
      src/physfs_internal.h
  3. 3 26
      src/platform_posix.c

+ 0 - 2
CMakeLists.txt

@@ -147,8 +147,6 @@ IF(UNIX)
         SET(PHYSFS_HAVE_THREAD_SUPPORT TRUE)
         SET(HAVE_PTHREAD_H TRUE)
     ELSE(BEOS)
-        # !!! FIXME
-        #  AC_DEFINE([PHYSFS_HAVE_LLSEEK], 1, [define if we have llseek])
         CHECK_INCLUDE_FILE(sys/ucred.h HAVE_UCRED_H)
         IF(HAVE_UCRED_H)
             ADD_DEFINITIONS(-DPHYSFS_HAVE_SYS_UCRED_H=1)

+ 4 - 0
src/physfs_internal.h

@@ -55,6 +55,10 @@ extern "C" {
 #   define inline __inline
 #endif
 
+#if defined(__linux__) && !defined(_FILE_OFFSET_BITS)
+#define _FILE_OFFSET_BITS 64
+#endif
+
 /*
  * Interface for small allocations. If you need a little scratch space for
  *  a throwaway buffer or string, use this. It will make small allocations

+ 3 - 26
src/platform_posix.c

@@ -24,10 +24,6 @@
 #include <pthread.h>
 #endif
 
-#ifdef PHYSFS_HAVE_LLSEEK
-#include <linux/unistd.h>
-#endif
-
 #include "physfs_internal.h"
 
 char *__PHYSFS_platformCopyEnvironmentVariable(const char *varname)
@@ -286,17 +282,7 @@ PHYSFS_sint64 __PHYSFS_platformWrite(void *opaque, const void *buffer,
 int __PHYSFS_platformSeek(void *opaque, PHYSFS_uint64 pos)
 {
     const int fd = *((int *) opaque);
-
-    #ifdef PHYSFS_HAVE_LLSEEK
-      unsigned long offset_high = ((pos >> 32) & 0xFFFFFFFF);
-      unsigned long offset_low = (pos & 0xFFFFFFFF);
-      loff_t retoffset;
-      int rc = llseek(fd, offset_high, offset_low, &retoffset, SEEK_SET);
-      BAIL_IF_MACRO(rc == -1, strerror(errno), 0);
-    #else
-      BAIL_IF_MACRO(lseek(fd, (int) pos, SEEK_SET) == -1, strerror(errno), 0);
-    #endif
-
+    BAIL_IF_MACRO(lseek(fd, (off_t) pos, SEEK_SET) == -1, strerror(errno), 0);
     return 1;
 } /* __PHYSFS_platformSeek */
 
@@ -305,17 +291,8 @@ PHYSFS_sint64 __PHYSFS_platformTell(void *opaque)
 {
     const int fd = *((int *) opaque);
     PHYSFS_sint64 retval;
-
-    #ifdef PHYSFS_HAVE_LLSEEK
-      loff_t retoffset;
-      int rc = llseek(fd, 0, &retoffset, SEEK_CUR);
-      BAIL_IF_MACRO(rc == -1, strerror(errno), -1);
-      retval = (PHYSFS_sint64) retoffset;
-    #else
-      retval = (PHYSFS_sint64) lseek(fd, 0, SEEK_CUR);
-      BAIL_IF_MACRO(retval == -1, strerror(errno), -1);
-    #endif
-
+    retval = (PHYSFS_sint64) lseek(fd, 0, SEEK_CUR);
+    BAIL_IF_MACRO(retval == -1, strerror(errno), -1);
     return retval;
 } /* __PHYSFS_platformTell */