#ifdef ournix #include "ournix.h" #endif char sccsID[] = "@(#) stretch.c V1.0 Copyright Julian H. Stacey, Munich, June 1989\n" ; #include #include #define FALSE 0 #define TRUE 1 int length = 2 ; char **ARGV ; main(argc, argv) int argc; char **argv; { FILE *fp; char *p; int onef = FALSE; ARGV = argv ; #ifdef VSL /* { */ #include "../../include/vsl.h" #endif /* } */ for(argc--, argv++ ; argc ; argv++, argc--) { if(**argv != '-') break; p = *argv + 1; while(*p) switch(*p++) { case 'l': case 'L': if (*p) { length = atoi(p); if (length < 1) { fprintf(stderr, "%s: cannot have < 1 extra blank line\n", *ARGV) ; exit(1); } while ((*p >='0')&&(*p<='9')) p++; } break; default: fprintf(stderr, "Unknown flag %c, Syntax: %s -[lL]number file[s]\n", *ARGV, *(p-1)); break; } } if(argc == 0) doit(stdin); else { if(argc == 1) onef = TRUE; do { fp = fopen(*argv++, "r"); if(fp == NULL) { fprintf(stderr,"%s: cannot open '%s'\n", *ARGV, *(argv-1)); continue; } if(!onef) printf("%s: ", *(argv-1)); doit(fp); (void) fclose(fp); } while(--argc); } exit(0); } doit(fp) register FILE *fp; { int i; register int c; char alpha = FALSE; /* set if an alphabetic occurs on line */ char lastchar = '\n' ; while((c = getc(fp)) != EOF) { /* treat new page & carriage return as new line */ if ((c == '\f') || (c == '\r') ) c = '\n' ; if (c == '\n') { if (lastchar == '\n') continue ; if (alpha == TRUE) /* allow translation space */ for (i= length; i-- ; putc('\n',stdout)) ; alpha = FALSE ; lastchar = '\n' ; } else { if (isalpha(c)) alpha = TRUE ; if (!isspace(c)) lastchar = c ; } putc(c,stdout); } }