1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: */
6:
7: #if defined(DOSCCS) && !defined(lint)
8: char copyright[] =
9: "@(#) Copyright (c) 1983 Regents of the University of California.\n\
10: All rights reserved.\n";
11:
12: static char sccsid[] = "@(#)strip.c 5.1.1 (2.11BSD GTE) 1/1/94";
13: #endif
14:
15: #include <a.out.h>
16: #include <signal.h>
17: #include <stdio.h>
18: #include <sys/file.h>
19:
20: struct xexec head;
21: int status;
22:
23: main(argc, argv)
24: char *argv[];
25: {
26: register i;
27:
28: signal(SIGHUP, SIG_IGN);
29: signal(SIGINT, SIG_IGN);
30: signal(SIGQUIT, SIG_IGN);
31: for (i = 1; i < argc; i++) {
32: strip(argv[i]);
33: if (status > 1)
34: break;
35: }
36: exit(status);
37: }
38:
39: strip(name)
40: char *name;
41: {
42: register f;
43: long size;
44:
45: f = open(name, O_RDWR);
46: if (f < 0) {
47: fprintf(stderr, "strip: "); perror(name);
48: status = 1;
49: goto out;
50: }
51: if (read(f, (char *)&head, sizeof (head)) < 0 || N_BADMAG(head.e)) {
52: printf("strip: %s not in a.out format\n", name);
53: status = 1;
54: goto out;
55: }
56: if ((head.e.a_syms == 0) && ((head.e.a_flag & 1) != 0))
57: goto out;
58:
59: size = N_DATOFF(head) + head.e.a_data;
60: head.e.a_syms = 0;
61: head.e.a_flag |= 1;
62: if (ftruncate(f, size) < 0) {
63: fprintf("strip: "); perror(name);
64: status = 1;
65: goto out;
66: }
67: (void) lseek(f, (long)0, L_SET);
68: (void) write(f, (char *)&head.e, sizeof (head.e));
69: out:
70: close(f);
71: }
Defined functions
main
defined in line
23;
never used
strip
defined in line
39; used 1 times
Defined variables
head
defined in line
20; used 11 times