Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #include <time.h>
  2. #include <kolibrisys.h>
  3.  
  4. struct tm __buffertime;
  5.  
  6.  
  7.  
  8. struct tm * localtime (const time_t * timer)
  9. /* non-standard!  ignore parameter and return just time now */
  10. {
  11.         int kos_date, kos_time;
  12.         kos_date = _ksys_get_date();
  13.         kos_time = _ksys_get_system_clock();
  14.        
  15.         __buffertime.tm_mday = kos_date >> 16;
  16.         __buffertime.tm_mon = ((kos_date & 0xFF00) >> 8) -1;
  17.         __buffertime.tm_year = kos_date >> 16 + 100;
  18.        
  19.         __buffertime.tm_wday = __buffertime.tm_yday = __buffertime.tm_isdst = -1; /* temporary */
  20.        
  21.         __buffertime.tm_sec = kos_time >> 16;
  22.         __buffertime.tm_min = (kos_time & 0xFF00) >> 8;
  23.         __buffertime.tm_hour = kos_time & 0xFF;
  24.  
  25.         return &__buffertime;
  26. }
  27.  
  28. time_t time (time_t* timer)
  29. {
  30.         time_t t = mktime(localtime(0));
  31.        
  32.         if (timer) *timer = t;
  33.        
  34.         return t;
  35. }
  36.  
  37. time_t mktime (struct tm * timeptr)
  38. {
  39.         int y, m, d;
  40.         time_t  t;
  41.         y = timeptr->tm_year + 1900;
  42.         m = timeptr->tm_mon + 1;
  43.         d = timeptr->tm_mday; /* to -1 or not to -1? */
  44.        
  45.         if (m < 3) { m += 12; y -= 1; }
  46.        
  47.         t = y * 365 + y / 4 + y /400 - y / 100; /* years - > days */
  48.         t += 30 * m + 3 * (m + 1) / 5 + d;              /* add month days */
  49.        
  50.         t -= 719561;  /* 01 jan 1970 */
  51.         t *= 86400;    
  52.  
  53.         t += 3600 * timeptr->tm_hour + 60 * timeptr->tm_min + timeptr->tm_sec;
  54.  
  55.         return t;
  56. }
  57.  
  58. double difftime (time_t end, time_t beginning)
  59. {
  60.         return end - beginning;
  61. }
  62.