openpkg/rpm.patch.porting

Fri, 16 Jan 2009 10:58:21 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 16 Jan 2009 10:58:21 +0100
changeset 92
645923d1e875
parent 13
cb59d6afeb61
child 330
51aab9414a86
permissions
-rw-r--r--

Correct and improve code logic, buildconf, and packaging. In particular:
1. Use descriptive variable names <var>libs instead of just <var>.
2. Although Nokia states in all Qt builds that 'NOTE: When linking
against OpenSSL, you can override the default library names
through OPENSSL_LIBS.' and even gives an example, their own
configuration logic rejects such an attempt. Correct this by
hard coding the OpenSSL library string in the configure script.
3. Consistently use the whitespace substitution [\t ] throughout.
4. Patch the buggy INCPATH of SQL plugin Qmake project files.
5. Add the 'x11' configuration variable to the qtconfig Qmake
project using the src/gui/gui.pro file as a model. This is
needed for qtconfig although not in other tools, because
the qtconfig buildconf indirectly includes qt_x11_p.h which
is dependent on X11 headers.
6. Avoid 'ld.so: fatal: hardware capability unsupported: SSE2 AMD_3DNow'
on platforms for which the config.tests/unix/[3dnow|sse2] succeed
although unsopported at run time by testing for the x86-64
instruction set at build time and regulating hardware capabilities.
7. Correctly install the desinger plugin by explicitly building it.
8. Remove custom plugin installation logic which is unnecessary.
9. Correct removal of temporary paths from shared object files.

     1 ##
     2 ##  rpm.patch.porting -- Annotated OpenPKG RPM Patch file
     3 ##  Copyright (c) 2000-2007 OpenPKG Foundation e.V. <http://openpkg.net/>
     4 ##  Copyright (c) 2000-2007 Ralf S. Engelschall <http://engelschall.com/>
     5 ##
     6 ##  This file assembles changes to existing RPM source files between
     7 ##  the original RedHat RPM and the OpenPKG RPM variant. It can be
     8 ##  automatically applied to a vanilla RedHat RPM source tree with the
     9 ##  'patch' tool to upgrade those files. Each patch snippet is annotated
    10 ##  with a short description.
    11 ##
    12 ##  Created on: 13-Sep-2006
    13 ##
    14 ##  ATTENTION: THIS PATCH FILE WAS AUTO-GENERATED FROM AN OPENPKG
    15 ##             RPM CVS REPOSITORY, HENCE DO NOT EDIT THIS FILE.
    16 ##
    18 +---------------------------------------------------------------------------
    19 | Evil hack to get GNU libtool working under NetBSD 1.6
    20 | with the ugly way RPM currently has to use it.
    21 +---------------------------------------------------------------------------
    22 Index: ltconfig
    23 --- ltconfig	17 Jan 2001 16:22:58 -0000	1.1.1.7
    24 +++ ltconfig	29 Apr 2004 13:07:28 -0000	1.4
    25 @@ -2017,6 +2017,7 @@
    26      dynamic_linker='NetBSD ld.elf_so'
    27    fi
    28    shlibpath_var=LD_LIBRARY_PATH
    29 +  deplibs_check_method=pass_all
    30    ;;
    32  openbsd*)
    34 +---------------------------------------------------------------------------
    35 | Disable special RedHat NPTL handling.
    36 +---------------------------------------------------------------------------
    37 Index: configure.ac
    38 --- configure.ac	2 Jul 2003 19:20:52 -0000	1.1.1.4
    39 +++ configure.ac	13 Sep 2006 13:40:20 -0000
    40 @@ -150,10 +151,10 @@
    41  dnl XXX Test for libpthread.a that is NPTL aware (static link only).
    42  dnl
    43  LDFLAGS_NPTL=
    44 -if test -f /usr/lib/nptl/libpthread.a ; then
    45 -    LDFLAGS_NPTL="-L/usr/lib/nptl"
    46 -#    INCPATH="$INCPATH -I/usr/include/nptl"
    47 -fi
    48 +dnl if test -f /usr/lib/nptl/libpthread.a ; then
    49 +dnl     LDFLAGS_NPTL="-L/usr/lib/nptl"
    50 +dnl #    INCPATH="$INCPATH -I/usr/include/nptl"
    51 +dnl fi
    52  AC_SUBST(LDFLAGS_NPTL)
    54  dnl
    56 +---------------------------------------------------------------------------
    57 | Disable any POSIX Pthread stuff because in OpenPKG we use
    58 | non-Pthread mutexes in Berkeley-DB.
    59 +---------------------------------------------------------------------------
    60 Index: configure.ac
    61 --- configure.ac	2 Jul 2003 19:20:52 -0000	1.1.1.4
    62 +++ configure.ac	13 Sep 2006 13:40:21 -0000
    63 @@ -446,14 +447,17 @@
    64      AC_CHECK_LIB(socket, socket)
    65  ])
    67 -AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h)
    68 +dnl # required for HP-UX because of RPC stuff in DB
    69 +AC_CHECK_LIB(nsl, svc_run)
    71 -AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
    72 -  dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
    73 -  AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
    74 -    AC_CHECK_LIB(thread, mutex_lock)
    75 -  ])
    76 -])
    77 +dnl AC_CHECK_HEADERS(thread.h pthread.h synch.h semaphore.h)
    78 +dnl 
    79 +dnl AC_CHECK_LIB(pthread, pthread_mutex_trylock, [], [
    80 +dnl   dnl OSF 5.0 has the the symbols prefixed with __ in libpthread.
    81 +dnl   AC_CHECK_LIB(pthread, __pthread_mutex_trylock, [], [
    82 +dnl     AC_CHECK_LIB(thread, mutex_lock)
    83 +dnl   ])
    84 +dnl ])
    86  AC_CHECK_HEADERS(aio.h)
    87  AC_SEARCH_LIBS(aio_read, [c rt aio posix4])
    89 +---------------------------------------------------------------------------
    90 | Add support for BSD getmntinfo(3).
    91 +---------------------------------------------------------------------------
    92 Index: configure.ac
    93 --- configure.ac	2 Jul 2003 19:20:52 -0000	1.1.1.4
    94 +++ configure.ac	13 Sep 2006 13:40:23 -0000
    95 @@ -963,12 +967,13 @@
    96  AC_CHECK_FUNCS(getpassphrase)
    98  AC_CHECK_FUNC(getmntent, AC_DEFINE(HAVE_GETMNTENT, 1, [Define if you have the getmntent() function]), [
    99 + AC_CHECK_FUNC(getmntinfo, AC_DEFINE(HAVE_GETMNTINFO, 1, [Define as 1 if you have the getmntinfo() function]), [
   100    AC_CHECK_FUNC(mntctl, AC_DEFINE(HAVE_MNTCTL, 1, [Define as 1 if you have mntctl() (only aix?)]),[
   101      AC_CHECK_FUNC(getmntinfo_r, AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)]), [
   102        AC_CHECK_LIB(c_r, getmntinfo_r, [LIBS="$LIBS -lc_r"; 
   103  					AC_DEFINE(HAVE_GETMNTINFO_R, 1, [Define as 1 if you have getmntinfo_r() (only osf?)])], [
   104  		 AC_DEFINE([USE_GETMNTENT], 1, [Defined if getmntent replacement is used])
   105 -                 AC_LIBOBJ(getmntent)])])])])
   106 +                 AC_LIBOBJ(getmntent)])])])])])
   108  AC_CHECK_FUNC(lchown,
   109     [__CHOWN_RHF="%{__chown} -Rhf"
   111 +---------------------------------------------------------------------------
   112 | Remove RPM's "lib64" hack because we do not install
   113 | into any system locations at all.
   114 +---------------------------------------------------------------------------
   115 Index: configure.ac
   116 --- configure.ac	2 Jul 2003 19:20:52 -0000	1.1.1.4
   117 +++ configure.ac	13 Sep 2006 13:40:25 -0000
   118 @@ -1141,9 +1146,6 @@
   120  dnl XXX Choose /usr/lib or /usr/lib64 for library installs.
   121  MARK64=
   122 -case "${target_cpu}" in
   123 -x86_64*|ppc64*|powerpc64*|sparc64*|s390x*)	MARK64=64 ;;
   124 -esac
   125  AC_SUBST(MARK64)
   127  dnl Determine the canonical arch-vendor-os for the build machine
   129 +---------------------------------------------------------------------------
   130 | Provide fallback definitions for uintX_t stuff, which is used by
   131 | build/rpmfile.h and not available on all platforms. We do this by
   132 | adding the same Autoconf checks file/configure already used for its
   133 | original file.h.
   134 | Additionally, do not try to configure in an internal
   135 | beecrypt subdirectory.
   136 +---------------------------------------------------------------------------
   137 Index: configure.ac
   138 --- configure.ac	2 Jul 2003 19:20:52 -0000	1.1.1.4
   139 +++ configure.ac	13 Sep 2006 13:40:29 -0000
   140 @@ -1249,11 +1251,40 @@
   142  AC_SUBST(OBJDUMP)
   144 +dnl OpenPKG: rpmfile.h (used in RPM) from file(1) needs additional checks
   145 +dnl for its use of uintXX_t (which are available in file/config.h, but which
   146 +dnl we cannot include into RPM because of conflicts with RPM's config.h)
   147 +AC_DEFUN([AC_CHECK_TYPE_STDC],
   148 +[AC_REQUIRE([AC_HEADER_STDC])dnl
   149 +AC_MSG_CHECKING(for $1)
   150 +AC_CACHE_VAL(ac_cv_type_$1,
   151 +[AC_EGREP_CPP(dnl
   152 +[(^|[^a-zA-Z_0-9])$1[^a-zA-Z_0-9]],
   153 +[#if HAVE_STDINT_H
   154 +#include <stdint.h>
   155 +#endif
   156 +#include <sys/types.h>
   157 +#if STDC_HEADERS
   158 +#include <stdlib.h>
   159 +#include <stddef.h>
   160 +#endif], ac_cv_type_$1=yes, ac_cv_type_$1=no)])dnl
   161 +AC_MSG_RESULT($ac_cv_type_$1)
   162 +if test $ac_cv_type_$1 = no; then
   163 +  AC_DEFINE($1, $2, $1)
   164 +fi])
   165 +AC_CHECK_TYPE_STDC(uint8_t,  unsigned char)
   166 +AC_CHECK_TYPE_STDC(uint16_t, unsigned short)
   167 +AC_CHECK_TYPE_STDC(uint32_t, unsigned int)
   168 +
   169 +dnl OpenPKG: some strange platforms (like Unixware) really have MADV_XXX
   170 +dnl but no madvise(2) function itself, so check for madvise explicitly.
   171 +AC_CHECK_FUNC(madvise)
   172 +
   173  dnl XXX this causes popt to depend on zlib et al
   174  dnl # XXX Propagate -lucb to popt ...
   175  dnl export LIBS INCPATH CONFIG_SITE
   177 -AC_CONFIG_SUBDIRS(popt beecrypt zlib elfutils file db3)
   178 +AC_CONFIG_SUBDIRS(popt zlib elfutils file db3)
   180  AC_OUTPUT([ Doxyfile Makefile rpmrc macros platform rpmpopt rpm.spec
   181  	rpmio/Makefile rpmdb/Makefile lib/Makefile build/Makefile
   183 +---------------------------------------------------------------------------
   184 | Remove RPM's "lib64" hack because we do not install
   185 | into any system locations at all.
   186 +---------------------------------------------------------------------------
   187 Index: popt/configure.ac
   188 --- popt/configure.ac	27 Mar 2003 17:23:18 -0000	1.1.1.3
   189 +++ popt/configure.ac	12 May 2004 14:34:35 -0000	1.2
   190 @@ -53,9 +53,6 @@
   192  dnl XXX Choose /usr/lib or /usr/lib64 for library installs.
   193  MARK64=
   194 -case "${target_cpu}" in
   195 -x86_64*|powerpc64*|ppc64*|sparc64*|s390x*)        MARK64=64 ;;
   196 -esac
   197  AC_SUBST(MARK64)
   199  AC_CHECK_HEADERS(alloca.h float.h libintl.h mcheck.h unistd.h)
   201 +---------------------------------------------------------------------------
   202 | Prevent (at least NetBSD's) gcc 2.95 from optimizing (at least sha1.c)
   203 | and this way run into a resource (virtual memory) exhaustion situation.
   204 | Not all Bourne-Shells support embedded TAB characters in
   205 | here-document style constructs. Insert the TAB character indirectly
   206 | to workaround problems.
   207 | Additionally, there is no need to build a shared library version of
   208 | Berkeley-DB.
   209 | Finally, enforce the use of the standard UNIX/fcntl mutex type for
   210 | full portability and to get rid of Pthread library dependencies
   211 | (which especially are nasty for the external RPM API users).
   212 +---------------------------------------------------------------------------
   213 Index: db3/configure
   214 --- db3/configure	18 Jan 2003 14:04:22 -0000	1.1.1.4
   215 +++ db3/configure	6 Jun 2005 15:53:05 -0000	1.3
   216 @@ -7,19 +7,29 @@
   217  # XXX edit CFLAGS= ... out of invocation args ???
   218  ARGS="`echo $* | sed -e 's% [^ ]*CFLAGS=[^ ]*%%' -e 's% -[^-][^ ]*%%g' -e 's%--cache-file=.*$%%'`"
   220 +# prevent gcc 2.95 from optimizing (at least sha1.c)
   221 +# and this way get into a resource exhaustion situation
   222 +if [ ".`($CC -v; $CC --version) </dev/null 2>&1 | grep -i 'gcc'`" != . ]; then
   223 +    case "`$CC -dumpversion 2>/dev/null`" in
   224 +        3.* ) ;;
   225 +        *   ) CFLAGS=`echo " $CFLAGS -O0" | sed -e 's; -O[0-9]* ; ;g' -e 's;^  *;;'` ;;
   226 +    esac
   227 +fi
   228 +
   229  CC="$CC" CFLAGS="$CFLAGS" $db_dist/configure $ARGS \
   230 -	--enable-shared --enable-static --enable-rpc \
   231 -	--with-uniquename=_rpmdb --srcdir=$db_dist
   232 +	--disable-shared --enable-static --enable-rpc \
   233 +	--with-uniquename=_rpmdb --srcdir=$db_dist \
   234 +	--with-mutex="UNIX/fcntl" --disable-largefile
   236  mv Makefile Makefile.orig
   237  cat Makefile.orig | sed -e '/^install[:-]/c\
   238  .PHONY: listobjs\
   239  listobjs:\
   240 -	@echo $(OBJS) $(C_OBJS) \
   241 +~@echo $(OBJS) $(C_OBJS) \
   242  \
   243  distdir install check:\
   244  \
   245 -db4_install: all install_setip' > Makefile
   246 +db4_install: all install_setip' | tr '~' '	' > Makefile
   248  mv db.h db.h.orig
   249  cat db.h.orig | sed \
   251 +---------------------------------------------------------------------------
   252 | Add support for BSD getmntinfo(3).
   253 +---------------------------------------------------------------------------
   254 Index: lib/fs.c
   255 --- lib/fs.c	4 Jun 2003 18:09:43 -0000	1.1.1.13
   256 +++ lib/fs.c	25 Nov 2004 09:32:16 -0000	1.3
   257 @@ -164,6 +164,15 @@
   258      int nextMount = 0;
   260  	getmntinfo_r(&mounts, flags, &mntCount, &bufSize);
   261 +#   elif HAVE_GETMNTINFO
   262 +#   if defined(__NetBSD__) && (__NetBSD_Version__ > 200030000)
   263 +#   define statfs statvfs
   264 +#   endif
   265 +    struct statfs * mounts = NULL;
   266 +    int mntCount, flags = MNT_NOWAIT;
   267 +    int nextMount = 0;
   268 +
   269 +	mntCount = getmntinfo(&mounts, flags);
   270  #   endif
   272      filesystems = xcalloc((numAlloced + 1), sizeof(*filesystems));	/* XXX memory leak */
   273 @@ -193,6 +202,9 @@
   274  #	elif HAVE_GETMNTINFO_R
   275  	    if (nextMount == mntCount) break;
   276  	    mntdir = mounts[nextMount++].f_mntonname;
   277 +#	elif HAVE_GETMNTINFO
   278 +	    if (nextMount == mntCount) break;
   279 +	    mntdir = mounts[nextMount++].f_mntonname;
   280  #	endif
   282  	if (stat(mntdir, &sb)) {
   284 +---------------------------------------------------------------------------
   285 | Add support for Compaq/HP OSF1/Tru64.
   286 +---------------------------------------------------------------------------
   287 Index: misc/fnmatch.h
   288 --- misc/fnmatch.h	22 Feb 2002 17:12:15 -0000	1.1.1.3
   289 +++ misc/fnmatch.h	22 Jan 2004 21:42:26 -0000	1.2
   290 @@ -55,7 +55,7 @@
   291  #define	FNM_NOESCAPE	(1 << 1) /* Backslashes don't quote special chars.  */
   292  #define	FNM_PERIOD	(1 << 2) /* Leading `.' is matched only explicitly.  */
   294 -#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE
   295 +#if !defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _GNU_SOURCE || defined __osf__
   296  # define FNM_FILE_NAME	 FNM_PATHNAME	/* Preferred GNU name.  */
   297  # define FNM_LEADING_DIR (1 << 3)	/* Ignore `/...' after a match.  */
   298  # define FNM_CASEFOLD	 (1 << 4)	/* Compare without regard to case.  */
   300 +---------------------------------------------------------------------------
   301 | Use more correct Autoconf based size_t check.
   302 | Add support for Compaq/HP OSF1/Tru64 and SCO UnixWare.
   303 +---------------------------------------------------------------------------
   304 Index: misc/glob.h
   305 --- misc/glob.h	11 Mar 2000 20:59:30 -0000	1.1.1.3
   306 +++ misc/glob.h	22 Jan 2004 21:42:27 -0000	1.2
   307 @@ -46,7 +46,7 @@
   308  #endif /* C++ or ANSI C.  */
   310  /* We need `size_t' for the following definitions.  */
   311 -#ifndef __size_t
   312 +#if !defined(__size_t) && !defined(_SIZE_T_DECLARED)
   313  # if defined __GNUC__ && __GNUC__ >= 2
   314  typedef __SIZE_TYPE__ __size_t;
   315  #  ifdef _XOPEN_SOURCE
   316 @@ -74,7 +74,7 @@
   317  #define	GLOB_PERIOD	(1 << 7)/* Leading `.' can be matched by metachars.  */
   319  #if (!defined _POSIX_C_SOURCE || _POSIX_C_SOURCE < 2 || defined _BSD_SOURCE \
   320 -     || defined _GNU_SOURCE)
   321 +     || defined _GNU_SOURCE || defined __osf__ )
   322  # define GLOB_MAGCHAR	 (1 << 8)/* Set in gl_flags if any metachars seen.  */
   323  # define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions.  */
   324  # define GLOB_BRACE	 (1 << 10)/* Expand "{a,b}" to "a" "b".  */
   325 @@ -151,7 +151,8 @@
   326     `glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
   327     If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
   328     Otherwise, `glob' returns zero.  */
   329 -#if _FILE_OFFSET_BITS != 64
   330 +/* #if _FILE_OFFSET_BITS != 64 || defined(OPENPKG_UNIXWARE) */
   331 +#if !defined(__linux__)
   332  extern int glob __P ((__const char *__pattern, int __flags,
   333  		      int (*__errfunc) (__const char *, int),
   334  		      glob_t *__pglob));
   336 +---------------------------------------------------------------------------
   337 | Better portability.
   338 +---------------------------------------------------------------------------
   339 Index: misc/glob.c
   340 --- misc/glob.c	11 Mar 2000 21:13:18 -0000	1.1.1.4
   341 +++ misc/glob.c	22 Jan 2004 21:42:26 -0000	1.2
   342 @@ -813,6 +813,7 @@
   345  /* Free storage allocated in PGLOB by a previous `glob' call.  */
   346 +#if !defined(__linux__) || (defined(__linux__) && (_FILE_OFFSET_BITS != 64) || (__GNUC__ >= 2))
   347  void
   348  globfree (pglob)
   349       register glob_t *pglob;
   350 @@ -826,7 +827,7 @@
   351        free ((__ptr_t) pglob->gl_pathv);
   352      }
   353  }
   354 -
   355 +#endif
   357  /* Do a collated comparison of A and B.  */
   358  static int
   360 +---------------------------------------------------------------------------
   361 | Add libmisc.a for platform portability.
   362 +---------------------------------------------------------------------------
   363 Index: tools/Makefile.am
   364 --- tools/Makefile.am	29 May 2003 17:40:17 -0000	1.1.1.14
   365 +++ tools/Makefile.am	22 Jan 2004 21:42:34 -0000	1.2
   366 @@ -22,7 +22,7 @@
   368  LDADD = \
   369  	$(top_builddir)/lib/librpm.la \
   370 -	@INTLLIBS@
   371 +	@INTLLIBS@ @LIBMISC@
   373  staticLDFLAGS = @LDFLAGS_STATIC@ @LDFLAGS_NPTL@
   376 +---------------------------------------------------------------------------
   377 | Add libmisc.a for platform portability.
   378 +---------------------------------------------------------------------------
   379 Index: tools/Makefile.in
   380 --- tools/Makefile.in	16 Jul 2003 17:05:51 -0000	1.1.1.20
   381 +++ tools/Makefile.in	22 Jan 2004 21:42:35 -0000	1.2
   382 @@ -275,7 +275,7 @@
   384  LDADD = \
   385  	$(top_builddir)/lib/librpm.la \
   386 -	@INTLLIBS@
   387 +	@INTLLIBS@ @LIBMISC@
   390  staticLDFLAGS = @LDFLAGS_STATIC@ @LDFLAGS_NPTL@
   392 +---------------------------------------------------------------------------
   393 | Drop GCC "inline" attribute if not compiling with GCC.
   394 | Workaround some other GCC'isms, too.
   395 | Do not take over "const" replacements from Zlib.
   396 +---------------------------------------------------------------------------
   397 Index: file/system.h
   398 --- file/system.h	24 Jan 2003 19:41:56 -0000	1.1.1.1
   399 +++ file/system.h	6 Jun 2005 15:53:05 -0000	1.4
   400 @@ -13,6 +13,9 @@
   401  #endif
   403  #include <sys/types.h>
   404 +#ifdef HAVE_INTTYPES_H
   405 +#include <inttypes.h>
   406 +#endif
   408  #include <sys/stat.h>
   409  #include <stdio.h>
   410 @@ -53,6 +56,8 @@
   411  #else
   412  #if HAVE_ERROR && HAVE_ERROR_H
   413  #include <error.h>
   414 +#else
   415 +extern void error(int status, int errnum, const char *format, ...);
   416  #endif
   417  #endif
   419 @@ -194,6 +199,7 @@
   421  #ifdef HAVE_LIBZ
   422  #include <zlib.h>
   423 +#undef const
   424  #endif
   426  #ifndef HAVE_STRERROR
   427 @@ -246,7 +252,11 @@
   428   */
   429  /*@-shadow@*/
   430  /*@unused@*/ /*@exits@*/ /*@only@*/
   431 +#if defined(__GNUC__)
   432  static inline void * vmefail(/*@unused@*/ size_t nb)
   433 +#else
   434 +static void * vmefail(/*@unused@*/ size_t nb)
   435 +#endif
   436  	/*@globals fileSystem @*/
   437  	/*@modifies fileSystem @*/
   438  {
   439 @@ -286,9 +296,33 @@
   441  #if !defined(__LCLINT__)
   442  /* Memory allocation via macro defs to get meaningful locations from mtrace() */
   443 +#if defined(__GNUC__)
   444  #define	xmalloc(_size) 		(malloc(_size) ? : vmefail(0))
   445  #define	xcalloc(_nmemb, _size)	(calloc((_nmemb), (_size)) ? : vmefail(0))
   446  #define	xrealloc(_ptr, _size)	(realloc((_ptr), (_size)) ? : vmefail(0))
   447 +#else
   448 +static void *xmalloc(size_t size)
   449 +{
   450 +    void *vp = malloc(size);
   451 +    if (vp == NULL)
   452 +        vmefail(0);
   453 +    return vp;
   454 +}
   455 +static void *xcalloc(size_t number, size_t size)
   456 +{
   457 +    void *vp = calloc(number, size);
   458 +    if (vp == NULL)
   459 +        vmefail(0);
   460 +    return vp;
   461 +}
   462 +static void *xrealloc(void *ptr, size_t size)
   463 +{
   464 +    void *vp = realloc(ptr, size);
   465 +    if (vp == NULL)
   466 +        vmefail(0);
   467 +    return vp;
   468 +}
   469 +#endif
   470  #define	xstrdup(_str)	(strcpy(xmalloc(strlen(_str)+1), (_str)))
   471  #endif
   473 @@ -314,9 +348,14 @@
   475  #if defined(__LCLINT__)
   476  #define FILE_RCSID(id)
   477 -#else
   478 +#elif defined(__GNUC__)
   479  #define FILE_RCSID(id) \
   480  static inline const char *rcsid(const char *p) { \
   481 +        return rcsid(p = id); \
   482 +}
   483 +#else
   484 +#define FILE_RCSID(id) \
   485 +static const char *rcsid(const char *p) { \
   486  	return rcsid(p = id); \
   487  }
   488  #endif
   490 +---------------------------------------------------------------------------
   491 | Use GCC extensional features only if compiled with GCC.
   492 +---------------------------------------------------------------------------
   493 Index: file/file.h
   494 --- file/file.h	24 Jan 2003 19:41:56 -0000	1.1.1.1
   495 +++ file/file.h	22 Jan 2004 21:42:22 -0000	1.2
   496 @@ -95,7 +95,11 @@
   497  	} value;		/* either number or string */
   498  	uint32_t mask;	/* mask before comparison with value */
   499  	char desc[MAXDESC];	/* description */
   500 +#if defined(__GNUC__)
   501  } __attribute__((__packed__));
   502 +#else
   503 +};
   504 +#endif
   506  #define BIT(A)   (1 << (A))
   507  #define STRING_IGNORE_LOWERCASE		BIT(0)
   509 +---------------------------------------------------------------------------
   510 | Add int32_t detection and automatic fallback support.
   511 +---------------------------------------------------------------------------
   512 Index: file/config.h.in
   513 --- file/config.h.in	7 Mar 2003 19:39:18 -0000	1.1.1.1
   514 +++ file/config.h.in	13 Sep 2006 13:40:49 -0000
   515 @@ -106,6 +106,9 @@
   516  /* Define to 1 if you have the <unistd.h> header file. */
   517  #undef HAVE_UNISTD_H
   519 +/* Define to 1 if you have the `vsnprintf' function. */
   520 +#undef HAVE_VSNPRINTF
   521 +
   522  /* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>.
   523     */
   524  #undef MAJOR_IN_MKDEV
   525 @@ -162,12 +165,16 @@
   526  /* Define to empty if `const' does not conform to ANSI C. */
   527  #undef const
   529 +/* int32_t */
   530 +#undef int32_t
   531 +
   532  /* Define to `long' if <sys/types.h> does not define. */
   533  #undef off_t
   535  /* Define to `unsigned' if <sys/types.h> does not define. */
   536  #undef size_t
   538 +#ifndef HAVE_STDINT_H
   539  /* uint16_t */
   540  #undef uint16_t
   542 @@ -179,3 +186,4 @@
   544  /* uint8_t */
   545  #undef uint8_t
   546 +#endif
   548 +---------------------------------------------------------------------------
   549 | Add int32_t detection and automatic fallback support.
   550 +---------------------------------------------------------------------------
   551 Index: file/configure.ac
   552 --- file/configure.ac	1 Dec 2002 21:34:06 -0000	1.1.1.1
   553 +++ file/configure.ac	6 Jun 2005 15:53:05 -0000	1.2
   554 @@ -92,6 +92,7 @@
   555  AC_CHECK_TYPE_STDC(uint8_t, unsigned char)
   556  AC_CHECK_TYPE_STDC(uint16_t, unsigned short)
   557  AC_CHECK_TYPE_STDC(uint32_t, unsigned int)
   558 +AC_CHECK_TYPE_STDC(int32_t, int)
   559  AC_C_LONG_LONG
   560  if test $ac_cv_c_long_long = yes; then
   561    long64='unsigned long long';
   562 @@ -107,7 +108,7 @@
   563  AC_CHECK_SIZEOF_STDC_HEADERS(uint64_t, 0)
   565  dnl Checks for functions
   566 -AC_CHECK_FUNCS(error mtrace mkstemp mmap strdup strerror strtoul)
   567 +AC_CHECK_FUNCS(error mtrace mkstemp mmap strdup strerror strtoul vsnprintf)
   569  dnl Checks for libraries
   570  AC_CHECK_LIB(z, gzopen)
   572 +---------------------------------------------------------------------------
   573 | Add int32_t detection and automatic fallback support.
   574 +---------------------------------------------------------------------------
   575 Index: file/configure
   576 --- file/configure	16 Jul 2003 17:05:25 -0000	1.1.1.2
   577 +++ file/configure	6 Jun 2005 15:53:05 -0000	1.2
   578 @@ -10847,6 +10847,46 @@
   580  fi
   582 +echo "$as_me:$LINENO: checking for int32_t" >&5
   583 +echo $ECHO_N "checking for int32_t... $ECHO_C" >&6
   584 +if test "${ac_cv_type_int32_t+set}" = set; then
   585 +  echo $ECHO_N "(cached) $ECHO_C" >&6
   586 +else
   587 +  cat >conftest.$ac_ext <<_ACEOF
   588 +#line $LINENO "configure"
   589 +/* confdefs.h.  */
   590 +_ACEOF
   591 +cat confdefs.h >>conftest.$ac_ext
   592 +cat >>conftest.$ac_ext <<_ACEOF
   593 +/* end confdefs.h.  */
   594 +#if HAVE_STDINT_H
   595 +#include <stdint.h>
   596 +#endif
   597 +#include <sys/types.h>
   598 +#if STDC_HEADERS
   599 +#include <stdlib.h>
   600 +#include <stddef.h>
   601 +#endif
   602 +_ACEOF
   603 +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   604 +  $EGREP "(^|[^a-zA-Z_0-9])int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then
   605 +  ac_cv_type_int32_t=yes
   606 +else
   607 +  ac_cv_type_int32_t=no
   608 +fi
   609 +rm -f conftest*
   610 +
   611 +fi
   612 +echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5
   613 +echo "${ECHO_T}$ac_cv_type_int32_t" >&6
   614 +if test $ac_cv_type_int32_t = no; then
   615 +
   616 +cat >>confdefs.h <<\_ACEOF
   617 +#define int32_t int
   618 +_ACEOF
   619 +
   620 +fi
   621 +
   622  echo "$as_me:$LINENO: checking for long long" >&5
   623  echo $ECHO_N "checking for long long... $ECHO_C" >&6
   624  if test "${ac_cv_c_long_long+set}" = set; then
   625 @@ -11220,7 +11260,8 @@
   629 -for ac_func in error mtrace mkstemp mmap strdup strerror strtoul
   630 +
   631 +for ac_func in error mtrace mkstemp mmap strdup strerror strtoul vsnprintf
   632  do
   633  as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
   634  echo "$as_me:$LINENO: checking for $ac_func" >&5
   636 +---------------------------------------------------------------------------
   637 | Fallback to vsprintf(3) if vsnprintf(3) does not exist.
   638 +---------------------------------------------------------------------------
   639 Index: file/print.c
   640 --- file/print.c	24 Jan 2003 19:41:56 -0000	1.1.1.1
   641 +++ file/print.c	6 Jun 2005 15:53:05 -0000	1.2
   642 @@ -187,7 +187,11 @@
   644  	va_start(va, f);
   645  /*@-boundswrite@*/
   646 +#ifdef HAVE_VSNPRINTF
   647  	rc = vsnprintf(fm->obp, fm->nob, f, va);
   648 +#else
   649 +	rc = vsprintf(fm->obp, f, va);
   650 +#endif
   651  /*@=boundswrite@*/
   652  	va_end(va);
   655 +---------------------------------------------------------------------------
   656 | Use GNU libtool's weaker -static (link with own static libraries)
   657 | instead of the strong -all-static (link even with static libc, etc),
   658 | because OpenPKG does not need to be fully static.
   659 +---------------------------------------------------------------------------
   660 Index: rpmdb/Makefile.am
   661 --- rpmdb/Makefile.am	2 Jul 2003 20:14:07 -0000	1.1.1.7
   662 +++ rpmdb/Makefile.am	22 Jan 2004 21:42:29 -0000	1.2
   663 @@ -18,7 +18,7 @@
   664  EXTRA_PROGRAMS = tjfn
   666  tjfn_SOURCES = tjfn.c
   667 -tjfn_LDFLAGS = -all-static
   668 +tjfn_LDFLAGS = -static
   669  tjfn_LDADD = librpmdb.la
   671  pkgincdir = $(pkgincludedir)
   672 @@ -180,4 +180,4 @@
   673  	$(LINT) $(DEFS) $(INCLUDES) $(librpmdb_la_SOURCES)
   675  tdbi: librpmdb.la tdbi.o
   676 -	$(LINK) -all-static $@.o $< $(mylibpaths) $(mylibs) $(LIBS)
   677 +	$(LINK) -static $@.o $< $(mylibpaths) $(mylibs) $(LIBS)
   679 +---------------------------------------------------------------------------
   680 | Use GNU libtool's weaker -static (link with own static libraries)
   681 | instead of the strong -all-static (link even with static libc, etc),
   682 | because OpenPKG does not need to be fully static.
   683 +---------------------------------------------------------------------------
   684 Index: rpmdb/Makefile.in
   685 --- rpmdb/Makefile.in	16 Jul 2003 17:05:48 -0000	1.1.1.7
   686 +++ rpmdb/Makefile.in	22 Jan 2004 21:42:29 -0000	1.2
   687 @@ -273,7 +273,7 @@
   688  EXTRA_PROGRAMS = tjfn
   690  tjfn_SOURCES = tjfn.c
   691 -tjfn_LDFLAGS = -all-static
   692 +tjfn_LDFLAGS = -static
   693  tjfn_LDADD = librpmdb.la
   695  pkgincdir = $(pkgincludedir)
   696 @@ -952,7 +952,7 @@
   697  	$(LINT) $(DEFS) $(INCLUDES) $(librpmdb_la_SOURCES)
   699  tdbi: librpmdb.la tdbi.o
   700 -	$(LINK) -all-static $@.o $< $(mylibpaths) $(mylibs) $(LIBS)
   701 +	$(LINK) -static $@.o $< $(mylibpaths) $(mylibs) $(LIBS)
   702  # Tell versions [3.59,3.63) of GNU make to not export all variables.
   703  # Otherwise a system limit (for SysV at least) may be exceeded.
   704  .NOEXPORT:
   706 +---------------------------------------------------------------------------
   707 | Use GNU libtool's weaker -static (link with own static libraries)
   708 | instead of the strong -all-static (link even with static libc, etc),
   709 | because OpenPKG does not need to be fully static.
   710 +---------------------------------------------------------------------------
   711 Index: rpmio/Makefile.am
   712 --- rpmio/Makefile.am	5 Jun 2003 12:05:23 -0000	1.1.1.9
   713 +++ rpmio/Makefile.am	22 Jan 2004 21:42:31 -0000	1.2
   714 @@ -68,27 +68,27 @@
   715  tdigest_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   717  tdir_SOURCES = tdir.c
   718 -tdir_LDFLAGS = -all-static
   719 +tdir_LDFLAGS = -static
   720  tdir_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   722  tfts_SOURCES = tfts.c
   723 -tfts_LDFLAGS = -all-static
   724 +tfts_LDFLAGS = -static
   725  tfts_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   727  tglob_SOURCES = tglob.c
   728 -tglob_LDFLAGS = -all-static
   729 +tglob_LDFLAGS = -static
   730  tglob_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   732  tinv_SOURCES = tinv.c
   733 -tinv_LDFLAGS = -all-static
   734 +tinv_LDFLAGS = -static
   735  tinv_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   737  tkey_SOURCES = tkey.c
   738 -tkey_LDFLAGS = -all-static
   739 +tkey_LDFLAGS = -static
   740  tkey_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   742  tring_SOURCES = tring.c
   743 -tring_LDFLAGS = -all-static
   744 +tring_LDFLAGS = -static
   745  tring_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   747  trpmio_SOURCES = trpmio.c
   749 +---------------------------------------------------------------------------
   750 | Use GNU libtool's weaker -static (link with own static libraries)
   751 | instead of the strong -all-static (link even with static libc, etc),
   752 | because OpenPKG does not need to be fully static.
   753 | Additionally, remove hard-coded Linux'ism of linking against POSIX
   754 | rt/pthread libraries (is not needed even under Linux itself) and
   755 | make sure the build does not break by an empty argument list when
   756 | iterating over (the not existing) BeeCrypt objects.
   757 +---------------------------------------------------------------------------
   758 Index: rpmio/Makefile.in
   759 --- rpmio/Makefile.in	16 Jul 2003 17:05:49 -0000	1.1.1.9
   760 +++ rpmio/Makefile.in	22 Jan 2004 21:42:31 -0000	1.2
   761 @@ -288,8 +288,7 @@
   762  librpmio_la_LDFLAGS = -release 4.2 \
   763  	@WITH_BEECRYPT_LIB@ \
   764  	$(top_builddir)/file/libfmagic.la \
   765 -	@WITH_ZLIB_LIB@ \
   766 -	-lrt -lpthread
   767 +	@WITH_ZLIB_LIB@
   769  librpmio_la_LIBADD = $(BEECRYPTLOBJS)
   770  librpmio_la_DEPENDENCIES = .created
   771 @@ -298,27 +297,27 @@
   772  tdigest_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   774  tdir_SOURCES = tdir.c
   775 -tdir_LDFLAGS = -all-static
   776 +tdir_LDFLAGS = -static
   777  tdir_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   779  tfts_SOURCES = tfts.c
   780 -tfts_LDFLAGS = -all-static
   781 +tfts_LDFLAGS = -static
   782  tfts_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   784  tglob_SOURCES = tglob.c
   785 -tglob_LDFLAGS = -all-static
   786 +tglob_LDFLAGS = -static
   787  tglob_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   789  tinv_SOURCES = tinv.c
   790 -tinv_LDFLAGS = -all-static
   791 +tinv_LDFLAGS = -static
   792  tinv_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   794  tkey_SOURCES = tkey.c
   795 -tkey_LDFLAGS = -all-static
   796 +tkey_LDFLAGS = -static
   797  tkey_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   799  tring_SOURCES = tring.c
   800 -tring_LDFLAGS = -all-static
   801 +tring_LDFLAGS = -static
   802  tring_LDADD = librpmio.la $(top_builddir)/popt/libpopt.la
   804  trpmio_SOURCES = trpmio.c
   805 @@ -743,8 +742,8 @@
   806  .created:
   807  	if test X"@WITH_BEECRYPT_SUBDIR@" != X; then \
   808  	${MAKE} -C $(top_builddir)/@WITH_BEECRYPT_SUBDIR@ listobjs ; \
   809 -	for lo in $(BEECRYPTLOBJS); do \
   810 -	  [ -f $$lo ] || $(LN_S) $(top_builddir)/@WITH_BEECRYPT_SUBDIR@/$$lo $$lo ; \
   811 +	for lo in $(BEECRYPTLOBJS) ''; do \
   812 +	  [ ".$$lo" = . ] || [ -f $$lo ] || $(LN_S) $(top_builddir)/@WITH_BEECRYPT_SUBDIR@/$$lo $$lo ; \
   813  	done \
   814  	fi
   815  	touch $@
   817 +---------------------------------------------------------------------------
   818 | Add Unixware support.
   819 +---------------------------------------------------------------------------
   820 Index: rpmio/fts.h
   821 --- rpmio/fts.h	18 Jan 2003 16:13:17 -0000	1.1.1.3
   822 +++ rpmio/fts.h	22 Jan 2004 21:42:32 -0000	1.2
   823 @@ -51,7 +51,7 @@
   824  # define	_LARGEFILE64_SOURCE
   825  #endif
   827 -#if defined(sun)
   828 +#if defined(sun) || defined(OPENPKG_UNIXWARE)
   829  # define _D_EXACT_NAMLEN(d) ((d)->d_reclen)
   830  #endif
   833 +---------------------------------------------------------------------------
   834 | Add FreeBSD/NetBSD/OpenBSD support.
   835 | Workaround some GCC'isms.
   836 +---------------------------------------------------------------------------
   837 Index: rpmio/fts.c
   838 --- rpmio/fts.c	18 Jan 2003 16:13:17 -0000	1.1.1.3
   839 +++ rpmio/fts.c	8 Jun 2005 13:16:25 -0000	1.5
   840 @@ -34,6 +34,8 @@
   841  static char sccsid[] = "@(#)fts.c	8.6 (Berkeley) 8/14/94";
   842  #endif /* LIBC_SCCS and not lint */
   844 +#include <limits.h>
   845 +
   846  #if defined(_LIBC)
   847  #include <sys/param.h>
   848  #include <include/sys/stat.h>
   849 @@ -45,20 +47,49 @@
   850  #include <string.h>
   851  #include <unistd.h>
   852  #else
   853 -#if defined(hpux)
   854 +#if defined(OPENPKG_HPUX)
   855  # define        _INCLUDE_POSIX_SOURCE
   856  #   define __errno_location() 	(&errno)
   857  #   define dirfd(dirp)		-1
   858  #   define stat64		stat
   859  #   define _STAT_VER		0
   860  #   define __fxstat64(_stat_ver, _fd, _sbp)	fstat((_fd), (_sbp))
   861 +#   define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
   862  #endif
   863 -#if defined(sun)
   864 +#if defined(sun) || defined(OPENPKG_UNIXWARE)
   865  #   define __errno_location()	(&errno)
   866  #   define dirfd(dirp)		-1
   867  #   define _STAT_VER		0
   868  #   define __fxstat64(_stat_ver, _fd, _sbp)	fstat((_fd), (_sbp))
   869  #endif
   870 +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENPKG_DARWIN)
   871 +#   define __errno_location()	(&errno)
   872 +#   define stat64 stat
   873 +#   define _STAT_VER		0
   874 +#   define __fxstat64(_stat_ver, _fd, _sbp)	fstat((_fd), (_sbp))
   875 +#   define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
   876 +#endif
   877 +#if defined(__osf__)
   878 +#   define __errno_location()   (&errno)
   879 +#   define dirfd(dirp)          -1
   880 +#   define stat64               stat
   881 +#   define _STAT_VER            0
   882 +#   define __fxstat64(_stat_ver, _fd, _sbp)     fstat((_fd), (_sbp))
   883 +#   define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
   884 +#endif
   885 +#if defined(OPENPKG_IRIX64)
   886 +#   define __errno_location()   (&errno)
   887 +#   define dirfd(dirp)          -1
   888 +#   define __fxstat64(_stat_ver, _fd, _sbp)     fstat((_fd), (_sbp))
   889 +#   define _D_EXACT_NAMLEN(d) ((d)->d_reclen)
   890 +#endif
   891 +#if defined(OPENPKG_AIX)
   892 +#   define __errno_location()   (&errno)
   893 +#   define _STAT_VER            0
   894 +#   define dirfd(dirp)          ((dirp)->dd_fd)
   895 +#   define __fxstat64(_stat_ver, _fd, _sbp)     fstat((_fd), (_sbp))
   896 +#   define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
   897 +#endif
   898  #include "system.h"
   899  #include "fts.h"
   900  #include "rpmio.h"
   901 @@ -73,7 +104,12 @@
   902  /* Largest alignment size needed, minus one.
   903     Usually long double is the worst case.  */
   904  #ifndef ALIGNBYTES
   905 +#if defined(__GNUC__)
   906  #define ALIGNBYTES	(__alignof__ (long double) - 1)
   907 +#else
   908 +/* not accurate enough (usually too large), but sufficient (and this way equal safe) */
   909 +#define ALIGNBYTES	(sizeof (long double) - 1)
   910 +#endif
   911  #endif
   912  /* Align P to that size.  */
   913  #ifndef ALIGN
   914 @@ -107,9 +143,13 @@
   915  	/*@modifies fileSystem, internalState @*/;
   917  #ifndef MAX
   918 +#if defined(__GNUC__)
   919  #define MAX(a, b)	({ __typeof__ (a) _a = (a); \
   920  			   __typeof__ (b) _b = (b); \
   921  			   _a > _b ? _a : _b; })
   922 +#else
   923 +#define MAX(a, b)   ((a) > (b) ? (a) : (b))
   924 +#endif
   925  #endif
   927  #define	ISDOT(a)	(a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2])))
   929 +---------------------------------------------------------------------------
   930 | Remove inclusion of system <glob.h> because RPM uses its own glob(3)
   931 | implementation and this can conflict with the system one.
   932 +---------------------------------------------------------------------------
   933 Index: rpmio/rpmio.h
   934 --- rpmio/rpmio.h	12 Jun 2003 18:22:18 -0000	1.1.1.7
   935 +++ rpmio/rpmio.h	22 Jan 2004 21:42:33 -0000	1.2
   936 @@ -9,9 +9,6 @@
   937  #include <sys/types.h>
   938  #include <sys/stat.h>
   939  #include <dirent.h>
   940 -/*@-noparams@*/
   941 -#include <glob.h>
   942 -/*@=noparams@*/
   943  #include <stdio.h>
   944  #include <stdlib.h>
   945  #include <unistd.h>
   947 +---------------------------------------------------------------------------
   948 | Make this whole "dirent" fiddling at least working on
   949 | FreeBSD/NetBSD/OpenBSD, Solaris, HPUX and Unixware. This certainly
   950 | is a bad corner of RPM which inherently leads to portability
   951 | problems.
   952 +---------------------------------------------------------------------------
   953 Index: rpmio/rpmrpc.c
   954 --- rpmio/rpmrpc.c	29 May 2003 22:14:04 -0000	1.1.1.8
   955 +++ rpmio/rpmrpc.c	8 Jun 2005 13:16:26 -0000	1.5
   956 @@ -1079,6 +1079,8 @@
   957      return rc;
   958  }
   960 +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(sun) && !defined(OPENPKG_DARWIN)
   961 +
   962  struct __dirstream {
   963      int fd;			/* File descriptor.  */
   964      char * data;		/* Directory block.  */
   965 @@ -1091,6 +1093,8 @@
   966  #endif
   967  };
   969 +#endif
   970 +
   971  #if !defined(DT_DIR)
   972  # define DT_UNKNOWN	0
   973  # define DT_FIFO	1
   974 @@ -1101,14 +1105,30 @@
   975  # define DT_LNK		10
   976  # define DT_SOCK	12
   977  # define DT_WHT		14
   978 -typedef struct __dirstream *	FTPDIR;
   979 -#else
   980 -typedef DIR *			FTPDIR;
   981  #endif
   983 +struct mydirstreament {
   984 +    unsigned char type;
   985 +    char *name;
   986 +};
   987 +struct mydirstream {
   988 +    DIR dir;
   989 +    struct dirent ent;
   990 +    unsigned int offset;
   991 +    unsigned int size;
   992 +    struct mydirstreament av[1];
   993 +};
   994 +typedef struct mydirstream *FTPDIR;
   995 +
   996  /*@unchecked@*/
   997  static int ftpmagicdir = 0x8440291;
   998 -#define	ISFTPMAGIC(_dir) (!memcmp((_dir), &ftpmagicdir, sizeof(ftpmagicdir)))
   999 +#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)
  1000 +#define SETFTPMAGIC(_dir) ((_dir)->fd) = ftpmagicdir
  1001 +#define ISFTPMAGIC(_dir) ((_dir)->fd == ftpmagicdir)
  1002 +#else
  1003 +#define SETFTPMAGIC(_dir) ((_dir)->dd_fd) = ftpmagicdir
  1004 +#define ISFTPMAGIC(_dir) ((_dir)->dd_fd == ftpmagicdir)
  1005 +#endif
  1007  /*@-boundswrite@*/
  1008  /*@-type@*/ /* FIX: abstract DIR */
  1009 @@ -1121,8 +1141,7 @@
  1010      struct dirent * dp;
  1011      size_t nb;
  1012      const char * s, * sb, * se;
  1013 -    const char ** av;
  1014 -    unsigned char * dt;
  1015 +    struct mydirstreament * av;
  1016      char * t;
  1017      int ac;
  1018      int c;
  1019 @@ -1165,28 +1184,22 @@
  1023 -    nb += sizeof(*mydir) + sizeof(*dp) + ((ac + 1) * sizeof(*av)) + (ac + 1);
  1024 +    nb = sizeof(*mydir) + (ac * sizeof(*av)) + nb;
  1025      mydir = xcalloc(1, nb);
  1026      /*@-abstract@*/
  1027 -    dp = (struct dirent *) (mydir + 1);
  1028 -    av = (const char **) (dp + 1);
  1029 -    dt = (char *) (av + (ac + 1));
  1030 -    t = (char *) (dt + ac + 1);
  1031 +    dp = &mydir->ent;
  1032 +    av = &mydir->av[0];
  1033 +    t  = (char *)&mydir->av[ac+1];
  1034      /*@=abstract@*/
  1036 -    mydir->fd = ftpmagicdir;
  1037 -/*@-usereleased@*/
  1038 -    mydir->data = (char *) dp;
  1039 -/*@=usereleased@*/
  1040 -    mydir->allocation = nb;
  1041 -    mydir->size = ac;
  1042 -    mydir->offset = -1;
  1043 -    mydir->filepos = 0;
  1044 +    SETFTPMAGIC((DIR *)mydir);
  1045 +    mydir->size   = ac;
  1046 +    mydir->offset = 0;
  1048      ac = 0;
  1049      /*@-dependenttrans -unrecog@*/
  1050 -    dt[ac] = DT_DIR;	av[ac++] = t;	t = stpcpy(t, ".");	t++;
  1051 -    dt[ac] = DT_DIR;	av[ac++] = t;	t = stpcpy(t, "..");	t++;
  1052 +    av[ac].type = DT_DIR; av[ac].name = t; t = stpcpy(t, ".");  ++ac;
  1053 +    av[ac].type = DT_DIR; av[ac].name = t; t = stpcpy(t, ".."); ++ac;
  1054      /*@=dependenttrans =unrecog@*/
  1055      sb = NULL;
  1056      s = se = ftpBuf;
  1057 @@ -1198,34 +1211,34 @@
  1058  	    /*@switchbreak@*/ break;
  1059  	case '\r':
  1060  	    /*@-dependenttrans@*/
  1061 -	    av[ac] = t;
  1062 +	    av[ac].name = t;
  1063  	    /*@=dependenttrans@*/
  1064  	    if (sb == NULL) {
  1065  		/*@-unrecog@*/
  1066  		switch(*s) {
  1067  		case 'p':
  1068 -		    dt[ac] = DT_FIFO;
  1069 +		    av[ac].type = DT_FIFO;
  1070  		    /*@innerbreak@*/ break;
  1071  		case 'c':
  1072 -		    dt[ac] = DT_CHR;
  1073 +		    av[ac].type = DT_CHR;
  1074  		    /*@innerbreak@*/ break;
  1075  		case 'd':
  1076 -		    dt[ac] = DT_DIR;
  1077 +		    av[ac].type = DT_DIR;
  1078  		    /*@innerbreak@*/ break;
  1079  		case 'b':
  1080 -		    dt[ac] = DT_BLK;
  1081 +		    av[ac].type = DT_BLK;
  1082  		    /*@innerbreak@*/ break;
  1083  		case '-':
  1084 -		    dt[ac] = DT_REG;
  1085 +		    av[ac].type = DT_REG;
  1086  		    /*@innerbreak@*/ break;
  1087  		case 'l':
  1088 -		    dt[ac] = DT_LNK;
  1089 +		    av[ac].type = DT_LNK;
  1090  		    /*@innerbreak@*/ break;
  1091  		case 's':
  1092 -		    dt[ac] = DT_SOCK;
  1093 +		    av[ac].type = DT_SOCK;
  1094  		    /*@innerbreak@*/ break;
  1095  		default:
  1096 -		    dt[ac] = DT_UNKNOWN;
  1097 +		    av[ac].type = DT_UNKNOWN;
  1098  		    /*@innerbreak@*/ break;
  1100  		/*@=unrecog@*/
  1101 @@ -1243,7 +1256,7 @@
  1102  	    /*@switchbreak@*/ break;
  1105 -    av[ac] = NULL;
  1106 +    av[ac].name = NULL;
  1108  /*@-kepttrans@*/
  1109      return (DIR *) mydir;
  1110 @@ -1258,43 +1271,50 @@
  1112      FTPDIR mydir = (FTPDIR)dir;
  1113      struct dirent * dp;
  1114 -    const char ** av;
  1115 -    unsigned char * dt;
  1116 +    struct mydirstreament * av;
  1117      int ac;
  1118      int i;
  1120      /*@+voidabstract@*/
  1121 -    if (mydir == NULL || !ISFTPMAGIC(mydir) || mydir->data == NULL) {
  1122 +    if (dir == NULL || !ISFTPMAGIC(dir)) {
  1123  	/* XXX TODO: EBADF errno. */
  1124  	return NULL;
  1126      /*@=voidabstract@*/
  1128 -    dp = (struct dirent *) mydir->data;
  1129 -    av = (const char **) (dp + 1);
  1130 +    dp = &mydir->ent;
  1131 +    av = &mydir->av[0];
  1132      ac = mydir->size;
  1133 -    dt = (char *) (av + (ac + 1));
  1134 -    i = mydir->offset + 1;
  1135 +    i  = mydir->offset + 1;
  1137  /*@-boundsread@*/
  1138 -    if (i < 0 || i >= ac || av[i] == NULL)
  1139 +    if (i < 0 || i >= ac || av[i].name == NULL)
  1140  	return NULL;
  1141  /*@=boundsread@*/
  1143      mydir->offset = i;
  1145 +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENPKG_DARWIN)
  1146 +    dp->d_ino = i + 1;
  1147 +    dp->d_reclen = 0;
  1148 +    dp->d_type = av[i].type;
  1149 +    strncpy(dp->d_name, av[i].name, sizeof(dp->d_name) - 1);
  1150 +    dp->d_name[sizeof(dp->d_name)-1] = '\0';
  1151 +    dp->d_namlen = strlen(dp->d_name);
  1152 +#elif defined(OPENPKG_HPUX) || defined(sun) || defined(OPENPKG_UNIXWARE) || defined(__osf__) || defined(OPENPKG_IRIX64) || defined(OPENPKG_AIX)
  1153 +    /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */
  1154 +    dp->d_ino = i + 1;		/* W2DO? */
  1155 +    dp->d_reclen = 0;		/* W2DO? */
  1156 +    strncpy(dp->d_name, av[i].name, sizeof(dp->d_name));
  1157 +#else
  1158      /* XXX glob(3) uses REAL_DIR_ENTRY(dp) test on d_ino */
  1159      dp->d_ino = i + 1;		/* W2DO? */
  1160      dp->d_reclen = 0;		/* W2DO? */
  1162 -#if !defined(hpux) && !defined(sun)
  1163      dp->d_off = 0;		/* W2DO? */
  1164 -/*@-boundsread@*/
  1165 -    dp->d_type = dt[i];
  1166 -/*@=boundsread@*/
  1167 +    dp->d_type = av[i].type;
  1168 +    strncpy(dp->d_name, av[i].name, sizeof(dp->d_name));
  1169  #endif
  1171 -    strncpy(dp->d_name, av[i], sizeof(dp->d_name));
  1172  /*@+voidabstract@*/
  1173  if (_ftp_debug)
  1174  fprintf(stderr, "*** ftpReaddir(%p) %p \"%s\"\n", (void *)mydir, dp, dp->d_name);
  1175 @@ -1313,7 +1333,7 @@
  1176      /*@+voidabstract@*/
  1177  if (_ftp_debug)
  1178  fprintf(stderr, "*** ftpClosedir(%p)\n", (void *)mydir);
  1179 -    if (mydir == NULL || !ISFTPMAGIC(mydir)) {
  1180 +    if (dir == NULL || !ISFTPMAGIC(dir)) {
  1181  	/* XXX TODO: EBADF errno. */
  1182  	return -1;
  1185 +---------------------------------------------------------------------------
  1186 | Remove inclusion of ancient (and since years deprecated) <malloc.h>
  1187 | header. This especially makes sure RPM build does not break on
  1188 | strict platforms like FreeBSD 5.
  1189 +---------------------------------------------------------------------------
  1190 Index: system.h
  1191 --- system.h	1 Mar 2003 19:53:08 -0000	1.1.1.10
  1192 +++ system.h	8 Jun 2005 13:15:16 -0000	1.4
  1193 @@ -256,10 +256,6 @@
  1194  #include <err.h>
  1195  #endif
  1197 -#if HAVE_MALLOC_H && !defined(__LCLINT__)
  1198 -#include <malloc.h>
  1199 -#endif
  1201  /*@-declundef -incondefs @*/ /* FIX: these are macros */
  1202  /**
  1203   */
  1205 +---------------------------------------------------------------------------
  1206 | Add support for BSD getmntinfo(3).
  1207 +---------------------------------------------------------------------------
  1208 Index: system.h
  1209 --- system.h	1 Mar 2003 19:53:08 -0000	1.1.1.10
  1210 +++ system.h	8 Jun 2005 13:15:16 -0000	1.4
  1211 @@ -550,7 +546,7 @@
  1212  #define lchown chown
  1213  #endif
  1215 -#if HAVE_GETMNTINFO_R || HAVE_MNTCTL
  1216 +#if HAVE_GETMNTINFO_R || HAVE_GETMNTINFO || HAVE_MNTCTL
  1217  # define GETMNTENT_ONE 0
  1218  # define GETMNTENT_TWO 0
  1219  # if HAVE_SYS_MNTCTL_H
  1221 +---------------------------------------------------------------------------
  1222 | Drop GCC "inline" attribute if not compiling with GCC.
  1223 +---------------------------------------------------------------------------
  1224 Index: system.h
  1225 --- system.h	1 Mar 2003 19:53:08 -0000	1.1.1.10
  1226 +++ system.h	8 Jun 2005 13:15:16 -0000	1.4
  1227 @@ -603,11 +599,24 @@
  1229  #if defined(__LCLINT__)
  1230  #define FILE_RCSID(id)
  1231 -#else
  1232 +#elif defined(__GNUC__)
  1233  #define FILE_RCSID(id) \
  1234  static inline const char *rcsid(const char *p) { \
  1235          return rcsid(p = id); \
  1237 +#else
  1238 +#define FILE_RCSID(id) \
  1239 +static const char *rcsid(const char *p) { \
  1240 +        return rcsid(p = id); \
  1241 +}
  1242 +#endif
  1244 +/* for basename(3) and dirname(3) */
  1245 +#if !defined(OPENPKG_AIX)
  1246 +#include <libgen.h>
  1247 +#endif
  1248 +#if defined(OPENPKG_AIX)
  1249 +#define unsetenv(x) /* unsetenv() is used in RPM just for malloc debugging purposes */
  1250  #endif
  1252  #endif	/* H_SYSTEM */
  1254 +---------------------------------------------------------------------------
  1255 | Remove GCC'ism.
  1256 +---------------------------------------------------------------------------
  1257 Index: build/rpmfile.h
  1258 --- build/rpmfile.h	24 Jan 2003 19:41:56 -0000	1.1.1.1
  1259 +++ build/rpmfile.h	22 Jan 2004 21:42:14 -0000	1.2
  1260 @@ -95,7 +95,11 @@
  1261  	} value;		/* either number or string */
  1262  	uint32_t mask;	/* mask before comparison with value */
  1263  	char desc[MAXDESC];	/* description */
  1264 +#if defined(__GNUC__)
  1265  } __attribute__((__packed__));
  1266 +#else
  1267 +};
  1268 +#endif
  1270  #define BIT(A)   (1 << (A))
  1271  #define STRING_IGNORE_LOWERCASE		BIT(0)
  1273 +---------------------------------------------------------------------------
  1274 | Better portability for madvise(2) usage.
  1275 +---------------------------------------------------------------------------
  1276 Index: rpmdb/legacy.c
  1277 --- rpmdb/legacy.c	18 Dec 2002 22:40:19 -0000	1.1.1.4
  1278 +++ rpmdb/legacy.c	22 Jan 2004 21:42:30 -0000	1.2
  1279 @@ -182,7 +182,7 @@
  1280  	    break;
  1283 -#ifdef	MADV_SEQUENTIAL
  1284 +#if defined(HAVE_MADVISE) && defined(MADV_SEQUENTIAL)
  1285          xx = madvise(mapped, fsize, MADV_SEQUENTIAL);
  1286  #endif
  1289 +---------------------------------------------------------------------------
  1290 | Better portability for madvise(2) usage.
  1291 +---------------------------------------------------------------------------
  1292 Index: lib/fsm.c
  1293 --- lib/fsm.c	3 Mar 2003 21:28:12 -0000	1.1.1.5
  1294 +++ lib/fsm.c	22 Jan 2004 21:42:23 -0000	1.2
  1295 @@ -879,7 +879,7 @@
  1296  	    rdbuf = fsm->rdbuf;
  1297  	    fsm->rdbuf = (char *) mapped;
  1298  	    fsm->rdlen = nmapped = st->st_size;
  1299 -#if defined(MADV_DONTNEED)
  1300 +#if defined(HAVE_MADVISE) && defined(MADV_DONTNEED)
  1301  	    xx = madvise(mapped, nmapped, MADV_DONTNEED);
  1302  #endif
  1304 @@ -909,7 +909,7 @@
  1305  #if HAVE_MMAP
  1306  	if (mapped != (void *)-1) {
  1307  	    xx = msync(mapped, nmapped, MS_ASYNC);
  1308 -#if defined(MADV_DONTNEED)
  1309 +#if defined(HAVE_MADVISE) && defined(MADV_DONTNEED)
  1310  	    xx = madvise(mapped, nmapped, MADV_DONTNEED);
  1311  #endif
  1312  	    /*@-noeffect@*/ xx = munmap(mapped, nmapped) /*@=noeffect@*/;
  1314 +---------------------------------------------------------------------------
  1315 | Support UnixWare 7.1.3 and OpenDarwin 6.6.2, too.
  1316 +---------------------------------------------------------------------------
  1317 Index: aclocal.m4
  1318 --- aclocal.m4	16 Jul 2003 17:05:28 -0000	1.1.1.10
  1319 +++ aclocal.m4	6 Jun 2005 15:53:03 -0000	1.4
  1320 @@ -2838,7 +2838,7 @@
  1321      runpath_var=LD_RUN_PATH
  1322      ;;
  1324 -  sysv5uw7* | unixware7*)
  1325 +  sysv5uw7* | unixware7* | sysv5UnixWare7* )
  1326      no_undefined_flag='${wl}-z ${wl}text'
  1327      if test "$GCC" = yes; then
  1328        archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
  1329 @@ -4311,6 +4311,7 @@
  1330      ;;
  1331    *) # Darwin 1.3 on
  1332      lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib'
  1333 +    lt_cv_deplibs_check_method=pass_all
  1334      ;;
  1335    esac
  1336    ;;
  1337 @@ -4336,7 +4337,7 @@
  1338    ;;
  1340  hpux10.20*|hpux11*)
  1341 -  lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library'
  1342 +  lt_cv_deplibs_check_method='pass_all'
  1343    lt_cv_file_magic_cmd=/usr/bin/file
  1344    lt_cv_file_magic_test_file=/usr/lib/libc.sl
  1345    ;;
  1346 @@ -4375,11 +4376,7 @@
  1347    ;;
  1349  netbsd*)
  1350 -  if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then
  1351 -    lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$'
  1352 -  else
  1353 -    lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$'
  1354 -  fi
  1355 +  lt_cv_deplibs_check_method='pass_all'
  1356    ;;
  1358  newos6*)
  1359 @@ -4414,7 +4411,7 @@
  1360    lt_cv_file_magic_test_file=/lib/libc.so
  1361    ;;
  1363 -sysv5uw[[78]]* | sysv4*uw2*)
  1364 +sysv5uw[[78]]* | sysv4*uw2* | sysv5UnixWare7* )
  1365    lt_cv_deplibs_check_method=pass_all
  1366    ;;
  1369 +---------------------------------------------------------------------------
  1370 | Use Linux i386 assembly specific stuff on Linux only.
  1371 +---------------------------------------------------------------------------
  1372 Index: rpmio/rpmsw.c
  1373 --- rpmio/rpmsw.c	5 Jun 2003 12:04:05 -0000	1.1.1.1
  1374 +++ rpmio/rpmsw.c	22 Jan 2004 21:42:33 -0000	1.2
  1375 @@ -27,7 +27,7 @@
  1376  /*@unchecked@*/
  1377  static int rpmsw_initialized = 0;
  1379 -#if defined(__i386__)
  1380 +#if defined(__linux__) && defined(__i386__)
  1381  /* Swiped from glibc-2.3.2 sysdeps/i386/i686/hp-timing.h */
  1383  #define	HP_TIMING_ZERO(Var)	(Var) = (0)
  1385 +---------------------------------------------------------------------------
  1386 | Fix "environ" declaration.
  1387 +---------------------------------------------------------------------------
  1388 Index: lib/signature.c
  1389 --- lib/signature.c	29 May 2003 18:42:23 -0000	1.1.1.23
  1390 +++ lib/signature.c	22 Jan 2004 21:42:25 -0000	1.2
  1391 @@ -27,7 +27,7 @@
  1392  /*@access pgpDigParams@*/
  1394  #if !defined(__GLIBC__)
  1395 -char ** environ = NULL;
  1396 +extern char ** environ;
  1397  #endif
  1399  int rpmLookupSignatureType(int action)
  1401 +---------------------------------------------------------------------------
  1402 | Rename own mergesort(3) implementation to avoid conflicts
  1403 | with a possibly existing vendor version.
  1404 +---------------------------------------------------------------------------
  1405 Index: rpmdb/merge.c
  1406 --- rpmdb/merge.c	22 Jun 2002 18:51:58 -0000	1.1.1.2
  1407 +++ rpmdb/merge.c	22 Jan 2004 21:42:30 -0000	1.2
  1408 @@ -204,7 +204,7 @@
  1409   * Arguments are as for qsort.
  1410   */
  1411  int
  1412 -mergesort(void *base, size_t nmemb, size_t size,
  1413 +rpmdb_mergesort(void *base, size_t nmemb, size_t size,
  1414  		int (*cmp) (const void *, const void *))
  1416  	register int i, sense;
  1418 +---------------------------------------------------------------------------
  1419 | Rename own mergesort(3) implementation to avoid conflicts
  1420 | with a possibly existing vendor version.
  1421 +---------------------------------------------------------------------------
  1422 Index: rpmdb/rpmdb.h
  1423 --- rpmdb/rpmdb.h	18 Jan 2003 14:04:35 -0000	1.1.1.5
  1424 +++ rpmdb/rpmdb.h	22 Jan 2004 21:42:31 -0000	1.2
  1425 @@ -1080,7 +1080,7 @@
  1426   * Mergesort, same arguments as qsort(2).
  1427   */
  1428  /*@unused@*/
  1429 -int mergesort(void *base, size_t nmemb, size_t size,
  1430 +int rpmdb_mergesort(void *base, size_t nmemb, size_t size,
  1431                  int (*cmp) (const void *, const void *))
  1432  	/*@globals errno @*/
  1433  	/*@modifies base, errno @*/;
  1435 +---------------------------------------------------------------------------
  1436 | Rename own mergesort(3) implementation to avoid conflicts
  1437 | with a possibly existing vendor version.
  1438 +---------------------------------------------------------------------------
  1439 Index: rpmdb/rpmdb.c
  1440 --- rpmdb/rpmdb.c	2 Jul 2003 19:21:54 -0000	1.1.1.6
  1441 +++ rpmdb/rpmdb.c	22 Jan 2004 21:42:30 -0000	1.2
  1442 @@ -2361,7 +2361,7 @@
  1443  		sizeof(*mi->mi_set->recs), hdrNumCmp);
  1444  /*@=boundsread@*/
  1445  #else
  1446 -	mergesort(mi->mi_set->recs, mi->mi_set->count,
  1447 +	rpmdb_mergesort(mi->mi_set->recs, mi->mi_set->count,
  1448  		sizeof(*mi->mi_set->recs), hdrNumCmp);
  1449  #endif
  1450  	mi->mi_sorted = 1;
  1452 +---------------------------------------------------------------------------
  1453 | Workaround a double-inclusion problem under AIX.
  1454 +---------------------------------------------------------------------------
  1455 Index: lib/getdate.y
  1456 --- lib/getdate.y	24 Sep 2001 21:53:15 -0000	1.1.1.2
  1457 +++ lib/getdate.y	8 Jun 2005 13:16:22 -0000	1.2
  1458 @@ -30,7 +30,9 @@
  1459  #undef static
  1460  #endif
  1462 +#ifndef OPENPKG_AIX
  1463  #include <stdio.h>
  1464 +#endif
  1465  #include <ctype.h>
  1467  /* The code at the top of get_date which figures out the offset of the
  1469 +---------------------------------------------------------------------------
  1470 | Workaround a double-inclusion problem under AIX.
  1471 +---------------------------------------------------------------------------
  1472 Index: lib/getdate.c
  1473 --- lib/getdate.c	2 Jul 2003 19:21:45 -0000	1.1.1.4
  1474 +++ lib/getdate.c	8 Jun 2005 13:16:21 -0000	1.2
  1475 @@ -50,7 +50,9 @@
  1476  #undef static
  1477  #endif
  1479 +#ifndef OPENPKG_AIX
  1480  #include <stdio.h>
  1481 +#endif
  1482  #include <ctype.h>
  1484  /* The code at the top of get_date which figures out the offset of the
  1486 +---------------------------------------------------------------------------
  1487 | The following patch works around a general failure of RPM to
  1488 | adhere to the ISO C standard, for which newer GCC releases claim
  1489 | compile errors and fail.
  1490 +---------------------------------------------------------------------------
  1491 Index: misc/err.h
  1492 --- misc/err.h	2009-01-06 22:48:16.104430941 +0100
  1493 +++ misc/err.h	2009-01-06 22:47:55.944312482 +0100
  1494 @@ -29,31 +29,4 @@
  1495  # define __gnuc_va_list	__ptr_t
  1496  #endif
  1498 -__BEGIN_DECLS
  1500 -/* Print "program: ", FORMAT, ": ", the standard error string for errno,
  1501 -   and a newline, on stderr.  */
  1502 -extern void warn __P ((__const char *__format, ...))
  1503 -     __attribute__ ((__format__ (__printf__, 1, 2)));
  1504 -extern void vwarn __P ((__const char *__format, __gnuc_va_list))
  1505 -     __attribute__ ((__format__ (__printf__, 1, 0)));
  1507 -/* Likewise, but without ": " and the standard error string.  */
  1508 -extern void warnx __P ((__const char *__format, ...))
  1509 -     __attribute__ ((__format__ (__printf__, 1, 2)));
  1510 -extern void vwarnx __P ((__const char *__format, __gnuc_va_list))
  1511 -     __attribute__ ((__format__ (__printf__, 1, 0)));
  1513 -/* Likewise, and then exit with STATUS.  */
  1514 -extern void err __P ((int __status, __const char *__format, ...))
  1515 -     __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
  1516 -extern void verr __P ((int __status, __const char *__format, __gnuc_va_list))
  1517 -     __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
  1518 -extern void errx __P ((int __status, __const char *__format, ...))
  1519 -     __attribute__ ((__noreturn__, __format__ (__printf__, 2, 3)));
  1520 -extern void verrx __P ((int __status, __const char *, __gnuc_va_list))
  1521 -     __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
  1523 -__END_DECLS
  1525  #endif	/* err.h */
  1527 +---------------------------------------------------------------------------
  1528 | Due to either GCC enforcing ISO C or faulty references in the
  1529 | rpmio component, Solaris 11 fails to build while compiling fts.c.
  1530 | Hack a custom 'dirent.h' as found in /usr/include, remove the
  1531 | line 104 'extern int dirfd(DIR *);' from the header file, and
  1532 | place in directory openpkg-`date +%Y%m%d`/rpm-<version>/rpmio/.
  1533 +---------------------------------------------------------------------------

mercurial