summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYann Droneaud <yann@droneaud.fr>2010-03-03 18:59:22 +0100
committerRainer Gerhards <rgerhards@adiscon.com>2010-03-04 09:01:04 +0100
commit71ffb32ab8a1847f746a298ad20f7dd8b40570a0 (patch)
treeefa254b62978215ef7622eb0a75b547c8efe5be7
parentcd8c6abcc8cea54924e55dffe820364ad98a40df (diff)
downloadrsyslog-71ffb32ab8a1847f746a298ad20f7dd8b40570a0.tar.gz
rsyslog-71ffb32ab8a1847f746a298ad20f7dd8b40570a0.tar.xz
rsyslog-71ffb32ab8a1847f746a298ad20f7dd8b40570a0.zip
Fix Large File Support (LFS) support (bug #182)
- _FILE_OFFSET_BITS must be defined before including any other system headers otherwise it does nothing. - Don't define it in rsyslog.h, let it be defined in config.h, and let ./configure script enable LFS since Autoconf provides a portable macro to enable LFS support : AC_SYS_LARGEFILE
-rw-r--r--configure.ac19
-rw-r--r--runtime/rsyslog.h9
-rw-r--r--tools/syslogd.c2
3 files changed, 7 insertions, 23 deletions
diff --git a/configure.ac b/configure.ac
index b3d84b59..d229915e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -152,19 +152,12 @@ AC_SUBST(moddirs)
# Large file support
-AC_ARG_ENABLE(largefile,
- [AS_HELP_STRING([--enable-largefile],[Enable large file support @<:@default=yes@:>@])],
- [case "${enableval}" in
- yes) enable_largefile="yes" ;;
- no) enable_largefile="no" ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --enable-largefile) ;;
- esac],
- [enable_largefile="yes"]
-)
-if test "$enable_largefile" = "no"; then
- AC_DEFINE(NOLARGEFILE, 1, [Defined when large file support is disabled.])
-fi
-
+# http://www.gnu.org/software/autoconf/manual/html_node/System-Services.html#index-AC_005fSYS_005fLARGEFILE-1028
+AC_SYS_LARGEFILE
+case "${enable_largefile}" in
+ no) ;;
+ *) enable_largefile="yes" ;;
+esac
# Regular expressions
AC_ARG_ENABLE(regexp,
diff --git a/runtime/rsyslog.h b/runtime/rsyslog.h
index 0f489a7f..8979893a 100644
--- a/runtime/rsyslog.h
+++ b/runtime/rsyslog.h
@@ -46,15 +46,6 @@
* # End Config Settings # *
* ############################################################# */
-#ifndef NOLARGEFILE
-# undef _LARGEFILE_SOURCE
-# undef _LARGEFILE64_SOURCE
-# undef _FILE_OFFSET_BITS
-# define _LARGEFILE_SOURCE
-# define _LARGEFILE64_SOURCE
-# define _FILE_OFFSET_BITS 64
-#endif
-
/* portability: not all platforms have these defines, so we
* define them here if they are missing. -- rgerhards, 2008-03-04
*/
diff --git a/tools/syslogd.c b/tools/syslogd.c
index ba1dbb18..64b23566 100644
--- a/tools/syslogd.c
+++ b/tools/syslogd.c
@@ -2770,7 +2770,7 @@ static void printVersion(void)
#else
printf("\tFEATURE_REGEXP:\t\t\t\tNo\n");
#endif
-#ifndef NOLARGEFILE
+#if defined(_LARGE_FILES) || (defined (_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS >= 64)
printf("\tFEATURE_LARGEFILE:\t\t\tYes\n");
#else
printf("\tFEATURE_LARGEFILE:\t\t\tNo\n");