svn commit: samba r18505 - in branches/SAMBA_4_0/source/lib/replace: .

metze at samba.org metze at samba.org
Thu Sep 14 08:26:42 GMT 2006


Author: metze
Date: 2006-09-14 08:26:41 +0000 (Thu, 14 Sep 2006)
New Revision: 18505

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18505

Log:
add configure checks for telldir() and seekdir()

telldir() is different on older OpenBSD versions
seekdir() is different Tru64

tridge: OpenBSD seems to like this replacement:-)
        while MAC OS 10 gets 134 runtime error:-(
	lets wait what Tru64 will give

metze

Modified:
   branches/SAMBA_4_0/source/lib/replace/libreplace_macros.m4
   branches/SAMBA_4_0/source/lib/replace/repdir.m4
   branches/SAMBA_4_0/source/lib/replace/repdir_getdirentries.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/replace/libreplace_macros.m4
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/libreplace_macros.m4	2006-09-14 07:57:49 UTC (rev 18504)
+++ branches/SAMBA_4_0/source/lib/replace/libreplace_macros.m4	2006-09-14 08:26:41 UTC (rev 18505)
@@ -268,3 +268,23 @@
 dnl in autoconf 2.59, so define AS_HELP_STRING to be AC_HELP_STRING unless it is already
 dnl defined.
 m4_ifdef([AS_HELP_STRING], , [m4_define([AS_HELP_STRING], m4_defn([AC_HELP_STRING]))])
+
+dnl check if the prototype in the header matches the given one
+dnl AC_VERIFY_C_PROTOTYPE(prototype,functionbody,[IF-TRUE].[IF-FALSE],[extraheaders])
+AC_DEFUN(AC_VERIFY_C_PROTOTYPE,
+[AC_CACHE_CHECK([for prototype $1], AS_TR_SH([ac_cv_c_prototype_$1]),
+	AC_COMPILE_IFELSE([
+		AC_INCLUDES_DEFAULT
+		$5
+		$1
+		{
+			$2
+		}
+	],[
+		AS_TR_SH([ac_cv_c_prototype_$1])=yes
+		$3
+	],[
+		AS_TR_SH([ac_cv_c_prototype_$1])=no
+		$4
+	])
+)])

Modified: branches/SAMBA_4_0/source/lib/replace/repdir.m4
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/repdir.m4	2006-09-14 07:57:49 UTC (rev 18504)
+++ branches/SAMBA_4_0/source/lib/replace/repdir.m4	2006-09-14 08:26:41 UTC (rev 18505)
@@ -14,7 +14,7 @@
 AC_CHECK_FUNCS(getdents)
 AC_CACHE_CHECK([for replacing readdir using getdents()],libreplace_READDIR_GETDENTS,[
 	AC_TRY_RUN([
-#include "confdefs.h"
+#define _LIBREPLACE_REPLACE_H
 #include "$libreplacedir/repdir_getdents.c"
 #define test_readdir_os2_delete main
 #include "$libreplacedir/test/os2_delete.c"],
@@ -34,9 +34,26 @@
 #
 if test x"$libreplace_READDIR_NEEDED" = x"yes"; then
 AC_CHECK_FUNCS(getdirentries)
+AC_VERIFY_C_PROTOTYPE([long telldir(const DIR *dir)],
+	[
+	return 0;
+	],[
+	AC_DEFINE(TELLDIR_TAKES_CONST_DIR, 1, [Whether telldir takes a const pointer])
+	],[],[
+	#include <dirent.h>
+	])
+
+AC_VERIFY_C_PROTOTYPE([int seekdir(DIR *dir, long ofs)],
+	[
+	return 0;
+	],[
+	AC_DEFINE(SEEKDIR_RETURNS_INT, 1, [Whether seekdir returns an int])
+	],[],[
+	#include <dirent.h>
+	])
 AC_CACHE_CHECK([for replacing readdir using getdirentries()],libreplace_READDIR_GETDIRENTRIES,[
 	AC_TRY_RUN([
-#include "confdefs.h"
+#define _LIBREPLACE_REPLACE_H
 #include "$libreplacedir/repdir_getdirentries.c"
 #define test_readdir_os2_delete main
 #include "$libreplacedir/test/os2_delete.c"],

Modified: branches/SAMBA_4_0/source/lib/replace/repdir_getdirentries.c
===================================================================
--- branches/SAMBA_4_0/source/lib/replace/repdir_getdirentries.c	2006-09-14 07:57:49 UTC (rev 18504)
+++ branches/SAMBA_4_0/source/lib/replace/repdir_getdirentries.c	2006-09-14 08:26:41 UTC (rev 18505)
@@ -48,6 +48,7 @@
   well. Contact the author.
 */
 
+#include "replace.h"
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <unistd.h>
@@ -104,8 +105,6 @@
 	return de;
 }
 
-#define TELLDIR_TAKES_CONST_DIR
-
 #ifdef TELLDIR_TAKES_CONST_DIR
 long telldir(const DIR *dir)
 #else
@@ -126,7 +125,11 @@
 	return d->seekpos + d->ofs;
 }
 
+#ifdef SEEKDIR_RETURNS_INT
+int seekdir(DIR *dir, long ofs)
+#else
 void seekdir(DIR *dir, long ofs)
+#endif
 {
 	struct dir_buf *d = (struct dir_buf *)dir;
 	long pos;
@@ -136,6 +139,9 @@
 	while (d->ofs < (ofs & (DIR_BUF_SIZE-1))) {
 		if (readdir(dir) == NULL) break;
 	}
+#ifdef SEEKDIR_RETURNS_INT
+	return -1;
+#endif
 }
 
 void rewinddir(DIR *dir)



More information about the samba-cvs mailing list