|
|
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.