844 +#include <limits.h> |
844 +#include <limits.h> |
845 + |
845 + |
846 #if defined(_LIBC) |
846 #if defined(_LIBC) |
847 #include <sys/param.h> |
847 #include <sys/param.h> |
848 #include <include/sys/stat.h> |
848 #include <include/sys/stat.h> |
849 @@ -45,20 +47,49 @@ |
849 @@ -45,20 +47,52 @@ |
850 #include <string.h> |
850 #include <string.h> |
851 #include <unistd.h> |
851 #include <unistd.h> |
852 #else |
852 #else |
853 -#if defined(hpux) |
853 -#if defined(hpux) |
854 +#if defined(OPENPKG_HPUX) |
854 +#if defined(OPENPKG_HPUX) |
855 # define _INCLUDE_POSIX_SOURCE |
855 # define _INCLUDE_POSIX_SOURCE |
856 # define __errno_location() (&errno) |
856 # define __errno_location() (&errno) |
857 # define dirfd(dirp) -1 |
857 -# define dirfd(dirp) -1 |
|
858 +# define locdirfd(dirp) -1 |
858 # define stat64 stat |
859 # define stat64 stat |
859 # define _STAT_VER 0 |
860 # define _STAT_VER 0 |
860 # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
861 # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
861 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
862 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
862 #endif |
863 #endif |
863 -#if defined(sun) |
864 -#if defined(sun) |
864 +#if defined(sun) || defined(OPENPKG_UNIXWARE) |
865 +#if defined(sun) || defined(OPENPKG_UNIXWARE) |
865 # define __errno_location() (&errno) |
866 # define __errno_location() (&errno) |
866 # define dirfd(dirp) -1 |
867 -# define dirfd(dirp) -1 |
|
868 +# define locdirfd(dirp) -1 |
867 # define _STAT_VER 0 |
869 # define _STAT_VER 0 |
868 # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
870 # define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
869 #endif |
871 #endif |
870 +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENPKG_DARWIN) |
872 +#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(OPENPKG_DARWIN) |
871 +# define __errno_location() (&errno) |
873 +# define __errno_location() (&errno) |
874 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
876 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
875 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
877 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
876 +#endif |
878 +#endif |
877 +#if defined(__osf__) |
879 +#if defined(__osf__) |
878 +# define __errno_location() (&errno) |
880 +# define __errno_location() (&errno) |
879 +# define dirfd(dirp) -1 |
881 +# define locdirfd(dirp) -1 |
880 +# define stat64 stat |
882 +# define stat64 stat |
881 +# define _STAT_VER 0 |
883 +# define _STAT_VER 0 |
882 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
884 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
883 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
885 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
884 +#endif |
886 +#endif |
885 +#if defined(OPENPKG_IRIX64) |
887 +#if defined(OPENPKG_IRIX64) |
886 +# define __errno_location() (&errno) |
888 +# define __errno_location() (&errno) |
887 +# define dirfd(dirp) -1 |
889 +# define locdirfd(dirp) -1 |
888 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
890 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
889 +# define _D_EXACT_NAMLEN(d) ((d)->d_reclen) |
891 +# define _D_EXACT_NAMLEN(d) ((d)->d_reclen) |
890 +#endif |
892 +#endif |
891 +#if defined(OPENPKG_AIX) |
893 +#if defined(OPENPKG_AIX) |
892 +# define __errno_location() (&errno) |
894 +# define __errno_location() (&errno) |
893 +# define _STAT_VER 0 |
895 +# define _STAT_VER 0 |
894 +# define dirfd(dirp) ((dirp)->dd_fd) |
896 +# define locdirfd(dirp) ((dirp)->dd_fd) |
895 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
897 +# define __fxstat64(_stat_ver, _fd, _sbp) fstat((_fd), (_sbp)) |
896 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
898 +# define _D_EXACT_NAMLEN(d) ((d)->d_namlen) |
|
899 +#endif |
|
900 +#if !defined(locdirfd) |
|
901 +# define locdirfd(dirp) dirfd(dirp) |
897 +#endif |
902 +#endif |
898 #include "system.h" |
903 #include "system.h" |
899 #include "fts.h" |
904 #include "fts.h" |
900 #include "rpmio.h" |
905 #include "rpmio.h" |
901 @@ -73,7 +104,12 @@ |
906 @@ -73,7 +107,12 @@ |
902 /* Largest alignment size needed, minus one. |
907 /* Largest alignment size needed, minus one. |
903 Usually long double is the worst case. */ |
908 Usually long double is the worst case. */ |
904 #ifndef ALIGNBYTES |
909 #ifndef ALIGNBYTES |
905 +#if defined(__GNUC__) |
910 +#if defined(__GNUC__) |
906 #define ALIGNBYTES (__alignof__ (long double) - 1) |
911 #define ALIGNBYTES (__alignof__ (long double) - 1) |
923 +#define MAX(a, b) ((a) > (b) ? (a) : (b)) |
928 +#define MAX(a, b) ((a) > (b) ? (a) : (b)) |
924 +#endif |
929 +#endif |
925 #endif |
930 #endif |
926 |
931 |
927 #define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) |
932 #define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) |
|
933 @@ -719,7 +762,7 @@ |
|
934 */ |
|
935 cderrno = 0; |
|
936 if (nlinks || type == BREAD) { |
|
937 - if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) { |
|
938 + if (fts_safe_changedir(sp, cur, locdirfd(dirp), NULL)) { |
|
939 if (nlinks && type == BREAD) |
|
940 cur->fts_errno = errno; |
|
941 cur->fts_flags |= FTS_DONTCHDIR; |
928 |
942 |
929 +--------------------------------------------------------------------------- |
943 +--------------------------------------------------------------------------- |
930 | Remove inclusion of system <glob.h> because RPM uses its own glob(3) |
944 | Remove inclusion of system <glob.h> because RPM uses its own glob(3) |
931 | implementation and this can conflict with the system one. |
945 | implementation and this can conflict with the system one. |
932 +--------------------------------------------------------------------------- |
946 +--------------------------------------------------------------------------- |