xref: /plan9/sys/src/cmd/gs/src/gp_sysv.c (revision 593dc095aefb2a85c828727bbfa9da139a49bdf4)
17dd7cddfSDavid du Colombier /* Copyright (C) 1992 Aladdin Enterprises.  All rights reserved.
27dd7cddfSDavid du Colombier 
3*593dc095SDavid du Colombier   This software is provided AS-IS with no warranty, either express or
4*593dc095SDavid du Colombier   implied.
57dd7cddfSDavid du Colombier 
6*593dc095SDavid du Colombier   This software is distributed under license and may not be copied,
7*593dc095SDavid du Colombier   modified or distributed except as expressly authorized under the terms
8*593dc095SDavid du Colombier   of the license contained in the file LICENSE in this distribution.
97dd7cddfSDavid du Colombier 
10*593dc095SDavid du Colombier   For more information about licensing, please refer to
11*593dc095SDavid du Colombier   http://www.ghostscript.com/licensing/. For information on
12*593dc095SDavid du Colombier   commercial licensing, go to http://www.artifex.com/licensing/ or
13*593dc095SDavid du Colombier   contact Artifex Software, Inc., 101 Lucas Valley Road #110,
14*593dc095SDavid du Colombier   San Rafael, CA  94903, U.S.A., +1(415)492-9861.
157dd7cddfSDavid du Colombier */
167dd7cddfSDavid du Colombier 
17*593dc095SDavid du Colombier /* $Id: gp_sysv.c,v 1.4 2002/02/21 22:24:52 giles Exp $ */
187dd7cddfSDavid du Colombier /* System V Unix-specific routines for Ghostscript */
197dd7cddfSDavid du Colombier 
207dd7cddfSDavid du Colombier /* This file contains a couple of standard Unix library procedures */
217dd7cddfSDavid du Colombier /* that a few System V platforms don't provide. */
227dd7cddfSDavid du Colombier /* Note that this file is NOT used for SVR4 platforms. */
237dd7cddfSDavid du Colombier #include <errno.h>
247dd7cddfSDavid du Colombier #include "stdio_.h"
257dd7cddfSDavid du Colombier #include "time_.h"
267dd7cddfSDavid du Colombier #include <sys/types.h>
277dd7cddfSDavid du Colombier #include <sys/times.h>
287dd7cddfSDavid du Colombier #include <sys/stat.h>
297dd7cddfSDavid du Colombier #include <sys/param.h>
307dd7cddfSDavid du Colombier 
317dd7cddfSDavid du Colombier /* rename */
327dd7cddfSDavid du Colombier int
rename(const char * a,const char * b)337dd7cddfSDavid du Colombier rename(const char *a, const char *b)
347dd7cddfSDavid du Colombier {
357dd7cddfSDavid du Colombier     if (access(a, 0) == -1)
367dd7cddfSDavid du Colombier 	return (-1);
377dd7cddfSDavid du Colombier     unlink(b);
387dd7cddfSDavid du Colombier     if (link(a, b) == -1)
397dd7cddfSDavid du Colombier 	return (-1);
407dd7cddfSDavid du Colombier     if (unlink(a) == -1) {
417dd7cddfSDavid du Colombier 	unlink(b);		/* ??? */
427dd7cddfSDavid du Colombier 	return (-1);
437dd7cddfSDavid du Colombier     }
447dd7cddfSDavid du Colombier     return (0);
457dd7cddfSDavid du Colombier }
467dd7cddfSDavid du Colombier 
477dd7cddfSDavid du Colombier /* gettimeofday */
487dd7cddfSDavid du Colombier #ifndef HZ
497dd7cddfSDavid du Colombier #  define	HZ	100	/* see sys/param.h */
507dd7cddfSDavid du Colombier #endif
517dd7cddfSDavid du Colombier int
gettimeofday(struct timeval * tvp,struct timezone * tzp)527dd7cddfSDavid du Colombier gettimeofday(struct timeval *tvp, struct timezone *tzp)
537dd7cddfSDavid du Colombier {
547dd7cddfSDavid du Colombier     struct tms tms;
557dd7cddfSDavid du Colombier     static long offset = 0;
567dd7cddfSDavid du Colombier     long ticks;
577dd7cddfSDavid du Colombier 
587dd7cddfSDavid du Colombier     if (!offset) {
597dd7cddfSDavid du Colombier 	time(&offset);
607dd7cddfSDavid du Colombier 	offset -= (times(&tms) / HZ);
617dd7cddfSDavid du Colombier     }
627dd7cddfSDavid du Colombier     ticks = times(&tms);
637dd7cddfSDavid du Colombier     tvp->tv_sec = ticks / HZ + offset;
647dd7cddfSDavid du Colombier     tvp->tv_usec = (ticks % HZ) * (1000 * 1000 / HZ);
657dd7cddfSDavid du Colombier     return 0;
667dd7cddfSDavid du Colombier }
67