/* unexpand.c -- unexpands spaces into tabs */ /* $Id$ */ /* Carlos Duarte , 990704 */ #include #include #include static int do_args(int first, int ac, char *av[]); #define ARG() \ s[1] ? (t=s+1, s+=strlen(s)-1, t) : ++i 0); putchar(c); if (c == '\n') { count = 0; beg=1; } } } } else { int c; int oc = ' '; int col, space; col = space = 0; while ((c = getc(f)) != EOF) { if (col++ %opts.tabstop == 0) { if (oc == ' ' && space>1) { putchar('\t'); space = 0; } } if (c == ' ') { if (oc == ' ') space++; else { oc = ' '; space=1; } } else { if (oc == ' ' && space) do putchar(' '); while (--space>0); putchar(c); oc = c; if (c == '\n') { space = col = 0; oc = ' '; } } } } if (ferror(f)) { warn("error on %s: $!", s); return 1; } if (fclose(f) != 0) { warn("can't close %s: $!", s); return 1; } return 0; } static int do_args(int ix, int argc, char *argv[]) { int ret_code=0; if (ix == argc) { ret_code |= unexpand(0); } else { for (; ix