|
|
1.1 root 1: #include "strip.h"
2: #include "hash.h"
3: #include <signal.h>
4:
5: main(argc, argv)
6: int argc; char **argv;
7: {
8: register Adotout *a;
9: register struct nlist *sym;
10: int sighup();
11:
12: prognam = *argv;
13: ++stripflag;
14:
15: if (argc < 2) {
16: fprintf(stderr, "Usage: %s [options] file.out...\n", prognam);
17: exit(1);
18: }
19:
20: while (--argc > 0 && (*++argv)[0] == '-' && (*argv)[1])
21: switch ((*argv)[1]) {
22: case 'D':
23: ++strdebug; break;
24: case 'v':
25: ++prtflag; break;
26: case 'g':
27: ++gflag; /* fall through */
28: case 's':
29: ++shrinkflag; stripflag = 0; break;
30: default:
31: fatal("unknown option " ,*argv);
32: }
33:
34: Signal(SIGHUP, sighup);
35: Signal(SIGINT, sighup);
36: Signal(SIGQUIT, sighup);
37:
38: while (--argc >= 0) {
39: tmpnam[0] = 0;
40: if ((a = rdout(*argv++, !stripflag)) == 0)
41: continue;
42: if (prtflag)
43: prtout(a);
44: if (a->hd.a_syms == 0) {
45: fprintf(stderr, "%s already stripped\n", a->name);
46: freeout(a);
47: continue;
48: }
49: if (shrinkflag)
50: shrink(a);
51: symwrite(a);
52: freeout(a);
53: }
54: exit(0);
55: }
56:
57: fatal(m1, m2)
58: char *m1, *m2;
59: {
60: if (m1)
61: fprintf(stderr,"%s: %s%s\n", prognam, m1, m2);
62: if (!copyrace && tmpnam[0])
63: unlink(tmpnam);
64: exit(1);
65: }
66:
67: sighup(s)
68: {
69: if (copyrace) {
70: signal(s, sighup);
71: return;
72: }
73: if (tmpnam[0])
74: unlink(tmpnam);
75: exit(1);
76: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.