Rev 16 | Rev 19 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 16 | Rev 18 | ||
---|---|---|---|
Line 37... | Line 37... | ||
37 | #define localtime(t) sane_localtime ((t)) // STFU Microsoft |
37 | #define localtime(t) sane_localtime ((t)) // STFU Microsoft |
38 | static inline char *sane_asctime (const struct tm *tm_time) { thread_local static char asctimestr[64]; if (asctime_s (asctimestr, sizeof (asctimestr), tm_time) != 0) return (NULL); return (asctimestr); } // non-complaining asctime() implementation for MSVC. Uses TLS. |
38 | static inline char *sane_asctime (const struct tm *tm_time) { thread_local static char asctimestr[64]; if (asctime_s (asctimestr, sizeof (asctimestr), tm_time) != 0) return (NULL); return (asctimestr); } // non-complaining asctime() implementation for MSVC. Uses TLS. |
39 | #define asctime(t) sane_asctime ((t)) // STFU Microsoft |
39 | #define asctime(t) sane_asctime ((t)) // STFU Microsoft |
40 | #define S_IFIFO 0x1000 |
40 | #define S_IFIFO 0x1000 |
41 | #define S_IFLNK 0xa000 |
41 | #define S_IFLNK 0xa000 |
42 | #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) |
42 | #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) |
43 | #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) |
43 | #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) |
44 | #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) |
44 | #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) |
- | 45 | #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) |
|
45 | #define strdup(s) _strdup ((s)) |
46 | #define strdup(s) _strdup ((s)) |
46 | #define strcasecmp(s1,s2) _stricmp ((s1), (s2)) |
47 | #define strcasecmp(s1,s2) _stricmp ((s1), (s2)) |
47 | #define strtok_r(s,delim,ctx) strtok_s ((s), (delim), (ctx)) |
48 | #define strtok_r(s,delim,ctx) strtok_s ((s), (delim), (ctx)) |
48 | #define mkdir(p,m) _mkdir ((p)) |
49 | #define mkdir(p,m) _mkdir ((p)) |
49 | #define utimbuf __utimbuf32 |
50 | #define utimbuf __utimbuf32 |