/* * This program converts the pascal-type write/writeln's into fprintf's * or putc's. * * Tim Morgan October 10, 1987 */ #include #include "site.h" #ifdef ANSI #include #define index strchr void exit(int); void main(int argc, char * *argv); char *insert_long(char *cp); void join(char *cp); void do_blanks(int indent); int whole(char *buf); char *skip_balanced(char *cp); int bare(char *cp, char c); #else #ifdef SYSV #define index strchr #endif extern char *index(), *strcpy(); #endif /*ANSI*/ #define TRUE 1 #define FALSE 0 char buf[BUFSIZ], filename[100], *file, *argp, args[100], *as, *cmd; int tex = FALSE; extern char *index(), *strcpy(); char *insert_long(cp) char *cp; { char tbuf[BUFSIZ]; register int i; for (i=0; &buf[i] < cp; ++i) tbuf[i] = buf[i]; (void) strcpy(&tbuf[i], "(long)"); (void) strcpy(&tbuf[i+6], cp); (void) strcpy(buf, tbuf); return(cp+6); } void join(cp) char *cp; { char temp[BUFSIZ], *tp; if (!gets(temp)) return; *cp++ = ' '; for (tp=temp; *tp == ' '; ++tp); (void) strcpy(cp, tp); } void do_blanks(indent) int indent; { register int i; for (i=0; i 0 || (*cp != ',' && *cp != ')')) { switch (*cp) { case '(': ++depth; break; case ')': --depth; break; } ++cp; } return(cp); } /* Return true if c appears, except inside a quoted string */ #ifdef ANSI bare(char *cp, char c) #else bare(cp, c) char *cp, c; #endif { for (; *cp && *cp != c; ++cp) { if (*cp == '"') { ++cp; /* Skip over initial quotation mark */ while (*cp && *cp != '"') { /* skip to closing double quote */ if (*cp == '\\') ++cp; ++cp; } } else if (*cp == '\'') { ++cp; /* Skip to contained char */ if (*cp == '\'') ++cp; /* if backslashed, it's double */ ++cp; /* Skip to closing single-quote mark */ } } return(*cp); } #ifdef ANSI void #endif main(argc, argv) char *argv[]; { register char *cp; int blanks_done, indent, i; for (i=1; i