/* Copyright (c) 1993 Stephen F. White */ #include <stdio.h> #ifdef SYSV #include <string.h> #else #include <strings.h> #endif #include <sys/time.h> #include "config.h" #include "cool.h" #include "proto.h" #include "sys_proto.h" #include "netio.h" #include "servers.h" #include "execute.h" /* * broken-out compiler for COOL */ FILE *progfile; static void compile_error(const char *s); static int compile_getc(void); static void compile_ungetc(int c); void cmdline_compile(const char *dbfile, const char *pfile, int do_init) { int n; struct timeval cur_time; if (!strcmp(pfile, "-")) { progfile = stdin; } else { progfile = fopen(pfile, "r"); if (!progfile) { perror(pfile); exit(1); } } if (init(dbfile, 0, 0)) { exit(2); } n = compile(0, compile_getc, compile_ungetc, compile_error, -1, 0, 0, 1, do_init); if (n) { fprintf(stderr, "%d errors, output file not written.\n", n); exit(4); } gettimeofday(&cur_time, 0); (void) process_queues(cur_time, &cur_time); /* to handle init() messages */ shutdown_server(); fclose(progfile); } static void compile_error(const char *s) { fprintf(stderr, "%s\n", s); } static int compile_getc(void) { return getc(progfile); } static void compile_ungetc(int c) { ungetc(c, progfile); }