|
|
1.1 root 1: #include <stdio.h>
2: #include <signal.h>
3: char pr_buf[BUFSIZ];
4: char *pr_bufp;
5: char *teststr =
6: "S /usr/spool/uucppublic/radio /tmp/sendme wgl -dc D.blistrn02f2 0644\n";
7: extern char *strtok();
8: catchsegv()
9: {
10: char *segmsg ="Segmentation violation";
11: write(1, segmsg, strlen(segmsg));
12: exit(1);
13: }
14:
15: catchmisc()
16: {
17: char *segmsg ="Local Signal";
18: write(1, segmsg, strlen(segmsg));
19: exit(1);
20: }
21:
22: main()
23: {
24: int i;
25: char *sp, *p;
26:
27: signal(SIGSEGV, catchsegv);
28: signal(SIGTERM, catchmisc);
29: signal(SIGHUP, catchmisc);
30: signal(SIGINT, catchmisc);
31: pr_bufp = pr_buf;
32: for (i = 0; i <= 33; i++) {
33: prhex(i);
34: *pr_bufp++ = ' ';
35: }
36: *pr_bufp++ = '\0';
37: printf ("[%s]\n", pr_buf);
38: printf("getoct(0666) %o, getoct(04755) %o.\n", getoct("0666"),
39: getoct("04755"));
40: printf("we are located at %s.\n", getwd());
41: sleep(10);
42: sp = teststr;
43: for (i = 1; i < 15; i++) {
44: p = strtok(sp, " \t\n");
45: if (p == NULL)
46: break;
47: printf("Token %d is %s.\n", i, p);
48: sp = NULL;
49: }
50: }
51:
52: getoct(s)
53: char *s;
54: {
55: char *cp;
56: char c;
57: int n;
58:
59: cp = s;
60: n = 0;
61: printf("arg is %s\n", s);
62: while ((c = *cp) != '\0') {
63: printf("n is %o, cp is %c.\n", n, *cp);
64: n = (n * 8) + *cp++ -'0';
65: }
66: return n;
67: }
68:
69: prhex(d)
70: int d;
71: {
72: int c;
73: c = d >> 4;
74: *pr_bufp++ = (c >= 10) ? c + 'A' - 10 : c + '0';
75: c = d & 15;
76: *pr_bufp++ = (c >= 10) ? c + 'A' - 10 : c + '0';
77: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.