home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / misc / kickdate.lzh / SETTIME.C < prev   
C/C++ Source or Header  |  1990-10-11  |  2KB  |  95 lines

  1. /* KICKDATE - Copyright 1990 Joe Porkka
  2.         FREELY DISTRIBUTABLE
  3.  
  4.     Purpose: Keeps the current date on the Kickstart disk
  5.          for A1000 owners with autoboot harddrives.
  6.  
  7. Version 1.0
  8.  
  9. */
  10.  
  11. #include <exec/types.h>
  12. #include <exec/nodes.h>
  13. #include <exec/memory.h>
  14. #include <exec/interrupts.h>
  15. #include <exec/ports.h>
  16. #include <exec/libraries.h>
  17. #include <exec/tasks.h>
  18. #include <exec/io.h>
  19. #include <exec/devices.h>
  20. #include <devices/timer.h>
  21. #include "settime.h"
  22.  
  23. APTR TimerBase;
  24. long
  25. SetNewTime(secs)
  26.     long secs;
  27. {
  28.     struct timerequest *tr;
  29.     tr= CreateTimer(UNIT_MICROHZ);
  30.     if(tr==0) return -1;
  31.     tr->tr_node.io_Command = TR_SETSYSTIME;
  32.     tr->tr_time.tv_secs=secs;
  33.     tr->tr_time.tv_micro=0;
  34.     DoIO(tr);
  35.     DeleteTimer(tr);
  36.     return 0;
  37. }
  38.  
  39. long
  40. GetSysTime(void)
  41. {
  42.     struct timeval tv;
  43.     struct timerequest *tr;
  44.  
  45.     tr= CreateTimer(UNIT_MICROHZ);
  46.     if(tr==0) return -1;
  47.     tr->tr_node.io_Command = TR_GETSYSTIME;
  48.     DoIO(tr);
  49.  
  50.     tv =tr->tr_time;
  51.     DeleteTimer(tr);
  52.     return tv.tv_secs;
  53. }
  54.  
  55. void
  56. DeleteTimer(tr)
  57.     struct timerequest *tr;
  58. {
  59.     struct MsgPort *tp;
  60.  
  61.     if(tr!=0) {
  62.     tp = tr->tr_node.io_Message.mn_ReplyPort;
  63.     if(tp!=0) DeletePort(tp);
  64.     CloseDevice(tr);
  65.     DeleteExtIO(tr, sizeof(struct timerequest));
  66.     }
  67. }
  68.  
  69. struct timerequest *
  70. CreateTimer(unit)
  71.     ULONG unit;
  72. {
  73.     int error;
  74.  
  75.     struct MsgPort *timerport;
  76.     struct timerequest *timermsg;
  77.  
  78.     timerport = (struct MsgPort *)CreatePort(0,0);
  79.     if(timerport == 0) {
  80.     return 0;
  81.     }
  82.     timermsg = (struct timerequest *) CreateExtIO(timerport, sizeof(struct timerequest));
  83.     if(timermsg == 0) {
  84.     DeletePort(timerport);
  85.     return 0;
  86.     }
  87.     error = OpenDevice(TIMERNAME, unit, timermsg, 0);
  88.     if(error !=0) {
  89.     DeleteTimer(timermsg);
  90.     return 0;
  91.     }
  92.     return timermsg;
  93. }
  94.  
  95.