home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 024 / psi110g.zip / TIMED.C < prev    next >
C/C++ Source or Header  |  1994-04-17  |  2KB  |  85 lines

  1. /* Internet Time Server
  2.  * Author: Brian K. Teravskis, WD0EFL
  3.  * Date: 02/15/92
  4.  *
  5.  * Based on RFC868 Time Protocol
  6.  */
  7. #include <time.h>
  8. #include "global.h"
  9. #ifdef RDATE
  10. #include "mbuf.h"
  11. #include "socket.h"
  12. #include "session.h"
  13. #include "proc.h"
  14.   
  15. #define DIFFTIME 2208988800L
  16.   
  17. static void timeserver __ARGS((int s,void *unused,void *p));
  18.   
  19. /* Start up time server */
  20. int
  21. time1(argc,argv,p)
  22. int argc;
  23. char *argv[];
  24. void *p;
  25. {
  26.     int16 port;
  27.   
  28.     if(argc < 2)
  29.         port = IPPORT_TIME;
  30.     else
  31.         port = atoi(argv[1]);
  32.   
  33.     return start_tcp(port,"TIME Server",timeserver,512);
  34. } /* time1 */
  35.   
  36. /* Stop the time server */
  37. int
  38. time0(argc,argv,p)
  39. int argc;
  40. char *argv[];
  41. void *p;
  42. {
  43.     int16 port;
  44.   
  45.     if(argc < 2)
  46.         port = IPPORT_TIME;
  47.     else
  48.         port = atoi(argv[1]);
  49.     return stop_tcp(port);
  50. } /* time0 */
  51.   
  52. /*
  53.  * Serve up the time to the connected client
  54.  */
  55. static void
  56. timeserver(s,unused,p)
  57. int s;
  58. void *unused;
  59. void *p;
  60. {
  61.     struct mbuf *bp;
  62.     char    datetime[4];
  63.   
  64.     sockmode(s,SOCK_BINARY);
  65.     sockowner(s,Curproc);
  66.     log(s,"Open Time");
  67.     /*
  68.      * Change 1970 start time to 1900 start time, and put
  69.      * it in network order
  70.      */
  71.     put32(datetime,time((time_t *)0)+DIFFTIME);
  72.   
  73.     /* enqueue for transmission */
  74.     bp = qdata(datetime,sizeof(int32));
  75.     /* Send time data */
  76.     if(send_mbuf(s,bp,0,NULLCHAR,0) == -1)
  77.         log(s,"Time Failed");
  78.   
  79.     close_s(s);
  80.     log(s,"Close Time");
  81. } /* timeserver */
  82.   
  83. #endif /* RDATE */
  84.   
  85.