Mercurial > ~darius > hgwebdir.cgi > paradise_server
comparison src/cutil.c @ 2:2719a89505ba
First entry of Paradise Server 2.9 patch 10 Beta
author | darius |
---|---|
date | Sat, 06 Dec 1997 04:37:01 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1:4d6502ffaa5e | 2:2719a89505ba |
---|---|
1 /*-------------------------------------------------------------------------- | |
2 NETREK II -- Paradise | |
3 | |
4 Permission to use, copy, modify, and distribute this software and its | |
5 documentation, or any derivative works thereof, for any NON-COMMERCIAL | |
6 purpose and without fee is hereby granted, provided that this copyright | |
7 notice appear in all copies. No representations are made about the | |
8 suitability of this software for any purpose. This software is provided | |
9 "as is" without express or implied warranty. | |
10 | |
11 Xtrek Copyright 1986 Chris Guthrie | |
12 Netrek (Xtrek II) Copyright 1989 Kevin P. Smith | |
13 Scott Silvey | |
14 Paradise II (Netrek II) Copyright 1993 Larry Denys | |
15 Kurt Olsen | |
16 Brandon Gillespie | |
17 --------------------------------------------------------------------------*/ | |
18 | |
19 /* cutil.c - misc utility fuctions common to all the binaries */ | |
20 | |
21 #include "config.h" | |
22 #ifndef apollo | |
23 #include <unistd.h> | |
24 #endif | |
25 #include <stdio.h> | |
26 #include <stdlib.h> | |
27 #include <string.h> | |
28 #include <signal.h> | |
29 #include <sys/types.h> | |
30 #ifdef hpux | |
31 #include <time.h> | |
32 #else | |
33 #include <sys/time.h> | |
34 #endif | |
35 #ifdef SYSV | |
36 #include <utime.h> | |
37 #endif | |
38 #include <math.h> | |
39 #include "data.h" | |
40 | |
41 /* | |
42 * r_signal - reliable version of signal() the System-V signal() function | |
43 * provides the older, unreliable signal semantics. So, this is an | |
44 * implementation of signal using sigaction. | |
45 */ | |
46 | |
47 void (* | |
48 r_signal(sig, func)) () | |
49 int sig; | |
50 void (*func) (); | |
51 { | |
52 struct sigaction act, oact; | |
53 | |
54 act.sa_handler = func; | |
55 | |
56 sigemptyset(&act.sa_mask); | |
57 act.sa_flags = 0; | |
58 #ifdef SA_RESTART | |
59 #ifdef BAD_SVR4_HACKS | |
60 if (sig != SIGALRM) | |
61 #endif /* BAD_SVR4_HACKS */ | |
62 act.sa_flags |= SA_RESTART; | |
63 #endif | |
64 | |
65 if (sigaction(sig, &act, &oact) < 0) | |
66 return (SIG_ERR); | |
67 | |
68 return (oact.sa_handler); | |
69 } | |
70 | |
71 | |
72 int | |
73 touch(file) | |
74 char *file; | |
75 { | |
76 time_t now[2]; | |
77 | |
78 now[0] = now[1] = time(0); | |
79 | |
80 return utime(file, (void *) now); | |
81 } | |
82 | |
83 #ifdef NO_STRDUP | |
84 char * | |
85 strdup(str) | |
86 char *str; | |
87 { | |
88 char *s; | |
89 | |
90 s = (char *) malloc(strlen(str) + 1); | |
91 if (!s) | |
92 return NULL; | |
93 strcpy(s, str); | |
94 return s; | |
95 } | |
96 #endif | |
97 | |
98 | |
99 /* dunno if any other systems have anyting like this */ | |
100 #ifdef hpux | |
101 | |
102 int | |
103 matherr(x) | |
104 struct exception *x; | |
105 { | |
106 char *t; | |
107 | |
108 switch (x->type) | |
109 { | |
110 case DOMAIN: | |
111 t = "domain"; | |
112 break; | |
113 case SING: | |
114 t = "singularity"; | |
115 break; | |
116 case OVERFLOW: | |
117 t = "overflow"; | |
118 break; | |
119 case UNDERFLOW: | |
120 t = "underflow"; | |
121 break; | |
122 case TLOSS: | |
123 t = "tloss"; | |
124 break; | |
125 case PLOSS: | |
126 t = "ploss"; | |
127 break; | |
128 default: | |
129 t = "buh??"; | |
130 break; | |
131 } | |
132 fprintf(stderr, "%s: %s error: %s(%f [, %f]) = %f\n", | |
133 argv0, t, x->name, x->arg1, x->arg2, x->retval); | |
134 } | |
135 | |
136 #endif |