|
|
1.1 root 1: /* getutim.c - getutim */
2:
3: #include <conf.h>
4: #include <kernel.h>
5: #include <sleep.h>
6: #include <date.h>
7: #include <network.h>
8:
9: /*------------------------------------------------------------------------
10: * getutim -- obtain time in seconds past Jan 1, 1970, ut (gmt)
11: *------------------------------------------------------------------------
12: */
13: SYSCALL getutim(timvar)
14: long *timvar;
15: {
16: int dev;
17: int len;
18: int ret;
19: long now;
20: long utnow;
21: char *msg = "No time server response";
22:
23: wait(clmutex);
24: ret = OK;
25: if (clktime < SECPERHR) { /* assume small numbers invalid */
26: if ((dev=open(INTERNET, TSERVER, ANYLPORT)) == SYSERR ||
27: control(dev,DG_SETMODE,DG_TMODE|DG_DMODE) == SYSERR) {
28: panic(msg);
29: ret = SYSERR;
30: }
31: write(dev, msg, 2); /* send junk packet to prompt */
32: if (read(dev,&utnow,4) != 4) {
33: panic(msg);
34: ret = SYSERR;
35: } else
36: clktime = net2xt( net2hl(utnow) );
37: close(dev);
38: }
39: *timvar = clktime;
40: signal(clmutex);
41: return(ret);
42: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.