Add erand48() to the set of functions supported by our src/port/ library,
and extend configure to test for it properly instead of hard-wiring an assumption that everybody but Windows has the rand48 functions. (We do cheat to the extent of assuming that probing for erand48 will do for the entire rand48 family.) erand48() is unused as of this commit, but a followon patch will cause GEQO to depend on it. Andres Freund, additional hacking by Tom
This commit is contained in:
parent
fe1cc1e730
commit
c43feefa80
9
configure
vendored
9
configure
vendored
@ -18594,7 +18594,8 @@ LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
|
||||
|
||||
|
||||
|
||||
for ac_func in crypt getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul
|
||||
|
||||
for ac_func in crypt erand48 getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul
|
||||
do
|
||||
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
|
||||
{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
|
||||
@ -19207,12 +19208,6 @@ case " $LIBOBJS " in
|
||||
;;
|
||||
esac
|
||||
|
||||
case " $LIBOBJS " in
|
||||
*" rand.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS rand.$ac_objext"
|
||||
;;
|
||||
esac
|
||||
|
||||
case " $LIBOBJS " in
|
||||
*" win32env.$ac_objext "* ) ;;
|
||||
*) LIBOBJS="$LIBOBJS win32env.$ac_objext"
|
||||
|
@ -1,5 +1,5 @@
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
dnl $PostgreSQL: pgsql/configure.in,v 1.604 2009/07/02 18:55:40 petere Exp $
|
||||
dnl $PostgreSQL: pgsql/configure.in,v 1.605 2009/07/16 17:43:52 tgl Exp $
|
||||
dnl
|
||||
dnl Developers, please strive to achieve this order:
|
||||
dnl
|
||||
@ -1249,7 +1249,7 @@ fi
|
||||
pgac_save_LIBS="$LIBS"
|
||||
LIBS=`echo "$LIBS" | sed -e 's/-ledit//g' -e 's/-lreadline//g'`
|
||||
|
||||
AC_REPLACE_FUNCS([crypt getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul])
|
||||
AC_REPLACE_FUNCS([crypt erand48 getopt getrusage inet_aton random rint srandom strdup strerror strlcat strlcpy strtol strtoul])
|
||||
|
||||
case $host_os in
|
||||
|
||||
@ -1294,7 +1294,6 @@ if test "$PORTNAME" = "win32"; then
|
||||
AC_REPLACE_FUNCS(gettimeofday)
|
||||
AC_LIBOBJ(kill)
|
||||
AC_LIBOBJ(open)
|
||||
AC_LIBOBJ(rand)
|
||||
AC_LIBOBJ(win32env)
|
||||
AC_LIBOBJ(win32error)
|
||||
AC_DEFINE([HAVE_SYMLINK], 1,
|
||||
|
@ -137,6 +137,9 @@
|
||||
/* Define to 1 if you have the <editline/readline.h> header file. */
|
||||
#undef HAVE_EDITLINE_READLINE_H
|
||||
|
||||
/* Define to 1 if you have the `erand48' function. */
|
||||
#undef HAVE_ERAND48
|
||||
|
||||
/* Define to 1 if you have the `ERR_set_mark' function. */
|
||||
#undef HAVE_ERR_SET_MARK
|
||||
|
||||
|
@ -6,7 +6,7 @@
|
||||
* Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group
|
||||
* Portions Copyright (c) 1994, Regents of the University of California
|
||||
*
|
||||
* $PostgreSQL: pgsql/src/include/port.h,v 1.125 2009/06/11 14:49:08 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/include/port.h,v 1.126 2009/07/16 17:43:52 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -316,10 +316,6 @@ extern FILE *pgwin32_fopen(const char *, const char *);
|
||||
#define popen(a,b) _popen(a,b)
|
||||
#define pclose(a) _pclose(a)
|
||||
|
||||
/* Missing rand functions */
|
||||
extern long lrand48(void);
|
||||
extern void srand48(long seed);
|
||||
|
||||
/* New versions of MingW have gettimeofday, old mingw and msvc don't */
|
||||
#ifndef HAVE_GETTIMEOFDAY
|
||||
/* Last parameter not used */
|
||||
@ -351,6 +347,13 @@ extern off_t ftello(FILE *stream);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_ERAND48
|
||||
/* we assume all of these are present or missing together */
|
||||
extern double erand48(unsigned short xseed[3]);
|
||||
extern long lrand48(void);
|
||||
extern void srand48(long seed);
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_FSEEKO
|
||||
#define fseeko(a, b, c) fseek(a, b, c)
|
||||
#define ftello(a) ftell(a)
|
||||
|
@ -1,16 +1,13 @@
|
||||
/*
|
||||
* $PostgreSQL: pgsql/src/port/rand.c,v 1.6 2009/06/11 14:49:15 momjian Exp $
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
* erand48.c
|
||||
*
|
||||
* This file supplies versions of erand48(), lrand48(), and srand48()
|
||||
* for machines that lack them. (These are all the members of the drand48
|
||||
* family that Postgres currently requires. We name the file after erand48
|
||||
* because that is the one that configure tests for.)
|
||||
*
|
||||
* rand.c
|
||||
* Missing rand implementations for Win32
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#include "c.h"
|
||||
|
||||
/*
|
||||
* Copyright (c) 1993 Martin Birgmeier
|
||||
* All rights reserved.
|
||||
*
|
||||
@ -21,7 +18,17 @@
|
||||
* This software is provided ``as is'', and comes with no warranties
|
||||
* of any kind. I shall in no event be liable for anything that happens
|
||||
* to anyone/anything when using this software.
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/port/erand48.c,v 1.1 2009/07/16 17:43:52 tgl Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "c.h"
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#define RAND48_SEED_0 (0x330e)
|
||||
#define RAND48_SEED_1 (0xabcd)
|
||||
#define RAND48_SEED_2 (0x1234)
|
||||
@ -30,17 +37,18 @@
|
||||
#define RAND48_MULT_2 (0x0005)
|
||||
#define RAND48_ADD (0x000b)
|
||||
|
||||
unsigned short _rand48_seed[3] = {
|
||||
static unsigned short _rand48_seed[3] = {
|
||||
RAND48_SEED_0,
|
||||
RAND48_SEED_1,
|
||||
RAND48_SEED_2
|
||||
};
|
||||
unsigned short _rand48_mult[3] = {
|
||||
static unsigned short _rand48_mult[3] = {
|
||||
RAND48_MULT_0,
|
||||
RAND48_MULT_1,
|
||||
RAND48_MULT_2
|
||||
};
|
||||
unsigned short _rand48_add = RAND48_ADD;
|
||||
static unsigned short _rand48_add = RAND48_ADD;
|
||||
|
||||
|
||||
static void
|
||||
_dorand48(unsigned short xseed[3])
|
||||
@ -62,6 +70,16 @@ _dorand48(unsigned short xseed[3])
|
||||
xseed[2] = (unsigned short) accu;
|
||||
}
|
||||
|
||||
|
||||
double
|
||||
erand48(unsigned short xseed[3])
|
||||
{
|
||||
_dorand48(xseed);
|
||||
return ldexp((double) xseed[0], -48) +
|
||||
ldexp((double) xseed[1], -32) +
|
||||
ldexp((double) xseed[2], -16);
|
||||
}
|
||||
|
||||
long
|
||||
lrand48(void)
|
||||
{
|
@ -3,7 +3,7 @@ package Mkvcbuild;
|
||||
#
|
||||
# Package that generates build files for msvc build
|
||||
#
|
||||
# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.40 2009/06/05 18:29:56 adunstan Exp $
|
||||
# $PostgreSQL: pgsql/src/tools/msvc/Mkvcbuild.pm,v 1.41 2009/07/16 17:43:52 tgl Exp $
|
||||
#
|
||||
use Carp;
|
||||
use Win32;
|
||||
@ -44,7 +44,7 @@ sub mkvcbuild
|
||||
|
||||
our @pgportfiles = qw(
|
||||
chklocale.c crypt.c fseeko.c getrusage.c inet_aton.c random.c srandom.c
|
||||
getaddrinfo.c gettimeofday.c kill.c open.c rand.c
|
||||
getaddrinfo.c gettimeofday.c kill.c open.c erand48.c
|
||||
snprintf.c strlcat.c strlcpy.c copydir.c dirmod.c exec.c noblock.c path.c pipe.c
|
||||
pgsleep.c pgstrcasecmp.c qsort.c qsort_arg.c sprompt.c thread.c
|
||||
getopt.c getopt_long.c dirent.c rint.c win32env.c win32error.c);
|
||||
|
Loading…
Reference in New Issue
Block a user