]> source.dussan.org Git - rspamd.git/commitdiff
Use 64 bit offset while compiled in 32 bit mode.
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 27 Mar 2012 14:46:21 +0000 (18:46 +0400)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Tue, 27 Mar 2012 14:46:21 +0000 (18:46 +0400)
CMakeLists.txt
src/aio_event.c
src/aio_event.h

index 1ac5fded740730e0941c6128a2792e56528876c7..80045a4bb140f2bae7bb5eb2de8779689f01a5e9 100644 (file)
@@ -208,7 +208,9 @@ IF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
                SET(LOCALSTATES_PREFIX "/var/run/rspamd")
        ENDIF(NOT LOCALSTATES_PREFIX)
     ENDIF(CMAKE_INSTALL_PREFIX)
-    
+    IF(BUILD_CPU_MODE STREQUAL "32")
+       SET(CMAKE_C_FLAGS  "-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE ${CMAKE_C_FLAGS}")
+    ENDIF(BUILD_CPU_MODE STREQUAL "32")
     # Workaround with architecture specific includes
     IF(IS_DIRECTORY "/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/") 
        INCLUDE_DIRECTORIES("/usr/include/${CMAKE_SYSTEM_PROCESSOR}-linux-gnu/")
index e11b7ec8335c5ef75e105b5c59e12ec7f7482866..8608e9d4c1a8361c42d8bcfba5518a93637a0da7 100644 (file)
@@ -307,7 +307,7 @@ rspamd_aio_open (struct aio_context *ctx, const gchar *path, int flags)
  * Asynchronous read of file
  */
 gint
-rspamd_aio_read (gint fd, gpointer buf, gsize len, off_t offset, struct aio_context *ctx, rspamd_aio_cb cb, gpointer ud)
+rspamd_aio_read (gint fd, gpointer buf, gsize len, guint64 offset, struct aio_context *ctx, rspamd_aio_cb cb, gpointer ud)
 {
        struct io_cbdata                                                        *cbdata;
        gint                                                                             r = -1;
@@ -354,7 +354,11 @@ rspamd_aio_read (gint fd, gpointer buf, gsize len, off_t offset, struct aio_cont
        else {
                /* Blocking variant */
 blocking:
+#ifdef _LARGEFILE64_SOURCE
+               r = lseek64 (fd, offset, SEEK_SET);
+#else
                r = lseek (fd, offset, SEEK_SET);
+#endif
                if (r > 0) {
                        r = read (fd, buf, len);
                        if (r >= 0) {
@@ -373,7 +377,7 @@ blocking:
  * Asynchronous write of file
  */
 gint
-rspamd_aio_write (gint fd, gpointer buf, gsize len, off_t offset, struct aio_context *ctx, rspamd_aio_cb cb, gpointer ud)
+rspamd_aio_write (gint fd, gpointer buf, gsize len, guint64 offset, struct aio_context *ctx, rspamd_aio_cb cb, gpointer ud)
 {
        struct io_cbdata                                                        *cbdata;
        gint                                                                             r = -1;
@@ -424,7 +428,11 @@ rspamd_aio_write (gint fd, gpointer buf, gsize len, off_t offset, struct aio_con
        else {
                /* Blocking variant */
 blocking:
+#ifdef _LARGEFILE64_SOURCE
+               r = lseek64 (fd, offset, SEEK_SET);
+#else
                r = lseek (fd, offset, SEEK_SET);
+#endif
                if (r > 0) {
                        r = write (fd, buf, len);
                        if (r >= 0) {
index 7fcb69469d04e75f41e53b2c7cb9e475e988fdd1..d51d02b3b6cf7f37f4df3a5002ded88d24cc754f 100644 (file)
@@ -50,13 +50,13 @@ gint rspamd_aio_open (struct aio_context *ctx, const gchar *path, int flags);
 /**
  * Asynchronous read of file
  */
-gint rspamd_aio_read (gint fd, gpointer buf, gsize len, off_t offset,
+gint rspamd_aio_read (gint fd, gpointer buf, gsize len, guint64 offset,
                struct aio_context *ctx, rspamd_aio_cb cb, gpointer ud);
 
 /**
  * Asynchronous write of file
  */
-gint rspamd_aio_write (gint fd, gpointer buf, gsize len, off_t offset,
+gint rspamd_aio_write (gint fd, gpointer buf, gsize len, guint64 offset,
                struct aio_context *ctx, rspamd_aio_cb cb, gpointer ud);
 
 /**