| Upstream-Status: Pending |
| |
| Author: H.J. Lu <hjl.tools@gmail.com> |
| Date: Tue Dec 6 10:34:53 2011 -0800 |
| |
| Fix pax-3.4 build for x32 |
| |
| off_t is 8byte for x32. We need to check both _FILE_OFFSET_BITS and |
| size of off_t to see if file offset is 64bit. This patch adds |
| AC_CHECK_SIZEOF(off_t) and checks SIZEOF_OFF_T == 8. |
| |
| Signed-Off-By: Nitin A Kamble <nitin.a.kamble@intel.com> 2011/12/06 |
| |
| Index: pax-3.4/configure.in |
| =================================================================== |
| --- pax-3.4.orig/configure.in |
| +++ pax-3.4/configure.in |
| @@ -33,4 +33,7 @@ dnl Checks for header files. |
| dnl Checks for typedefs, structures, and compiler characteristics. |
| AC_C_CONST |
| |
| +AC_CHECK_SIZEOF(off_t) |
| +AC_CHECK_SIZEOF(long) |
| + |
| AC_OUTPUT([Makefile lib/Makefile src/Makefile]) |
| Index: pax-3.4/src/ar_io.c |
| =================================================================== |
| --- pax-3.4.orig/src/ar_io.c |
| +++ pax-3.4/src/ar_io.c |
| @@ -378,7 +378,8 @@ ar_close(void) |
| * could have written anything yet. |
| */ |
| if (frmt == NULL) { |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| (void)fprintf(listf, "%s: unknown format, %qu bytes skipped.\n", |
| #else |
| (void)fprintf(listf, "%s: unknown format, %lu bytes skipped.\n", |
| @@ -391,7 +392,8 @@ ar_close(void) |
| |
| if (strcmp(NM_CPIO, argv0) == 0) |
| (void)fprintf(listf, |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| "%qu blocks\n", |
| #else |
| "%lu blocks\n", |
| @@ -399,7 +401,8 @@ ar_close(void) |
| (rdcnt ? rdcnt : wrcnt) / 5120); |
| else if (strcmp(NM_TAR, argv0) != 0) |
| (void)fprintf(listf, |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| "%s: %s vol %d, %lu files, %qu bytes read, %qu bytes written.\n", |
| #else |
| "%s: %s vol %d, %lu files, %lu bytes read, %lu bytes written.\n", |
| Index: pax-3.4/src/cpio.c |
| =================================================================== |
| --- pax-3.4.orig/src/cpio.c |
| +++ pax-3.4/src/cpio.c |
| @@ -218,7 +218,8 @@ rd_ln_nm (ARCHD *arcn) |
| */ |
| if ((arcn->sb.st_size == 0) || |
| (arcn->sb.st_size >= (off_t) sizeof(arcn->ln_name))) { |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| paxwarn (1, "Cpio link name length is invalid: %qu", |
| arcn->sb.st_size); |
| #else |
| Index: pax-3.4/src/gen_subs.c |
| =================================================================== |
| --- pax-3.4.orig/src/gen_subs.c |
| +++ pax-3.4/src/gen_subs.c |
| @@ -133,7 +133,8 @@ ls_list (ARCHD *arcn, time_t now, FILE * |
| * print device id's for devices, or sizes for other nodes |
| */ |
| if ((arcn->type == PAX_CHR) || (arcn->type == PAX_BLK)) |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| (void) fprintf (fp, "%4lu,%4lu ", (unsigned long) MAJOR (sbp->st_rdev), |
| (unsigned long) MINOR (sbp->st_rdev)); |
| #else |
| @@ -142,7 +143,8 @@ ls_list (ARCHD *arcn, time_t now, FILE * |
| #endif |
| else |
| { |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| (void) fprintf (fp, "%9qu ", sbp->st_size); |
| #else |
| (void) fprintf (fp, "%9lu ", sbp->st_size); |
| @@ -334,7 +336,8 @@ ul_asc (u_long val, char *str, int len, |
| return (0); |
| } |
| |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| /* |
| * asc_uqd() |
| * convert hex/octal character string into a u_quad_t. We do not have to |
| Index: pax-3.4/src/options.c |
| =================================================================== |
| --- pax-3.4.orig/src/options.c |
| +++ pax-3.4/src/options.c |
| @@ -1545,7 +1545,8 @@ str_offt (char *val) |
| char *expr; |
| off_t num, t; |
| |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| num = strtoq (val, &expr, 0); |
| if ((num == LONG_LONG_MAX) || (num <= 0) || (expr == val)) |
| #else |
| Index: pax-3.4/src/tar.c |
| =================================================================== |
| --- pax-3.4.orig/src/tar.c |
| +++ pax-3.4/src/tar.c |
| @@ -58,7 +58,8 @@ |
| static unsigned long tar_chksm (char *, int); |
| static char *name_split (char *, int); |
| static int ul_oct (u_long, char *, int, int); |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| static int uqd_oct (u_quad_t, char *, int, int); |
| #endif |
| |
| @@ -196,7 +197,8 @@ ul_oct (u_long val, register char *str, |
| return (0); |
| } |
| |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| /* |
| * uqd_oct() |
| * convert an u_quad_t to an octal string. one of many oddball field |
| @@ -427,7 +429,8 @@ tar_rd (ARCHD *arcn, char *buf) |
| 0xfff); |
| arcn->sb.st_uid = (uid_t) asc_ul (hd->uid, sizeof (hd->uid), OCT); |
| arcn->sb.st_gid = (gid_t) asc_ul (hd->gid, sizeof (hd->gid), OCT); |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| arcn->sb.st_size = (off_t) asc_uqd (hd->size, sizeof (hd->size), OCT); |
| #else |
| arcn->sb.st_size = (off_t) asc_ul (hd->size, sizeof (hd->size), OCT); |
| @@ -659,7 +662,8 @@ tar_wr (register ARCHD * arcn) |
| * data follows this file, so set the pad |
| */ |
| hd->linkflag = AREGTYPE; |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| if (uqd_oct ((u_quad_t) arcn->sb.st_size, hd->size, |
| sizeof (hd->size), 1)) |
| #else |
| @@ -834,7 +838,8 @@ ustar_rd (ARCHD *arcn, char *buf) |
| */ |
| arcn->sb.st_mode = (mode_t) (asc_ul (hd->mode, sizeof (hd->mode), OCT) & |
| 0xfff); |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| arcn->sb.st_size = (off_t) asc_uqd (hd->size, sizeof (hd->size), OCT); |
| #else |
| arcn->sb.st_size = (off_t) asc_ul (hd->size, sizeof (hd->size), OCT); |
| @@ -1081,7 +1086,8 @@ ustar_wr (register ARCHD * arcn) |
| else |
| hd->typeflag = REGTYPE; |
| arcn->pad = TAR_PAD (arcn->sb.st_size); |
| -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 |
| +#if (SIZEOF_LONG == 4 && SIZEOF_OFF_T == 8) \ |
| + || (defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64) |
| if (uqd_oct ((u_quad_t) arcn->sb.st_size, hd->size, |
| sizeof (hd->size), 3)) |
| { |