|
|
1.1 ! root 1: /* ! 2: * Turn tabs to spaces. ! 3: */ ! 4: #include <stdio.h> ! 5: ! 6: main(argc, argv) ! 7: char **argv; ! 8: { ! 9: extern char *getenv(); ! 10: register int tabsiz, loc, to, c; ! 11: char *env; ! 12: ! 13: switch (argc) { ! 14: case 1: /* no argument */ ! 15: tabsiz = ((NULL == (env = getenv("TABSIZ"))) ? 8 : atoi(env)); ! 16: break; ! 17: case 2: /* 1 argument */ ! 18: tabsiz = atoi(argv[1]); ! 19: break; ! 20: default: ! 21: fprintf(stderr, "usage: detab [tabsize]\n"); ! 22: exit(1); ! 23: } ! 24: ! 25: if (tabsiz < 2 || tabsiz > 256) { ! 26: fprintf(stderr, "detab: %d is illegal tab size\n", tabsiz); ! 27: fprintf(stderr, "usage: detab [tabsize]\n"); ! 28: exit(1); ! 29: } ! 30: ! 31: for (loc = 0;;) { ! 32: switch (c = getchar()) { ! 33: case EOF: ! 34: exit(0); ! 35: case '\n': ! 36: case '\r': ! 37: loc = -1; /* next char will be at 0 */ ! 38: break; ! 39: case '\a': ! 40: loc--; /* alarm takes no space */ ! 41: break; ! 42: case '\b': ! 43: loc -= 2; /* backspace */ ! 44: break; ! 45: case '\t': /* space to the spot */ ! 46: for (to = loc + tabsiz - (loc % tabsiz); ! 47: loc < to; ! 48: loc++) ! 49: putchar(' '); ! 50: continue; ! 51: } ! 52: loc++; ! 53: putchar(c); ! 54: } ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.