diff -r 333964c621f1 -r cb59d6afeb61 openpkg/rpm.patch.porting --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/openpkg/rpm.patch.porting Tue Jan 06 23:40:39 2009 +0100 @@ -0,0 +1,1484 @@ +## +## rpm.patch.porting -- Annotated OpenPKG RPM Patch file +## Copyright (c) 2000-2007 OpenPKG Foundation e.V. +## Copyright (c) 2000-2007 Ralf S. Engelschall +## +## This file assembles changes to existing RPM source files between +## the original RedHat RPM and the OpenPKG RPM variant. It can be +## automatically applied to a vanilla RedHat RPM source tree with the +## 'patch' tool to upgrade those files. Each patch snippet is annotated +## with a short description. +## +## Created on: 13-Sep-2006 +## +## ATTENTION: THIS PATCH FILE WAS AUTO-GENERATED FROM AN OPENPKG +## RPM CVS REPOSITORY, HENCE DO NOT EDIT THIS FILE. +## + ++--------------------------------------------------------------------------- +| Evil hack to get GNU libtool working under NetBSD 1.6 +| with the ugly way RPM currently has to use it. ++--------------------------------------------------------------------------- +Index: ltconfig +--- ltconfig 17 Jan 2001 16:22:58 -0000 1.1.1.7 ++++ ltconfig 29 Apr 2004 13:07:28 -0000 1.4 +@@ -2017,6 +2017,7 @@ + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH ++ deplibs_check_method=pass_all + ;; + + openbsd*) + ++--------------------------------------------------------------------------- +| Disable special RedHat NPTL handling. ++--------------------------------------------------------------------------- +Index: configure.ac +--- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4 ++++ configure.ac 13 Sep 2006 13:40:20 -0000 +@@ -150,10 +151,10 @@ + dnl XXX Test for libpthread.a that is NPTL aware (static link only). + dnl + LDFLAGS_NPTL= +-if test -f /usr/lib/nptl/libpthread.a ; then +- LDFLAGS_NPTL="-L/usr/lib/nptl" +-# INCPATH="$INCPATH -I/usr/include/nptl" +-fi ++dnl if test -f /usr/lib/nptl/libpthread.a ; then ++dnl LDFLAGS_NPTL="-L/usr/lib/nptl" ++dnl # INCPATH="$INCPATH -I/usr/include/nptl" ++dnl fi + AC_SUBST(LDFLAGS_NPTL) + + dnl + ++--------------------------------------------------------------------------- +| Disable any POSIX Pthread stuff because in OpenPKG we use +| non-Pthread mutexes in Berkeley-DB. ++--------------------------------------------------------------------------- +Index: configure.ac +--- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4 ++++ configure.ac 13 Sep 2006 13:40:21 -0000 +@@ -446,14 +447,17 @@ + AC_CHECK_LIB(socket, socket) + ]) + +-AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h) ++dnl # required for HP-UX because of RPC stuff in DB ++AC_CHECK_LIB(nsl, svc_run) + +-AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [ +- dnl OSF 5.0 has the the symbols prefixed with __ in libpthread. +- AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [ +- AC_CHECK_LIB(thread, mutex_lock) +- ]) +-]) ++dnl AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h) ++dnl ++dnl AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [ ++dnl dnl OSF 5.0 has the the symbols prefixed with __ in libpthread. ++dnl AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [ ++dnl AC_CHECK_LIB(thread, mutex_lock) ++dnl ]) ++dnl ]) + + AC_CHECK_HEADERS(aio.h) + AC_SEARCH_LIBS(aio_read, [c rt aio posix4]) + ++--------------------------------------------------------------------------- +| Add support for BSD getmntinfo(3). ++--------------------------------------------------------------------------- +Index: configure.ac +--- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4 ++++ configure.ac 13 Sep 2006 13:40:23 -0000 +@@ -963,12 +967,13 @@ + AC_CHECK_FUNCS(getpassphrase) + + AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [ ++ AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have the getmntinfo() function]), [ + AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[ + AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [ + AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r"; + AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [ + AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used]) +- AC_LIBOBJ(getmntent)])])])]) ++ AC_LIBOBJ(getmntent)])])])])]) + + AC_CHECK_FUNC(lchown, + [__CHOWN_RHF="%{__chown} -Rhf" + ++--------------------------------------------------------------------------- +| Remove RPM's "lib64" hack because we do not install +| into any system locations at all. ++--------------------------------------------------------------------------- +Index: configure.ac +--- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4 ++++ configure.ac 13 Sep 2006 13:40:25 -0000 +@@ -1141,9 +1146,6 @@ + + dnl XXX Choose /usr/lib or /usr/lib64 for library installs. + MARK64= +-case "${target_cpu}" in +-x86_64*|ppc64*|powerpc64*|sparc64*|s390x*) MARK64=64 ;; +-esac + AC_SUBST(MARK64) + + dnl Determine the canonical arch-vendor-os for the build machine + ++--------------------------------------------------------------------------- +| Provide fallback definitions for uintX_t stuff, which is used by +| build/rpmfile.h and not available on all platforms. We do this by +| adding the same Autoconf checks file/configure already used for its +| original file.h. +| Additionally, do not try to configure in an internal +| beecrypt subdirectory. ++--------------------------------------------------------------------------- +Index: configure.ac +--- configure.ac 2 Jul 2003 19:20:52 -0000 1.1.1.4 ++++ configure.ac 13 Sep 2006 13:40:29 -0000 +@@ -1249,11 +1251,40 @@ + + AC_SUBST(OBJDUMP) + ++dnl OpenPKG: rpmfile.h (used in RPM) from file(1) needs additional checks ++dnl for its use of uintXX_t (which are available in file/config.h, but which ++dnl we cannot include into RPM because of conflicts with RPM's config.h) ++AC_DEFUN([AC_CHECK_TYPE_STDC], ++[AC_REQUIRE([AC_HEADER_STDC])dnl ++AC_MSG_CHECKING(for $1) ++AC_CACHE_VAL(ac_cv_type_$1, ++[AC_EGREP_CPP(dnl ++[(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]], ++[#if HAVE_STDINT_H ++#include ++#endif ++#include ++#if STDC_HEADERS ++#include ++#include ++#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl ++AC_MSG_RESULT($ac_cv_type_$1) ++if test $ac_cv_type_$1 = no; then ++ AC_DEFINE($1, $2, $1) ++fi]) ++AC_CHECK_TYPE_STDC(uint8_t, unsigned char) ++AC_CHECK_TYPE_STDC(uint16_t, unsigned short) ++AC_CHECK_TYPE_STDC(uint32_t, unsigned int) ++ ++dnl OpenPKG: some strange platforms (like Unixware) really have MADV_XXX ++dnl but no madvise(2) function itself, so check for madvise explicitly. ++AC_CHECK_FUNC(madvise) ++ + dnl XXX this causes popt to depend on zlib et al + dnl # XXX Propagate -lucb to popt ... + dnl export LIBS INCPATH CONFIG_SITE + +-AC_CONFIG_SUBDIRS(popt beecrypt zlib elfutils file db3) ++AC_CONFIG_SUBDIRS(popt zlib elfutils file db3) + + AC_OUTPUT([ Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec + rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile + ++--------------------------------------------------------------------------- +| Remove RPM's "lib64" hack because we do not install +| into any system locations at all. ++--------------------------------------------------------------------------- +Index: popt/configure.ac +--- popt/configure.ac 27 Mar 2003 17:23:18 -0000 1.1.1.3 ++++ popt/configure.ac 12 May 2004 14:34:35 -0000 1.2 +@@ -53,9 +53,6 @@ + + dnl XXX Choose /usr/lib or /usr/lib64 for library installs. + MARK64= +-case "${target_cpu}" in +-x86_64*|powerpc64*|ppc64*|sparc64*|s390x*) MARK64=64 ;; +-esac + AC_SUBST(MARK64) + + AC_CHECK_HEADERS(alloca.h float.h libintl.h mcheck.h unistd.h) + ++--------------------------------------------------------------------------- +| Prevent (at least NetBSD's) gcc 2.95 from optimizing (at least sha1.c) +| and this way run into a resource (virtual memory) exhaustion situation. +| Not all Bourne-Shells support embedded TAB characters in +| here-document style constructs. Insert the TAB character indirectly +| to workaround problems. +| Additionally, there is no need to build a shared library version of +| Berkeley-DB. +| Finally, enforce the use of the standard UNIX/fcntl mutex type for +| full portability and to get rid of Pthread library dependencies +| (which especially are nasty for the external RPM API users). ++--------------------------------------------------------------------------- +Index: db3/configure +--- db3/configure 18 Jan 2003 14:04:22 -0000 1.1.1.4 ++++ db3/configure 6 Jun 2005 15:53:05 -0000 1.3 +@@ -7,19 +7,29 @@ + # XXX edit CFLAGS= ... out of invocation args ??? + ARGS="`echo $* | sed -e 's% [^ ]*CFLAGS=[^ ]*%%' -e 's% -[^-][^ ]*%%g' -e 's%--cache-file=.*$%%'`" + ++# prevent gcc 2.95 from optimizing (at least sha1.c) ++# and this way get into a resource exhaustion situation ++if [ ".`($CC -v; $CC --version) &1 | grep -i 'gcc'`" != . ]; then ++ case "`$CC -dumpversion 2>/dev/null`" in ++ 3.* ) ;; ++ * ) CFLAGS=`echo " $CFLAGS -O0" | sed -e 's; -O[0-9]* ; ;g' -e 's;^ *;;'` ;; ++ esac ++fi ++ + CC="$CC" CFLAGS="$CFLAGS" $db_dist/configure $ARGS \ +- --enable-shared --enable-static --enable-rpc \ +- --with-uniquename=_rpmdb --srcdir=$db_dist ++ --disable-shared --enable-static --enable-rpc \ ++ --with-uniquename=_rpmdb --srcdir=$db_dist \ ++ --with-mutex="UNIX/fcntl" --disable-largefile + + mv Makefile Makefile.orig + cat Makefile.orig | sed -e '/^install[:-]/c\ + .PHONY: listobjs\ + listobjs:\ +- @echo $(OBJS) $(C_OBJS) \ ++~@echo $(OBJS) $(C_OBJS) \ + \ + distdir install check:\ + \ +-db4_install: all install_setip' > Makefile ++db4_install: all install_setip' | tr '~' ' ' > Makefile + + mv db.h db.h.orig + cat db.h.orig | sed \ + ++--------------------------------------------------------------------------- +| Add support for BSD getmntinfo(3). ++--------------------------------------------------------------------------- +Index: lib/fs.c +--- lib/fs.c 4 Jun 2003 18:09:43 -0000 1.1.1.13 ++++ lib/fs.c 25 Nov 2004 09:32:16 -0000 1.3 +@@ -164,6 +164,15 @@ + int nextMount = 0; + + getmntinfo_r(&mounts, flags, &mntCount, &bufSize); ++# elif HAVE_GETMNTINFO ++# if defined(__NetBSD__) && (__NetBSD_Version__ > 200030000) ++# define statfs statvfs ++# endif ++ struct statfs * mounts = NULL; ++ int mntCount, flags = MNT_NOWAIT; ++ int nextMount = 0; ++ ++ mntCount = getmntinfo(&mounts, flags); + # endif + + filesystems = xcalloc((numAlloced + 1), sizeof(*filesystems)); /* XXX memory leak */ +@@ -193,6 +202,9 @@ + # elif HAVE_GETMNTINFO_R + if (nextMount == mntCount) break; + mntdir = mounts[nextMount++].f_mntonname; ++# elif HAVE_GETMNTINFO ++ if (nextMount == mntCount) break; ++ mntdir = mounts[nextMount++].f_mntonname; + # endif + + if (stat(mntdir, &sb)) { + ++--------------------------------------------------------------------------- +| Add support for Compaq/HP OSF1/Tru64. ++--------------------------------------------------------------------------- +Index: misc/fnmatch.h +--- misc/fnmatch.h 22 Feb 2002 17:12:15 -0000 1.1.1.3 ++++ misc/fnmatch.h 22 Jan 2004 21:42:26 -0000 1.2 +@@ -55,7 +55,7 @@ + #define FNM_NOESCAPE (1 << 1) /* Backslashes don't quote special chars. */ + #define FNM_PERIOD (1 << 2) /* Leading `.' is matched only explicitly. */ + +-#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE ++#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE || defined __osf__ + # define FNM_FILE_NAME FNM_PATHNAME /* Preferred GNU name. */ + # define FNM_LEADING_DIR (1 << 3) /* Ignore `/...' after a match. */ + # define FNM_CASEFOLD (1 << 4) /* Compare without regard to case. */ + ++--------------------------------------------------------------------------- +| Use more correct Autoconf based size_t check. +| Add support for Compaq/HP OSF1/Tru64 and SCO UnixWare. ++--------------------------------------------------------------------------- +Index: misc/glob.h +--- misc/glob.h 11 Mar 2000 20:59:30 -0000 1.1.1.3 ++++ misc/glob.h 22 Jan 2004 21:42:27 -0000 1.2 +@@ -46,7 +46,7 @@ + #endif /* C++ or ANSI C. */ + + /* We need `size_t' for the following definitions. */ +-#ifndef __size_t ++#if !defined(__size_t) && !defined(_SIZE_T_DECLARED) + # if defined __GNUC__ && __GNUC__ >= 2 + typedef __SIZE_TYPE__ __size_t; + # ifdef _XOPEN_SOURCE +@@ -74,7 +74,7 @@ + #define GLOB_PERIOD (1 << 7)/* Leading `.' can be matched by metachars. */ + + #if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE \ +- || defined _GNU_SOURCE) ++ || defined _GNU_SOURCE || defined __osf__ ) + # define GLOB_MAGCHAR (1 << 8)/* Set in gl_flags if any metachars seen. */ + # define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions. */ + # define GLOB_BRACE (1 << 10)/* Expand "{a,b}" to "a" "b". */ +@@ -151,7 +151,8 @@ + `glob' returns GLOB_ABEND; if it returns zero, the error is ignored. + If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned. + Otherwise, `glob' returns zero. */ +-#if _FILE_OFFSET_BITS != 64 ++/* #if _FILE_OFFSET_BITS != 64 || defined(OPENPKG_UNIXWARE) */ ++#if !defined(__linux__) + extern int glob __P ((__const char *__pattern, int __flags, + int (*__errfunc) (__const char *, int), + glob_t *__pglob)); + ++--------------------------------------------------------------------------- +| Better portability. ++--------------------------------------------------------------------------- +Index: misc/glob.c +--- misc/glob.c 11 Mar 2000 21:13:18 -0000 1.1.1.4 ++++ misc/glob.c 22 Jan 2004 21:42:26 -0000 1.2 +@@ -813,6 +813,7 @@ + + + /* Free storage allocated in PGLOB by a previous `glob' call. */ ++#if !defined(__linux__) || (defined(__linux__) && (_FILE_OFFSET_BITS != 64) || (__GNUC__ >= 2)) + void + globfree (pglob) + register glob_t *pglob; +@@ -826,7 +827,7 @@ + free ((__ptr_t) pglob->gl_pathv); + } + } +- ++#endif + + /* Do a collated comparison of A and B. */ + static int + ++--------------------------------------------------------------------------- +| Add libmisc.a for platform portability. ++--------------------------------------------------------------------------- +Index: tools/Makefile.am +--- tools/Makefile.am 29 May 2003 17:40:17 -0000 1.1.1.14 ++++ tools/Makefile.am 22 Jan 2004 21:42:34 -0000 1.2 +@@ -22,7 +22,7 @@ + + LDADD = \ + $(top_builddir)/lib/librpm.la \ +- @INTLLIBS@ ++ @INTLLIBS@ @LIBMISC@ + + staticLDFLAGS = @LDFLAGS_STATIC@ @LDFLAGS_NPTL@ + + ++--------------------------------------------------------------------------- +| Add libmisc.a for platform portability. ++--------------------------------------------------------------------------- +Index: tools/Makefile.in +--- tools/Makefile.in 16 Jul 2003 17:05:51 -0000 1.1.1.20 ++++ tools/Makefile.in 22 Jan 2004 21:42:35 -0000 1.2 +@@ -275,7 +275,7 @@ + + LDADD = \ + $(top_builddir)/lib/librpm.la \ +- @INTLLIBS@ ++ @INTLLIBS@ @LIBMISC@ + + + staticLDFLAGS = @LDFLAGS_STATIC@ @LDFLAGS_NPTL@ + ++--------------------------------------------------------------------------- +| Drop GCC "inline" attribute if not compiling with GCC. +| Workaround some other GCC'isms, too. +| Do not take over "const" replacements from Zlib. ++--------------------------------------------------------------------------- +Index: file/system.h +--- file/system.h 24 Jan 2003 19:41:56 -0000 1.1.1.1 ++++ file/system.h 6 Jun 2005 15:53:05 -0000 1.4 +@@ -13,6 +13,9 @@ + #endif + + #include ++#ifdef HAVE_INTTYPES_H ++#include ++#endif + + #include + #include +@@ -53,6 +56,8 @@ + #else + #if HAVE_ERROR && HAVE_ERROR_H + #include ++#else ++extern void error(int status, int errnum, const char *format, ...); + #endif + #endif + +@@ -194,6 +199,7 @@ + + #ifdef HAVE_LIBZ + #include ++#undef const + #endif + + #ifndef HAVE_STRERROR +@@ -246,7 +252,11 @@ + */ + /*@-shadow@*/ + /*@unused@*/ /*@exits@*/ /*@only@*/ ++#if defined(__GNUC__) + static inline void * vmefail(/*@unused@*/ size_t nb) ++#else ++static void * vmefail(/*@unused@*/ size_t nb) ++#endif + /*@globals fileSystem @*/ + /*@modifies fileSystem @*/ + { +@@ -286,9 +296,33 @@ + + #if !defined(__LCLINT__) + /* Memory allocation via macro defs to get meaningful locations from mtrace() */ ++#if defined(__GNUC__) + #define xmalloc(_size) (malloc(_size) ? : vmefail(0)) + #define xcalloc(_nmemb, _size) (calloc((_nmemb), (_size)) ? : vmefail(0)) + #define xrealloc(_ptr, _size) (realloc((_ptr), (_size)) ? : vmefail(0)) ++#else ++static void *xmalloc(size_t size) ++{ ++ void *vp = malloc(size); ++ if (vp == NULL) ++ vmefail(0); ++ return vp; ++} ++static void *xcalloc(size_t number, size_t size) ++{ ++ void *vp = calloc(number, size); ++ if (vp == NULL) ++ vmefail(0); ++ return vp; ++} ++static void *xrealloc(void *ptr, size_t size) ++{ ++ void *vp = realloc(ptr, size); ++ if (vp == NULL) ++ vmefail(0); ++ return vp; ++} ++#endif + #define xstrdup(_str) (strcpy(xmalloc(strlen(_str)+1), (_str))) + #endif + +@@ -314,9 +348,14 @@ + + #if defined(__LCLINT__) + #define FILE_RCSID(id) +-#else ++#elif defined(__GNUC__) + #define FILE_RCSID(id) \ + static inline const char *rcsid(const char *p) { \ ++ return rcsid(p = id); \ ++} ++#else ++#define FILE_RCSID(id) \ ++static const char *rcsid(const char *p) { \ + return rcsid(p = id); \ + } + #endif + ++--------------------------------------------------------------------------- +| Use GCC extensional features only if compiled with GCC. ++--------------------------------------------------------------------------- +Index: file/file.h +--- file/file.h 24 Jan 2003 19:41:56 -0000 1.1.1.1 ++++ file/file.h 22 Jan 2004 21:42:22 -0000 1.2 +@@ -95,7 +95,11 @@ + } value; /* either number or string */ + uint32_t mask; /* mask before comparison with value */ + char desc[MAXDESC]; /* description */ ++#if defined(__GNUC__) + } __attribute__((__packed__)); ++#else ++}; ++#endif + + #define BIT(A) (1 << (A)) + #define STRING_IGNORE_LOWERCASE BIT(0) + ++--------------------------------------------------------------------------- +| Add int32_t detection and automatic fallback support. ++--------------------------------------------------------------------------- +Index: file/config.h.in +--- file/config.h.in 7 Mar 2003 19:39:18 -0000 1.1.1.1 ++++ file/config.h.in 13 Sep 2006 13:40:49 -0000 +@@ -106,6 +106,9 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_UNISTD_H + ++/* Define to 1 if you have the `vsnprintf' function. */ ++#undef HAVE_VSNPRINTF ++ + /* Define to 1 if `major', `minor', and `makedev' are declared in . + */ + #undef MAJOR_IN_MKDEV +@@ -162,12 +165,16 @@ + /* Define to empty if `const' does not conform to ANSI C. */ + #undef const + ++/* int32_t */ ++#undef int32_t ++ + /* Define to `long' if does not define. */ + #undef off_t + + /* Define to `unsigned' if does not define. */ + #undef size_t + ++#ifndef HAVE_STDINT_H + /* uint16_t */ + #undef uint16_t + +@@ -179,3 +186,4 @@ + + /* uint8_t */ + #undef uint8_t ++#endif + ++--------------------------------------------------------------------------- +| Add int32_t detection and automatic fallback support. ++--------------------------------------------------------------------------- +Index: file/configure.ac +--- file/configure.ac 1 Dec 2002 21:34:06 -0000 1.1.1.1 ++++ file/configure.ac 6 Jun 2005 15:53:05 -0000 1.2 +@@ -92,6 +92,7 @@ + AC_CHECK_TYPE_STDC(uint8_t, unsigned char) + AC_CHECK_TYPE_STDC(uint16_t, unsigned short) + AC_CHECK_TYPE_STDC(uint32_t, unsigned int) ++AC_CHECK_TYPE_STDC(int32_t, int) + AC_C_LONG_LONG + if test $ac_cv_c_long_long = yes; then + long64='unsigned long long'; +@@ -107,7 +108,7 @@ + AC_CHECK_SIZEOF_STDC_HEADERS(uint64_t, 0) + + dnl Checks for functions +-AC_CHECK_FUNCS(error mtrace mkstemp mmap strdup strerror strtoul) ++AC_CHECK_FUNCS(error mtrace mkstemp mmap strdup strerror strtoul vsnprintf) + + dnl Checks for libraries + AC_CHECK_LIB(z, gzopen) + ++--------------------------------------------------------------------------- +| Add int32_t detection and automatic fallback support. ++--------------------------------------------------------------------------- +Index: file/configure +--- file/configure 16 Jul 2003 17:05:25 -0000 1.1.1.2 ++++ file/configure 6 Jun 2005 15:53:05 -0000 1.2 +@@ -10847,6 +10847,46 @@ + + fi + ++echo "$as_me:$LINENO: checking for int32_t" >&5 ++echo $ECHO_N "checking for int32_t... $ECHO_C" >&6 ++if test "${ac_cv_type_int32_t+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++#line $LINENO "configure" ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#if HAVE_STDINT_H ++#include ++#endif ++#include ++#if STDC_HEADERS ++#include ++#include ++#endif ++_ACEOF ++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | ++ $EGREP "(^|[^a-zA-Z_0-9])int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then ++ ac_cv_type_int32_t=yes ++else ++ ac_cv_type_int32_t=no ++fi ++rm -f conftest* ++ ++fi ++echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 ++echo "${ECHO_T}$ac_cv_type_int32_t" >&6 ++if test $ac_cv_type_int32_t = no; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define int32_t int ++_ACEOF ++ ++fi ++ + echo "$as_me:$LINENO: checking for long long" >&5 + echo $ECHO_N "checking for long long... $ECHO_C" >&6 + if test "${ac_cv_c_long_long+set}" = set; then +@@ -11220,7 +11260,8 @@ + + + +-for ac_func in error mtrace mkstemp mmap strdup strerror strtoul ++ ++for ac_func in error mtrace mkstemp mmap strdup strerror strtoul vsnprintf + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` + echo "$as_me:$LINENO: checking for $ac_func" >&5 + ++--------------------------------------------------------------------------- +| Fallback to vsprintf(3) if vsnprintf(3) does not exist. ++--------------------------------------------------------------------------- +Index: file/print.c +--- file/print.c 24 Jan 2003 19:41:56 -0000 1.1.1.1 ++++ file/print.c 6 Jun 2005 15:53:05 -0000 1.2 +@@ -187,7 +187,11 @@ + + va_start(va, f); + /*@-boundswrite@*/ ++#ifdef HAVE_VSNPRINTF + rc = vsnprintf(fm->obp, fm->nob, f, va); ++#else ++ rc = vsprintf(fm->obp, f, va); ++#endif + /*@=boundswrite@*/ + va_end(va); + + ++--------------------------------------------------------------------------- +| Use GNU libtool's weaker -static (link with own static libraries) +| instead of the strong -all-static (link even with static libc, etc), +| because OpenPKG does not need to be fully static. ++--------------------------------------------------------------------------- +Index: rpmdb/Makefile.am +--- rpmdb/Makefile.am 2 Jul 2003 20:14:07 -0000 1.1.1.7 ++++ rpmdb/Makefile.am 22 Jan 2004 21:42:29 -0000 1.2 +@@ -18,7 +18,7 @@ + EXTRA_PROGRAMS = tjfn + + tjfn_SOURCES = tjfn.c +-tjfn_LDFLAGS = -all-static ++tjfn_LDFLAGS = -static + tjfn_LDADD = librpmdb.la + + pkgincdir = $(pkgincludedir) +@@ -180,4 +180,4 @@ + $(LINT) $(DEFS) $(INCLUDES) $(librpmdb_la_SOURCES) + + tdbi: librpmdb.la tdbi.o +- $(LINK) -all-static $@.o $< $(mylibpaths) $(mylibs) $(LIBS) ++ $(LINK) -static $@.o $< $(mylibpaths) $(mylibs) $(LIBS) + ++--------------------------------------------------------------------------- +| Use GNU libtool's weaker -static (link with own static libraries) +| instead of the strong -all-static (link even with static libc, etc), +| because OpenPKG does not need to be fully static. ++--------------------------------------------------------------------------- +Index: rpmdb/Makefile.in +--- rpmdb/Makefile.in 16 Jul 2003 17:05:48 -0000 1.1.1.7 ++++ rpmdb/Makefile.in 22 Jan 2004 21:42:29 -0000 1.2 +@@ -273,7 +273,7 @@ + EXTRA_PROGRAMS = tjfn + + tjfn_SOURCES = tjfn.c +-tjfn_LDFLAGS = -all-static ++tjfn_LDFLAGS = -static + tjfn_LDADD = librpmdb.la + + pkgincdir = $(pkgincludedir) +@@ -952,7 +952,7 @@ + $(LINT) $(DEFS) $(INCLUDES) $(librpmdb_la_SOURCES) + + tdbi: librpmdb.la tdbi.o +- $(LINK) -all-static $@.o $< $(mylibpaths) $(mylibs) $(LIBS) ++ $(LINK) -static $@.o $< $(mylibpaths) $(mylibs) $(LIBS) + # Tell versions [3.59,3.63) of GNU make to not export all variables. + # Otherwise a system limit (for SysV at least) may be exceeded. + .NOEXPORT: + ++--------------------------------------------------------------------------- +| Use GNU libtool's weaker -static (link with own static libraries) +| instead of the strong -all-static (link even with static libc, etc), +| because OpenPKG does not need to be fully static. ++--------------------------------------------------------------------------- +Index: rpmio/Makefile.am +--- rpmio/Makefile.am 5 Jun 2003 12:05:23 -0000 1.1.1.9 ++++ rpmio/Makefile.am 22 Jan 2004 21:42:31 -0000 1.2 +@@ -68,27 +68,27 @@ + tdigest_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tdir_SOURCES = tdir.c +-tdir_LDFLAGS = -all-static ++tdir_LDFLAGS = -static + tdir_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tfts_SOURCES = tfts.c +-tfts_LDFLAGS = -all-static ++tfts_LDFLAGS = -static + tfts_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tglob_SOURCES = tglob.c +-tglob_LDFLAGS = -all-static ++tglob_LDFLAGS = -static + tglob_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tinv_SOURCES = tinv.c +-tinv_LDFLAGS = -all-static ++tinv_LDFLAGS = -static + tinv_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tkey_SOURCES = tkey.c +-tkey_LDFLAGS = -all-static ++tkey_LDFLAGS = -static + tkey_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tring_SOURCES = tring.c +-tring_LDFLAGS = -all-static ++tring_LDFLAGS = -static + tring_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + trpmio_SOURCES = trpmio.c + ++--------------------------------------------------------------------------- +| Use GNU libtool's weaker -static (link with own static libraries) +| instead of the strong -all-static (link even with static libc, etc), +| because OpenPKG does not need to be fully static. +| Additionally, remove hard-coded Linux'ism of linking against POSIX +| rt/pthread libraries (is not needed even under Linux itself) and +| make sure the build does not break by an empty argument list when +| iterating over (the not existing) BeeCrypt objects. ++--------------------------------------------------------------------------- +Index: rpmio/Makefile.in +--- rpmio/Makefile.in 16 Jul 2003 17:05:49 -0000 1.1.1.9 ++++ rpmio/Makefile.in 22 Jan 2004 21:42:31 -0000 1.2 +@@ -288,8 +288,7 @@ + librpmio_la_LDFLAGS = -release 4.2 \ + @WITH_BEECRYPT_LIB@ \ + $(top_builddir)/file/libfmagic.la \ +- @WITH_ZLIB_LIB@ \ +- -lrt -lpthread ++ @WITH_ZLIB_LIB@ + + librpmio_la_LIBADD = $(BEECRYPTLOBJS) + librpmio_la_DEPENDENCIES = .created +@@ -298,27 +297,27 @@ + tdigest_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tdir_SOURCES = tdir.c +-tdir_LDFLAGS = -all-static ++tdir_LDFLAGS = -static + tdir_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tfts_SOURCES = tfts.c +-tfts_LDFLAGS = -all-static ++tfts_LDFLAGS = -static + tfts_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tglob_SOURCES = tglob.c +-tglob_LDFLAGS = -all-static ++tglob_LDFLAGS = -static + tglob_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tinv_SOURCES = tinv.c +-tinv_LDFLAGS = -all-static ++tinv_LDFLAGS = -static + tinv_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tkey_SOURCES = tkey.c +-tkey_LDFLAGS = -all-static ++tkey_LDFLAGS = -static + tkey_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + tring_SOURCES = tring.c +-tring_LDFLAGS = -all-static ++tring_LDFLAGS = -static + tring_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la + + trpmio_SOURCES = trpmio.c +@@ -743,8 +742,8 @@ + .created: + if test X"@WITH_BEECRYPT_SUBDIR@" != X; then \ + ${MAKE} -C $(top_builddir)/@WITH_BEECRYPT_SUBDIR@ listobjs ; \ +- for lo in $(BEECRYPTLOBJS); do \ +- [ -f $$lo ] || $(LN_S) $(top_builddir)/@WITH_BEECRYPT_SUBDIR@/$$lo $$lo ; \ ++ for lo in $(BEECRYPTLOBJS) ''; do \ ++ [ ".$$lo" = . ] || [ -f $$lo ] || $(LN_S) $(top_builddir)/@WITH_BEECRYPT_SUBDIR@/$$lo $$lo ; \ + done \ + fi + touch $@ + ++--------------------------------------------------------------------------- +| Add Unixware support. ++--------------------------------------------------------------------------- +Index: rpmio/fts.h +--- rpmio/fts.h 18 Jan 2003 16:13:17 -0000 1.1.1.3 ++++ rpmio/fts.h 22 Jan 2004 21:42:32 -0000 1.2 +@@ -51,7 +51,7 @@ + # define _LARGEFILE64_SOURCE + #endif + +-#if defined(sun) ++#if defined(sun) || defined(OPENPKG_UNIXWARE) + # define _D_EXACT_NAMLEN(d) ((d)->d_reclen) + #endif + + ++--------------------------------------------------------------------------- +| Add FreeBSD/NetBSD/OpenBSD support. +| Workaround some GCC'isms. ++--------------------------------------------------------------------------- +Index: rpmio/fts.c +--- rpmio/fts.c 18 Jan 2003 16:13:17 -0000 1.1.1.3 ++++ rpmio/fts.c 8 Jun 2005 13:16:25 -0000 1.5 +@@ -34,6 +34,8 @@ + static char sccsid[] = "@(#)fts.c 8.6 (Berkeley) 8/14/94"; + #endif /* LIBC_SCCS and not lint */ + ++#include ++ + #if defined(_LIBC) + #include + #include +@@ -45,20 +47,49 @@ + #include + #include + #else +-#if defined(hpux) ++#if defined(OPENPKG_HPUX) + # define _INCLUDE_POSIX_SOURCE + # define __errno_location() (&errno) + # define dirfd(dirp) -1 + # define stat64 stat + # define _STAT_VER 0 + # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) ++# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) + #endif +-#if defined(sun) ++#if defined(sun) || defined(OPENPKG_UNIXWARE) + # define __errno_location() (&errno) + # define dirfd(dirp) -1 + # define _STAT_VER 0 + # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) + #endif ++#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENPKG_DARWIN) ++# define __errno_location() (&errno) ++# define stat64 stat ++# define _STAT_VER 0 ++# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) ++# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) ++#endif ++#if defined(__osf__) ++# define __errno_location() (&errno) ++# define dirfd(dirp) -1 ++# define stat64 stat ++# define _STAT_VER 0 ++# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) ++# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) ++#endif ++#if defined(OPENPKG_IRIX64) ++# define __errno_location() (&errno) ++# define dirfd(dirp) -1 ++# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) ++# define _D_EXACT_NAMLEN(d) ((d)->d_reclen) ++#endif ++#if defined(OPENPKG_AIX) ++# define __errno_location() (&errno) ++# define _STAT_VER 0 ++# define dirfd(dirp) ((dirp)->dd_fd) ++# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) ++# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) ++#endif + #include "system.h" + #include "fts.h" + #include "rpmio.h" +@@ -73,7 +104,12 @@ + /* Largest alignment size needed, minus one. + Usually long double is the worst case. */ + #ifndef ALIGNBYTES ++#if defined(__GNUC__) + #define ALIGNBYTES (__alignof__ (long double) - 1) ++#else ++/* not accurate enough (usually too large), but sufficient (and this way equal safe) */ ++#define ALIGNBYTES (sizeof (long double) - 1) ++#endif + #endif + /* Align P to that size. */ + #ifndef ALIGN +@@ -107,9 +143,13 @@ + /*@modifies fileSystem, internalState @*/; + + #ifndef MAX ++#if defined(__GNUC__) + #define MAX(a, b) ({ __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a > _b ? _a : _b; }) ++#else ++#define MAX(a, b) ((a) > (b) ? (a) : (b)) ++#endif + #endif + + #define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) + ++--------------------------------------------------------------------------- +| Remove inclusion of system because RPM uses its own glob(3) +| implementation and this can conflict with the system one. ++--------------------------------------------------------------------------- +Index: rpmio/rpmio.h +--- rpmio/rpmio.h 12 Jun 2003 18:22:18 -0000 1.1.1.7 ++++ rpmio/rpmio.h 22 Jan 2004 21:42:33 -0000 1.2 +@@ -9,9 +9,6 @@ + #include + #include + #include +-/*@-noparams@*/ +-#include +-/*@=noparams@*/ + #include + #include + #include + ++--------------------------------------------------------------------------- +| Make this whole "dirent" fiddling at least working on +| FreeBSD/NetBSD/OpenBSD, Solaris, HPUX and Unixware. This certainly +| is a bad corner of RPM which inherently leads to portability +| problems. ++--------------------------------------------------------------------------- +Index: rpmio/rpmrpc.c +--- rpmio/rpmrpc.c 29 May 2003 22:14:04 -0000 1.1.1.8 ++++ rpmio/rpmrpc.c 8 Jun 2005 13:16:26 -0000 1.5 +@@ -1079,6 +1079,8 @@ + return rc; + } + ++#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(sun) && !defined(OPENPKG_DARWIN) ++ + struct __dirstream { + int fd; /* File descriptor. */ + char * data; /* Directory block. */ +@@ -1091,6 +1093,8 @@ + #endif + }; + ++#endif ++ + #if !defined(DT_DIR) + # define DT_UNKNOWN 0 + # define DT_FIFO 1 +@@ -1101,14 +1105,30 @@ + # define DT_LNK 10 + # define DT_SOCK 12 + # define DT_WHT 14 +-typedef struct __dirstream * FTPDIR; +-#else +-typedef DIR * FTPDIR; + #endif + ++struct mydirstreament { ++ unsigned char type; ++ char *name; ++}; ++struct mydirstream { ++ DIR dir; ++ struct dirent ent; ++ unsigned int offset; ++ unsigned int size; ++ struct mydirstreament av[1]; ++}; ++typedef struct mydirstream *FTPDIR; ++ + /*@unchecked@*/ + static int ftpmagicdir = 0x8440291; +-#define ISFTPMAGIC(_dir) (!memcmp((_dir), &ftpmagicdir, sizeof(ftpmagicdir))) ++#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(sun) && !defined(OPENPKG_UNIXWARE) && !defined(OPENPKG_DARWIN) && !defined(__osf__) && !defined(OPENPKG_IRIX64) && !defined(OPENPKG_HPUX) && !defined(OPENPKG_AIX) ++#define SETFTPMAGIC(_dir) ((_dir)->fd) = ftpmagicdir ++#define ISFTPMAGIC(_dir) ((_dir)->fd == ftpmagicdir) ++#else ++#define SETFTPMAGIC(_dir) ((_dir)->dd_fd) = ftpmagicdir ++#define ISFTPMAGIC(_dir) ((_dir)->dd_fd == ftpmagicdir) ++#endif + + /*@-boundswrite@*/ + /*@-type@*/ /* FIX: abstract DIR */ +@@ -1121,8 +1141,7 @@ + struct dirent * dp; + size_t nb; + const char * s, * sb, * se; +- const char ** av; +- unsigned char * dt; ++ struct mydirstreament * av; + char * t; + int ac; + int c; +@@ -1165,28 +1184,22 @@ + } + } + +- nb += sizeof(*mydir) + sizeof(*dp) + ((ac + 1) * sizeof(*av)) + (ac + 1); ++ nb = sizeof(*mydir) + (ac * sizeof(*av)) + nb; + mydir = xcalloc(1, nb); + /*@-abstract@*/ +- dp = (struct dirent *) (mydir + 1); +- av = (const char **) (dp + 1); +- dt = (char *) (av + (ac + 1)); +- t = (char *) (dt + ac + 1); ++ dp = &mydir->ent; ++ av = &mydir->av[0]; ++ t = (char *)&mydir->av[ac+1]; + /*@=abstract@*/ + +- mydir->fd = ftpmagicdir; +-/*@-usereleased@*/ +- mydir->data = (char *) dp; +-/*@=usereleased@*/ +- mydir->allocation = nb; +- mydir->size = ac; +- mydir->offset = -1; +- mydir->filepos = 0; ++ SETFTPMAGIC((DIR *)mydir); ++ mydir->size = ac; ++ mydir->offset = 0; + + ac = 0; + /*@-dependenttrans -unrecog@*/ +- dt[ac] = DT_DIR; av[ac++] = t; t = stpcpy(t, "."); t++; +- dt[ac] = DT_DIR; av[ac++] = t; t = stpcpy(t, ".."); t++; ++ av[ac].type = DT_DIR; av[ac].name = t; t = stpcpy(t, "."); ++ac; ++ av[ac].type = DT_DIR; av[ac].name = t; t = stpcpy(t, ".."); ++ac; + /*@=dependenttrans =unrecog@*/ + sb = NULL; + s = se = ftpBuf; +@@ -1198,34 +1211,34 @@ + /*@switchbreak@*/ break; + case '\r': + /*@-dependenttrans@*/ +- av[ac] = t; ++ av[ac].name = t; + /*@=dependenttrans@*/ + if (sb == NULL) { + /*@-unrecog@*/ + switch(*s) { + case 'p': +- dt[ac] = DT_FIFO; ++ av[ac].type = DT_FIFO; + /*@innerbreak@*/ break; + case 'c': +- dt[ac] = DT_CHR; ++ av[ac].type = DT_CHR; + /*@innerbreak@*/ break; + case 'd': +- dt[ac] = DT_DIR; ++ av[ac].type = DT_DIR; + /*@innerbreak@*/ break; + case 'b': +- dt[ac] = DT_BLK; ++ av[ac].type = DT_BLK; + /*@innerbreak@*/ break; + case '-': +- dt[ac] = DT_REG; ++ av[ac].type = DT_REG; + /*@innerbreak@*/ break; + case 'l': +- dt[ac] = DT_LNK; ++ av[ac].type = DT_LNK; + /*@innerbreak@*/ break; + case 's': +- dt[ac] = DT_SOCK; ++ av[ac].type = DT_SOCK; + /*@innerbreak@*/ break; + default: +- dt[ac] = DT_UNKNOWN; ++ av[ac].type = DT_UNKNOWN; + /*@innerbreak@*/ break; + } + /*@=unrecog@*/ +@@ -1243,7 +1256,7 @@ + /*@switchbreak@*/ break; + } + } +- av[ac] = NULL; ++ av[ac].name = NULL; + + /*@-kepttrans@*/ + return (DIR *) mydir; +@@ -1258,43 +1271,50 @@ + { + FTPDIR mydir = (FTPDIR)dir; + struct dirent * dp; +- const char ** av; +- unsigned char * dt; ++ struct mydirstreament * av; + int ac; + int i; + + /*@+voidabstract@*/ +- if (mydir == NULL || !ISFTPMAGIC(mydir) || mydir->data == NULL) { ++ if (dir == NULL || !ISFTPMAGIC(dir)) { + /* XXX TODO: EBADF errno. */ + return NULL; + } + /*@=voidabstract@*/ + +- dp = (struct dirent *) mydir->data; +- av = (const char **) (dp + 1); ++ dp = &mydir->ent; ++ av = &mydir->av[0]; + ac = mydir->size; +- dt = (char *) (av + (ac + 1)); +- i = mydir->offset + 1; ++ i = mydir->offset + 1; + + /*@-boundsread@*/ +- if (i < 0 || i >= ac || av[i] == NULL) ++ if (i < 0 || i >= ac || av[i].name == NULL) + return NULL; + /*@=boundsread@*/ + + mydir->offset = i; + ++#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENPKG_DARWIN) ++ dp->d_ino = i + 1; ++ dp->d_reclen = 0; ++ dp->d_type = av[i].type; ++ strncpy(dp->d_name, av[i].name, sizeof(dp->d_name) - 1); ++ dp->d_name[sizeof(dp->d_name)-1] = '\0'; ++ dp->d_namlen = strlen(dp->d_name); ++#elif defined(OPENPKG_HPUX) || defined(sun) || defined(OPENPKG_UNIXWARE) || defined(__osf__) || defined(OPENPKG_IRIX64) || defined(OPENPKG_AIX) ++ /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */ ++ dp->d_ino = i + 1; /* W2DO? */ ++ dp->d_reclen = 0; /* W2DO? */ ++ strncpy(dp->d_name, av[i].name, sizeof(dp->d_name)); ++#else + /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */ + dp->d_ino = i + 1; /* W2DO? */ + dp->d_reclen = 0; /* W2DO? */ +- +-#if !defined(hpux) && !defined(sun) + dp->d_off = 0; /* W2DO? */ +-/*@-boundsread@*/ +- dp->d_type = dt[i]; +-/*@=boundsread@*/ ++ dp->d_type = av[i].type; ++ strncpy(dp->d_name, av[i].name, sizeof(dp->d_name)); + #endif + +- strncpy(dp->d_name, av[i], sizeof(dp->d_name)); + /*@+voidabstract@*/ + if (_ftp_debug) + fprintf(stderr, "*** ftpReaddir(%p) %p \"%s\"\n", (void *)mydir, dp, dp->d_name); +@@ -1313,7 +1333,7 @@ + /*@+voidabstract@*/ + if (_ftp_debug) + fprintf(stderr, "*** ftpClosedir(%p)\n", (void *)mydir); +- if (mydir == NULL || !ISFTPMAGIC(mydir)) { ++ if (dir == NULL || !ISFTPMAGIC(dir)) { + /* XXX TODO: EBADF errno. */ + return -1; + } + ++--------------------------------------------------------------------------- +| Remove inclusion of ancient (and since years deprecated) +| header. This especially makes sure RPM build does not break on +| strict platforms like FreeBSD 5. ++--------------------------------------------------------------------------- +Index: system.h +--- system.h 1 Mar 2003 19:53:08 -0000 1.1.1.10 ++++ system.h 8 Jun 2005 13:15:16 -0000 1.4 +@@ -256,10 +256,6 @@ + #include + #endif + +-#if HAVE_MALLOC_H && !defined(__LCLINT__) +-#include +-#endif +- + /*@-declundef -incondefs @*/ /* FIX: these are macros */ + /** + */ + ++--------------------------------------------------------------------------- +| Add support for BSD getmntinfo(3). ++--------------------------------------------------------------------------- +Index: system.h +--- system.h 1 Mar 2003 19:53:08 -0000 1.1.1.10 ++++ system.h 8 Jun 2005 13:15:16 -0000 1.4 +@@ -550,7 +546,7 @@ + #define lchown chown + #endif + +-#if HAVE_GETMNTINFO_R || HAVE_MNTCTL ++#if HAVE_GETMNTINFO_R || HAVE_GETMNTINFO || HAVE_MNTCTL + # define GETMNTENT_ONE 0 + # define GETMNTENT_TWO 0 + # if HAVE_SYS_MNTCTL_H + ++--------------------------------------------------------------------------- +| Drop GCC "inline" attribute if not compiling with GCC. ++--------------------------------------------------------------------------- +Index: system.h +--- system.h 1 Mar 2003 19:53:08 -0000 1.1.1.10 ++++ system.h 8 Jun 2005 13:15:16 -0000 1.4 +@@ -603,11 +599,24 @@ + + #if defined(__LCLINT__) + #define FILE_RCSID(id) +-#else ++#elif defined(__GNUC__) + #define FILE_RCSID(id) \ + static inline const char *rcsid(const char *p) { \ + return rcsid(p = id); \ + } ++#else ++#define FILE_RCSID(id) \ ++static const char *rcsid(const char *p) { \ ++ return rcsid(p = id); \ ++} ++#endif ++ ++/* for basename(3) and dirname(3) */ ++#if !defined(OPENPKG_AIX) ++#include ++#endif ++#if defined(OPENPKG_AIX) ++#define unsetenv(x) /* unsetenv() is used in RPM just for malloc debugging purposes */ + #endif + + #endif /* H_SYSTEM */ + ++--------------------------------------------------------------------------- +| Remove GCC'ism. ++--------------------------------------------------------------------------- +Index: build/rpmfile.h +--- build/rpmfile.h 24 Jan 2003 19:41:56 -0000 1.1.1.1 ++++ build/rpmfile.h 22 Jan 2004 21:42:14 -0000 1.2 +@@ -95,7 +95,11 @@ + } value; /* either number or string */ + uint32_t mask; /* mask before comparison with value */ + char desc[MAXDESC]; /* description */ ++#if defined(__GNUC__) + } __attribute__((__packed__)); ++#else ++}; ++#endif + + #define BIT(A) (1 << (A)) + #define STRING_IGNORE_LOWERCASE BIT(0) + ++--------------------------------------------------------------------------- +| Better portability for madvise(2) usage. ++--------------------------------------------------------------------------- +Index: rpmdb/legacy.c +--- rpmdb/legacy.c 18 Dec 2002 22:40:19 -0000 1.1.1.4 ++++ rpmdb/legacy.c 22 Jan 2004 21:42:30 -0000 1.2 +@@ -182,7 +182,7 @@ + break; + } + +-#ifdef MADV_SEQUENTIAL ++#if defined(HAVE_MADVISE) && defined(MADV_SEQUENTIAL) + xx = madvise(mapped, fsize, MADV_SEQUENTIAL); + #endif + + ++--------------------------------------------------------------------------- +| Better portability for madvise(2) usage. ++--------------------------------------------------------------------------- +Index: lib/fsm.c +--- lib/fsm.c 3 Mar 2003 21:28:12 -0000 1.1.1.5 ++++ lib/fsm.c 22 Jan 2004 21:42:23 -0000 1.2 +@@ -879,7 +879,7 @@ + rdbuf = fsm->rdbuf; + fsm->rdbuf = (char *) mapped; + fsm->rdlen = nmapped = st->st_size; +-#if defined(MADV_DONTNEED) ++#if defined(HAVE_MADVISE) && defined(MADV_DONTNEED) + xx = madvise(mapped, nmapped, MADV_DONTNEED); + #endif + } +@@ -909,7 +909,7 @@ + #if HAVE_MMAP + if (mapped != (void *)-1) { + xx = msync(mapped, nmapped, MS_ASYNC); +-#if defined(MADV_DONTNEED) ++#if defined(HAVE_MADVISE) && defined(MADV_DONTNEED) + xx = madvise(mapped, nmapped, MADV_DONTNEED); + #endif + /*@-noeffect@*/ xx = munmap(mapped, nmapped) /*@=noeffect@*/; + ++--------------------------------------------------------------------------- +| Support UnixWare 7.1.3 and OpenDarwin 6.6.2, too. ++--------------------------------------------------------------------------- +Index: aclocal.m4 +--- aclocal.m4 16 Jul 2003 17:05:28 -0000 1.1.1.10 ++++ aclocal.m4 6 Jun 2005 15:53:03 -0000 1.4 +@@ -2838,7 +2838,7 @@ + runpath_var=LD_RUN_PATH + ;; + +- sysv5uw7* | unixware7*) ++ sysv5uw7* | unixware7* | sysv5UnixWare7* ) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +@@ -4311,6 +4311,7 @@ + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' ++ lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; +@@ -4336,7 +4337,7 @@ + ;; + + hpux10.20*|hpux11*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' ++ lt_cv_deplibs_check_method='pass_all' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; +@@ -4375,11 +4376,7 @@ + ;; + + netbsd*) +- if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' +- fi ++ lt_cv_deplibs_check_method='pass_all' + ;; + + newos6*) +@@ -4414,7 +4411,7 @@ + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +-sysv5uw[[78]]* | sysv4*uw2*) ++sysv5uw[[78]]* | sysv4*uw2* | sysv5UnixWare7* ) + lt_cv_deplibs_check_method=pass_all + ;; + + ++--------------------------------------------------------------------------- +| Use Linux i386 assembly specific stuff on Linux only. ++--------------------------------------------------------------------------- +Index: rpmio/rpmsw.c +--- rpmio/rpmsw.c 5 Jun 2003 12:04:05 -0000 1.1.1.1 ++++ rpmio/rpmsw.c 22 Jan 2004 21:42:33 -0000 1.2 +@@ -27,7 +27,7 @@ + /*@unchecked@*/ + static int rpmsw_initialized = 0; + +-#if defined(__i386__) ++#if defined(__linux__) && defined(__i386__) + /* Swiped from glibc-2.3.2 sysdeps/i386/i686/hp-timing.h */ + + #define HP_TIMING_ZERO(Var) (Var) = (0) + ++--------------------------------------------------------------------------- +| Fix "environ" declaration. ++--------------------------------------------------------------------------- +Index: lib/signature.c +--- lib/signature.c 29 May 2003 18:42:23 -0000 1.1.1.23 ++++ lib/signature.c 22 Jan 2004 21:42:25 -0000 1.2 +@@ -27,7 +27,7 @@ + /*@access pgpDigParams@*/ + + #if !defined(__GLIBC__) +-char ** environ = NULL; ++extern char ** environ; + #endif + + int rpmLookupSignatureType(int action) + ++--------------------------------------------------------------------------- +| Rename own mergesort(3) implementation to avoid conflicts +| with a possibly existing vendor version. ++--------------------------------------------------------------------------- +Index: rpmdb/merge.c +--- rpmdb/merge.c 22 Jun 2002 18:51:58 -0000 1.1.1.2 ++++ rpmdb/merge.c 22 Jan 2004 21:42:30 -0000 1.2 +@@ -204,7 +204,7 @@ + * Arguments are as for qsort. + */ + int +-mergesort(void *base, size_t nmemb, size_t size, ++rpmdb_mergesort(void *base, size_t nmemb, size_t size, + int (*cmp) (const void *, const void *)) + { + register int i, sense; + ++--------------------------------------------------------------------------- +| Rename own mergesort(3) implementation to avoid conflicts +| with a possibly existing vendor version. ++--------------------------------------------------------------------------- +Index: rpmdb/rpmdb.h +--- rpmdb/rpmdb.h 18 Jan 2003 14:04:35 -0000 1.1.1.5 ++++ rpmdb/rpmdb.h 22 Jan 2004 21:42:31 -0000 1.2 +@@ -1080,7 +1080,7 @@ + * Mergesort, same arguments as qsort(2). + */ + /*@unused@*/ +-int mergesort(void *base, size_t nmemb, size_t size, ++int rpmdb_mergesort(void *base, size_t nmemb, size_t size, + int (*cmp) (const void *, const void *)) + /*@globals errno @*/ + /*@modifies base, errno @*/; + ++--------------------------------------------------------------------------- +| Rename own mergesort(3) implementation to avoid conflicts +| with a possibly existing vendor version. ++--------------------------------------------------------------------------- +Index: rpmdb/rpmdb.c +--- rpmdb/rpmdb.c 2 Jul 2003 19:21:54 -0000 1.1.1.6 ++++ rpmdb/rpmdb.c 22 Jan 2004 21:42:30 -0000 1.2 +@@ -2361,7 +2361,7 @@ + sizeof(*mi->mi_set->recs), hdrNumCmp); + /*@=boundsread@*/ + #else +- mergesort(mi->mi_set->recs, mi->mi_set->count, ++ rpmdb_mergesort(mi->mi_set->recs, mi->mi_set->count, + sizeof(*mi->mi_set->recs), hdrNumCmp); + #endif + mi->mi_sorted = 1; + ++--------------------------------------------------------------------------- +| Workaround a double-inclusion problem under AIX. ++--------------------------------------------------------------------------- +Index: lib/getdate.y +--- lib/getdate.y 24 Sep 2001 21:53:15 -0000 1.1.1.2 ++++ lib/getdate.y 8 Jun 2005 13:16:22 -0000 1.2 +@@ -30,7 +30,9 @@ + #undef static + #endif + ++#ifndef OPENPKG_AIX + #include ++#endif + #include + + /* The code at the top of get_date which figures out the offset of the + ++--------------------------------------------------------------------------- +| Workaround a double-inclusion problem under AIX. ++--------------------------------------------------------------------------- +Index: lib/getdate.c +--- lib/getdate.c 2 Jul 2003 19:21:45 -0000 1.1.1.4 ++++ lib/getdate.c 8 Jun 2005 13:16:21 -0000 1.2 +@@ -50,7 +50,9 @@ + #undef static + #endif + ++#ifndef OPENPKG_AIX + #include ++#endif + #include + + /* The code at the top of get_date which figures out the offset of the