/* Copyright (C) 1989, 1995, 1998 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: gp_dvx.c,v 1.4.2.1.2.1 2003/01/17 00:49:02 giles Exp $ */ /* Desqview/X-specific routines for Ghostscript */ #include "string_.h" #include "gx.h" #include "gsexit.h" #include "gp.h" #include "time_.h" /* Do platform-dependent initialization. */ void gp_init(void) { } /* Do platform-dependent cleanup. */ void gp_exit(int exit_status, int code) { } /* Exit the program. */ void gp_do_exit(int exit_status) { } /* ------ Miscellaneous ------ */ /* Get the string corresponding to an OS error number. */ /* All reasonable compilers support it. */ const char * gp_strerror(int errnum) { return strerror(errnum); } /* ------ Date and time ------ */ /* Read the current time (in seconds since Jan. 1, 1970) */ /* and fraction (in nanoseconds). */ void gp_get_realtime(long *pdt) { struct timeval tp; struct timezone tzp; if (gettimeofday(&tp, &tzp) == -1) { lprintf("Ghostscript: gettimeofday failed!\n"); tp.tv_sec = tp.tv_usec = 0; } /* tp.tv_sec is #secs since Jan 1, 1970 */ pdt[0] = tp.tv_sec; pdt[1] = tp.tv_usec * 1000; #ifdef DEBUG_CLOCK printf("tp.tv_sec = %d tp.tv_usec = %d pdt[0] = %ld pdt[1] = %ld\n", tp.tv_sec, tp.tv_usec, pdt[0], pdt[1]); #endif } /* Read the current user CPU time (in seconds) */ /* and fraction (in nanoseconds). */ void gp_get_usertime(long *pdt) { gp_get_realtime(pdt); /* Use an approximation for now. */ } /* ------ Printer accessing ------ */ /* Open a connection to a printer. A null file name means use the */ /* standard printer connected to the machine, if any. */ /* Return NULL if the connection could not be opened. */ extern void gp_set_file_binary(P2(int, int)); FILE * gp_open_printer(char fname[gp_file_name_sizeof], int binary_mode) { if (strlen(fname) == 0 || !strcmp(fname, "PRN")) { if (binary_mode) gp_set_file_binary(fileno(stdprn), 1); stdprn->_flag = _IOWRT; /* Make stdprn buffered to improve performance */ return stdprn; } else return fopen(fname, (binary_mode ? "wb" : "w")); } /* Close the connection to the printer. */ void gp_close_printer(FILE * pfile, const char *fname) { if (pfile == stdprn) fflush(pfile); else fclose(pfile); }