| 
deba@2035
 | 
     1  | 
#ifdef WIN32
  | 
| 
deba@2035
 | 
     2  | 
  | 
| 
deba@2035
 | 
     3  | 
#include <lemon/bits/mingw32_time.h>
  | 
| 
deba@2035
 | 
     4  | 
  | 
| 
deba@2035
 | 
     5  | 
#include <windows.h>
  | 
| 
deba@2035
 | 
     6  | 
#include <ctime>
  | 
| 
deba@2035
 | 
     7  | 
#include "dos.h"
  | 
| 
deba@2035
 | 
     8  | 
  | 
| 
deba@2035
 | 
     9  | 
static const char days[] = 
  | 
| 
deba@2035
 | 
    10  | 
"Sun Mon Tue Wed Thu Fri Sat ";
  | 
| 
deba@2035
 | 
    11  | 
static const char months[] = 
  | 
| 
deba@2035
 | 
    12  | 
"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec ";
  | 
| 
deba@2035
 | 
    13  | 
  | 
| 
deba@2035
 | 
    14  | 
void num2str(char *c,int i) {
 | 
| 
deba@2035
 | 
    15  | 
  c[0]=i/10+'0';
  | 
| 
deba@2035
 | 
    16  | 
  c[1]=i%10+'0';
  | 
| 
deba@2035
 | 
    17  | 
}
  | 
| 
deba@2035
 | 
    18  | 
  | 
| 
deba@2035
 | 
    19  | 
char *asctime_r(const struct tm *t, char *buf) {
 | 
| 
deba@2035
 | 
    20  | 
  *(int*)buf=*(int*)(days+(t->tm_wday<<2));
  | 
| 
deba@2035
 | 
    21  | 
  *(int*)(buf+4)=*(int*)(months+(t->tm_mon<<2));
  | 
| 
deba@2035
 | 
    22  | 
  num2str(buf+8,t->tm_mday);
  | 
| 
deba@2035
 | 
    23  | 
  if (buf[8]=='0') buf[8]=' ';
  | 
| 
deba@2035
 | 
    24  | 
  buf[10]=' ';
  | 
| 
deba@2035
 | 
    25  | 
  num2str(buf+11,t->tm_hour);
  | 
| 
deba@2035
 | 
    26  | 
  buf[13]=':';
  | 
| 
deba@2035
 | 
    27  | 
  num2str(buf+14,t->tm_min);
  | 
| 
deba@2035
 | 
    28  | 
  buf[16]=':';
  | 
| 
deba@2035
 | 
    29  | 
  num2str(buf+17,t->tm_sec);
  | 
| 
deba@2035
 | 
    30  | 
  buf[19]=' ';
  | 
| 
deba@2035
 | 
    31  | 
  num2str(buf+20,(t->tm_year+1900)/100);
  | 
| 
deba@2035
 | 
    32  | 
  num2str(buf+22,(t->tm_year+1900)%100);
  | 
| 
deba@2035
 | 
    33  | 
  buf[24]='\n'; buf[25]='\0';
  | 
| 
deba@2035
 | 
    34  | 
  return buf;
  | 
| 
deba@2035
 | 
    35  | 
}
  | 
| 
deba@2035
 | 
    36  | 
  | 
| 
deba@2035
 | 
    37  | 
struct tm * localtime_r (const time_t *t, struct tm *tm) {
 | 
| 
deba@2035
 | 
    38  | 
  struct tm *tmp;
  | 
| 
deba@2035
 | 
    39  | 
  
  | 
| 
deba@2035
 | 
    40  | 
  if ((tmp = localtime(t)) && tm)
  | 
| 
deba@2035
 | 
    41  | 
    *tm = *tmp;
  | 
| 
deba@2035
 | 
    42  | 
  else
  | 
| 
deba@2035
 | 
    43  | 
    return 0;
  | 
| 
deba@2035
 | 
    44  | 
  
  | 
| 
deba@2035
 | 
    45  | 
  return tm;
  | 
| 
deba@2035
 | 
    46  | 
}
  | 
| 
deba@2035
 | 
    47  | 
  | 
| 
deba@2035
 | 
    48  | 
char *ctime_r(const time_t * tim_p , char * result) {
 | 
| 
deba@2035
 | 
    49  | 
  struct tm tm;
  | 
| 
deba@2035
 | 
    50  | 
  return asctime_r (localtime_r (tim_p, &tm), result);
  | 
| 
deba@2035
 | 
    51  | 
}
  | 
| 
deba@2035
 | 
    52  | 
  | 
| 
deba@2035
 | 
    53  | 
  | 
| 
deba@2035
 | 
    54  | 
int gettimeofday(struct timeval * tp, struct timezone *) {
 | 
| 
deba@2035
 | 
    55  | 
  SYSTEMTIME systime;
  | 
| 
deba@2035
 | 
    56  | 
  | 
| 
deba@2035
 | 
    57  | 
  if (tp) {
 | 
| 
deba@2035
 | 
    58  | 
    struct tm tmrec;
  | 
| 
deba@2035
 | 
    59  | 
    time_t theTime = time(NULL);
  | 
| 
deba@2035
 | 
    60  | 
    
  | 
| 
deba@2035
 | 
    61  | 
    
  | 
| 
deba@2035
 | 
    62  | 
    tmrec = *localtime(&theTime);
  | 
| 
deba@2035
 | 
    63  | 
    tp->tv_sec = mktime(&tmrec);
  | 
| 
deba@2035
 | 
    64  | 
    GetLocalTime(&systime); /* system time */
  | 
| 
deba@2035
 | 
    65  | 
  | 
| 
deba@2035
 | 
    66  | 
    tp->tv_usec = systime.wMilliseconds * 1000;
  | 
| 
deba@2035
 | 
    67  | 
  }
  | 
| 
deba@2035
 | 
    68  | 
  return 0;
  | 
| 
deba@2035
 | 
    69  | 
}
  | 
| 
deba@2035
 | 
    70  | 
  | 
| 
deba@2035
 | 
    71  | 
long filetime_to_clock(FILETIME *ft)
  | 
| 
deba@2035
 | 
    72  | 
{
 | 
| 
deba@2035
 | 
    73  | 
  __int64 qw = ft->dwHighDateTime;
  | 
| 
deba@2035
 | 
    74  | 
  qw <<= 32;
  | 
| 
deba@2035
 | 
    75  | 
  qw |= ft->dwLowDateTime;
  | 
| 
deba@2035
 | 
    76  | 
  qw /= 10000;  
  | 
| 
deba@2035
 | 
    77  | 
  return (long) qw;
  | 
| 
deba@2035
 | 
    78  | 
  | 
| 
deba@2035
 | 
    79  | 
}
  | 
| 
deba@2035
 | 
    80  | 
  | 
| 
deba@2035
 | 
    81  | 
int times(struct tms *tmbuf)
  | 
| 
deba@2035
 | 
    82  | 
{
 | 
| 
deba@2035
 | 
    83  | 
  FILETIME create, exit, kernel, user;
  | 
| 
deba@2035
 | 
    84  | 
  if (GetProcessTimes(GetCurrentProcess(),&create, &exit, &kernel, &user)) {
 | 
| 
deba@2035
 | 
    85  | 
    tmbuf->tms_utime = filetime_to_clock(&user);
  | 
| 
deba@2035
 | 
    86  | 
    tmbuf->tms_stime = filetime_to_clock(&kernel);
  | 
| 
deba@2035
 | 
    87  | 
    tmbuf->tms_cutime = 0;
  | 
| 
deba@2035
 | 
    88  | 
    tmbuf->tms_cstime = 0;
  | 
| 
deba@2035
 | 
    89  | 
  }
  | 
| 
deba@2035
 | 
    90  | 
  else {
 | 
| 
deba@2035
 | 
    91  | 
    tmbuf->tms_utime = clock();
  | 
| 
deba@2035
 | 
    92  | 
    tmbuf->tms_stime = 0;
  | 
| 
deba@2035
 | 
    93  | 
    tmbuf->tms_cutime = 0;
  | 
| 
deba@2035
 | 
    94  | 
    tmbuf->tms_cstime = 0;
  | 
| 
deba@2035
 | 
    95  | 
  }
  | 
| 
deba@2035
 | 
    96  | 
  return 0;
  | 
| 
deba@2035
 | 
    97  | 
}
  | 
| 
deba@2035
 | 
    98  | 
  | 
| 
deba@2035
 | 
    99  | 
int sysconf(int)
  | 
| 
deba@2035
 | 
   100  | 
{
 | 
| 
deba@2035
 | 
   101  | 
  return 1;
  | 
| 
deba@2035
 | 
   102  | 
}
  | 
| 
deba@2035
 | 
   103  | 
  | 
| 
deba@2035
 | 
   104  | 
#endif
  |