Skip to content

Commit

Permalink
Fix up lame idea of not using autoconf to determine if platform has s…
Browse files Browse the repository at this point in the history
…candir().

Should fix buildfarm failures.
  • Loading branch information
tglsfdc committed May 13, 2010
1 parent 2a73ee5 commit 382ff21
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 17 deletions.
3 changes: 2 additions & 1 deletion configure
Expand Up @@ -18494,7 +18494,8 @@ fi



for ac_func in cbrt dlopen fcvt fdatasync getifaddrs getpeereid getpeerucred getrlimit memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs

for ac_func in cbrt dlopen fcvt fdatasync getifaddrs getpeereid getpeerucred getrlimit memmove poll pstat readlink scandir setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs
do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
Expand Down
4 changes: 2 additions & 2 deletions configure.in
@@ -1,5 +1,5 @@
dnl Process this file with autoconf to produce a configure script.
dnl $PostgreSQL: pgsql/configure.in,v 1.626 2010/04/30 03:16:58 scrappy Exp $
dnl $PostgreSQL: pgsql/configure.in,v 1.627 2010/05/13 22:07:42 tgl Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
Expand Down Expand Up @@ -1167,7 +1167,7 @@ PGAC_VAR_INT_TIMEZONE
AC_FUNC_ACCEPT_ARGTYPES
PGAC_FUNC_GETTIMEOFDAY_1ARG

AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getifaddrs getpeereid getpeerucred getrlimit memmove poll pstat readlink setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs])
AC_CHECK_FUNCS([cbrt dlopen fcvt fdatasync getifaddrs getpeereid getpeerucred getrlimit memmove poll pstat readlink scandir setproctitle setsid sigprocmask symlink sysconf towlower utime utimes waitpid wcstombs])

AC_REPLACE_FUNCS(fseeko)
case $host_os in
Expand Down
26 changes: 12 additions & 14 deletions contrib/pg_upgrade/file.c
Expand Up @@ -33,7 +33,7 @@ static int win32_pghardlink(const char *src, const char *dst);
static int copy_dir(const char *from, const char *to, bool force);
#endif

#if defined(sun) || defined(WIN32)
#ifndef HAVE_SCANDIR
static int pg_scandir_internal(migratorContext *ctx, const char *dirname,
struct dirent *** namelist,
int (*selector) (const struct dirent *));
Expand Down Expand Up @@ -235,26 +235,25 @@ copy_file(const char *srcfile, const char *dstfile, bool force)
* pg_scandir()
*
* Wrapper for portable scandir functionality
*
*/
int
pg_scandir(migratorContext *ctx, const char *dirname,
struct dirent ***namelist,
int (*selector) (const struct dirent *))
{
#if defined(sun) || defined(WIN32)
#ifndef HAVE_SCANDIR
return pg_scandir_internal(ctx, dirname, namelist, selector);

/*
* scandir() is originally from BSD 4.3, which had the third argument as
* non-const. Linux and other C libraries have updated it to use a const.
* http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2005-12/msg00214.html
*
* Here we try to guess which libc's need const, and which don't. The net
* goal here is to try to supress a compiler warning due to a prototype
* goal here is to try to suppress a compiler warning due to a prototype
* mismatch of const usage. Ideally we would do this via autoconf, but
* Postgres's autoconf doesn't test for this and it is overkill to add
* autoconf just for this. scandir() is from BSD 4.3, which had the third
* argument as non-const. Linux and other C libraries have updated it to
* use a const.
* http://unix.derkeiler.com/Mailing-Lists/FreeBSD/questions/2005-12/msg002
* 14.html
* autoconf doesn't have a suitable builtin test and it seems overkill
* to add one just to avoid a warning.
*/
#elif defined(freebsd) || defined(bsdi) || defined(darwin) || defined(openbsd)
/* no const */
Expand All @@ -266,19 +265,18 @@ pg_scandir(migratorContext *ctx, const char *dirname,
}


#if defined(sun) || defined(WIN32)
#ifndef HAVE_SCANDIR
/*
* pg_scandir_internal()
*
* We'll provide our own scandir function for sun, since it is not
* part of the standard system library.
* Implement our own scandir() on platforms that don't have it.
*
* Returns count of files that meet the selection criteria coded in
* the function pointed to by selector. Creates an array of pointers
* to dirent structures. Address of array returned in namelist.
*
* Note that the number of dirent structures needed is dynamically
* allocated using realloc. Realloc can be inneficient if invoked a
* allocated using realloc. Realloc can be inefficient if invoked a
* large number of times. Its use in pg_upgrade is to find filesystem
* filenames that have extended beyond the initial segment (file.1,
* .2, etc.) and should therefore be invoked a small number of times.
Expand Down
3 changes: 3 additions & 0 deletions src/include/pg_config.h.in
Expand Up @@ -409,6 +409,9 @@
/* Define to 1 if you have the `rl_filename_completion_function' function. */
#undef HAVE_RL_FILENAME_COMPLETION_FUNCTION

/* Define to 1 if you have the `scandir' function. */
#undef HAVE_SCANDIR

/* Define to 1 if you have the <security/pam_appl.h> header file. */
#undef HAVE_SECURITY_PAM_APPL_H

Expand Down

0 comments on commit 382ff21

Please sign in to comment.