home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / GLEN / IS.ZIP / _STRF.C next >
C/C++ Source or Header  |  1988-10-26  |  2KB  |  120 lines

  1. /*
  2. ** _strf.c source for _strftime() and _strfdate()
  3. */
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <dos.h>
  8.  
  9. #define MONTH_SHIFT    5
  10. #define MONTH_MASK     0x0F
  11. #define DAY_MASK       0x1F
  12. #define YEAR_SHIFT     9
  13. #define DOS_EPOCH      80
  14. #define HOUR_SHIFT     11
  15. #define HOUR_MASK      0x1F
  16. #define MINUTE_SHIFT   5
  17. #define MINUTE_MASK    0x3F
  18.  
  19. /*
  20. ** _strftime() - mimic _strtime output except uses filetime instead of systime
  21. */
  22. char *_strftime(unsigned int ftime, char *ret_str)
  23. {
  24.    int hr, min;
  25.    char hour[3], minute[3];
  26.    char *ptr;
  27.  
  28.    hr = (ftime >> HOUR_SHIFT) & HOUR_MASK;
  29.    min = (ftime >> MINUTE_SHIFT) & MINUTE_MASK;
  30.  
  31.    ptr = hour;
  32.    ptr = itoa(hr, hour, 10);
  33.    ptr = minute;
  34.    ptr = itoa(min, minute, 10);
  35.  
  36.    if(hour[1] != '\0')
  37.    {
  38.        ret_str[0] = hour[0];
  39.        ret_str[1] = hour[1];
  40.    }
  41.    else
  42.    {
  43.        ret_str[0] = '0';
  44.        ret_str[1] = hour[0];
  45.    }
  46.    ret_str[2] = ':';
  47.    if(minute[1] != '\0')
  48.    {
  49.        ret_str[3] = minute[0];
  50.        ret_str[4] = minute[1];
  51.    }
  52.    else
  53.    {
  54.        ret_str[3] = '0';
  55.        ret_str[4] = minute[0];
  56.    }
  57.    ret_str[5] = '\0';
  58.  
  59.    return(ret_str);
  60. }
  61.  
  62. /*
  63. ** _strfdate() - mimic _strdate output except uses filetime instead of systime
  64. */
  65. char *_strfdate(unsigned int fdate, char *ret_str)
  66. {
  67.    int mo, da, yr;
  68.    char month[3], day[3], year[3];
  69.    char *ptr;
  70.    
  71.  
  72.    mo = (fdate >> MONTH_SHIFT) & MONTH_MASK;
  73.    da = fdate & DAY_MASK;
  74.    yr = (fdate >> YEAR_SHIFT) + DOS_EPOCH;
  75.  
  76.    ptr = month;
  77.    ptr = itoa(mo, month, 10);
  78.    ptr = day;
  79.    ptr = itoa(da, day, 10);
  80.    ptr = year;
  81.    ptr = itoa(yr, year, 10);
  82.  
  83.    if(month[1] != '\0')
  84.    {
  85.        ret_str[0] = month[0];
  86.        ret_str[1] = month[1];
  87.    }
  88.    else
  89.    {
  90.        ret_str[0] = '0';
  91.        ret_str[1] = month[0];
  92.    }
  93.    ret_str[2] = '/';
  94.    if(day[1] != '\0')
  95.    {
  96.        ret_str[3] = day[0];
  97.        ret_str[4] = day[1];
  98.    }
  99.    else
  100.    {
  101.        ret_str[3] = '0';
  102.        ret_str[4] = day[0];
  103.    }
  104.    ret_str[5] = '/';
  105.    if(year[1] != '\0')
  106.    {
  107.        ret_str[6] = year[0];
  108.        ret_str[7] = year[1];
  109.    }
  110.    else
  111.    {
  112.        ret_str[6] = '0';
  113.        ret_str[7] = year[0];
  114.    }
  115.    ret_str[8] = '\0';
  116.  
  117.    return(ret_str);
  118. }
  119.  
  120.