+--- ar/archive.c 30 Apr 2002 07:37:17 -0000 1.1.1.1
++++ ar/archive.c 8 Sep 2003 00:44:40 -0000
+@@ -69,6 +69,7 @@
+
+ #include <sys/param.h>
+ #include <sys/stat.h>
++#include <stuff/ofile.h>
+
+ #include <ar.h>
+ #include <dirent.h>
+@@ -262,27 +263,37 @@
+ */
+ lname = strlen(name);
+ if (options & AR_TR) {
++ char buf[16];
++ int i;
++ for(i=0; i<15; i++) buf[i] = ' ';
++ buf[15] = '\0';
+ if (lname > OLDARMAXNAME) {
+ (void)fflush(stdout);
+ warnx("warning: %s truncated to %.*s",
+ name, OLDARMAXNAME, name);
+ (void)fflush(stderr);
+ }
+- (void)sprintf(hb, HDR3, name, (long int)sb->st_mtimespec.tv_sec,
++ strncpy(buf, name, 15);
++ (void)sprintf(hb, HDR3, buf, (long int)sb->st_mtime,
+ (unsigned int)(u_short)sb->st_uid,
+ (unsigned int)(u_short)sb->st_gid,
+ sb->st_mode, sb->st_size, ARFMAG);
+ lname = 0;
+ } else if (lname > sizeof(hdr->ar_name) || strchr(name, ' '))
+ (void)sprintf(hb, HDR1, AR_EFMT1, (lname + 3) & ~3,
+- (long int)sb->st_mtimespec.tv_sec,
++ (long int)sb->st_mtime,
+ (unsigned int)(u_short)sb->st_uid,
+ (unsigned int)(u_short)sb->st_gid,
+ sb->st_mode, sb->st_size + ((lname + 3) & ~3),
+ ARFMAG);
+ else {
++ char buf[17];
++ int i;
++ for(i=0; i<16; i++) buf[i] = ' ';
++ buf[16] = '\0';
++ strncpy(buf, name, 16);
+ lname = 0;
+- (void)sprintf(hb, HDR2, name, (long int)sb->st_mtimespec.tv_sec,
++ (void)sprintf(hb, HDR2, buf, (long int)sb->st_mtime,
+ (unsigned int)(u_short)sb->st_uid,
+ (unsigned int)(u_short)sb->st_gid,
+ sb->st_mode, sb->st_size, ARFMAG);