Re: getpagesize.h vs sys/param.h

Paul Eggert <[email protected]> Fri, 22 Oct 2004 15:27:23 -0700
Newsgroups gmane.comp.lib.gnulib.bugs,gmane.comp.version-control.cvs.bugs
Message-ID <[email protected]>
"Mark D. Baushke" <[email protected]> writes:

>  +#if !defined (getpagesize)
>  +#  define getpagesize() 4096  /* Just punt and use reasonable value */
>  +#endif

I'm leery of this sort of approach, as it many cases it's important to
get the pagesize exactly right.

I installed this change instead: it is safe, and allows the caller to
decide what to do if !HAVE_GETPAGSZIE && !defined getpagesize.
Admittedly this is not as nice.

2004-10-22  Paul Eggert  <[email protected]>

	* lib/getpagesize.c (getpagesize): Don't assume <sys/param.h> exists.
	It's now the caller's responsibility to handle the case where
	!HAVE_GETPAGESIZE && !defined getpagesize.
	* m4/getpagesize.m4 (gl_GETPAGESIZE): Check for <sys/param.h>.

Index: lib/getpagesize.h
===================================================================
RCS file: /cvsroot/gnulib/gnulib/lib/getpagesize.h,v
retrieving revision 1.6
diff -p -u -r1.6 getpagesize.h
--- lib/getpagesize.h	4 Oct 2004 04:18:46 -0000	1.6
+++ lib/getpagesize.h	22 Oct 2004 22:25:17 -0000
@@ -1,5 +1,5 @@
 /* Emulate getpagesize on systems that lack it.
-   Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2000, 2004 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -44,7 +44,7 @@
 # endif
 #endif
 
-#ifndef getpagesize
+#if !defined getpagesize && HAVE_SYS_PARAM_H
 # include <sys/param.h>
 # ifdef EXEC_PAGESIZE
 #  define getpagesize() EXEC_PAGESIZE
Index: m4/getpagesize.m4
===================================================================
RCS file: /cvsroot/gnulib/gnulib/m4/getpagesize.m4,v
retrieving revision 1.1
diff -p -u -r1.1 getpagesize.m4
--- m4/getpagesize.m4	31 Dec 2002 13:42:06 -0000	1.1
+++ m4/getpagesize.m4	22 Oct 2004 22:25:17 -0000
@@ -1,5 +1,5 @@
-# getpagesize.m4 serial 1
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
+# getpagesize.m4 serial 2
+dnl Copyright (C) 2002, 2004 Free Software Foundation, Inc.
 dnl This file is free software, distributed under the terms of the GNU
 dnl General Public License.  As a special exception to the GNU General
 dnl Public License, this file may be distributed as part of a program
@@ -9,7 +9,7 @@ dnl the same distribution terms as the r
 AC_DEFUN([gl_GETPAGESIZE],
 [
   dnl Prerequisites of lib/getpagesize.h.
-  AC_CHECK_HEADERS_ONCE(unistd.h)
+  AC_CHECK_HEADERS_ONCE(sys/param.h unistd.h)
   AC_CHECK_HEADERS(OS.h)
   AC_CHECK_FUNCS(getpagesize)
 ])