Add memcmp() test and new memcmp.c file, for SunOS. Tested by Tatsuo.
This commit is contained in:
parent
960f6a5fdf
commit
8799d84603
@ -1,5 +1,5 @@
|
|||||||
# Macros that test various C library quirks
|
# Macros that test various C library quirks
|
||||||
# $Header: /cvsroot/pgsql/config/c-library.m4,v 1.9 2001/09/07 19:52:53 momjian Exp $
|
# $Header: /cvsroot/pgsql/config/c-library.m4,v 1.10 2001/12/20 21:23:05 momjian Exp $
|
||||||
|
|
||||||
|
|
||||||
# PGAC_VAR_INT_TIMEZONE
|
# PGAC_VAR_INT_TIMEZONE
|
||||||
@ -36,6 +36,30 @@ if test x"$pgac_cv_func_gettimeofday_1arg" = xyes ; then
|
|||||||
fi])# PGAC_FUNC_GETTIMEOFDAY_1ARG
|
fi])# PGAC_FUNC_GETTIMEOFDAY_1ARG
|
||||||
|
|
||||||
|
|
||||||
|
# PGAC_FUNC_MEMCMP
|
||||||
|
# -----------
|
||||||
|
# Check if memcmp() properly handles negative bytes and returns +/-.
|
||||||
|
# SunOS does not.
|
||||||
|
# AC_FUNC_MEMCMP
|
||||||
|
AC_DEFUN(PGAC_FUNC_MEMCMP,
|
||||||
|
[AC_CACHE_CHECK(for 8-bit clean memcmp, pgac_cv_func_memcmp_clean,
|
||||||
|
[AC_TRY_RUN([
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
char c0 = 0x40, c1 = 0x80, c2 = 0x81;
|
||||||
|
exit(memcmp(&c0, &c2, 1) < 0 && memcmp(&c1, &c2, 1) < 0 ? 0 : 1);
|
||||||
|
}
|
||||||
|
], pgac_cv_func_memcmp_clean=yes, pgac_cv_func_memcmp_clean=no,
|
||||||
|
pgac_cv_func_memcmp_clean=no)])
|
||||||
|
if test $pgac_cv_func_memcmp_clean = no ; then
|
||||||
|
MEMCMP=memcmp.o
|
||||||
|
else
|
||||||
|
MEMCMP=
|
||||||
|
fi
|
||||||
|
AC_SUBST(MEMCMP)dnl
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
# PGAC_UNION_SEMUN
|
# PGAC_UNION_SEMUN
|
||||||
# ----------------
|
# ----------------
|
||||||
# Check if `union semun' exists. Define HAVE_UNION_SEMUN if so.
|
# Check if `union semun' exists. Define HAVE_UNION_SEMUN if so.
|
||||||
|
@ -809,6 +809,9 @@ PGAC_VAR_INT_TIMEZONE
|
|||||||
AC_FUNC_ACCEPT_ARGTYPES
|
AC_FUNC_ACCEPT_ARGTYPES
|
||||||
PGAC_FUNC_GETTIMEOFDAY_1ARG
|
PGAC_FUNC_GETTIMEOFDAY_1ARG
|
||||||
|
|
||||||
|
# SunOS doesn't handle negative byte comparisons properly with +/- return
|
||||||
|
PGAC_FUNC_MEMCMP
|
||||||
|
|
||||||
AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
|
AC_CHECK_FUNCS([fcvt getopt_long memmove pstat setproctitle setsid sigprocmask sysconf waitpid dlopen fdatasync])
|
||||||
|
|
||||||
dnl Check whether <unistd.h> declares fdatasync().
|
dnl Check whether <unistd.h> declares fdatasync().
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
# -*-makefile-*-
|
# -*-makefile-*-
|
||||||
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.140 2001/10/13 15:24:23 tgl Exp $
|
# $Header: /cvsroot/pgsql/src/Makefile.global.in,v 1.141 2001/12/20 21:23:05 momjian Exp $
|
||||||
|
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# All PostgreSQL makefiles include this file and use the variables it sets,
|
# All PostgreSQL makefiles include this file and use the variables it sets,
|
||||||
@ -328,6 +328,7 @@ INET_ATON = @INET_ATON@
|
|||||||
STRERROR = @STRERROR@
|
STRERROR = @STRERROR@
|
||||||
SNPRINTF = @SNPRINTF@
|
SNPRINTF = @SNPRINTF@
|
||||||
STRDUP = @STRDUP@
|
STRDUP = @STRDUP@
|
||||||
|
MEMCMP = @MEMCMP@
|
||||||
STRTOUL = @STRTOUL@
|
STRTOUL = @STRTOUL@
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
# be converted to Method 2.
|
# be converted to Method 2.
|
||||||
#
|
#
|
||||||
# IDENTIFICATION
|
# IDENTIFICATION
|
||||||
# $Header: /cvsroot/pgsql/src/backend/port/Attic/Makefile.in,v 1.29 2001/05/08 19:38:57 petere Exp $
|
# $Header: /cvsroot/pgsql/src/backend/port/Attic/Makefile.in,v 1.30 2001/12/20 21:23:05 momjian Exp $
|
||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -22,7 +22,7 @@ top_builddir = ../../..
|
|||||||
include $(top_builddir)/src/Makefile.global
|
include $(top_builddir)/src/Makefile.global
|
||||||
|
|
||||||
OBJS = dynloader.o @INET_ATON@ @STRERROR@ @MISSING_RANDOM@ @SRANDOM@
|
OBJS = dynloader.o @INET_ATON@ @STRERROR@ @MISSING_RANDOM@ @SRANDOM@
|
||||||
OBJS+= @GETHOSTNAME@ @GETRUSAGE@ @STRCASECMP@ @TAS@ @ISINF@
|
OBJS+= @GETHOSTNAME@ @GETRUSAGE@ @MEMCMP@ @STRCASECMP@ @TAS@ @ISINF@
|
||||||
OBJS+= @STRTOL@ @STRTOUL@ @SNPRINTF@
|
OBJS+= @STRTOL@ @STRTOUL@ @SNPRINTF@
|
||||||
ifdef STRDUP
|
ifdef STRDUP
|
||||||
OBJS += $(top_builddir)/src/utils/strdup.o
|
OBJS += $(top_builddir)/src/utils/strdup.o
|
||||||
|
36
src/backend/port/memcmp.c
Normal file
36
src/backend/port/memcmp.c
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*-------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* memcmp.c
|
||||||
|
* compares memory bytes
|
||||||
|
*
|
||||||
|
* Portions Copyright (c) 1996-2001, PostgreSQL Global Development Group
|
||||||
|
* Portions Copyright (c) 1994, Regents of the University of California
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* IDENTIFICATION
|
||||||
|
* $Header: /cvsroot/pgsql/src/backend/port/Attic/memcmp.c,v 1.1 2001/12/20 21:23:05 momjian Exp $
|
||||||
|
*
|
||||||
|
* This file was taken from NetBSD and is used by SunOS because memcmp
|
||||||
|
* on that platform does not properly compare negative bytes.
|
||||||
|
*
|
||||||
|
*-------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compare memory regions.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
memcmp(const void *s1, const void *s2, size_t n)
|
||||||
|
{
|
||||||
|
if (n != 0) {
|
||||||
|
const unsigned char *p1 = s1, *p2 = s2;
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (*p1++ != *p2++)
|
||||||
|
return (*--p1 - *--p2);
|
||||||
|
} while (--n != 0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user