|
|
1.1 ! root 1: #include <stdio.h> ! 2: ! 3: int tocrc; ! 4: ! 5: main(argc, argv) ! 6: int argc; ! 7: char *argv[]; ! 8: { ! 9: ! 10: argc--, argv++; ! 11: if (!strcmp(argv[0], "-t")) ! 12: argc--, argv++, tocrc++; ! 13: while (argc > 0) ! 14: getfrom(*argv++), argc--; ! 15: exit(0); ! 16: } ! 17: ! 18: getfrom(name) ! 19: char *name; ! 20: { ! 21: char headbuf[BUFSIZ]; ! 22: char linbuf[BUFSIZ]; ! 23: register char *cp; ! 24: int i = 0; ! 25: ! 26: if (freopen(name, "r", stdin) == 0) { ! 27: perror(name); ! 28: exit(1); ! 29: } ! 30: for (;;) { ! 31: if (fgets(headbuf, sizeof headbuf, stdin) == NULL) ! 32: return; ! 33: if (headbuf[0] != '.') ! 34: continue; ! 35: if (headbuf[1] == 'T' && headbuf[2] == 'H') ! 36: break; ! 37: if (headbuf[1] == 't' && headbuf[2] == 'h') ! 38: break; ! 39: } ! 40: for (;;) { ! 41: if (fgets(linbuf, sizeof linbuf, stdin) == NULL) ! 42: return; ! 43: if (linbuf[0] != '.') ! 44: continue; ! 45: if (linbuf[1] == 'S' && linbuf[2] == 'H') ! 46: break; ! 47: if (linbuf[1] == 's' && linbuf[2] == 'h') ! 48: break; ! 49: } ! 50: trimln(headbuf); ! 51: if (tocrc) { ! 52: register char *dp = name, *ep; ! 53: ! 54: again: ! 55: while (*dp && *dp != '.') ! 56: putchar(*dp++); ! 57: if (*dp) ! 58: for (ep = dp+1; *ep; ep++) ! 59: if (*ep == '.') { ! 60: putchar(*dp++); ! 61: goto again; ! 62: } ! 63: putchar('('); ! 64: if (*dp) ! 65: dp++; ! 66: while (*dp) ! 67: putchar (*dp++); ! 68: putchar(')'); ! 69: putchar(' '); ! 70: } ! 71: printf("%s\t", headbuf); ! 72: for (;;) { ! 73: if (fgets(linbuf, sizeof linbuf, stdin) == NULL) ! 74: break; ! 75: if (linbuf[0] == '.') { ! 76: if (linbuf[1] == 'S' && linbuf[2] == 'H') ! 77: break; ! 78: if (linbuf[1] == 's' && linbuf[2] == 'h') ! 79: break; ! 80: } ! 81: trimln(linbuf); ! 82: if (i != 0) ! 83: printf(" "); ! 84: i++; ! 85: printf("%s", linbuf); ! 86: } ! 87: printf("\n"); ! 88: } ! 89: ! 90: trimln(cp) ! 91: register char *cp; ! 92: { ! 93: ! 94: while (*cp) ! 95: cp++; ! 96: if (*--cp == '\n') ! 97: *cp = 0; ! 98: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.