1.1 --- a/openpkg/rpm.patch.porting Sat Mar 26 13:26:07 2011 +0100 1.2 +++ b/openpkg/rpm.patch.porting Sat Mar 26 17:30:52 2011 +0100 1.3 @@ -846,7 +846,7 @@ 1.4 #if defined(_LIBC) 1.5 #include <sys/param.h> 1.6 #include <include/sys/stat.h> 1.7 -@@ -45,20 +47,49 @@ 1.8 +@@ -45,20 +47,52 @@ 1.9 #include <string.h> 1.10 #include <unistd.h> 1.11 #else 1.12 @@ -854,7 +854,8 @@ 1.13 +#if defined(OPENPKG_HPUX) 1.14 # define _INCLUDE_POSIX_SOURCE 1.15 # define __errno_location() (&errno) 1.16 - # define dirfd(dirp) -1 1.17 +-# define dirfd(dirp) -1 1.18 ++# define locdirfd(dirp) -1 1.19 # define stat64 stat 1.20 # define _STAT_VER 0 1.21 # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) 1.22 @@ -863,7 +864,8 @@ 1.23 -#if defined(sun) 1.24 +#if defined(sun) || defined(OPENPKG_UNIXWARE) 1.25 # define __errno_location() (&errno) 1.26 - # define dirfd(dirp) -1 1.27 +-# define dirfd(dirp) -1 1.28 ++# define locdirfd(dirp) -1 1.29 # define _STAT_VER 0 1.30 # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) 1.31 #endif 1.32 @@ -876,7 +878,7 @@ 1.33 +#endif 1.34 +#if defined(__osf__) 1.35 +# define __errno_location() (&errno) 1.36 -+# define dirfd(dirp) -1 1.37 ++# define locdirfd(dirp) -1 1.38 +# define stat64 stat 1.39 +# define _STAT_VER 0 1.40 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) 1.41 @@ -884,21 +886,24 @@ 1.42 +#endif 1.43 +#if defined(OPENPKG_IRIX64) 1.44 +# define __errno_location() (&errno) 1.45 -+# define dirfd(dirp) -1 1.46 ++# define locdirfd(dirp) -1 1.47 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) 1.48 +# define _D_EXACT_NAMLEN(d) ((d)->d_reclen) 1.49 +#endif 1.50 +#if defined(OPENPKG_AIX) 1.51 +# define __errno_location() (&errno) 1.52 +# define _STAT_VER 0 1.53 -+# define dirfd(dirp) ((dirp)->dd_fd) 1.54 ++# define locdirfd(dirp) ((dirp)->dd_fd) 1.55 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) 1.56 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) 1.57 +#endif 1.58 ++#if !defined(locdirfd) 1.59 ++# define locdirfd(dirp) dirfd(dirp) 1.60 ++#endif 1.61 #include "system.h" 1.62 #include "fts.h" 1.63 #include "rpmio.h" 1.64 -@@ -73,7 +104,12 @@ 1.65 +@@ -73,7 +107,12 @@ 1.66 /* Largest alignment size needed, minus one. 1.67 Usually long double is the worst case. */ 1.68 #ifndef ALIGNBYTES 1.69 @@ -911,7 +916,7 @@ 1.70 #endif 1.71 /* Align P to that size. */ 1.72 #ifndef ALIGN 1.73 -@@ -107,9 +143,13 @@ 1.74 +@@ -107,9 +146,13 @@ 1.75 /*@modifies fileSystem, internalState @*/; 1.76 1.77 #ifndef MAX 1.78 @@ -925,6 +930,15 @@ 1.79 #endif 1.80 1.81 #define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) 1.82 +@@ -719,7 +762,7 @@ 1.83 + */ 1.84 + cderrno = 0; 1.85 + if (nlinks || type == BREAD) { 1.86 +- if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) { 1.87 ++ if (fts_safe_changedir(sp, cur, locdirfd(dirp), NULL)) { 1.88 + if (nlinks && type == BREAD) 1.89 + cur->fts_errno = errno; 1.90 + cur->fts_flags |= FTS_DONTCHDIR; 1.91 1.92 +--------------------------------------------------------------------------- 1.93 | Remove inclusion of system <glob.h> because RPM uses its own glob(3) 1.94 @@ -1524,10 +1538,3 @@ 1.95 - 1.96 #endif /* err.h */ 1.97 1.98 -+--------------------------------------------------------------------------- 1.99 -| Due to either GCC enforcing ISO C or faulty references in the 1.100 -| rpmio component, Solaris 11 fails to build while compiling fts.c. 1.101 -| Hack a custom 'dirent.h' as found in /usr/include, remove the 1.102 -| line 104 'extern int dirfd(DIR *);' from the header file, and 1.103 -| place in directory openpkg-`date +%Y%m%d`/rpm-<version>/rpmio/. 1.104 -+---------------------------------------------------------------------------