Merge branch 'fg/submodule-non-ascii-path'
[git] / compat / msvc.h
1 #ifndef __MSVC__HEAD
2 #define __MSVC__HEAD
3
4 #include <direct.h>
5 #include <process.h>
6 #include <malloc.h>
7 #include <io.h>
8
9 /* porting function */
10 #define inline __inline
11 #define __inline__ __inline
12 #define __attribute__(x)
13 #define strncasecmp  _strnicmp
14 #define ftruncate    _chsize
15 #define strtoull     _strtoui64
16 #define strtoll      _strtoi64
17
18 static __inline int strcasecmp (const char *s1, const char *s2)
19 {
20         int size1 = strlen(s1);
21         int sisz2 = strlen(s2);
22         return _strnicmp(s1, s2, sisz2 > size1 ? sisz2 : size1);
23 }
24
25 #undef ERROR
26
27 /* Use mingw_lstat() instead of lstat()/stat() and mingw_fstat() instead
28  * of fstat(). We add the declaration of these functions here, suppressing
29  * the corresponding declarations in mingw.h, so that we can use the
30  * appropriate structure type (and function) names from the msvc headers.
31  */
32 #define stat _stat64
33 int mingw_lstat(const char *file_name, struct stat *buf);
34 int mingw_fstat(int fd, struct stat *buf);
35 #define fstat mingw_fstat
36 #define lstat mingw_lstat
37 #define _stat64(x,y) mingw_lstat(x,y)
38 #define ALREADY_DECLARED_STAT_FUNCS
39
40 #include "compat/mingw.h"
41
42 #undef ALREADY_DECLARED_STAT_FUNCS
43
44 #endif