#define MAGIC exp.a_magic
#define BADMAG MAGIC!=A_MAGIC1 && MAGIC!=A_MAGIC2 \
&& MAGIC!=A_MAGIC3 && MAGIC!=A_MAGIC4
char tempnm
[] = "__.SYMDEF";
fprintf(stderr
, "nm: cannot open %s\n", *argv
);
off
= sizeof(exp
.a_magic
);
fread((char *)&exp
, 1, sizeof(MAGIC
), fi
); /* get magic no. */
{ fprintf(stderr
, "not archive: %s\n", *argv
);
fread((char *)&exp
, 1, sizeof(struct exec
), fi
);
if (BADMAG
) /* archive element not in */
continue; /* proper format - skip it */
o
= (long)exp
.a_text
+ exp
.a_data
;
if ((exp
.a_flag
& 01) == 0)
n
= exp
.a_syms
/ sizeof(struct nlist
);
fprintf(stderr
, "nm: %s-- no name list\n", arp
.ar_name
);
fread((char *)&sym
, 1, sizeof(sym
), fi
);
if ((sym
.n_type
&N_EXT
)==0)
switch (sym
.n_type
&N_TYPE
) {
{ fprintf(stderr
, "can't create temporary\n");
fwrite((char *)tab
, tnum
, sizeof(struct tab
), fo
);
sprintf(buf
, "ar rlb %s %s %s\n", firstname
, *argv
, tempnm
);
else sprintf(buf
, "ar rl %s %s\n", *argv
, tempnm
);
fprintf(stderr
, "can't execute %s\n", buf
);
r
= fread((char *)&arp
, 1, sizeof(struct ar_hdr
), af
); /* read archive header */
off
= ftell(af
) + arp
.ar_size
; /* offset to next element */
stash(s
) struct nlist
*s
;
{ fprintf(stderr
, "symbol table overflow\n");
tab
[tnum
].cname
[i
] = s
->n_name
[i
];
offdelta
= tnum
* sizeof(struct tab
) + sizeof(arp
);
if(strncmp(arp
.ar_name
, tempnm
, 14) == 0)
offdelta
-= sizeof(arp
) + arp
.ar_size
;
strncpy(firstname
, arp
.ar_name
, 14);
{ fprintf(stderr
, "can't reopen %s\n", s
);
timex
= time(NULL
) + 5; /* should be enough time */
lseek(fd
, (long)sizeof(exp
.a_magic
) + ((char *)&arp
.ar_date
-(char *)&arp
), 0);
write(fd
, (char *)&timex
, sizeof(timex
));