version 1.2, 1996/03/02 00:40:57 |
version 1.3, 1997/05/31 08:17:18 |
|
|
char *name; |
char *name; |
struct ar_hdr *hdr; |
struct ar_hdr *hdr; |
off_t size; |
off_t size; |
|
uid_t uid; |
|
gid_t gid; |
|
|
/* |
/* |
* If passed an sb structure, reading a file from disk. Get stat(2) |
* If passed an sb structure, reading a file from disk. Get stat(2) |
|
|
* a space, use extended format 1. |
* a space, use extended format 1. |
*/ |
*/ |
lname = strlen(name); |
lname = strlen(name); |
|
uid = sb->st_uid; |
|
gid = sb->st_gid; |
|
if (uid > USHRT_MAX) { |
|
warnx("warning: uid %d truncated to %d", uid, |
|
USHRT_MAX); |
|
uid = USHRT_MAX; |
|
} |
|
if (gid > USHRT_MAX) { |
|
warnx("warning: gid %d truncated to %d", gid, |
|
USHRT_MAX); |
|
gid = USHRT_MAX; |
|
} |
if (options & AR_TR) { |
if (options & AR_TR) { |
if (lname > OLDARMAXNAME) { |
if (lname > OLDARMAXNAME) { |
(void)fflush(stdout); |
(void)fflush(stdout); |
warnx("warning: %s truncated to %.*s", |
warnx("warning: file name %s truncated to %.*s", |
name, OLDARMAXNAME, name); |
name, OLDARMAXNAME, name); |
(void)fflush(stderr); |
(void)fflush(stderr); |
} |
} |
(void)sprintf(hb, HDR3, name, sb->st_mtimespec.tv_sec, |
(void)sprintf(hb, HDR3, name, sb->st_mtimespec.tv_sec, |
sb->st_uid, sb->st_gid, sb->st_mode, sb->st_size, |
uid, gid, sb->st_mode, sb->st_size, ARFMAG); |
ARFMAG); |
|
lname = 0; |
lname = 0; |
} else if (lname > sizeof(hdr->ar_name) || strchr(name, ' ')) |
} else if (lname > sizeof(hdr->ar_name) || strchr(name, ' ')) |
(void)sprintf(hb, HDR1, AR_EFMT1, lname, |
(void)sprintf(hb, HDR1, AR_EFMT1, lname, |
sb->st_mtimespec.tv_sec, sb->st_uid, sb->st_gid, |
sb->st_mtimespec.tv_sec, uid, gid, sb->st_mode, |
sb->st_mode, sb->st_size + lname, ARFMAG); |
sb->st_size + lname, ARFMAG); |
else { |
else { |
lname = 0; |
lname = 0; |
(void)sprintf(hb, HDR2, name, sb->st_mtimespec.tv_sec, |
(void)sprintf(hb, HDR2, name, sb->st_mtimespec.tv_sec, |
sb->st_uid, sb->st_gid, sb->st_mode, sb->st_size, |
uid, gid, sb->st_mode, sb->st_size, ARFMAG); |
ARFMAG); |
|
} |
} |
size = sb->st_size; |
size = sb->st_size; |
} else { |
} else { |