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