#include "exec/types.h" #include "libraries/dos.h" #define LEAPYEAR(year) (!((year)%4) && (year)%100) void FormatDate(struct DateStamp *, char *); void FormatDate(ds, string) struct DateStamp *ds; char *string; { static char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}; static int monthdays[] ={31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int day, month, year; ULONG hours, minutes, secs; for(year=78, day=ds->ds_Days; day >= 366; year++) { day -= 365; if(LEAPYEAR(year)) day--; /* Leap day */ } if(day == 365 && !LEAPYEAR(year)) { day = 0; year++; } if(LEAPYEAR(year)) monthdays[1] = 29; else monthdays[1] = 28; for(month=0; month<12 && day >= monthdays[month]; day-=monthdays[month++]); day++; string[0] = '0' + day/10; string[1] = '0' + day%10; string[2] = string[6] = '-'; memcpy(string+3, months[month], 3); string[7] = '0' + year/10; string[8] = '0' + year%10; string[9] = ' '; secs = ((ULONG)ds->ds_Tick/50) + ((ULONG)ds->ds_Minute*60); hours = secs / 3600; secs %= 3600; minutes = secs / 60; secs %= 60; string[10] = '0' + hours/10; string[11] = '0' + hours%10; string[12] = string[15] = ':'; string[13] = '0' + minutes/10; string[14] = '0' + minutes%10; string[16] = '0' + secs/10; string[17] = '0' + secs%10; string[18] = '\0'; return; }