Skip to content

Commit 16fe1e0

Browse files
lznuaagitster
authored andcommitted
Add MinGW header files to build git with MSVC
Added the header files dirent.h, unistd.h and utime.h Add alloca.h, which simply includes malloc.h, which defines alloca(). Signed-off-by: Frank Li <[email protected]> Signed-off-by: Marius Storm-Olsen <[email protected]> Acked-by: Johannes Sixt <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 55fcb06 commit 16fe1e0

File tree

5 files changed

+256
-0
lines changed

5 files changed

+256
-0
lines changed

compat/vcbuild/include/alloca.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include <malloc.h>

compat/vcbuild/include/dirent.h

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
/*
2+
* DIRENT.H (formerly DIRLIB.H)
3+
* This file has no copyright assigned and is placed in the Public Domain.
4+
* This file is a part of the mingw-runtime package.
5+
*
6+
* The mingw-runtime package and its code is distributed in the hope that it
7+
* will be useful but WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESSED OR
8+
* IMPLIED ARE HEREBY DISCLAIMED. This includes but is not limited to
9+
* warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10+
*
11+
* You are free to use this package and its code without limitation.
12+
*/
13+
#ifndef _DIRENT_H_
14+
#define _DIRENT_H_
15+
#include <io.h>
16+
17+
#define PATH_MAX 512
18+
19+
#define __MINGW_NOTHROW
20+
21+
#ifndef RC_INVOKED
22+
23+
#ifdef __cplusplus
24+
extern "C" {
25+
#endif
26+
27+
struct dirent
28+
{
29+
long d_ino; /* Always zero. */
30+
unsigned short d_reclen; /* Always zero. */
31+
unsigned short d_namlen; /* Length of name in d_name. */
32+
char d_name[FILENAME_MAX]; /* File name. */
33+
};
34+
35+
/*
36+
* This is an internal data structure. Good programmers will not use it
37+
* except as an argument to one of the functions below.
38+
* dd_stat field is now int (was short in older versions).
39+
*/
40+
typedef struct
41+
{
42+
/* disk transfer area for this dir */
43+
struct _finddata_t dd_dta;
44+
45+
/* dirent struct to return from dir (NOTE: this makes this thread
46+
* safe as long as only one thread uses a particular DIR struct at
47+
* a time) */
48+
struct dirent dd_dir;
49+
50+
/* _findnext handle */
51+
long dd_handle;
52+
53+
/*
54+
* Status of search:
55+
* 0 = not started yet (next entry to read is first entry)
56+
* -1 = off the end
57+
* positive = 0 based index of next entry
58+
*/
59+
int dd_stat;
60+
61+
/* given path for dir with search pattern (struct is extended) */
62+
char dd_name[PATH_MAX+3];
63+
} DIR;
64+
65+
DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
66+
struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
67+
int __cdecl __MINGW_NOTHROW closedir (DIR*);
68+
void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
69+
long __cdecl __MINGW_NOTHROW telldir (DIR*);
70+
void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);
71+
72+
73+
/* wide char versions */
74+
75+
struct _wdirent
76+
{
77+
long d_ino; /* Always zero. */
78+
unsigned short d_reclen; /* Always zero. */
79+
unsigned short d_namlen; /* Length of name in d_name. */
80+
wchar_t d_name[FILENAME_MAX]; /* File name. */
81+
};
82+
83+
/*
84+
* This is an internal data structure. Good programmers will not use it
85+
* except as an argument to one of the functions below.
86+
*/
87+
typedef struct
88+
{
89+
/* disk transfer area for this dir */
90+
//struct _wfinddata_t dd_dta;
91+
92+
/* dirent struct to return from dir (NOTE: this makes this thread
93+
* safe as long as only one thread uses a particular DIR struct at
94+
* a time) */
95+
struct _wdirent dd_dir;
96+
97+
/* _findnext handle */
98+
long dd_handle;
99+
100+
/*
101+
* Status of search:
102+
* 0 = not started yet (next entry to read is first entry)
103+
* -1 = off the end
104+
* positive = 0 based index of next entry
105+
*/
106+
int dd_stat;
107+
108+
/* given path for dir with search pattern (struct is extended) */
109+
wchar_t dd_name[1];
110+
} _WDIR;
111+
112+
113+
114+
_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
115+
struct _wdirent* __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
116+
int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
117+
void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
118+
long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
119+
void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
120+
121+
122+
#ifdef __cplusplus
123+
}
124+
#endif
125+
126+
#endif /* Not RC_INVOKED */
127+
128+
#endif /* Not _DIRENT_H_ */

compat/vcbuild/include/sys/utime.h

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#ifndef _UTIME_H_
2+
#define _UTIME_H_
3+
/*
4+
* UTIME.H
5+
* This file has no copyright assigned and is placed in the Public Domain.
6+
* This file is a part of the mingw-runtime package.
7+
*
8+
* The mingw-runtime package and its code is distributed in the hope that it
9+
* will be useful but WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESSED OR
10+
* IMPLIED ARE HEREBY DISCLAIMED. This includes but is not limited to
11+
* warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12+
*
13+
* You are free to use this package and its code without limitation.
14+
*/
15+
16+
/*
17+
* Structure used by _utime function.
18+
*/
19+
struct _utimbuf
20+
{
21+
time_t actime; /* Access time */
22+
time_t modtime; /* Modification time */
23+
};
24+
25+
#ifndef _NO_OLDNAMES
26+
/* NOTE: Must be the same as _utimbuf above. */
27+
struct utimbuf
28+
{
29+
time_t actime;
30+
time_t modtime;
31+
};
32+
#endif /* Not _NO_OLDNAMES */
33+
34+
#endif

compat/vcbuild/include/unistd.h

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
#ifndef _UNISTD_
2+
#define _UNISTD_
3+
4+
/* Win32 define for porting git*/
5+
6+
#ifndef _MODE_T_
7+
#define _MODE_T_
8+
typedef unsigned short _mode_t;
9+
10+
#ifndef _NO_OLDNAMES
11+
typedef _mode_t mode_t;
12+
#endif
13+
#endif /* Not _MODE_T_ */
14+
15+
#ifndef _SSIZE_T_
16+
#define _SSIZE_T_
17+
typedef long _ssize_t;
18+
19+
#ifndef _OFF_T_
20+
#define _OFF_T_
21+
typedef long _off_t;
22+
23+
#ifndef _NO_OLDNAMES
24+
typedef _off_t off_t;
25+
#endif
26+
#endif /* Not _OFF_T_ */
27+
28+
29+
#ifndef _NO_OLDNAMES
30+
typedef _ssize_t ssize_t;
31+
#endif
32+
#endif /* Not _SSIZE_T_ */
33+
34+
typedef signed char int8_t;
35+
typedef unsigned char uint8_t;
36+
typedef short int16_t;
37+
typedef unsigned short uint16_t;
38+
typedef int int32_t;
39+
typedef unsigned uint32_t;
40+
typedef long long int64_t;
41+
typedef unsigned long long uint64_t;
42+
43+
typedef long long intmax_t;
44+
typedef unsigned long long uintmax_t;
45+
46+
typedef int64_t off64_t;
47+
48+
#define STDOUT_FILENO 1
49+
#define STDERR_FILENO 2
50+
51+
/* Some defines for _access nAccessMode (MS doesn't define them, but
52+
* it doesn't seem to hurt to add them). */
53+
#define F_OK 0 /* Check for file existence */
54+
/* Well maybe it does hurt. On newer versions of MSVCRT, an access mode
55+
of 1 causes invalid parameter error. */
56+
#define X_OK 0 /* MS access() doesn't check for execute permission. */
57+
#define W_OK 2 /* Check for write permission */
58+
#define R_OK 4 /* Check for read permission */
59+
60+
#define _S_IFIFO 0x1000 /* FIFO */
61+
#define _S_IFCHR 0x2000 /* Character */
62+
#define _S_IFBLK 0x3000 /* Block: Is this ever set under w32? */
63+
#define _S_IFDIR 0x4000 /* Directory */
64+
#define _S_IFREG 0x8000 /* Regular */
65+
66+
#define _S_IFMT 0xF000 /* File type mask */
67+
68+
#define _S_IXUSR _S_IEXEC
69+
#define _S_IWUSR _S_IWRITE
70+
#define _S_IRUSR _S_IREAD
71+
#define _S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR)
72+
73+
#define S_IFIFO _S_IFIFO
74+
#define S_IFCHR _S_IFCHR
75+
#define S_IFBLK _S_IFBLK
76+
#define S_IFDIR _S_IFDIR
77+
#define S_IFREG _S_IFREG
78+
#define S_IFMT _S_IFMT
79+
#define S_IEXEC _S_IEXEC
80+
#define S_IWRITE _S_IWRITE
81+
#define S_IREAD _S_IREAD
82+
#define S_IRWXU _S_IRWXU
83+
#define S_IXUSR _S_IXUSR
84+
#define S_IWUSR _S_IWUSR
85+
#define S_IRUSR _S_IRUSR
86+
87+
88+
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
89+
#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
90+
#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
91+
92+
#endif

compat/vcbuild/include/utime.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#include <sys/utime.h>

0 commit comments

Comments
 (0)