mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-17 19:30:00 +08:00
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
|
||||
# $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
|
||||
@ -36,6 +36,30 @@ if test x"$pgac_cv_func_gettimeofday_1arg" = xyes ; then
|
||||
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
|
||||
# ----------------
|
||||
# Check if `union semun' exists. Define HAVE_UNION_SEMUN if so.
|
||||
|
@ -809,6 +809,9 @@ PGAC_VAR_INT_TIMEZONE
|
||||
AC_FUNC_ACCEPT_ARGTYPES
|
||||
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])
|
||||
|
||||
dnl Check whether <unistd.h> declares fdatasync().
|
||||
|
@ -1,5 +1,5 @@
|
||||
# -*-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,
|
||||
@ -328,6 +328,7 @@ INET_ATON = @INET_ATON@
|
||||
STRERROR = @STRERROR@
|
||||
SNPRINTF = @SNPRINTF@
|
||||
STRDUP = @STRDUP@
|
||||
MEMCMP = @MEMCMP@
|
||||
STRTOUL = @STRTOUL@
|
||||
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
# be converted to Method 2.
|
||||
#
|
||||
# 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
|
||||
|
||||
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@
|
||||
ifdef STRDUP
|
||||
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…
Reference in New Issue
Block a user