home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / CLIPPER / MISC / EMXLIB8F.ZIP / EMX / LIB / TIME / ASCTIME.C next >
Encoding:
C/C++ Source or Header  |  1993-01-02  |  1.2 KB  |  45 lines

  1. /* asctime.c (emx+gcc) -- Copyright (c) 1990-1993 by Eberhard Mattes */
  2.  
  3. #include <sys/emx.h>
  4. #include <time.h>
  5. #include <string.h>
  6.  
  7. static char const months[] = "JanFebMarAprMayJunJulAugSepOctNovDec";
  8. static char const wdays[] = "SunMonTueWedThuFriSat";
  9.  
  10. #define digit(i) (char)(((i)%10)+'0')
  11.  
  12. char *asctime (const struct tm *t)
  13. {
  14. #if defined (__MT__)
  15.   struct _thread *tp = _thread();
  16. #define result (tp->_th_asctime_buf)
  17. #else
  18.   static char result[26];
  19. #endif
  20.  
  21.   memcpy (result+0, wdays+t->tm_wday*3, 3);
  22.   result[3] = ' ';
  23.   memcpy (result+4, months+t->tm_mon*3, 3);
  24.   result[7] = ' ';
  25.   result[8] = digit (t->tm_mday / 10);
  26.   result[9] = digit (t->tm_mday / 1);
  27.   result[10] = ' ';
  28.   result[11] = digit (t->tm_hour / 10);
  29.   result[12] = digit (t->tm_hour / 1);
  30.   result[13] = ':';
  31.   result[14] = digit (t->tm_min / 10);
  32.   result[15] = digit (t->tm_min / 1);
  33.   result[16] = ':';
  34.   result[17] = digit (t->tm_sec / 10);
  35.   result[18] = digit (t->tm_sec / 1);
  36.   result[19] = ' ';
  37.   result[20] = digit ((t->tm_year+1900) / 1000);
  38.   result[21] = digit ((t->tm_year+1900) / 100);
  39.   result[22] = digit ((t->tm_year+1900) / 10);
  40.   result[23] = digit ((t->tm_year+1900) / 1);
  41.   result[24] = '\n';
  42.   result[25] = '\0';
  43.   return (result);
  44. }
  45.