File: t64.patch

package info (click to toggle)
linux86 0.16.21-2
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 5,072 kB
  • sloc: ansic: 66,757; asm: 6,154; makefile: 1,374; sh: 703
file content (73 lines) | stat: -rw-r--r-- 3,092 bytes parent folder | download
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);