--- ./archive.c.orig	2005-10-31 10:04:34.000000000 -0800
+++ ./archive.c	2005-10-31 10:04:34.000000000 -0800
@@ -313,21 +313,21 @@
 			(void)sprintf(hb, HDR3, name, (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);
+			    sb->st_mode, (int64_t)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_mtime,
 			    (unsigned int)(u_short)sb->st_uid,
 			    (unsigned int)(u_short)sb->st_gid,
-			    sb->st_mode, sb->st_size + ((lname + 3) & ~3),
+			    sb->st_mode, (int64_t)sb->st_size + ((lname + 3) & ~3),
 			    ARFMAG);
 		else {
 			lname = 0;
 			(void)sprintf(hb, HDR2, name, (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);
+			    sb->st_mode, (int64_t)sb->st_size, ARFMAG);
 		}
 		size = sb->st_size;
 	} else {
--- ./contents.c.orig	2005-10-31 10:04:33.000000000 -0800
+++ ./contents.c	2005-10-31 10:04:34.000000000 -0800
@@ -104,7 +104,7 @@
 		if (options & AR_V) {
 			(void)strmode(chdr.mode, buf);
 			(void)printf("%s %6d/%-6d %8qd ",
-			    buf + 1, chdr.uid, chdr.gid, chdr.size);
+			    buf + 1, chdr.uid, chdr.gid, (int64_t)chdr.size);
 			tp = localtime(&chdr.date);
 			(void)strftime(buf, sizeof(buf), "%b %e %H:%M %Y", tp);
 			(void)printf("%s %s\n", buf, file);
