diff options
author | Henry Stiles <henry.stiles@artifex.com> | 1998-07-26 07:36:41 +0000 |
---|---|---|
committer | Henry Stiles <henry.stiles@artifex.com> | 1998-07-26 07:36:41 +0000 |
commit | eec0ef527f18c5978c4476c9490f4de4c4249628 (patch) | |
tree | 5588d5e1300a245186594893c930949a19bcbbce /gs/src/gp_os9.c | |
parent | d4bdba93ef34f68d27148e1b31088d1d3e786e8c (diff) | |
download | ghostpdl-eec0ef527f18c5978c4476c9490f4de4c4249628.tar.gz |
Initial revision
git-svn-id: http://svn.ghostscript.com/ghostpcl/trunk/ghostpcl@246 06663e23-700e-0410-b217-a244a6096597
Diffstat (limited to 'gs/src/gp_os9.c')
-rw-r--r-- | gs/src/gp_os9.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/gs/src/gp_os9.c b/gs/src/gp_os9.c new file mode 100644 index 000000000..222f8e084 --- /dev/null +++ b/gs/src/gp_os9.c @@ -0,0 +1,138 @@ +/* Copyright (C) 1989, 1995 Aladdin Enterprises. All rights reserved. + + This file is part of Aladdin Ghostscript. + + Aladdin Ghostscript is distributed with NO WARRANTY OF ANY KIND. No author + or distributor accepts any responsibility for the consequences of using it, + or for whether it serves any particular purpose or works at all, unless he + or she says so in writing. Refer to the Aladdin Ghostscript Free Public + License (the "License") for full details. + + Every copy of Aladdin Ghostscript must include a copy of the License, + normally in a plain ASCII text file named PUBLIC. The License grants you + the right to copy, modify and redistribute Aladdin Ghostscript, but only + under certain conditions described in the License. Among other things, the + License requires that the copyright notice and this notice be preserved on + all copies. +*/ + +/* gp_os9.c */ +/* OSK-specific routines for Ghostscript */ +#include "string_.h" +#include "gx.h" +#include "gp.h" +#include "time_.h" +#include <signal.h> +#include <stdlib.h> /* for exit */ +#include <sys/param.h> /* for MAXPATHLEN */ + +/* popen isn't POSIX-standard, so we declare it here. */ +extern FILE *popen(); +extern int pclose(); + +int interrupted; + +/* Forward declarations */ +private void signalhandler(P1(int)); +private FILE *rbfopen(P2(char*, char*)); + +/* Do platform-dependent initialization */ +void +gp_init(void) +{ intercept(signalhandler); +} + +/* Do platform-dependent cleanup. */ +void +gp_exit(int exit_status, int code) +{ +} + +/* Exit the program. */ +void +gp_do_exit(int exit_status) +{ exit(exit_status); +} + +private void +signalhandler(int sig) +{ clearerr(stdin); + switch(sig) { + case SIGINT: + case SIGQUIT: + interrupted = 1; + break; + case SIGFPE: + interrupted = 2; + break; + default: + break; + } +} + +/* ------ Date and time ------ */ + +/* Read the current time (in seconds since Jan. 1, 1980) */ +/* and fraction (in nanoseconds). */ +#define PS_YEAR_0 80 +#define PS_MONTH_0 1 +#define PS_DAY_0 1 +void +gp_get_realtime(long *pdt) +{ + long date, time, pstime, psdate, tick; + short day; + + _sysdate(0, &time, &date, &day, &tick); + _julian(&time, &date); + + pstime = 0; + psdate = (PS_YEAR_0 << 16) + (PS_MONTH_0 << 8) + PS_DAY_0; + _julian(&pstime, &psdate); + + pdt[0] = (date - psdate)*86400 + time; + pdt[1] = 0; + +#ifdef DEBUG_CLOCK + printf("pdt[0] = %ld pdt[1] = %ld\n", pdt[0], pdt[1]); +#endif +} + +/* Read the current user CPU time (in seconds) */ +/* and fraction (in nanoseconds). */ +void +gp_get_usertime(long *pdt) +{ return gp_get_realtime(pdt); /* not yet implemented */ +} + +/* ------ Printer accessing ------ */ + +/* Open a connection to a printer. A null file name means use the */ +/* standard printer connected to the machine, if any. */ +/* "|command" opens an output pipe. */ +/* Return NULL if the connection could not be opened. */ +FILE * +gp_open_printer(char *fname, int binary_mode) +{ return + (strlen(fname) == 0 ? + gp_open_scratch_file(gp_scratch_file_name_prefix, fname, "w") : + fname[0] == '|' ? + popen(fname + 1, "w") : + rbfopen(fname, "w")); +} + +FILE * +rbfopen(char *fname, char *perm) +{ FILE *file = fopen(fname, perm); + file->_flag |= _RBF; + return file; +} + +/* Close the connection to the printer. */ +void +gp_close_printer(FILE *pfile, const char *fname) +{ if ( fname[0] == '|' ) + pclose(pfile); + else + fclose(pfile); +} |