/* Copyright (C) 1989, 1995, 1996, 1999 artofcode LLC. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307. */ /*$Id: gs.c,v 1.6.2.1.2.1 2003/01/17 00:49:02 giles Exp $ */ /* 'main' program for Ghostscript */ #include "ghost.h" #include "imain.h" #include "imainarg.h" #include "iapi.h" #include "iminst.h" #include "errors.h" /* Define an optional array of strings for testing. */ /*#define RUN_STRINGS */ #ifdef RUN_STRINGS private const char *run_strings[] = { "2 vmreclaim /SAVE save def 2 vmreclaim", "(saved\n) print flush", "SAVE restore (restored\n) print flush 2 vmreclaim", "(done\n) print flush quit", 0 }; #endif int main(int argc, char *argv[]) { int exit_status = 0; gs_main_instance *minst = gs_main_instance_default(); int code = gs_main_init_with_args(minst, argc, argv); #ifdef RUN_STRINGS { /* Run a list of strings (for testing). */ const char **pstr = run_strings; for (; *pstr; ++pstr) { int exit_code; ref error_object; int code; fprintf(stdout, "{%s} =>\n", *pstr); fflush(stdout); code = gs_main_run_string(minst, *pstr, 0, &exit_code, &error_object); zflush(osp); fprintf(stdout, " => code = %d\n", code); fflush(stdout); if (code < 0) { gs_exit(1); return 1; } } } #endif if (code >= 0) code = gs_main_run_start(minst); exit_status = 0; switch (code) { case 0: case e_Info: case e_Quit: break; case e_Fatal: exit_status = 1; break; default: exit_status = 255; } gs_exit_with_code(exit_status, code); return exit_status; }