version 1.2, 1996/06/26 05:38:03 |
version 1.3, 1997/11/05 18:57:27 |
|
|
struct ranlib rn; |
struct ranlib rn; |
char hb[sizeof(struct ar_hdr) + 1], pad; |
char hb[sizeof(struct ar_hdr) + 1], pad; |
long ransize, size, stroff; |
long ransize, size, stroff; |
|
uid_t uid; |
|
gid_t gid; |
|
|
/* Rewind the archive, leaving the magic number. */ |
/* Rewind the archive, leaving the magic number. */ |
if (fseek(fp, (off_t)SARMAG, SEEK_SET) == (off_t)-1) |
if (fseek(fp, (off_t)SARMAG, SEEK_SET) == (off_t)-1) |
|
|
} else |
} else |
pad = '\0'; |
pad = '\0'; |
|
|
|
uid = getuid(); |
|
if (uid > USHRT_MAX) { |
|
warnx("warning: uid %d truncated to %d", uid, USHRT_MAX); |
|
uid = USHRT_MAX; |
|
} |
|
gid = getgid(); |
|
if (gid > USHRT_MAX) { |
|
warnx("warning: gid %d truncated to %d", gid, USHRT_MAX); |
|
gid = USHRT_MAX; |
|
} |
|
|
/* Put out the ranlib archive file header. */ |
/* Put out the ranlib archive file header. */ |
#define DEFMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) |
#define DEFMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) |
(void)sprintf(hb, HDR2, RANLIBMAG, 0L, getuid(), getgid(), |
(void)sprintf(hb, HDR2, RANLIBMAG, 0L, uid, gid, |
DEFMODE & ~umask(0), (off_t)ransize, ARFMAG); |
DEFMODE & ~umask(0), (off_t)ransize, ARFMAG); |
if (!fwrite(hb, sizeof(struct ar_hdr), 1, fp)) |
if (!fwrite(hb, sizeof(struct ar_hdr), 1, fp)) |
error(tname); |
error(tname); |