1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
Description: Fix time_t 64 bit wide on 32 bit archs
Author: Bastian Germann <bage@debian.org>
Bug-Debian: https://bugs.debian.org/1084051
---
--- a/ar/ar.c
+++ b/ar/ar.c
@@ -74,7 +74,7 @@
/* The following fields are stored in the member header as decimal or octal
numerals, but in this structure they are stored as machine numbers. */
int mode; /* Protection mode from member header. */
- long int date; /* Last modify date as stored in member header. */
+ time_t date; /* Last modify date as stored in member header. */
unsigned int size; /* Bytes of member's data, from member header. */
int uid, gid; /* UID and GID fields copied from member header. */
unsigned int offset;/* Offset in archive of the header of this member. */
@@ -573,7 +573,7 @@
}
member_desc.name = name;
sscanf (member_header.ar_mode, "%o", &member_desc.mode);
- member_desc.date = atoi (member_header.ar_date);
+ member_desc.date = atoll (member_header.ar_date);
member_desc.size = atoi (member_header.ar_size);
member_desc.uid = atoi (member_header.ar_uid);
member_desc.gid = atoi (member_header.ar_gid);
@@ -679,7 +679,7 @@
if (preserve_dates)
{
#if defined(USG) || defined(__BCC__)
- long tv[2];
+ time_t tv[2];
tv[0] = member.date;
tv[1] = member.date;
utime (member.name, tv);
@@ -1096,7 +1096,7 @@
}
#endif
- sprintf (header->ar_date, "%ld", mapelt->info.date);
+ sprintf (header->ar_date, "%lld", (long long)mapelt->info.date);
sprintf (header->ar_size, "%d", mapelt->info.size);
sprintf (header->ar_uid, "%d", mapelt->info.uid);
sprintf (header->ar_gid, "%d", mapelt->info.gid);
@@ -1204,7 +1204,7 @@
/* Advance member's time to that time. */
bzero (symdef_header.ar_date, sizeof symdef_header.ar_date);
- sprintf (symdef_header.ar_date, "%ld", statbuf.st_mtime);
+ sprintf (symdef_header.ar_date, "%lld", (long long)statbuf.st_mtime);
for (i = 0; i < sizeof symdef_header.ar_date; i++)
if (symdef_header.ar_date[i] == 0)
symdef_header.ar_date[i] = ' ';
--- a/ld/ld86r.c
+++ b/ld/ld86r.c
@@ -59,7 +59,7 @@
strcpy(buf, ptr); strcat(buf, "/ ");
strncpy(arbuf.ar_name, buf, sizeof(arbuf.ar_name));
- sprintf(arbuf.ar_date, "%-12ld", (long)st.st_mtime);
+ sprintf(arbuf.ar_date, "%-12lld", (long long)st.st_mtime);
sprintf(arbuf.ar_uid, "%-6d", (int)(st.st_uid%1000000L));
sprintf(arbuf.ar_gid, "%-6d", (int)(st.st_gid%1000000L));
sprintf(arbuf.ar_mode, "%-8lo", (long)st.st_mode);
--- a/ld/mkar.c
+++ b/ld/mkar.c
@@ -53,7 +53,7 @@
strcpy(buf, ptr); strcat(buf, "/ ");
strncpy(arbuf.ar_name, buf, sizeof(arbuf.ar_name));
- snprintf(arbuf.ar_date, 12, "%-12ld", (long)st.st_mtime);
+ snprintf(arbuf.ar_date, 12, "%-12lld", (long)st.st_mtime);
snprintf(arbuf.ar_uid, 6, "%-6d", (int)(st.st_uid%1000000L));
snprintf(arbuf.ar_gid, 6, "%-6d", (int)(st.st_gid%1000000L));
snprintf(arbuf.ar_mode, 8, "%-8lo", (long)st.st_mode);
|