Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1exp 11/4/83; site ihuxl.UUCP Path: utzoo!linus!decvax!harpo!floyd!clyde!ihnp4!ihuxl!dcn From: dcn@ihuxl.UUCP (Dave Newkirk) Newsgroups: net.sources Subject: Aztec C source - detab.c Message-ID: <733@ihuxl.UUCP> Date: Fri, 11-Nov-83 17:57:12 EST Article-I.D.: ihuxl.733 Posted: Fri Nov 11 17:57:12 1983 Date-Received: Sun, 13-Nov-83 08:24:46 EST Organization: AT&T Bell Labs, Naperville, Il Lines: 72 /* detab - replace tabs with blanks */ #include "stdio.h" #define INTERVAL 4 #define SQUOTE 0x27 #define DQUOTE 0x22 main(argc, argv) int argc ; char *argv[] ; { FILE *input ; argc-- ; argv++ ; if( argc == 0 ) detab( stdin ) ; else for( ; argc>0 ; argc--,argv++) if( (input=fopen(*argv,"r")) == NULL ) { fprintf(stderr, "detab: can't open %s\n", *argv) ; exit(1) ; } else { detab( input ) ; fclose( input ) ; } exit(0) ; } /* end main */ /* detab - replace tabs with blanks */ detab( in ) FILE *in ; { int c, i, col, tabover, sqstring, dqstring ; col = 0 ; sqstring = dqstring = FALSE ; while( (c=agetc(in)) != EOF ) { if( c==TAB && !sqstring && !dqstring ) { tabover = INTERVAL - (col % INTERVAL) ; for( i=1 ; i <= tabover ; i++ ) aputc( BLANK, stdout ) ; col += tabover ; } else if( c == NL ) { aputc( NL, stdout ) ; col = 0 ; sqstring = dqstring = FALSE ; } else { aputc( c, stdout ) ; col++ ; if( c == SQUOTE ) sqstring = 1 - sqstring ; else if( c == DQUOTE ) dqstring = 1 - dqstring ; } } /* end while */ } /* end detab */