64-bit fixes. [rsc] --rw-rw-r-- M 451989 glenda sys 23778 Nov 6 11:07 sys/src/cmd/ar.c /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:22,28 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:22,28 char *name; int type; int len; - long offset; + vlong offset; struct Arsymref *next; } Arsymref; /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:40,46 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:40,46 int paged; /* set when some data paged to disk */ char *fname; /* paging file name */ int fd; /* paging file descriptor */ - long size; + vlong size; Armember *head; /* head of member chain */ Armember *tail; /* tail of member chain */ Arsymref *sym; /* head of defined symbol chain */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:118,132 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:118,132 int page(Arfile*); void pmode(long); void rl(int); - void scanobj(Biobuf*, Arfile*, int); + void scanobj(Biobuf*, Arfile*, long); void select(int*, long); void setcom(void(*)(char*, int, char**)); - void skip(Biobuf*, long); + void skip(Biobuf*, vlong); int symcomp(void*, void*); void trim(char*, char*, int); void usage(void); void wrerr(void); - void wrsym(Biobuf*, int, Arsymref*); + void wrsym(Biobuf*, long, Arsymref*); void rcmd(char*, int, char**); /* command processing */ void dcmd(char*, int, char**); /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:316,322 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:316,321 Armember *bp; int fd, i; - if (!count) return; fd = openar(arname, ORDWR, 0); /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:517,526 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:516,525 * extract the symbol references from an object file */ void - scanobj(Biobuf *b, Arfile *ap, int size) + scanobj(Biobuf *b, Arfile *ap, long size) { int obj; - long offset; + vlong offset; Dir *d; static int lastobj = -1; /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:634,639 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:633,639 } return fd; } + /* * create an archive and set its header */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:651,656 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:651,657 wrerr(); return fd; } + /* * error handling */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:681,686 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:682,688 fprint(2, "usage: ar [%s][%s] archive files ...\n", opt, man); exits("error"); } + /* * read the header for the next archive member */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:704,713 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:706,716 ; cp[1] = '\0'; file = name; - bp->date = atol(bp->hdr.date); - bp->size = atol(bp->hdr.size); + bp->date = strtol(bp->hdr.date, 0, 0); + bp->size = strtol(bp->hdr.size, 0, 0); return bp; } + /* * Copy the file referenced by fd to the temp file */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:742,747 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:745,751 } free(d); } + /* * Copy the archive member at the current offset into the temp file. */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:748,754 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:752,758 void arcopy(Biobuf *b, Arfile *ap, Armember *bp) { - int n; + long n; n = bp->size; if (n & 01) /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:759,774 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:763,780 ap->size += n+SAR_HDR; } } + /* * Skip an archive member */ void - skip(Biobuf *bp, long len) + skip(Biobuf *bp, vlong len) { if (len & 01) len++; Bseek(bp, len, 1); } + /* * Stream the three temp files to an archive */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:850,860 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:856,867 Bputc(&b, 0); Bterm(&b); } + /* * Write the defined symbols to the symdef file */ void - wrsym(Biobuf *bp, int offset, Arsymref *as) + wrsym(Biobuf *bp, long offset, Arsymref *as) { int off; /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:870,875 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:877,883 as = as->next; } } + /* * Check if the archive member matches an entry on the command line. */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:891,896 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:899,905 } return 0; } + /* * compare the current member to the name of the pivot member */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:920,925 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:929,935 } return 0; } + /* * output a message, if 'v' option was specified */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:930,935 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:940,946 if(vflag) Bprint(&bout, "%c - %s\n", c, file); } + /* * isolate file name by stripping leading directories and trailing slashes */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:951,956 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:962,968 *p = 0; /* strip trailing slash */ } } + /* * utilities for printing long form of 't' command */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:973,979 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:985,991 char *cp; pmode(strtoul(bp->hdr.mode, 0, 8)); - Bprint(&bout, "%3ld/%1ld", atol(bp->hdr.uid), atol(bp->hdr.gid)); + Bprint(&bout, "%3ld/%1ld", strtol(bp->hdr.uid, 0, 0), strtol(bp->hdr.gid, 0, 0)); Bprint(&bout, "%7ld", bp->size); cp = ctime(bp->date); Bprint(&bout, " %-12.12s %-4.4s ", cp+4, cp+24); /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1010,1015 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1022,1028 ap++; Bputc(&bout, *ap); } + /* * Temp file I/O subsystem. We attempt to cache all three temp files in * core. When we run out of memory we spill to disk. /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1049,1054 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1062,1068 rderr(); } } + /* * insert a member buffer into the member chain */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1062,1067 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1076,1082 ap->tail->next = bp; ap->tail = bp; } + /* * stream the members in a temp file to the file referenced by 'fd'. */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1092,1097 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1107,1113 wrerr(); } } + /* * write a member to 'fd'. */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1109,1114 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1125,1131 return 0; return 1; } + /* * Spill a member to a disk copy of a temp file */ /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1136,1141 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1153,1159 free(bp); return 1; } + /* * try to reclaim space by paging. we try to spill the start, middle, * and end files, in that order. there is no particular reason for the /n/sourcesdump/2005/1106/plan9/sys/src/cmd/ar.c:1166,1171 - /n/sourcesdump/2005/1107/plan9/sys/src/cmd/ar.c:1184,1190 } free(ap); } + /* * allocate space for a control block or member buffer. if the malloc * fails we try to reclaim space by spilling previously allocated