xref: /original-bsd/contrib/dungeon/rtim.c (revision 04ace372)
1 /*
2  * Interface routines for dungeon.
3  * These routines are for functions expected by the game
4  * that are not available in the Unix/f77 library.
5  */
6 
7 #ifdef SYSV
8 #include <stdio.h>
9 #endif
10 
11 #include <sys/types.h>
12 
13 #ifdef SYSV
14 #include <time.h>
15 #else
16 #include <sys/timeb.h>
17 #include <sys/time.h>
18 #endif
19 
20 /* routine to get time in hours minutes and seconds */
21 
22 long time();
23 struct tm *localtime();
24 struct tm *tmptr;
25 long timebuf;
26 
27 itime_(hrptr,minptr,secptr)
28 
29 int *hrptr,*minptr,*secptr;
30 {
31 
32 	time(&timebuf);
33 	tmptr = localtime(&timebuf);
34 
35 	*hrptr  = tmptr->tm_hour;
36 	*minptr = tmptr->tm_min;
37 	*secptr = tmptr->tm_sec;
38 
39 	return;
40 }
41 
42 #ifdef SYSV
43 /* idate - return day (1-31), month (1-12) and year (AD) */
44 /*	by Dave Newkirk, ihnp4!ihlpm!dcn */
45 
46 idate_( date )
47 long date[];
48 {
49 	struct tm *t, *localtime();
50 	long time(), *tloc, loc;
51 
52 	tloc = &loc;			/* get pointer to time in seconds */
53 	time(tloc);
54 	t = localtime(tloc);		/* get time structure filled in */
55 	date[0] = t->tm_mday;
56 	date[1] = t->tm_mon + 1;
57 	date[2] = t->tm_year + 1900;
58 
59 } /* end idate */
60 #endif
61 
62 /* random number initializer */
63 inirnd_(seedptr)
64 
65 int *seedptr;
66 {
67 int seed;
68 
69 	seed = *seedptr;
70 	srand(seed);
71 	return;
72 }
73 
74 /*  random number generator */
75 rnd_(maxval)
76 
77 int *maxval;
78 {
79 /* note: returned random number ranges from 0 to maxval */
80 
81 int rndval;
82 
83 	rndval = rand();
84 
85 	rndval = rndval % *maxval;
86 
87 	return(rndval);
88 }
89 
90 #ifdef SYSV
91 /* thanks to Dave Newkirk, ihnp4!ihlpm!dcn for the following routines */
92 
93 /* getuid - fortran callable getuid */
94 
95 int
96 getuid_()
97 {
98 	return (int)getuid();
99 }
100 
101 /* unbuf - make output completely unbuffered */
102 
103 unbuf_()
104 {
105 	void setbuf();
106 
107 	setbuf(stdout, NULL);
108 }
109 #endif
110