|
|
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: if (NULL == (env = getenv("TABSIZ"))) ! 16: tabsiz = 8; ! 17: else ! 18: tabsiz = atoi(env); ! 19: break; ! 20: case 2: /* 1 argument */ ! 21: tabsiz = atoi(argv[1]); ! 22: break; ! 23: default: ! 24: fprintf(stderr, "usage: detab tabsize\n"); ! 25: exit(1); ! 26: } ! 27: ! 28: for (loc = 0;;) { ! 29: switch (c = getchar()) { ! 30: case EOF: ! 31: exit(0); ! 32: case '\n': ! 33: case '\r': ! 34: loc = -1; /* next char will be at 0 */ ! 35: break; ! 36: case '\a': ! 37: loc--; /* alarm takes no space */ ! 38: break; ! 39: case '\b': ! 40: loc -= 2; /* backspace */ ! 41: break; ! 42: case '\t': ! 43: for (to = loc + tabsiz - (loc % tabsiz); loc < to; loc++) ! 44: putchar(' '); ! 45: continue; ! 46: } ! 47: loc++; ! 48: putchar(c); ! 49: } ! 50: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.