|
|
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.