From: Marc G. Fournier Date: Wed, 19 Mar 1997 02:37:42 +0000 (+0000) Subject: Add a check for strerr, and add in D'Arcy's strerror() code in case not X-Git-Tag: REL6_1~455 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ffd26d8eb11c28bdca0fc76290cd5b431be46f5;p=postgresql Add a check for strerr, and add in D'Arcy's strerror() code in case not found --- diff --git a/src/backend/port/Makefile.in b/src/backend/port/Makefile.in index a0f281a538..a2d23188ce 100644 --- a/src/backend/port/Makefile.in +++ b/src/backend/port/Makefile.in @@ -19,7 +19,7 @@ # be converted to Method 2. # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/backend/port/Attic/Makefile.in,v 1.2 1997/02/28 10:57:47 momjian Exp $ +# $Header: /cvsroot/pgsql/src/backend/port/Attic/Makefile.in,v 1.3 1997/03/19 02:33:29 scrappy Exp $ # #------------------------------------------------------------------------- @@ -31,7 +31,7 @@ ifndef PORTNAME @false else -OBJS = $(PORTNAME)/SUBSYS.o @INET_ATON@ +OBJS = $(PORTNAME)/SUBSYS.o @INET_ATON@ @STRERROR@ all: submake SUBSYS.o diff --git a/src/backend/port/strerror.c b/src/backend/port/strerror.c new file mode 100644 index 0000000000..7ec842e366 --- /dev/null +++ b/src/backend/port/strerror.c @@ -0,0 +1,30 @@ +/* + * strerror - map error number to descriptive string + * + * This version is obviously somewhat Unix-specific. + * + * based on code by Henry Spencer + * modified for ANSI by D'Arcy J.M. Cain + */ + +#include +#include +#include + +extern const char * const sys_errlist[]; +extern int sys_nerr; + +const char * +strerror(int errnum) +{ + static char buf[24]; + + if (errnum < 0 || errnum > sys_nerr) + { + sprintf(buf, "unknown error %d", errnum); + return(buf); + } + + return(sys_errlist[errnum]); +} + diff --git a/src/configure b/src/configure index af79bfc18d..51d6a8c729 100755 --- a/src/configure +++ b/src/configure @@ -2955,12 +2955,62 @@ else INET_ATON='inet_aton.o' fi +echo $ac_n "checking for strerror""... $ac_c" 1>&6 +if eval "test \"`echo '$''{'ac_cv_func_strerror'+set}'`\" = set"; then + echo $ac_n "(cached) $ac_c" 1>&6 +else + cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char strerror(); + +int main() { return 0; } +int t() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_strerror) || defined (__stub___strerror) +choke me +#else +strerror(); +#endif + +; return 0; } +EOF +if { (eval echo configure:2988: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then + rm -rf conftest* + eval "ac_cv_func_strerror=yes" +else + rm -rf conftest* + eval "ac_cv_func_strerror=no" +fi +rm -f conftest* + +fi +if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then + echo "$ac_t""yes" 1>&6 + cat >> confdefs.h <<\EOF +#define HAVE_STRERROR 1 +EOF + +else + echo "$ac_t""no" 1>&6 +STRERROR='strerror.o' +fi + echo $ac_n "checking for strdup""... $ac_c" 1>&6 if eval "test \"`echo '$''{'ac_cv_func_strdup'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; }; then +if { (eval echo configure:3038: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then rm -rf conftest* eval "ac_cv_func_strdup=yes" else @@ -3012,7 +3062,7 @@ if eval "test \"`echo '$''{'ac_cv_func_cbrt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; }; then +if { (eval echo configure:3090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then rm -rf conftest* eval "ac_cv_func_cbrt=yes" else @@ -3062,7 +3112,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; }; then +if { (eval echo configure:3128: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3102,7 +3152,7 @@ if eval "test \"`echo '$''{'ac_cv_func_rint'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; }; then +if { (eval echo configure:3180: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then rm -rf conftest* eval "ac_cv_func_rint=yes" else @@ -3152,7 +3202,7 @@ else ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; }; then +if { (eval echo configure:3218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3545,4 +3595,4 @@ EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - + diff --git a/src/configure.in b/src/configure.in index 9b243e5cc5..d5d18f07db 100644 --- a/src/configure.in +++ b/src/configure.in @@ -162,10 +162,11 @@ AC_FUNC_VPRINTF AC_CHECK_FUNCS(isinf tzset getrusage vfork memmove sigsetjmp kill sysconf) AC_CHECK_FUNCS(sigprocmask waitpid setsid) AC_CHECK_FUNC(inet_aton, AC_DEFINE(HAVE_INET_ATON), INET_ATON='inet_aton.o') +AC_CHECK_FUNC(strerror, AC_DEFINE(HAVE_STRERROR), STRERROR='strerror.o') AC_CHECK_FUNC(strdup, AC_DEFINE(HAVE_STRDUP), STRDUP='../../utils/strdup.o') AC_SUBST(STRDUP) AC_SUBST(INET_ATON) AC_CHECK_FUNC(cbrt, AC_DEFINE(HAVE_CBRT), AC_CHECK_LIB(m, cbrt, AC_DEFINE(HAVE_CBRT))) AC_CHECK_FUNC(rint, AC_DEFINE(HAVE_RINT), AC_CHECK_LIB(m, rint, AC_DEFINE(HAVE_RINT))) -AC_OUTPUT(GNUmakefile Makefile.global backend/port/Makefile bin/psql/Makefile bin/pg_dump/Makefile) +AC_OUTPUT(GNUmakefile Makefile.global backend/port/Makefile bin/psql/Makefile bin/pg_dump/Makefile) diff --git a/src/include/config.h.in b/src/include/config.h.in index 99973dde07..80d42fdd1a 100644 --- a/src/include/config.h.in +++ b/src/include/config.h.in @@ -47,9 +47,12 @@ /* Set to 1 if you have cbrt() */ #undef HAVE_CBRT -/* Set to 1 if you have cbrt() */ +/* Set to 1 if you have inet_aton() */ #undef HAVE_INET_ATON +/* Set to 1 if you have strerror() */ +#undef HAVE_STRERROR + /* Set to 1 if you have rint() */ #undef HAVE_RINT