/* KICKDATE - Copyright 1990 Joe Porkka FREELY DISTRIBUTABLE Purpose: Keeps the current date on the Kickstart disk for A1000 owners with autoboot harddrives. Version 1.0 */ #include #include #include #include #include #include #include #include #include #include #include "settime.h" APTR TimerBase; long SetNewTime(secs) long secs; { struct timerequest *tr; tr= CreateTimer(UNIT_MICROHZ); if(tr==0) return -1; tr->tr_node.io_Command = TR_SETSYSTIME; tr->tr_time.tv_secs=secs; tr->tr_time.tv_micro=0; DoIO(tr); DeleteTimer(tr); return 0; } long GetSysTime(void) { struct timeval tv; struct timerequest *tr; tr= CreateTimer(UNIT_MICROHZ); if(tr==0) return -1; tr->tr_node.io_Command = TR_GETSYSTIME; DoIO(tr); tv =tr->tr_time; DeleteTimer(tr); return tv.tv_secs; } void DeleteTimer(tr) struct timerequest *tr; { struct MsgPort *tp; if(tr!=0) { tp = tr->tr_node.io_Message.mn_ReplyPort; if(tp!=0) DeletePort(tp); CloseDevice(tr); DeleteExtIO(tr, sizeof(struct timerequest)); } } struct timerequest * CreateTimer(unit) ULONG unit; { int error; struct MsgPort *timerport; struct timerequest *timermsg; timerport = (struct MsgPort *)CreatePort(0,0); if(timerport == 0) { return 0; } timermsg = (struct timerequest *) CreateExtIO(timerport, sizeof(struct timerequest)); if(timermsg == 0) { DeletePort(timerport); return 0; } error = OpenDevice(TIMERNAME, unit, timermsg, 0); if(error !=0) { DeleteTimer(timermsg); return 0; } return timermsg; }