From: Ben Pfaff Date: Thu, 5 Jun 2025 20:18:02 +0000 (-0700) Subject: ext-array: Use fseeko64 instead of fseeko, if available. X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ec03db2eebaec84d55d4d2a756e0cede64e41c52;p=pspp ext-array: Use fseeko64 instead of fseeko, if available. --- diff --git a/configure.ac b/configure.ac index 40c972d884..74224b7d22 100644 --- a/configure.ac +++ b/configure.ac @@ -293,7 +293,7 @@ AC_C_INLINE AC_C_BIGENDIAN -AC_CHECK_FUNCS([__setfpucw fork execl isinf isnan finite getpid feholdexcept fpsetmask popen round]) +AC_CHECK_FUNCS([__setfpucw fork execl isinf isnan finite getpid feholdexcept fpsetmask popen round fseeko64]) AC_PROG_LN_S diff --git a/src/libpspp/ext-array.c b/src/libpspp/ext-array.c index c03d0c23c0..bb8b91ea21 100644 --- a/src/libpspp/ext-array.c +++ b/src/libpspp/ext-array.c @@ -36,6 +36,16 @@ #include "gettext.h" #define _(msgid) gettext (msgid) +/* fseeko() doesn't work properly on Mingw despite Gnulib, but fseeko64() does, + according to Egbert van der Es: + + https://lists.gnu.org/archive/html/bug-gnu-pspp/2025-05/msg00007.html + https://lists.gnu.org/archive/html/bug-gnu-pspp/2025-06/msg00001.html + https://lists.gnu.org/archive/html/bug-gnu-pspp/2025-06/msg00002.html */ +#if !HAVE_FSEEKO64 +#define fseeko64 fseeko +#endif + enum op { OP_WRITE, /* writing */ @@ -97,7 +107,7 @@ do_seek (const struct ext_array *ea_, off_t offset, enum op op) { if (ea->position == offset && ea->op == op) return true; - else if (fseeko (ea->file, offset, SEEK_SET) == 0) + else if (fseeko64 (ea->file, offset, SEEK_SET) == 0) { ea->position = offset; return true;