{"thread":{"id":"20686","subject":"[PATCH 01/14] Fix non-constant array creation","startedAt":"2009-08-21T13:30:32Z","lastAt":"2009-09-07T12:26:48Z","messageCount":49,"participants":["Marius Storm-Olsen","Erik Faye-Lund","Frank Li","Janos Laube","Johannes Sixt","Johan 't Hart","Junio C Hamano","Reece Dunn","Thiago Farina","Paolo Bonzini"],"isPatch":true,"patchVersion":1,"patchTotal":14},"messages":[{"id":"121419","messageId":"cover.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":null,"subject":"[RFC/PATCH 00/14] Build git with MSVC","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:32Z","receivedAt":"2009-08-21T13:30:32Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"So, Frank Li started this series, and I took it upon my self to help\nout a bit; cleaning, reorganizing, rebasing the series. Hopefully\nwe're now a bit closer to including the series into mainline..\n\nHere's a summary of what has happend:\n1) This series is rebased ontop of git.git 'next', which needed an\n   extra patch to avoid a non-constant array creation, which\n   mscv doesn't like.\n2) I've polished (tied to anyways) the commit messages a bit.\n3) I've applied much of the feedback provided to the first round of\n   the patches.\n4) I've split, merged and reordered some of the patches, so things\n   that belong together are in the same commits, and in a order of\n   'importance'\n5) I've removed the\n       #define func _func\n   stuff, as it's not needed and Microsoft cannot really kill the\n   compatibility functions anyways. So, adding the define\n       _CRT_NONSTDC_NO_DEPRECATE\n   will kill the warnings seen without the defines above.\n6) ..probably much more as well, but I forget..\n\nNote: I did not sign off on the last two commits, which involve the\nadding of the vcproj files, since I don't agree on adding them as is.\nWe need a Makefile way of compiling primarily, and second, a script\nto generate the vcproj, as already discussed. But the commits are\nincluded for completeness, at to let others compile and play with it.\n\nI've kept the original author as is, and just signed the patches..\nThanks for watching, now bring on the comments!\n\nFrank Li (11):\n  Avoid declaration after statement\n  Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++\n  Change regerror() declaration from K&R style to ANSI C (C89)\n  mingw.c: Use the O_BINARY flag to open files\n  Fix __stdcall/WINAPI placement and function prototype\n  Test for WIN32 instead of __MINGW32_\n  Avoid including windows.h in winansi.c for MSVC build\n  Add MinGW header files to build git with MSVC\n  Add platform files for MSVC porting\n  Add MSVC project files\n  Add README and gitignore file for MSVC build\n\nMarius Storm-Olsen (3):\n  Fix non-constant array creation\n  Add define guards to compat/win32.h\n  Add empty header files for MSVC port\n\n builtin-apply.c                      |    3 +-\n compat/mingw.c                       |   20 +-\n compat/msvc.c                        |   35 +\n compat/msvc.h                        |  102 +++\n compat/regex/regex.c                 |    7 +-\n compat/snprintf.c                    |    2 +-\n compat/vcbuild/.gitignore            |    3 +\n compat/vcbuild/README                |   13 +\n compat/vcbuild/git/git.vcproj        |  197 +++++\n compat/vcbuild/include/arpa/inet.h   |    1 +\n compat/vcbuild/include/dirent.h      |  128 ++++\n compat/vcbuild/include/grp.h         |    1 +\n compat/vcbuild/include/inttypes.h    |    1 +\n compat/vcbuild/include/netdb.h       |    1 +\n compat/vcbuild/include/netinet/in.h  |    1 +\n compat/vcbuild/include/netinet/tcp.h |    1 +\n compat/vcbuild/include/pwd.h         |    1 +\n compat/vcbuild/include/sys/ioctl.h   |    1 +\n compat/vcbuild/include/sys/param.h   |    1 +\n compat/vcbuild/include/sys/poll.h    |    1 +\n compat/vcbuild/include/sys/select.h  |    1 +\n compat/vcbuild/include/sys/socket.h  |    1 +\n compat/vcbuild/include/sys/time.h    |    1 +\n compat/vcbuild/include/sys/utime.h   |   34 +\n compat/vcbuild/include/sys/wait.h    |    1 +\n compat/vcbuild/include/unistd.h      |   92 +++\n compat/vcbuild/include/utime.h       |    1 +\n compat/vcbuild/libgit/libgit.vcproj  | 1359 ++++++++++++++++++++++++++++++++++\n compat/win32.h                       |    5 +\n compat/winansi.c                     |    2 +\n git-compat-util.h                    |    3 +\n help.c                               |    5 +-\n pager.c                              |    4 +-\n run-command.c                        |   12 +-\n run-command.h                        |    2 +-\n setup.c                              |    2 +-\n 36 files changed, 2020 insertions(+), 25 deletions(-)\n create mode 100644 compat/msvc.c\n create mode 100644 compat/msvc.h\n create mode 100644 compat/vcbuild/.gitignore\n create mode 100644 compat/vcbuild/README\n create mode 100644 compat/vcbuild/git/git.vcproj\n create mode 100644 compat/vcbuild/include/arpa/inet.h\n create mode 100644 compat/vcbuild/include/dirent.h\n create mode 100644 compat/vcbuild/include/grp.h\n create mode 100644 compat/vcbuild/include/inttypes.h\n create mode 100644 compat/vcbuild/include/netdb.h\n create mode 100644 compat/vcbuild/include/netinet/in.h\n create mode 100644 compat/vcbuild/include/netinet/tcp.h\n create mode 100644 compat/vcbuild/include/pwd.h\n create mode 100644 compat/vcbuild/include/sys/ioctl.h\n create mode 100644 compat/vcbuild/include/sys/param.h\n create mode 100644 compat/vcbuild/include/sys/poll.h\n create mode 100644 compat/vcbuild/include/sys/select.h\n create mode 100644 compat/vcbuild/include/sys/socket.h\n create mode 100644 compat/vcbuild/include/sys/time.h\n create mode 100644 compat/vcbuild/include/sys/utime.h\n create mode 100644 compat/vcbuild/include/sys/wait.h\n create mode 100644 compat/vcbuild/include/unistd.h\n create mode 100644 compat/vcbuild/include/utime.h\n create mode 100644 compat/vcbuild/libgit/libgit.vcproj\n"},{"id":"121415","messageId":"6283b3e1775f43c6fc07e5047f9c99acdc27bc8f.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"cover.1250860247.git.mstormo@gmail.com","subject":"[PATCH 01/14] Fix non-constant array creation","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:33Z","receivedAt":"2009-08-21T13:30:33Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"MSVC doesn't munge the non-constant expression, so use xmalloc instead.\n\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n builtin-apply.c |    3 ++-\n 1 files changed, 2 insertions(+), 1 deletions(-)\n\ndiff --git a/builtin-apply.c b/builtin-apply.c\nindex ae11b41..0f19965 100644\n--- a/builtin-apply.c\n+++ b/builtin-apply.c\n@@ -1875,7 +1875,7 @@ static int match_fragment(struct image *img,\n \t\tsize_t imgoff = 0;\n \t\tsize_t preoff = 0;\n \t\tsize_t postlen = postimage->len;\n-\t\tsize_t imglen[preimage->nr];\n+\t\tsize_t *imglen = xmalloc(sizeof(size_t) * preimage->nr);\n \t\tfor (i = 0; i < preimage->nr; i++) {\n \t\t\tsize_t prelen = preimage->line[i].len;\n \n@@ -1901,6 +1901,7 @@ static int match_fragment(struct image *img,\n \t\tmemcpy(fixed_buf, img->buf + try, imgoff);\n \t\tfor (i = 0; i < preimage->nr; i++)\n \t\t\tpreimage->line[i].len = imglen[i];\n+\t\tfree(imglen);\n \n \t\t/*\n \t\t * Update the preimage buffer and the postimage context lines.\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121417","messageId":"af66de324093bbe8f500b1ef20689dd5d355abf4.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"6283b3e1775f43c6fc07e5047f9c99acdc27bc8f.1250860247.git.mstormo@gmail.com","subject":"[PATCH 02/14] Avoid declaration after statement","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:34Z","receivedAt":"2009-08-21T13:30:34Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nMicrosoft Visual C++ does not understand this C99 style\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/mingw.c |   14 ++++++++++----\n help.c         |    3 ++-\n run-command.c  |    2 ++\n 3 files changed, 14 insertions(+), 5 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex bed4178..e4e0e60 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -123,13 +123,17 @@ int mingw_open (const char *filename, int oflags, ...)\n {\n \tva_list args;\n \tunsigned mode;\n+\tint fd;\n+\n \tva_start(args, oflags);\n \tmode = va_arg(args, int);\n \tva_end(args);\n \n \tif (!strcmp(filename, \"/dev/null\"))\n \t\tfilename = \"nul\";\n-\tint fd = open(filename, oflags, mode);\n+\n+\tfd = open(filename, oflags, mode);\n+\n \tif (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {\n \t\tDWORD attrs = GetFileAttributes(filename);\n \t\tif (attrs != INVALID_FILE_ATTRIBUTES && (attrs & FILE_ATTRIBUTE_DIRECTORY))\n@@ -580,10 +584,11 @@ static char **get_path_split(void)\n \n static void free_path_split(char **path)\n {\n+\tchar **p = path;\n+\n \tif (!path)\n \t\treturn;\n \n-\tchar **p = path;\n \twhile (*p)\n \t\tfree(*p++);\n \tfree(path);\n@@ -1108,9 +1113,9 @@ int sigaction(int sig, struct sigaction *in, struct sigaction *out)\n #undef signal\n sig_handler_t mingw_signal(int sig, sig_handler_t handler)\n {\n+\tsig_handler_t old = timer_fn;\n \tif (sig != SIGALRM)\n \t\treturn signal(sig, handler);\n-\tsig_handler_t old = timer_fn;\n \ttimer_fn = handler;\n \treturn old;\n }\n@@ -1197,8 +1202,9 @@ struct dirent *mingw_readdir(DIR *dir)\n \n \tif (dir->dd_handle == (long)INVALID_HANDLE_VALUE && dir->dd_stat == 0)\n \t{\n+\t\tDWORD lasterr;\n \t\thandle = FindFirstFileA(dir->dd_name, &buf);\n-\t\tDWORD lasterr = GetLastError();\n+\t\tlasterr = GetLastError();\n \t\tdir->dd_handle = (long)handle;\n \t\tif (handle == INVALID_HANDLE_VALUE && (lasterr != ERROR_NO_MORE_FILES)) {\n \t\t\terrno = err_win_to_posix(lasterr);\ndiff --git a/help.c b/help.c\nindex 294337e..fd51b8e 100644\n--- a/help.c\n+++ b/help.c\n@@ -127,7 +127,7 @@ static int is_executable(const char *name)\n \t\treturn 0;\n \n #ifdef __MINGW32__\n-\t/* cannot trust the executable bit, peek into the file instead */\n+{\t/* cannot trust the executable bit, peek into the file instead */\n \tchar buf[3] = { 0 };\n \tint n;\n \tint fd = open(name, O_RDONLY);\n@@ -140,6 +140,7 @@ static int is_executable(const char *name)\n \t\t\t\tst.st_mode |= S_IXUSR;\n \t\tclose(fd);\n \t}\n+}\n #endif\n \treturn st.st_mode & S_IXUSR;\n }\ndiff --git a/run-command.c b/run-command.c\nindex f3e7abb..efac7ad 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -134,6 +134,7 @@ fail_pipe:\n \t\terror(\"cannot fork() for %s: %s\", cmd->argv[0],\n \t\t\tstrerror(failed_errno = errno));\n #else\n+{\n \tint s0 = -1, s1 = -1, s2 = -1;\t/* backups of stdin, stdout, stderr */\n \tconst char **sargv = cmd->argv;\n \tchar **env = environ;\n@@ -200,6 +201,7 @@ fail_pipe:\n \t\tdup2(s1, 1), close(s1);\n \tif (s2 >= 0)\n \t\tdup2(s2, 2), close(s2);\n+}\n #endif\n \n \tif (cmd->pid < 0) {\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121425","messageId":"c899c41fdccfdc94ae294f1a50895ba0290a1ec3.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"af66de324093bbe8f500b1ef20689dd5d355abf4.1250860247.git.mstormo@gmail.com","subject":"[PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:35Z","receivedAt":"2009-08-21T13:30:35Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nThe Microsoft C runtime's vsnprintf function does not add NUL at\nthe end of the buffer.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/snprintf.c |    2 +-\n 1 files changed, 1 insertions(+), 1 deletions(-)\n\ndiff --git a/compat/snprintf.c b/compat/snprintf.c\nindex 6c0fb05..37b1edf 100644\n--- a/compat/snprintf.c\n+++ b/compat/snprintf.c\n@@ -6,7 +6,7 @@\n  * number of characters to write without the trailing NUL.\n  */\n #ifndef SNPRINTF_SIZE_CORR\n-#if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4\n+#if (defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4) || defined(_MSC_VER)\n #define SNPRINTF_SIZE_CORR 1\n #else\n #define SNPRINTF_SIZE_CORR 0\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121418","messageId":"e06c143a91dc2b5b95bcaca42a419d56e25690ac.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"c899c41fdccfdc94ae294f1a50895ba0290a1ec3.1250860247.git.mstormo@gmail.com","subject":"[PATCH 04/14] Add define guards to compat/win32.h","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:36Z","receivedAt":"2009-08-21T13:30:36Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Signed-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/win32.h |    5 +++++\n 1 files changed, 5 insertions(+), 0 deletions(-)\n\ndiff --git a/compat/win32.h b/compat/win32.h\nindex c26384e..e8c178d 100644\n--- a/compat/win32.h\n+++ b/compat/win32.h\n@@ -1,3 +1,6 @@\n+#ifndef WIN32_H\n+#define WIN32_H\n+\n /* common Win32 functions for MinGW and Cygwin */\n #include <windows.h>\n \n@@ -32,3 +35,5 @@ static inline int get_file_attr(const char *fname, WIN32_FILE_ATTRIBUTE_DATA *fd\n \t\treturn ENOENT;\n \t}\n }\n+\n+#endif\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121429","messageId":"07846e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"e06c143a91dc2b5b95bcaca42a419d56e25690ac.1250860247.git.mstormo@gmail.com","subject":"[PATCH 05/14] Change regerror() declaration from K&R style to ANSI C (C89)","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:37Z","receivedAt":"2009-08-21T13:30:37Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nThe MSVC compiler doesn't like K&R style.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/regex/regex.c |    7 ++-----\n 1 files changed, 2 insertions(+), 5 deletions(-)\n\ndiff --git a/compat/regex/regex.c b/compat/regex/regex.c\nindex 5ea0075..67d5c37 100644\n--- a/compat/regex/regex.c\n+++ b/compat/regex/regex.c\n@@ -4852,11 +4852,8 @@ regexec (preg, string, nmatch, pmatch, eflags)\n    from either regcomp or regexec.   We don't use PREG here.  */\n \n size_t\n-regerror (errcode, preg, errbuf, errbuf_size)\n-    int errcode;\n-    const regex_t *preg;\n-    char *errbuf;\n-    size_t errbuf_size;\n+regerror(int errcode, const regex_t *preg,\n+\t char *errbuf, size_t errbuf_size)\n {\n   const char *msg;\n   size_t msg_size;\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121426","messageId":"1c403f4a41f4a210ff15933814bba56495d812d3.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"07846e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","subject":"[PATCH 06/14] mingw.c: Use the O_BINARY flag to open files","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:38Z","receivedAt":"2009-08-21T13:30:38Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nOn Windows, binary files must be opened using the O_BINARY flag for\nuntranslated mode. MinGW does this for us automatically, but Microsoft\nVisual C++ does not.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/mingw.c |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex e4e0e60..836426c 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -132,7 +132,7 @@ int mingw_open (const char *filename, int oflags, ...)\n \tif (!strcmp(filename, \"/dev/null\"))\n \t\tfilename = \"nul\";\n \n-\tfd = open(filename, oflags, mode);\n+\tfd = open(filename, oflags | O_BINARY, mode);\n \n \tif (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {\n \t\tDWORD attrs = GetFileAttributes(filename);\n@@ -278,7 +278,7 @@ int mkstemp(char *template)\n \tchar *filename = mktemp(template);\n \tif (filename == NULL)\n \t\treturn -1;\n-\treturn open(filename, O_RDWR | O_CREAT, 0600);\n+\treturn open(filename, O_RDWR | O_CREAT | O_BINARY, 0600);\n }\n \n int gettimeofday(struct timeval *tv, void *tz)\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121416","messageId":"9e8fc158b4d4331d698d1fe4ed33a61fbb011412.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"1c403f4a41f4a210ff15933814bba56495d812d3.1250860247.git.mstormo@gmail.com","subject":"[PATCH 07/14] Fix __stdcall/WINAPI placement and function prototype","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:39Z","receivedAt":"2009-08-21T13:30:39Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nWINAPI is a macro which translates into the proper calling convention, so\nreplace __stdcall with that.\n\nMSVC requires WINAPI to be between the functions return value and the\nfunction name, and that the function pointer type is in the form of\n    return_type (WINAPI *function_name)(arguments...)\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/mingw.c |    4 ++--\n run-command.c  |    2 +-\n 2 files changed, 3 insertions(+), 3 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex 836426c..9716528 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -1017,7 +1017,7 @@ static sig_handler_t timer_fn = SIG_DFL;\n  * length to call the signal handler.\n  */\n \n-static __stdcall unsigned ticktack(void *dummy)\n+static unsigned WINAPI ticktack(void *dummy)\n {\n \twhile (WaitForSingleObject(timer_event, timer_interval) == WAIT_TIMEOUT) {\n \t\tif (timer_fn == SIG_DFL)\n@@ -1144,7 +1144,7 @@ void mingw_open_html(const char *unixpath)\n \n int link(const char *oldpath, const char *newpath)\n {\n-\ttypedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n+\ttypedef BOOL (WINAPI *T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n \tstatic T create_hard_link = NULL;\n \tif (!create_hard_link) {\n \t\tcreate_hard_link = (T) GetProcAddress(\ndiff --git a/run-command.c b/run-command.c\nindex efac7ad..98232e9 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -319,7 +319,7 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const\n }\n \n #ifdef __MINGW32__\n-static __stdcall unsigned run_thread(void *data)\n+static unsigned WINAPI run_thread(void *data)\n {\n \tstruct async *async = data;\n \treturn async->proc(async->fd_for_proc, async->data);\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121427","messageId":"1e623b19b2df001919c83418fef89ef04d7b8dfe.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"9e8fc158b4d4331d698d1fe4ed33a61fbb011412.1250860247.git.mstormo@gmail.com","subject":"[PATCH 08/14] Test for WIN32 instead of __MINGW32_","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:40Z","receivedAt":"2009-08-21T13:30:40Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nThe code which is conditional on MinGW32 is actually conditional on Windows.\nUse the WIN32 symbol, which is defined by the MINGW32 and MSVC environments,\nbut not by Cygwin.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n help.c        |    2 +-\n pager.c       |    4 ++--\n run-command.c |    8 ++++----\n run-command.h |    2 +-\n setup.c       |    2 +-\n 5 files changed, 9 insertions(+), 9 deletions(-)\n\ndiff --git a/help.c b/help.c\nindex fd51b8e..e8db31f 100644\n--- a/help.c\n+++ b/help.c\n@@ -126,7 +126,7 @@ static int is_executable(const char *name)\n \t    !S_ISREG(st.st_mode))\n \t\treturn 0;\n \n-#ifdef __MINGW32__\n+#ifdef WIN32\n {\t/* cannot trust the executable bit, peek into the file instead */\n \tchar buf[3] = { 0 };\n \tint n;\ndiff --git a/pager.c b/pager.c\nindex 4921843..37d1948 100644\n--- a/pager.c\n+++ b/pager.c\n@@ -9,7 +9,7 @@\n \n static int spawned_pager;\n \n-#ifndef __MINGW32__\n+#ifndef WIN32\n static void pager_preexec(void)\n {\n \t/*\n@@ -70,7 +70,7 @@ void setup_pager(void)\n \tpager_argv[2] = pager;\n \tpager_process.argv = pager_argv;\n \tpager_process.in = -1;\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tpager_process.preexec_cb = pager_preexec;\n #endif\n \tif (start_command(&pager_process))\ndiff --git a/run-command.c b/run-command.c\nindex 98232e9..2c6da42 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -75,7 +75,7 @@ fail_pipe:\n \n \ttrace_argv_printf(cmd->argv, \"trace: run_command:\");\n \n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tfflush(NULL);\n \tcmd->pid = fork();\n \tif (!cmd->pid) {\n@@ -318,7 +318,7 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const\n \treturn run_command(&cmd);\n }\n \n-#ifdef __MINGW32__\n+#ifdef WIN32\n static unsigned WINAPI run_thread(void *data)\n {\n \tstruct async *async = data;\n@@ -334,7 +334,7 @@ int start_async(struct async *async)\n \t\treturn error(\"cannot create pipe: %s\", strerror(errno));\n \tasync->out = pipe_out[0];\n \n-#ifndef __MINGW32__\n+#ifndef WIN32\n \t/* Flush stdio before fork() to avoid cloning buffers */\n \tfflush(NULL);\n \n@@ -363,7 +363,7 @@ int start_async(struct async *async)\n \n int finish_async(struct async *async)\n {\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tint ret = wait_or_whine(async->pid, \"child process\", 0);\n #else\n \tDWORD ret = 0;\ndiff --git a/run-command.h b/run-command.h\nindex 0c00b25..fb34209 100644\n--- a/run-command.h\n+++ b/run-command.h\n@@ -70,7 +70,7 @@ struct async {\n \tint (*proc)(int fd, void *data);\n \tvoid *data;\n \tint out;\t/* caller reads from here and closes it */\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tpid_t pid;\n #else\n \tHANDLE tid;\ndiff --git a/setup.c b/setup.c\nindex e3781b6..029371e 100644\n--- a/setup.c\n+++ b/setup.c\n@@ -41,7 +41,7 @@ const char *prefix_path(const char *prefix, int len, const char *path)\n const char *prefix_filename(const char *pfx, int pfx_len, const char *arg)\n {\n \tstatic char path[PATH_MAX];\n-#ifndef __MINGW32__\n+#ifndef WIN32\n \tif (!pfx || !*pfx || is_absolute_path(arg))\n \t\treturn arg;\n \tmemcpy(path, pfx, pfx_len);\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121420","messageId":"74ca14c3a691cc9844a0dd806f5db47977317bdb.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"1e623b19b2df001919c83418fef89ef04d7b8dfe.1250860247.git.mstormo@gmail.com","subject":"[PATCH 09/14] Avoid including windows.h in winansi.c for MSVC build","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:41Z","receivedAt":"2009-08-21T13:30:41Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\ncompat/msvc.h includes winsock2.h which conflicts with windows.h.\nmsvc.h also defines the oldest Windows API version required.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/winansi.c |    2 ++\n 1 files changed, 2 insertions(+), 0 deletions(-)\n\ndiff --git a/compat/winansi.c b/compat/winansi.c\nindex 9217c24..0d79845 100644\n--- a/compat/winansi.c\n+++ b/compat/winansi.c\n@@ -2,7 +2,9 @@\n  * Copyright 2008 Peter Harris <git@peter.is-a-geek.org>\n  */\n \n+#ifndef _MSC_VER\n #include <windows.h>\n+#endif\n #include \"../git-compat-util.h\"\n \n /*\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121423","messageId":"4b8b550914cfc4e638ff905d9b9aa416e45913f4.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"74ca14c3a691cc9844a0dd806f5db47977317bdb.1250860247.git.mstormo@gmail.com","subject":"[PATCH 10/14] Add empty header files for MSVC port","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:42Z","receivedAt":"2009-08-21T13:30:42Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"MSVC lacks many of the header files included by git-compat-util.h,\nso add blank header files for these instead of going ifdef crazy.\n\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/vcbuild/include/arpa/inet.h   |    1 +\n compat/vcbuild/include/grp.h         |    1 +\n compat/vcbuild/include/inttypes.h    |    1 +\n compat/vcbuild/include/netdb.h       |    1 +\n compat/vcbuild/include/netinet/in.h  |    1 +\n compat/vcbuild/include/netinet/tcp.h |    1 +\n compat/vcbuild/include/pwd.h         |    1 +\n compat/vcbuild/include/sys/ioctl.h   |    1 +\n compat/vcbuild/include/sys/param.h   |    1 +\n compat/vcbuild/include/sys/poll.h    |    1 +\n compat/vcbuild/include/sys/select.h  |    1 +\n compat/vcbuild/include/sys/socket.h  |    1 +\n compat/vcbuild/include/sys/time.h    |    1 +\n compat/vcbuild/include/sys/wait.h    |    1 +\n 14 files changed, 14 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/include/arpa/inet.h\n create mode 100644 compat/vcbuild/include/grp.h\n create mode 100644 compat/vcbuild/include/inttypes.h\n create mode 100644 compat/vcbuild/include/netdb.h\n create mode 100644 compat/vcbuild/include/netinet/in.h\n create mode 100644 compat/vcbuild/include/netinet/tcp.h\n create mode 100644 compat/vcbuild/include/pwd.h\n create mode 100644 compat/vcbuild/include/sys/ioctl.h\n create mode 100644 compat/vcbuild/include/sys/param.h\n create mode 100644 compat/vcbuild/include/sys/poll.h\n create mode 100644 compat/vcbuild/include/sys/select.h\n create mode 100644 compat/vcbuild/include/sys/socket.h\n create mode 100644 compat/vcbuild/include/sys/time.h\n create mode 100644 compat/vcbuild/include/sys/wait.h\n\ndiff --git a/compat/vcbuild/include/arpa/inet.h b/compat/vcbuild/include/arpa/inet.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/arpa/inet.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/grp.h b/compat/vcbuild/include/grp.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/grp.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/inttypes.h b/compat/vcbuild/include/inttypes.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/inttypes.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/netdb.h b/compat/vcbuild/include/netdb.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/netdb.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/netinet/in.h b/compat/vcbuild/include/netinet/in.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/netinet/in.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/netinet/tcp.h b/compat/vcbuild/include/netinet/tcp.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/netinet/tcp.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/pwd.h b/compat/vcbuild/include/pwd.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/pwd.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/ioctl.h b/compat/vcbuild/include/sys/ioctl.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/ioctl.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/param.h b/compat/vcbuild/include/sys/param.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/param.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/poll.h b/compat/vcbuild/include/sys/poll.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/poll.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/select.h b/compat/vcbuild/include/sys/select.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/select.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/socket.h b/compat/vcbuild/include/sys/socket.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/socket.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/time.h b/compat/vcbuild/include/sys/time.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/time.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\ndiff --git a/compat/vcbuild/include/sys/wait.h b/compat/vcbuild/include/sys/wait.h\nnew file mode 100644\nindex 0000000..0d8552a\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/wait.h\n@@ -0,0 +1 @@\n+/* Intentionally empty file to support building git with MSVC */\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121422","messageId":"ba4e68ae32784d8e0c706fa665fbdbbfe67ce673.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"4b8b550914cfc4e638ff905d9b9aa416e45913f4.1250860247.git.mstormo@gmail.com","subject":"[PATCH 11/14] Add MinGW header files to build git with MSVC","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:43Z","receivedAt":"2009-08-21T13:30:43Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nAdded the header files dirent.h, unistd.h and utime.h\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/vcbuild/include/dirent.h    |  128 ++++++++++++++++++++++++++++++++++++\n compat/vcbuild/include/sys/utime.h |   34 ++++++++++\n compat/vcbuild/include/unistd.h    |   92 ++++++++++++++++++++++++++\n compat/vcbuild/include/utime.h     |    1 +\n 4 files changed, 255 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/include/dirent.h\n create mode 100644 compat/vcbuild/include/sys/utime.h\n create mode 100644 compat/vcbuild/include/unistd.h\n create mode 100644 compat/vcbuild/include/utime.h\n\ndiff --git a/compat/vcbuild/include/dirent.h b/compat/vcbuild/include/dirent.h\nnew file mode 100644\nindex 0000000..440618d\n--- /dev/null\n+++ b/compat/vcbuild/include/dirent.h\n@@ -0,0 +1,128 @@\n+/*\n+ * DIRENT.H (formerly DIRLIB.H)\n+ * This file has no copyright assigned and is placed in the Public Domain.\n+ * This file is a part of the mingw-runtime package.\n+ *\n+ * The mingw-runtime package and its code is distributed in the hope that it\n+ * will be useful but WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESSED OR\n+ * IMPLIED ARE HEREBY DISCLAIMED.  This includes but is not limited to\n+ * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n+ *\n+ * You are free to use this package and its code without limitation.\n+ */\n+#ifndef _DIRENT_H_\n+#define _DIRENT_H_\n+#include <io.h>\n+\n+#define PATH_MAX 512\n+\n+#define __MINGW_NOTHROW\n+\n+#ifndef RC_INVOKED\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+struct dirent\n+{\n+\tlong\t\td_ino;\t\t/* Always zero. */\n+\tunsigned short\td_reclen;\t/* Always zero. */\n+\tunsigned short\td_namlen;\t/* Length of name in d_name. */\n+\tchar\t\td_name[FILENAME_MAX]; /* File name. */\n+};\n+\n+/*\n+ * This is an internal data structure. Good programmers will not use it\n+ * except as an argument to one of the functions below.\n+ * dd_stat field is now int (was short in older versions).\n+ */\n+typedef struct\n+{\n+\t/* disk transfer area for this dir */\n+\tstruct _finddata_t\tdd_dta;\n+\n+\t/* dirent struct to return from dir (NOTE: this makes this thread\n+\t * safe as long as only one thread uses a particular DIR struct at\n+\t * a time) */\n+\tstruct dirent\t\tdd_dir;\n+\n+\t/* _findnext handle */\n+\tlong\t\t\tdd_handle;\n+\n+\t/*\n+\t * Status of search:\n+\t *   0 = not started yet (next entry to read is first entry)\n+\t *  -1 = off the end\n+\t *   positive = 0 based index of next entry\n+\t */\n+\tint\t\t\tdd_stat;\n+\n+\t/* given path for dir with search pattern (struct is extended) */\n+\tchar\t\t\tdd_name[PATH_MAX+3];\n+} DIR;\n+\n+DIR* __cdecl __MINGW_NOTHROW opendir (const char*);\n+struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);\n+int __cdecl __MINGW_NOTHROW closedir (DIR*);\n+void __cdecl __MINGW_NOTHROW rewinddir (DIR*);\n+long __cdecl __MINGW_NOTHROW telldir (DIR*);\n+void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);\n+\n+\n+/* wide char versions */\n+\n+struct _wdirent\n+{\n+\tlong\t\td_ino;\t\t/* Always zero. */\n+\tunsigned short\td_reclen;\t/* Always zero. */\n+\tunsigned short\td_namlen;\t/* Length of name in d_name. */\n+\twchar_t\t\td_name[FILENAME_MAX]; /* File name. */\n+};\n+\n+/*\n+ * This is an internal data structure. Good programmers will not use it\n+ * except as an argument to one of the functions below.\n+ */\n+typedef struct\n+{\n+\t/* disk transfer area for this dir */\n+\t//struct _wfinddata_t\tdd_dta;\n+\n+\t/* dirent struct to return from dir (NOTE: this makes this thread\n+\t * safe as long as only one thread uses a particular DIR struct at\n+\t * a time) */\n+\tstruct _wdirent\t\tdd_dir;\n+\n+\t/* _findnext handle */\n+\tlong\t\t\tdd_handle;\n+\n+\t/*\n+\t * Status of search:\n+\t *   0 = not started yet (next entry to read is first entry)\n+\t *  -1 = off the end\n+\t *   positive = 0 based index of next entry\n+\t */\n+\tint\t\t\tdd_stat;\n+\n+\t/* given path for dir with search pattern (struct is extended) */\n+\twchar_t\t\t\tdd_name[1];\n+} _WDIR;\n+\n+\n+\n+_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);\n+struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);\n+int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);\n+void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);\n+long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);\n+void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);\n+\n+\n+#ifdef\t__cplusplus\n+}\n+#endif\n+\n+#endif\t/* Not RC_INVOKED */\n+\n+#endif\t/* Not _DIRENT_H_ */\ndiff --git a/compat/vcbuild/include/sys/utime.h b/compat/vcbuild/include/sys/utime.h\nnew file mode 100644\nindex 0000000..582589c\n--- /dev/null\n+++ b/compat/vcbuild/include/sys/utime.h\n@@ -0,0 +1,34 @@\n+#ifndef\t_UTIME_H_\n+#define\t_UTIME_H_\n+/*\n+ * UTIME.H\n+ * This file has no copyright assigned and is placed in the Public Domain.\n+ * This file is a part of the mingw-runtime package.\n+ *\n+ * The mingw-runtime package and its code is distributed in the hope that it\n+ * will be useful but WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESSED OR\n+ * IMPLIED ARE HEREBY DISCLAIMED.  This includes but is not limited to\n+ * warranties of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n+ *\n+ * You are free to use this package and its code without limitation.\n+ */\n+\n+/*\n+ * Structure used by _utime function.\n+ */\n+struct _utimbuf\n+{\n+\ttime_t\tactime;\t\t/* Access time */\n+\ttime_t\tmodtime;\t/* Modification time */\n+};\n+\n+#ifndef\t_NO_OLDNAMES\n+/* NOTE: Must be the same as _utimbuf above. */\n+struct utimbuf\n+{\n+\ttime_t\tactime;\n+\ttime_t\tmodtime;\n+};\n+#endif\t/* Not _NO_OLDNAMES */\n+\n+#endif\ndiff --git a/compat/vcbuild/include/unistd.h b/compat/vcbuild/include/unistd.h\nnew file mode 100644\nindex 0000000..2a4f276\n--- /dev/null\n+++ b/compat/vcbuild/include/unistd.h\n@@ -0,0 +1,92 @@\n+#ifndef _UNISTD_\n+#define _UNISTD_\n+\n+/* Win32 define for porting git*/\n+\n+#ifndef _MODE_T_\n+#define\t_MODE_T_\n+typedef unsigned short _mode_t;\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _mode_t\tmode_t;\n+#endif\n+#endif\t/* Not _MODE_T_ */\n+\n+#ifndef _SSIZE_T_\n+#define _SSIZE_T_\n+typedef long _ssize_t;\n+\n+#ifndef\t_OFF_T_\n+#define\t_OFF_T_\n+typedef long _off_t;\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _off_t\toff_t;\n+#endif\n+#endif\t/* Not _OFF_T_ */\n+\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _ssize_t ssize_t;\n+#endif\n+#endif /* Not _SSIZE_T_ */\n+\n+typedef signed char int8_t;\n+typedef unsigned char   uint8_t;\n+typedef short  int16_t;\n+typedef unsigned short  uint16_t;\n+typedef int  int32_t;\n+typedef unsigned   uint32_t;\n+typedef long long  int64_t;\n+typedef unsigned long long   uint64_t;\n+\n+typedef long long  intmax_t;\n+typedef unsigned long long uintmax_t;\n+\n+typedef int64_t off64_t;\n+\n+#define STDOUT_FILENO 1\n+#define STDERR_FILENO 2\n+\n+/* Some defines for _access nAccessMode (MS doesn't define them, but\n+ * it doesn't seem to hurt to add them). */\n+#define\tF_OK\t0\t/* Check for file existence */\n+/* Well maybe it does hurt.  On newer versions of MSVCRT, an access mode\n+   of 1 causes invalid parameter error. */\n+#define\tX_OK\t0\t/* MS access() doesn't check for execute permission. */\n+#define\tW_OK\t2\t/* Check for write permission */\n+#define\tR_OK\t4\t/* Check for read permission */\n+\n+#define\t_S_IFIFO\t0x1000\t/* FIFO */\n+#define\t_S_IFCHR\t0x2000\t/* Character */\n+#define\t_S_IFBLK\t0x3000\t/* Block: Is this ever set under w32? */\n+#define\t_S_IFDIR\t0x4000\t/* Directory */\n+#define\t_S_IFREG\t0x8000\t/* Regular */\n+\n+#define\t_S_IFMT\t\t0xF000\t/* File type mask */\n+\n+#define\t_S_IXUSR\t_S_IEXEC\n+#define\t_S_IWUSR\t_S_IWRITE\n+#define\t_S_IRUSR\t_S_IREAD\n+#define\t_S_ISDIR(m)\t(((m) & _S_IFMT) == _S_IFDIR)\n+\n+#define\tS_IFIFO\t\t_S_IFIFO\n+#define\tS_IFCHR\t\t_S_IFCHR\n+#define\tS_IFBLK\t\t_S_IFBLK\n+#define\tS_IFDIR\t\t_S_IFDIR\n+#define\tS_IFREG\t\t_S_IFREG\n+#define\tS_IFMT\t\t_S_IFMT\n+#define\tS_IEXEC\t\t_S_IEXEC\n+#define\tS_IWRITE\t_S_IWRITE\n+#define\tS_IREAD\t\t_S_IREAD\n+#define\tS_IRWXU\t\t_S_IRWXU\n+#define\tS_IXUSR\t\t_S_IXUSR\n+#define\tS_IWUSR\t\t_S_IWUSR\n+#define\tS_IRUSR\t\t_S_IRUSR\n+\n+\n+#define\tS_ISDIR(m)\t(((m) & S_IFMT) == S_IFDIR)\n+#define\tS_ISREG(m)\t(((m) & S_IFMT) == S_IFREG)\n+#define\tS_ISFIFO(m)\t(((m) & S_IFMT) == S_IFIFO)\n+\n+#endif\ndiff --git a/compat/vcbuild/include/utime.h b/compat/vcbuild/include/utime.h\nnew file mode 100644\nindex 0000000..8285f38\n--- /dev/null\n+++ b/compat/vcbuild/include/utime.h\n@@ -0,0 +1 @@\n+#include <sys/utime.h>\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121424","messageId":"6dd71f163e5410e401fc66088405736d1978ec55.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"ba4e68ae32784d8e0c706fa665fbdbbfe67ce673.1250860247.git.mstormo@gmail.com","subject":"[PATCH 12/14] Add platform files for MSVC porting","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:44Z","receivedAt":"2009-08-21T13:30:44Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nAdd msvc.c and msvc.h to build git under MSVC\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n compat/msvc.c     |   35 ++++++++++++++++++\n compat/msvc.h     |  102 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n git-compat-util.h |    3 ++\n 3 files changed, 140 insertions(+), 0 deletions(-)\n create mode 100644 compat/msvc.c\n create mode 100644 compat/msvc.h\n\ndiff --git a/compat/msvc.c b/compat/msvc.c\nnew file mode 100644\nindex 0000000..ac04a4c\n--- /dev/null\n+++ b/compat/msvc.c\n@@ -0,0 +1,35 @@\n+#include \"../git-compat-util.h\"\n+#include \"win32.h\"\n+#include <conio.h>\n+#include \"../strbuf.h\"\n+\n+DIR *opendir(const char *name)\n+{\n+\tint len;\n+\tDIR *p;\n+\tp = (DIR*)malloc(sizeof(DIR));\n+\tmemset(p, 0, sizeof(DIR));\n+\tstrncpy(p->dd_name, name, PATH_MAX);\n+\tlen = strlen(p->dd_name);\n+\tp->dd_name[len] = '/';\n+\tp->dd_name[len+1] = '*';\n+\n+\tif (p == NULL)\n+\t\treturn NULL;\n+\n+\tp->dd_handle = _findfirst(p->dd_name, &p->dd_dta);\n+\n+\tif (p->dd_handle == -1) {\n+\t\tfree(p);\n+\t\treturn NULL;\n+\t}\n+\treturn p;\n+}\n+int closedir(DIR *dir)\n+{\n+\t_findclose(dir->dd_handle);\n+\tfree(dir);\n+\treturn 0;\n+}\n+\n+#include \"mingw.c\"\ndiff --git a/compat/msvc.h b/compat/msvc.h\nnew file mode 100644\nindex 0000000..3e22186\n--- /dev/null\n+++ b/compat/msvc.h\n@@ -0,0 +1,102 @@\n+#ifndef __MSVC__HEAD\n+#define __MSVC__HEAD\n+\n+/* Define minimize windows version */\n+#define WINVER 0x0500\n+#define _WIN32_WINNT 0x0500\n+#define _WIN32_WINDOWS 0x0410\n+#define _WIN32_IE 0x0700\n+#define NTDDI_VERSION NTDDI_WIN2KSP1\n+#include <winsock2.h>\n+#include <direct.h>\n+#include <process.h>\n+\n+/* Configuration */\n+#define NO_PREAD\n+#define NO_OPENSSL\n+#define NO_LIBGEN_H\n+#define NO_SYMLINK_HEAD\n+#define NO_IPV6\n+#define NO_SETENV\n+#define NO_UNSETENV\n+#define NO_STRCASESTR\n+#define NO_STRLCPY\n+#define NO_MEMMEM\n+#define NO_C99_FORMAT\n+#define NO_STRTOUMAX\n+#define NO_MKDTEMP\n+#define NO_MKSTEMPS\n+#define NO_ST_BLOCKS_IN_STRUCT_STAT\n+#define NO_NSEC\n+#define NO_REGEX\n+#define NO_SYS_SELECT_H\n+#define NO_PTHEADS\n+#define NO_ICONV\n+#define NO_PTHREADS\n+#define NO_CURL\n+#define NO_STRTOUMAX\n+#define NO_STRLCPY\n+#define NO_UNSETENV\n+#define NO_SETENV\n+\n+#define USE_WIN32_MMAP\n+#define USE_NED_ALLOCATOR\n+#define HAVE_STRING_H 1\n+#define STDC_HEADERS\n+#define SNPRINTF_RETURNS_BOGUS\n+#define RUNTIME_PREFIX\n+#define REGEX_MALLOC\n+\n+/* Git runtime infomation */\n+#define ETC_GITCONFIG \"%HOME%\"\n+#define SHA1_HEADER \"block-sha1\\\\sha1.h\"\n+#define GIT_EXEC_PATH \"bin\"\n+#define GIT_VERSION \"1.6\"\n+#define BINDIR \"bin\"\n+#define PREFIX \".\"\n+#define GIT_MAN_PATH \"man\"\n+#define GIT_INFO_PATH \"info\"\n+#define GIT_HTML_PATH \"html\"\n+#define DEFAULT_GIT_TEMPLATE_DIR \"templates\"\n+\n+/* porting function */\n+#define inline __inline\n+#define __inline__ __inline\n+#define __attribute__(x)\n+#define va_copy(dst, src)     ((dst) = (src))\n+\n+static __inline int strcasecmp (const char *s1, const char *s2)\n+{\n+\tint size1 = strlen(s1);\n+\tint sisz2 = strlen(s2);\n+\treturn _strnicmp(s1, s2, sisz2 > size1 ? sisz2 : size1);\n+}\n+\n+#undef ERROR\n+#undef stat\n+#undef _stati64\n+#include \"compat/mingw.h\"\n+#undef stat\n+#define stat _stati64\n+#define _stat64(x,y) mingw_lstat(x,y)\n+\n+/*\n+   Even though _stati64 is normally just defined at _stat64\n+   on Windows, we specify it here as a proper struct to avoid\n+   compiler warnings about macro redefinition due to magic in\n+   mingw.h. Struct taken from ReactOS (GNU GPL license).\n+*/\n+struct _stati64 {\n+\t_dev_t  st_dev;\n+\t_ino_t  st_ino;\n+\tunsigned short st_mode;\n+\tshort   st_nlink;\n+\tshort   st_uid;\n+\tshort   st_gid;\n+\t_dev_t  st_rdev;\n+\t__int64 st_size;\n+\ttime_t  st_atime;\n+\ttime_t  st_mtime;\n+\ttime_t  st_ctime;\n+};\n+#endif\ndiff --git a/git-compat-util.h b/git-compat-util.h\nindex e5e9f39..8ea444f 100644\n--- a/git-compat-util.h\n+++ b/git-compat-util.h\n@@ -113,6 +113,9 @@\n /* pull in Windows compatibility stuff */\n #include \"compat/mingw.h\"\n #endif\t/* __MINGW32__ */\n+#ifdef _MSC_VER\n+#include \"compat/msvc.h\"\n+#endif\n \n #ifndef NO_LIBGEN_H\n #include <libgen.h>\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121428","messageId":"54673ddb6bef681194e141e5e05e930cdfaa07bc.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"6dd71f163e5410e401fc66088405736d1978ec55.1250860247.git.mstormo@gmail.com","subject":"[PATCH 13/14] Add MSVC project files","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:45Z","receivedAt":"2009-08-21T13:30:45Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nAdd libgit.vcproj to build common library, and git.vcproj to\nbuild git itself.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/vcbuild/git/git.vcproj       |  197 +++++\n compat/vcbuild/libgit/libgit.vcproj | 1359 +++++++++++++++++++++++++++++++++++\n 2 files changed, 1556 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/git/git.vcproj\n create mode 100644 compat/vcbuild/libgit/libgit.vcproj\n\ndiff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj\nnew file mode 100644\nindex 0000000..6f85de3\n--- /dev/null\n+++ b/compat/vcbuild/git/git.vcproj\n@@ -0,0 +1,197 @@\n+<?xml version=\"1.0\" encoding=\"gb2312\"?>\n+<VisualStudioProject\n+\tProjectType=\"Visual C++\"\n+\tVersion=\"9.00\"\n+\tName=\"git\"\n+\tProjectGUID=\"{E3E30E51-C5AD-407B-AB43-985E4111474A}\"\n+\tRootNamespace=\"git\"\n+\tKeyword=\"Win32Proj\"\n+\tTargetFrameworkVersion=\"196613\"\n+\t>\n+\t<Platforms>\n+\t\t<Platform\n+\t\t\tName=\"Win32\"\n+\t\t/>\n+\t</Platforms>\n+\t<ToolFiles>\n+\t</ToolFiles>\n+\t<Configurations>\n+\t\t<Configuration\n+\t\t\tName=\"Debug|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"1\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"0\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;_DEBUG;_CONSOLE\"\n+\t\t\t\tMinimalRebuild=\"true\"\n+\t\t\t\tBasicRuntimeChecks=\"3\"\n+\t\t\t\tRuntimeLibrary=\"3\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"4\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLinkerTool\"\n+\t\t\t\tAdditionalDependencies=\"wininet.lib ws2_32.lib \"\n+\t\t\t\tLinkIncremental=\"2\"\n+\t\t\t\tGenerateDebugInformation=\"true\"\n+\t\t\t\tSubSystem=\"1\"\n+\t\t\t\tTargetMachine=\"1\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManifestTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCAppVerifierTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t\t<Configuration\n+\t\t\tName=\"Release|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"1\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\tWholeProgramOptimization=\"1\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"2\"\n+\t\t\t\tEnableIntrinsicFunctions=\"true\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;NDEBUG;_CONSOLE\"\n+\t\t\t\tRuntimeLibrary=\"2\"\n+\t\t\t\tEnableFunctionLevelLinking=\"true\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLinkerTool\"\n+\t\t\t\tAdditionalDependencies=\"wininet.lib ws2_32.lib \"\n+\t\t\t\tLinkIncremental=\"1\"\n+\t\t\t\tGenerateDebugInformation=\"true\"\n+\t\t\t\tSubSystem=\"1\"\n+\t\t\t\tOptimizeReferences=\"2\"\n+\t\t\t\tEnableCOMDATFolding=\"2\"\n+\t\t\t\tTargetMachine=\"1\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManifestTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCAppVerifierTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t</Configurations>\n+\t<References>\n+\t</References>\n+\t<Files>\n+\t\t<Filter\n+\t\t\tName=\"Source Files\"\n+\t\t\tFilter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n+\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\git.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Header Files\"\n+\t\t\tFilter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n+\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Resource Files\"\n+\t\t\tFilter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n+\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t</Files>\n+\t<Globals>\n+\t</Globals>\n+</VisualStudioProject>\ndiff --git a/compat/vcbuild/libgit/libgit.vcproj b/compat/vcbuild/libgit/libgit.vcproj\nnew file mode 100644\nindex 0000000..e333873\n--- /dev/null\n+++ b/compat/vcbuild/libgit/libgit.vcproj\n@@ -0,0 +1,1359 @@\n+<?xml version=\"1.0\" encoding=\"gb2312\"?>\n+<VisualStudioProject\n+\tProjectType=\"Visual C++\"\n+\tVersion=\"9,00\"\n+\tName=\"libgit\"\n+\tProjectGUID=\"{F6DEC8C3-B803-4A86-8848-430F08B499E3}\"\n+\tRootNamespace=\"libgit\"\n+\tKeyword=\"Win32Proj\"\n+\tTargetFrameworkVersion=\"196613\"\n+\t>\n+\t<Platforms>\n+\t\t<Platform\n+\t\t\tName=\"Win32\"\n+\t\t/>\n+\t</Platforms>\n+\t<ToolFiles>\n+\t</ToolFiles>\n+\t<Configurations>\n+\t\t<Configuration\n+\t\t\tName=\"Debug|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"4\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"0\"\n+\t\t\t\tInlineFunctionExpansion=\"1\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\include;..\\..;..\\..\\..;..\\..\\fnmatch;..\\..\\regex;..\\..\\..\\..\\zlib\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;_DEBUG;_LIB;HAVE_STRING_H;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE\"\n+\t\t\t\tMinimalRebuild=\"true\"\n+\t\t\t\tBasicRuntimeChecks=\"3\"\n+\t\t\t\tRuntimeLibrary=\"3\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLibrarianTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t\t<Configuration\n+\t\t\tName=\"Release|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"4\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\tWholeProgramOptimization=\"1\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"2\"\n+\t\t\t\tInlineFunctionExpansion=\"1\"\n+\t\t\t\tEnableIntrinsicFunctions=\"true\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;NDEBUG;_LIB;HAVE_STRING_H\"\n+\t\t\t\tRuntimeLibrary=\"2\"\n+\t\t\t\tEnableFunctionLevelLinking=\"true\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLibrarianTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t</Configurations>\n+\t<References>\n+\t</References>\n+\t<Files>\n+\t\t<Filter\n+\t\t\tName=\"Source Files\"\n+\t\t\tFilter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n+\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\block-sha1\\sha1.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Header Files\"\n+\t\t\tFilter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n+\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\attr.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\blob.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\branch.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bundle.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache-tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\color.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\commit.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\csum-file.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\decorate.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\delta.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\dir.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\exec_cmd.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fetch-pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fsck.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\git-compat-util.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\graph.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\grep.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\hash.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\help.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\http.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\levenshtein.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\list-objects.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ll-merge.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\log-tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mailmap.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-recursive.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\notes.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\object.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-refs.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-revindex.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\parse-options.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-ids.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pkt-line.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\progress.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\quote.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reachable.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reflog-walk.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\refs.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\remote.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\rerere.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\revision.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\run-command.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\send-pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1-lookup.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\shortlog.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sideband.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sigchain.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\strbuf.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\string-list.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tag.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tar.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\thread-utils.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\transport.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-walk.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\unpack-trees.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\userdiff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\utf8.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\walker.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wt-status.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff-interface.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Resource Files\"\n+\t\t\tFilter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n+\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"compat\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\basename.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\cygwin.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fopen.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\memmem.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mingw.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mkdtemp.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mkstemps.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\msvc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\pread.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\qsort.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\regex\\regex.c\"\n+\t\t\t\t>\n+\t\t\t\t<FileConfiguration\n+\t\t\t\t\tName=\"Debug|Win32\"\n+\t\t\t\t\t>\n+\t\t\t\t\t<Tool\n+\t\t\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\t\t\tPreprocessorDefinitions=\"REGEX_MALLOC\"\n+\t\t\t\t\t/>\n+\t\t\t\t</FileConfiguration>\n+\t\t\t\t<FileConfiguration\n+\t\t\t\t\tName=\"Release|Win32\"\n+\t\t\t\t\t>\n+\t\t\t\t\t<Tool\n+\t\t\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\t\t\tPreprocessorDefinitions=\"REGEX_MALLOC\"\n+\t\t\t\t\t/>\n+\t\t\t\t</FileConfiguration>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\regex\\regex.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\setenv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\snprintf.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strcasestr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strlcpy.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strtoumax.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\unsetenv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\win32.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\win32mmap.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\winansi.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"git\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\abspath.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\alias.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\alloc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive-tar.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive-zip.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\attr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\base85.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bisect.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\blob.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-add.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-annotate.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-apply.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-bisect--helper.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-blame.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-bundle.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-cat-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-check-attr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-check-ref-format.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-checkout-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-checkout.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-clean.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-clone.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-commit-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-commit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-config.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-count-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-describe.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-files.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fast-export.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch--tool.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fmt-merge-msg.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-for-each-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fsck.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-gc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-grep.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-help.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-init-db.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-log.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-files.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mailinfo.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mailsplit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-base.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-ours.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-recursive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mktree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-name-rev.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-pack-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-pack-refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-prune-packed.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-prune.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-push.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-read-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-receive-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-reflog.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rerere.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-reset.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rev-list.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rev-parse.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-revert.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rm.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-send-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-shortlog.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-show-branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-show-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-stripspace.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-symbolic-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-tar-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-unpack-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-update-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-update-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-upload-archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-verify-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-verify-tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-write-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bundle.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\color.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\combine-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\commit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\config.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\connect.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\convert.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\copy.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\csum-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ctype.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\date.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\decorate.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-lib.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-no-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-break.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-order.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-pickaxe.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-rename.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\dir.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\editor.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\entry.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\environment.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\exec_cmd.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fsck.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\graph.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\grep.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\hash.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\help.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ident.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\levenshtein.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\list-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ll-merge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\lockfile.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\log-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mailmap.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\match-trees.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-recursive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\name-hash.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\object.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-check.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-revindex.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-write.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pager.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\parse-options.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-ids.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\path.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pkt-line.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\preload-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pretty.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\progress.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\quote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reachable.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\read-cache.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reflog-walk.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\rerere.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\revision.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\run-command.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\server-info.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\setup.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1-lookup.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1_file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1_name.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\shallow.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sideband.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sigchain.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\strbuf.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\string-list.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\symlinks.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\thread-utils.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\trace.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\transport.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-walk.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\unpack-trees.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\usage.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\userdiff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\utf8.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\walker.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wrapper.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\write_or_die.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ws.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wt-status.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff-interface.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"xdiff\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiffi.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiffi.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xemit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xemit.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xinclude.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xmacros.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xmerge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xpatience.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xprepare.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xprepare.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xtypes.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xutils.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xutils.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t</Files>\n+\t<Globals>\n+\t</Globals>\n+</VisualStudioProject>\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121421","messageId":"e82f1930173966ebb6b2d2815e037a26e079f969.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"54673ddb6bef681194e141e5e05e930cdfaa07bc.1250860247.git.mstormo@gmail.com","subject":"[PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:30:46Z","receivedAt":"2009-08-21T13:30:46Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nAdd a README file to tell users how to build git with MSVC.\n\nAlso add a gitignore file to make git ignore files generated\nby a MSVC build.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/vcbuild/.gitignore |    3 +++\n compat/vcbuild/README     |   13 +++++++++++++\n 2 files changed, 16 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/.gitignore\n create mode 100644 compat/vcbuild/README\n\ndiff --git a/compat/vcbuild/.gitignore b/compat/vcbuild/.gitignore\nnew file mode 100644\nindex 0000000..297ee5b\n--- /dev/null\n+++ b/compat/vcbuild/.gitignore\n@@ -0,0 +1,3 @@\n+Debug\n+Release\n+*.user\ndiff --git a/compat/vcbuild/README b/compat/vcbuild/README\nnew file mode 100644\nindex 0000000..3667ca3\n--- /dev/null\n+++ b/compat/vcbuild/README\n@@ -0,0 +1,13 @@\n+The Steps of Build Git with VS2008\n+\n+1. Create VC Build Environment.\n+\n+   git clone git://repo.or.cz/gitbuild.git\n+\n+   gitbuild include VS solution file and library such as zlib.\n+\n+2. Get Submodule\n+\n+   git submodule update --init\n+\n+3. Open gitbuild\\gitbuild.sln with VS2008. Then press F7.\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121430","messageId":"40aa078e0908210641m660b003do6f637535293672ae@mail.gmail.com","threadId":"20686","inReplyTo":"6283b3e1775f43c6fc07e5047f9c99acdc27bc8f.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-21T13:41:24Z","receivedAt":"2009-08-21T13:41:24Z","isPatch":true,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Fri, Aug 21, 2009 at 3:30 PM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n> @@ -1875,7 +1875,7 @@ static int match_fragment(struct image *img,\n>                size_t imgoff = 0;\n>                size_t preoff = 0;\n>                size_t postlen = postimage->len;\n> -               size_t imglen[preimage->nr];\n> +               size_t *imglen = xmalloc(sizeof(size_t) * preimage->nr);\n\nHow about using alloca instead? It allocates from the stack (just like\nthe C99-style variable-length array you're replacing), and you don't\nneed to free the memory afterwards.\n\n... or is alloca frowned upon? I see it's already used both in\ncompat/regex/regex.c and in compat/nedmalloc/malloc.c, but not\napparently not in the git core.\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"121431","messageId":"4A8EA53B.9080809@gmail.com","threadId":"20686","inReplyTo":"40aa078e0908210641m660b003do6f637535293672ae@mail.gmail.com","subject":"Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T13:46:35Z","receivedAt":"2009-08-21T13:46:35Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Erik Faye-Lund said the following on 21.08.2009 15:41:\n> On Fri, Aug 21, 2009 at 3:30 PM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n>> @@ -1875,7 +1875,7 @@ static int match_fragment(struct image *img,\n>>                size_t imgoff = 0;\n>>                size_t preoff = 0;\n>>                size_t postlen = postimage->len;\n>> -               size_t imglen[preimage->nr];\n>> +               size_t *imglen = xmalloc(sizeof(size_t) * preimage->nr);\n> \n> How about using alloca instead? It allocates from the stack (just like\n> the C99-style variable-length array you're replacing), and you don't\n> need to free the memory afterwards.\n> \n> ... or is alloca frowned upon? I see it's already used both in\n> compat/regex/regex.c and in compat/nedmalloc/malloc.c, but not\n> apparently not in the git core.\n\nMSVC compiles regex.c, so it must handle it. I'm fine with that.\n\n--\n.marius\n"},{"id":"121434","messageId":"1976ea660908210737y7168d5d5od56485a1b4ab2956@mail.gmail.com","threadId":"20686","inReplyTo":"07846e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 05/14] Change regerror() declaration from K&R style to ANSI C (C89)","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-21T14:37:21Z","receivedAt":"2009-08-21T14:37:21Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":">\n>  size_t\n> -regerror (errcode, preg, errbuf, errbuf_size)\n> -    int errcode;\n> -    const regex_t *preg;\n> -    char *errbuf;\n> -    size_t errbuf_size;\n> +regerror(int errcode, const regex_t *preg,\n> +        char *errbuf, size_t errbuf_size)\n>  {\n\nThe true reason is MSVC type define errcode as int.\nFrank Li\n"},{"id":"121441","messageId":"9d6091530908210926p61aa5ea6ya6a7b71f940fdf5a@mail.gmail.com","threadId":"20686","inReplyTo":"4A8EA53B.9080809@gmail.com","subject":"Re: [msysGit] Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Janos Laube","fromEmail":"janos.dev@gmail.com","sentAt":"2009-08-21T16:26:25Z","receivedAt":"2009-08-21T16:26:25Z","isPatch":true,"sender":{"key":"janos.dev@gmail.com","avatar":"https://gravatar.com/avatar/549ab81cf6daf46c9c0124bdb14d2d3260329bac3821c209ef7b5ebffc7cb006?d=mp&s=160"},"body":"> MSVC compiles regex.c, so it must handle it. I'm fine with that.\n\nmsvc supports alloca, but regex.c doesn't make use of it per default\n(you must define HAVE_ALLOCA_H in order to use it). basically _alloca\nis fine for that task, but be aware that error handling on windows is\na bit compilicated. when _alloca fails it throws a structured\nexception, you must reset the stack and use traditional memory\nallocation as fallback. see\nhttp://msdn.microsoft.com/en-us/library/wb1s57t5.aspx. :-)\n\njanos\n"},{"id":"121443","messageId":"200908211937.18296.j6t@kdbg.org","threadId":"20686","inReplyTo":"9e8fc158b4d4331d698d1fe4ed33a61fbb011412.1250860247.git.mstormo@gmail.com","subject":"Re: [msysGit] [PATCH 07/14] Fix __stdcall/WINAPI placement and function prototype","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2009-08-21T17:37:18Z","receivedAt":"2009-08-21T17:37:18Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"On Freitag, 21. August 2009, Marius Storm-Olsen wrote:\n> -static __stdcall unsigned ticktack(void *dummy)\n> +static unsigned WINAPI ticktack(void *dummy)\n\n> -static __stdcall unsigned run_thread(void *data)\n> +static unsigned WINAPI run_thread(void *data)\n\nThese two are not nice. As I said in an earlier mail: The documentation says \nthat the thread function pointer that is passed to _beginthreadex must have \n__stdcall calling convention. Therefore, you should not change these to \nWINAPI.\n\n-- Hannes\n"},{"id":"121448","messageId":"4A8EF8B4.1040100@gmail.com","threadId":"20686","inReplyTo":"200908211937.18296.j6t@kdbg.org","subject":"Re: [msysGit] [PATCH 07/14] Fix __stdcall/WINAPI placement and function prototype","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-21T19:42:44Z","receivedAt":"2009-08-21T19:42:44Z","isPatch":true,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Johannes Sixt said the following on 21.08.2009 19:37:\n> On Freitag, 21. August 2009, Marius Storm-Olsen wrote:\n>> -static __stdcall unsigned ticktack(void *dummy)\n>> +static unsigned WINAPI ticktack(void *dummy)\n> \n>> -static __stdcall unsigned run_thread(void *data)\n>> +static unsigned WINAPI run_thread(void *data)\n> \n> These two are not nice. As I said in an earlier mail: The\n> documentation says that the thread function pointer that is passed to\n> _beginthreadex must have __stdcall calling convention. Therefore, you\n> should not change these to WINAPI.\n\nWINAPI is just a define for __stdcall (since _MSC_VER >= 800 anyways; VC \n6.0 being _MSC_VER == 1200), and won't change.\n\nSo, IMO the change is not bad, and makes things less convoluted by using \nthe same convention all over.\n\n(And _beginthreadex actually accepts both __stdcall and __clrcall \ncalling conventions.)\n\n--\n.marius\n"},{"id":"121450","messageId":"4A8EFA56.6050001@gmail.com","threadId":"20686","inReplyTo":"9d6091530908210926p61aa5ea6ya6a7b71f940fdf5a@mail.gmail.com","subject":"Re: [msysGit] Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-21T19:49:42Z","receivedAt":"2009-08-21T19:49:42Z","isPatch":true,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Janos Laube said the following on 21.08.2009 18:26:\n>> MSVC compiles regex.c, so it must handle it. I'm fine with that.\n> \n> msvc supports alloca, but regex.c doesn't make use of it per default \n> (you must define HAVE_ALLOCA_H in order to use it). basically _alloca\n>  is fine for that task, but be aware that error handling on windows\n> is a bit compilicated. when _alloca fails it throws a structured \n> exception, you must reset the stack and use traditional memory \n> allocation as fallback. see \n> http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx. :-)\n\nI must admit that I didn't look much at the surrounding code to know how \nlarge preimage->nr can get. But assuming variable-length array is \nhandled the same way by the compiler as alloca(), and this code seems to \nbe performing fine, I guess it's safe to say that this code won't be \ntriggering any SEH, and thus we won't need to handle it?\n\nSo, given my assumptions I think we can just replace that one line with \nalloca(), nuke the free(), and everything is ok.\n\n--\n.marius\n"},{"id":"121451","messageId":"4A8EFE29.6010706@gmail.com","threadId":"20686","inReplyTo":"9d6091530908210926p61aa5ea6ya6a7b71f940fdf5a@mail.gmail.com","subject":"Re: [msysGit] Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Johan 't Hart","fromEmail":"johanthart@gmail.com","sentAt":"2009-08-21T20:06:01Z","receivedAt":"2009-08-21T20:06:01Z","isPatch":true,"sender":{"key":"johanthart@gmail.com","avatar":"https://gravatar.com/avatar/f7bd2928a1a23e971f4ab68a6c7b35d7ff0efb1c225c570430badf90e404e50b?d=mp&s=160"},"body":"Janos Laube schreef:\n>> MSVC compiles regex.c, so it must handle it. I'm fine with that.\n> \n> msvc supports alloca, but regex.c doesn't make use of it per default\n> (you must define HAVE_ALLOCA_H in order to use it). basically _alloca\n> is fine for that task, but be aware that error handling on windows is\n> a bit compilicated. when _alloca fails it throws a structured\n> exception, you must reset the stack and use traditional memory\n> allocation as fallback. see\n> http://msdn.microsoft.com/en-us/library/wb1s57t5.aspx. :-)\n> \n\nalloca() throws an exception when out of stack memory. But what would \nthe dynamically alloced array do when it runs out of memory? (Supposing \nthat those arrays are also created on the stack, which I don't know...) \nIs that realy more complicated?\n"},{"id":"121453","messageId":"0123e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","threadId":"20686","inReplyTo":"07846e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","subject":"[PATCH v2 05/14] Change regerror() definition from K&R style to ANSI C (C89)","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-21T20:10:57Z","receivedAt":"2009-08-21T20:10:57Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Frank Li <lznuaa@gmail.com>\n\nThe MSVC headers typedef errcode as int, and thus confused the\ncompiler in the K&R style definition. ANSI style deconfuses it.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\nSigned-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n---\n Frank, like this one better?\n\n compat/regex/regex.c |    7 ++-----\n 1 files changed, 2 insertions(+), 5 deletions(-)\n\ndiff --git a/compat/regex/regex.c b/compat/regex/regex.c\nindex 5ea0075..67d5c37 100644\n--- a/compat/regex/regex.c\n+++ b/compat/regex/regex.c\n@@ -4852,11 +4852,8 @@ regexec (preg, string, nmatch, pmatch, eflags)\n    from either regcomp or regexec.   We don't use PREG here.  */\n \n size_t\n-regerror (errcode, preg, errbuf, errbuf_size)\n-    int errcode;\n-    const regex_t *preg;\n-    char *errbuf;\n-    size_t errbuf_size;\n+regerror(int errcode, const regex_t *preg,\n+\t char *errbuf, size_t errbuf_size)\n {\n   const char *msg;\n   size_t msg_size;\n-- \n1.6.3.msysgit.0.18.gef407\n"},{"id":"121457","messageId":"7vws4wdhq8.fsf@alter.siamese.dyndns.org","threadId":"20686","inReplyTo":"6283b3e1775f43c6fc07e5047f9c99acdc27bc8f.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-21T20:39:27Z","receivedAt":"2009-08-21T20:39:27Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Marius Storm-Olsen <mstormo@gmail.com> writes:\n\n> MSVC doesn't munge the non-constant expression, so use xmalloc instead.\n\nThanks.\n\nThese things are called variable length array, and MSVC is not the only\none that do not glok vla.\n\n\tSubject: Avoid use of variable length array\n\n        Some compilers unfortunately do not understand these constructs.\n\tIn codepaths that are not performance critical, use xmalloc()\n        and free() instead.\n\nThere is another use of vla; I would suggest squashing the following patch\nin.\n\ndiff --git a/builtin-pack-objects.c b/builtin-pack-objects.c\nindex c433748..5065abd 100644\n--- a/builtin-pack-objects.c\n+++ b/builtin-pack-objects.c\n@@ -1599,7 +1599,7 @@ static void *threaded_find_deltas(void *arg)\n static void ll_find_deltas(struct object_entry **list, unsigned list_size,\n \t\t\t   int window, int depth, unsigned *processed)\n {\n-\tstruct thread_params p[delta_search_threads];\n+\tstruct thread_params *p;\n \tint i, ret, active_threads = 0;\n \n \tif (delta_search_threads <= 1) {\n@@ -1610,6 +1610,8 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,\n \t\tfprintf(stderr, \"Delta compression using up to %d threads.\\n\",\n \t\t\t\tdelta_search_threads);\n \n+\tp = xcalloc(delta_search_threads, sizeof(*p));\n+\n \t/* Partition the work amongst work threads. */\n \tfor (i = 0; i < delta_search_threads; i++) {\n \t\tunsigned sub_size = list_size / (delta_search_threads - i);\n@@ -1717,6 +1719,8 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,\n \t\t\tactive_threads--;\n \t\t}\n \t}\n+\n+\tfree(p);\n }\n \n #else\n"},{"id":"121458","messageId":"7vr5v4dgz0.fsf@alter.siamese.dyndns.org","threadId":"20686","inReplyTo":"c899c41fdccfdc94ae294f1a50895ba0290a1ec3.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-21T20:55:47Z","receivedAt":"2009-08-21T20:55:47Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Marius Storm-Olsen <mstormo@gmail.com> writes:\n\n> From: Frank Li <lznuaa@gmail.com>\n>\n> The Microsoft C runtime's vsnprintf function does not add NUL at\n> the end of the buffer.\n\nThis contradicts the way I read the comment in compat/snprintf.c from\nf4626df (Add target architecture MinGW., 2007-12-01).\n\nAs far as I can see, the correction is about the meaning of the size\nparameter to the function, namely, that a broken implementation may\nmistakenly think that it was told the maximum length of the meat of the\nstring to write, and it is allowed to append a NUL beyond the limit, when\nthe caller actually is telling it the size of the buffer.\n\nSo if my reading is correct, it is not about \"does not add NUL at the end\"\nat all; it is \"adds NUL beyond the end of given output buffer.\"\n"},{"id":"121459","messageId":"7vmy5sdgoc.fsf@alter.siamese.dyndns.org","threadId":"20686","inReplyTo":"74ca14c3a691cc9844a0dd806f5db47977317bdb.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 09/14] Avoid including windows.h in winansi.c for MSVC build","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-21T21:02:11Z","receivedAt":"2009-08-21T21:02:11Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Marius Storm-Olsen <mstormo@gmail.com> writes:\n\n> From: Frank Li <lznuaa@gmail.com>\n>\n> compat/msvc.h includes winsock2.h which conflicts with windows.h.\n> msvc.h also defines the oldest Windows API version required.\n\nThe first sentence sort-of makes sense; compat/msvc.h will be included by\ngit-compat-util.h and including <windows.h> here will bring conflicting\ndefinitions, so we avoid doing so when on MSC.\n\nThe second sentence does not make any sense to me.  It may be correctly\nstating a fact (i.e. \"defines required WAPI version\"), but it is unclear \nwhat relevance it has to this change to stop including <windows.h>.\n\nHaving said that, the first sentence hints me that perhaps you guys should\ninclude (conditionally only on windows but not with MSC) <windows.h> not\nfrom this file, but from git-compat-util.h?\n\n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n> Signed-off-by: Marius Storm-Olsen <mstormo@gmail.com>\n> ---\n>  compat/winansi.c |    2 ++\n>  1 files changed, 2 insertions(+), 0 deletions(-)\n>\n> diff --git a/compat/winansi.c b/compat/winansi.c\n> index 9217c24..0d79845 100644\n> --- a/compat/winansi.c\n> +++ b/compat/winansi.c\n> @@ -2,7 +2,9 @@\n>   * Copyright 2008 Peter Harris <git@peter.is-a-geek.org>\n>   */\n>  \n> +#ifndef _MSC_VER\n>  #include <windows.h>\n> +#endif\n>  #include \"../git-compat-util.h\"\n>  \n>  /*\n> -- \n> 1.6.3.msysgit.0.18.gef407\n"},{"id":"121460","messageId":"7viqggdgjz.fsf@alter.siamese.dyndns.org","threadId":"20686","inReplyTo":"40aa078e0908210641m660b003do6f637535293672ae@mail.gmail.com","subject":"Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-21T21:04:48Z","receivedAt":"2009-08-21T21:04:48Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Erik Faye-Lund <kusmabite@googlemail.com> writes:\n\n> How about using alloca instead?\n\nI tend to avoid it; historically, alloca has been a worse portability\nnightmare.\n"},{"id":"121463","messageId":"3f4fd2640908211416i489b6e23s27cb9cae6a439ddc@mail.gmail.com","threadId":"20686","inReplyTo":"7vmy5sdgoc.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 09/14] Avoid including windows.h in winansi.c for MSVC build","fromName":"Reece Dunn","fromEmail":"msclrhd@googlemail.com","sentAt":"2009-08-21T21:16:15Z","receivedAt":"2009-08-21T21:16:15Z","isPatch":true,"sender":{"key":"msclrhd@googlemail.com","avatar":null},"body":"2009/8/21 Junio C Hamano <gitster@pobox.com>:\n> Marius Storm-Olsen <mstormo@gmail.com> writes:\n>\n>> From: Frank Li <lznuaa@gmail.com>\n>>\n>> compat/msvc.h includes winsock2.h which conflicts with windows.h.\n>> msvc.h also defines the oldest Windows API version required.\n>\n> The first sentence sort-of makes sense; compat/msvc.h will be included by\n> git-compat-util.h and including <windows.h> here will bring conflicting\n> definitions, so we avoid doing so when on MSC.\n>\n> The second sentence does not make any sense to me.  It may be correctly\n> stating a fact (i.e. \"defines required WAPI version\"), but it is unclear\n> what relevance it has to this change to stop including <windows.h>.\n\nThe way things are configured, windows.h is pulling in winsock.h. In\ngit-compat-util.h, winsock2.h is included which has conflicting\ndefinitions of various functions and data structures.\n\n> Having said that, the first sentence hints me that perhaps you guys should\n> include (conditionally only on windows but not with MSC) <windows.h> not\n> from this file, but from git-compat-util.h?\n\nIt would make sense for windows.h to be included in git-compat-util.h.\n\nAccording to http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/4a90b143-1fb8-43e9-a54c-956127e0c579,\nthe following will work:\n\n#define _WINSOCKAPI_    // stops windows.h including winsock.h\n#include <winsock2.h>\n#include <windows.h>\n\nAlso, if you define WIN32_LEAN_AND_MEAN, windows.h will pull in a\nsubset of the Windows header files (which also improves compilation\ntimes). Adding this may prevent it from pulling in winsock.h. This\nwould be a better approach (and would make sense to go into\ngit-compat-util.h).\n\nI don't have access to a Windows dev box at the moment, so can't\nverify that this does indeed work.\n\n- Reece\n"},{"id":"121464","messageId":"4A8F0F30.3020002@gmail.com","threadId":"20686","inReplyTo":"7vr5v4dgz0.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Johan 't Hart","fromEmail":"johanthart@gmail.com","sentAt":"2009-08-21T21:18:40Z","receivedAt":"2009-08-21T21:18:40Z","isPatch":true,"sender":{"key":"johanthart@gmail.com","avatar":"https://gravatar.com/avatar/f7bd2928a1a23e971f4ab68a6c7b35d7ff0efb1c225c570430badf90e404e50b?d=mp&s=160"},"body":"Junio C Hamano schreef:\n> Marius Storm-Olsen <mstormo@gmail.com> writes:\n> \n>> From: Frank Li <lznuaa@gmail.com>\n>>\n>> The Microsoft C runtime's vsnprintf function does not add NUL at\n>> the end of the buffer.\n\n> So if my reading is correct, it is not about \"does not add NUL at the end\"\n> at all; it is \"adds NUL beyond the end of given output buffer.\"\n> \n\nAs far as I know, the windows implementation does not add a terminating \nNUL when the string to write is greater or equal to the given buffer \nsize. Otherwise it does add the NUL.\nSame as for strncpy() on windows.\nIn my experience the windows implementation does never write behind the \ngiven buffer, not even a terminating zero.\n"},{"id":"121467","messageId":"200908212341.37531.j6t@kdbg.org","threadId":"20686","inReplyTo":"7vr5v4dgz0.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2009-08-21T21:41:37Z","receivedAt":"2009-08-21T21:41:37Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"On Freitag, 21. August 2009, Junio C Hamano wrote:\n> Marius Storm-Olsen <mstormo@gmail.com> writes:\n> > From: Frank Li <lznuaa@gmail.com>\n> >\n> > The Microsoft C runtime's vsnprintf function does not add NUL at\n> > the end of the buffer.\n>\n> This contradicts the way I read the comment in compat/snprintf.c from\n> f4626df (Add target architecture MinGW., 2007-12-01).\n>\n> As far as I can see, the correction is about the meaning of the size\n> parameter to the function, namely, that a broken implementation may\n> mistakenly think that it was told the maximum length of the meat of the\n> string to write, and it is allowed to append a NUL beyond the limit, when\n> the caller actually is telling it the size of the buffer.\n\nNot quite. The parameter *is* the size of the buffer and vsnprintf does not \nwrite beyond the buffer. However, it has the awkward behavior that if the \nbuffer is too short by exactly one byte, i.e. there is room for the complete \nstring, but not for the terminating NUL, then vsnprintf does not report an \nerror!\n\nTherefore, we tell vsnprintf that the buffer is shorter by one byte and always \nwrite NUL in the last position so that we get a correctly terminated string \neven in this case.\n\n-- Hannes\n"},{"id":"121470","messageId":"7vfxbkbyvw.fsf@alter.siamese.dyndns.org","threadId":"20686","inReplyTo":"200908212341.37531.j6t@kdbg.org","subject":"Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-21T22:11:47Z","receivedAt":"2009-08-21T22:11:47Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Sixt <j6t@kdbg.org> writes:\n\n> Not quite. The parameter *is* the size of the buffer and vsnprintf does not \n> write beyond the buffer. However, it has the awkward behavior that if the \n> buffer is too short by exactly one byte...\n\nThanks; I was fooled by the leading comment.  How about ...\n\n compat/snprintf.c |    3 ++-\n 1 files changed, 2 insertions(+), 1 deletions(-)\n\ndiff --git a/compat/snprintf.c b/compat/snprintf.c\nindex 6c0fb05..4d07087 100644\n--- a/compat/snprintf.c\n+++ b/compat/snprintf.c\n@@ -3,7 +3,8 @@\n /*\n  * The size parameter specifies the available space, i.e. includes\n  * the trailing NUL byte; but Windows's vsnprintf expects the\n- * number of characters to write without the trailing NUL.\n+ * number of characters to write, and does not necessarily write the\n+ * trailing NUL.\n  */\n #ifndef SNPRINTF_SIZE_CORR\n #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4\n"},{"id":"121480","messageId":"1976ea660908211715u5dd20fb6vccc5ed94c07e9b3@mail.gmail.com","threadId":"20686","inReplyTo":"0123e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH v2 05/14] Change regerror() definition from K&R style to ANSI C (C89)","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-22T00:15:32Z","receivedAt":"2009-08-22T00:15:32Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"\n> The MSVC headers typedef errcode as int, and thus confused the\n> compiler in the K&R style definition. ANSI style deconfuses it.\n>\nIt is better\nbest regards\nFrank Li\n"},{"id":"121510","messageId":"40aa078e0908220335t6071fd4ay160827619fa9ab6c@mail.gmail.com","threadId":"20686","inReplyTo":"4A8EFE29.6010706@gmail.com","subject":"Re: [msysGit] Re: [PATCH 01/14] Fix non-constant array creation","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-22T10:35:17Z","receivedAt":"2009-08-22T10:35:17Z","isPatch":true,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Fri, Aug 21, 2009 at 10:06 PM, Johan 't Hart<johanthart@gmail.com> wrote:\n> alloca() throws an exception when out of stack memory. But what would the\n> dynamically alloced array do when it runs out of memory? (Supposing that\n> those arrays are also created on the stack, which I don't know...) Is that\n> realy more complicated?\n\nYou get a run-time error. Or rather, you get a run-time error if\nyou're out of address space. If you go out of memory, swapping\nmechanisms are used. And in turn, if the swapping mechanisms fail,\nyou'll get a run-time error AFAIK.\n\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"121512","messageId":"18cd41840908220425n7a4abebfk555a2cb6421c48aa@mail.gmail.com","threadId":"20686","inReplyTo":"7vfxbkbyvw.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-22T11:25:22Z","receivedAt":"2009-08-22T11:25:22Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"On Sat, Aug 22, 2009 at 12:11 AM, Junio C Hamano <gitster@pobox.com> wrote:\n\n> Johannes Sixt <j6t@kdbg.org> writes:\n>\n> > Not quite. The parameter *is* the size of the buffer and vsnprintf does\n> not\n> > write beyond the buffer. However, it has the awkward behavior that if the\n> > buffer is too short by exactly one byte...\n>\n> Thanks; I was fooled by the leading comment.  How about ...\n>\n>  compat/snprintf.c |    3 ++-\n>  1 files changed, 2 insertions(+), 1 deletions(-)\n>\n> diff --git a/compat/snprintf.c b/compat/snprintf.c\n> index 6c0fb05..4d07087 100644\n> --- a/compat/snprintf.c\n> +++ b/compat/snprintf.c\n> @@ -3,7 +3,8 @@\n>  /*\n>  * The size parameter specifies the available space, i.e. includes\n>  * the trailing NUL byte; but Windows's vsnprintf expects the\n> - * number of characters to write without the trailing NUL.\n> + * number of characters to write, and does not necessarily write the\n> + * trailing NUL.\n>  */\n>  #ifndef SNPRINTF_SIZE_CORR\n>  #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4\n>\n\nAgreed. If you'd like, I'll squash that into the change, and make the commit\nmsg more clear.\n\n--\n.marius\n"},{"id":"121513","messageId":"18cd41840908220432me657c17gfe1b79b73d25592b@mail.gmail.com","threadId":"20686","inReplyTo":"7vfxbkbyvw.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 03/14] Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-22T11:32:36Z","receivedAt":"2009-08-22T11:32:36Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"[Resending to list since gmail web interface was setup to do HTML\nmails by default. Grrr\nGet plain text, reply with plain text. Obvious, isn't it Google? Sorry guys..]\n\nOn Sat, Aug 22, 2009 at 12:11 AM, Junio C Hamano <gitster@pobox.com> wrote:\n>\n> Johannes Sixt <j6t@kdbg.org> writes:\n>\n> > Not quite. The parameter *is* the size of the buffer and vsnprintf does not\n> > write beyond the buffer. However, it has the awkward behavior that if the\n> > buffer is too short by exactly one byte...\n>\n> Thanks; I was fooled by the leading comment.  How about ...\n>\n>  compat/snprintf.c |    3 ++-\n>  1 files changed, 2 insertions(+), 1 deletions(-)\n>\n> diff --git a/compat/snprintf.c b/compat/snprintf.c\n> index 6c0fb05..4d07087 100644\n> --- a/compat/snprintf.c\n> +++ b/compat/snprintf.c\n> @@ -3,7 +3,8 @@\n>  /*\n>  * The size parameter specifies the available space, i.e. includes\n>  * the trailing NUL byte; but Windows's vsnprintf expects the\n> - * number of characters to write without the trailing NUL.\n> + * number of characters to write, and does not necessarily write the\n> + * trailing NUL.\n>  */\n>  #ifndef SNPRINTF_SIZE_CORR\n>  #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4\n\nAgreed. If you'd like, I'll squash that into the change, and make the\ncommit msg more clear.\n\n--\n.marius\n"},{"id":"121514","messageId":"18cd41840908220440o37cf0909l15ff552abd52e075@mail.gmail.com","threadId":"20686","inReplyTo":"3f4fd2640908211416i489b6e23s27cb9cae6a439ddc@mail.gmail.com","subject":"Re: [PATCH 09/14] Avoid including windows.h in winansi.c for MSVC build","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-22T11:40:15Z","receivedAt":"2009-08-22T11:40:15Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"On Fri, Aug 21, 2009 at 11:16 PM, Reece Dunn<msclrhd@googlemail.com> wrote:\n> 2009/8/21 Junio C Hamano <gitster@pobox.com>:\n>> Marius Storm-Olsen <mstormo@gmail.com> writes:\n>>\n>>> From: Frank Li <lznuaa@gmail.com>\n>>>\n>>> compat/msvc.h includes winsock2.h which conflicts with windows.h.\n>>> msvc.h also defines the oldest Windows API version required.\n>>\n>> The first sentence sort-of makes sense; compat/msvc.h will be included by\n>> git-compat-util.h and including <windows.h> here will bring conflicting\n>> definitions, so we avoid doing so when on MSC.\n>>\n>> The second sentence does not make any sense to me.  It may be correctly\n>> stating a fact (i.e. \"defines required WAPI version\"), but it is unclear\n>> what relevance it has to this change to stop including <windows.h>.\n>\n> The way things are configured, windows.h is pulling in winsock.h. In\n> git-compat-util.h, winsock2.h is included which has conflicting\n> definitions of various functions and data structures.\n>\n>> Having said that, the first sentence hints me that perhaps you guys should\n>> include (conditionally only on windows but not with MSC) <windows.h> not\n>> from this file, but from git-compat-util.h?\n>\n> It would make sense for windows.h to be included in git-compat-util.h.\n>\n> According to http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/4a90b143-1fb8-43e9-a54c-956127e0c579,\n> the following will work:\n>\n> #define _WINSOCKAPI_    // stops windows.h including winsock.h\n> #include <winsock2.h>\n> #include <windows.h>\n>\n> Also, if you define WIN32_LEAN_AND_MEAN, windows.h will pull in a\n> subset of the Windows header files (which also improves compilation\n> times). Adding this may prevent it from pulling in winsock.h. This\n> would be a better approach (and would make sense to go into\n> git-compat-util.h).\n>\n> I don't have access to a Windows dev box at the moment, so can't\n> verify that this does indeed work.\n>\n> - Reece\n>\n\nI'll check this on Monday, and send out a v3 of the series,\nincorporating the pieces commented on, and clarifying some of the\nstill confusing commit msgs.\n\n--\n.marius\n"},{"id":"121565","messageId":"a4c8a6d00908230926of0ea10bhd8f66e7d37c3b39b@mail.gmail.com","threadId":"20686","inReplyTo":"e82f1930173966ebb6b2d2815e037a26e079f969.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-23T16:26:08Z","receivedAt":"2009-08-23T16:26:08Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"Hi,\n\nOn Fri, Aug 21, 2009 at 10:30 AM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n> From: Frank Li <lznuaa@gmail.com>\n>\n> +3. Open gitbuild\\gitbuild.sln with VS2008. Then press F7.\nF7 does nothing in VS2008, to build the solution you have to press\nCtrl+Shift+B. To build and start debugging you have to press F5, and\nfor start without debbuging support is Ctrl+F5.\n\nRegards\n"},{"id":"121569","messageId":"3f4fd2640908231122m34604196pc98c5871cf5925b5@mail.gmail.com","threadId":"20686","inReplyTo":"a4c8a6d00908230926of0ea10bhd8f66e7d37c3b39b@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Reece Dunn","fromEmail":"msclrhd@googlemail.com","sentAt":"2009-08-23T18:22:57Z","receivedAt":"2009-08-23T18:22:57Z","isPatch":true,"sender":{"key":"msclrhd@googlemail.com","avatar":null},"body":"2009/8/23 Thiago Farina <tfransosi@gmail.com>:\n> Hi,\n>\n> On Fri, Aug 21, 2009 at 10:30 AM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n>> From: Frank Li <lznuaa@gmail.com>\n>>\n>> +3. Open gitbuild\\gitbuild.sln with VS2008. Then press F7.\n> F7 does nothing in VS2008, to build the solution you have to press\n> Ctrl+Shift+B. To build and start debugging you have to press F5, and\n> for start without debbuging support is Ctrl+F5.\n\nIIRC, Visual Studio can be configured to use different keyboard shortcuts.\n\nHowever, saying \"press F7\" says nothing of the intent. It would\nprobably be better to have this say something like \"Then build the\nsolution.\" or \"Open gitbuild\\gitbuild.sln with Visual Studio 2008,\nthen build it.\" But then you don't need to open Visual Studio 2008 to\nbuild it (you can build it from command line).\n\nSo, how about:\n   3. You can now build git with Visual Studio 2008 using the\ngitbuild\\gitbuild.sln file.\n\n- Reece\n"},{"id":"121570","messageId":"4A91917F.9000709@gmail.com","threadId":"20686","inReplyTo":"3f4fd2640908231122m34604196pc98c5871cf5925b5@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-23T18:59:11Z","receivedAt":"2009-08-23T18:59:11Z","isPatch":true,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Reece Dunn said the following on 23.08.2009 20:22:\n> 2009/8/23 Thiago Farina <tfransosi@gmail.com>:\n>> Hi,\n>>\n>> On Fri, Aug 21, 2009 at 10:30 AM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n>>> From: Frank Li <lznuaa@gmail.com>\n>>>\n>>> +3. Open gitbuild\\gitbuild.sln with VS2008. Then press F7.\n>> F7 does nothing in VS2008, to build the solution you have to press\n>> Ctrl+Shift+B. To build and start debugging you have to press F5, and\n>> for start without debbuging support is Ctrl+F5.\n> \n> IIRC, Visual Studio can be configured to use different keyboard shortcuts.\n> \n> However, saying \"press F7\" says nothing of the intent. It would\n> probably be better to have this say something like \"Then build the\n> solution.\" or \"Open gitbuild\\gitbuild.sln with Visual Studio 2008,\n> then build it.\" But then you don't need to open Visual Studio 2008 to\n> build it (you can build it from command line).\n> \n> So, how about:\n>    3. You can now build git with Visual Studio 2008 using the\n> gitbuild\\gitbuild.sln file.\n> \n> - Reece\n\nAgreed.\nThanks guys.\n\n--\n.marius\n"},{"id":"121571","messageId":"a4c8a6d00908231229v56eceeddue1b927a4e4e49ee3@mail.gmail.com","threadId":"20686","inReplyTo":"4A91917F.9000709@gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-23T19:29:25Z","receivedAt":"2009-08-23T19:29:25Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"Marius, how common-cmds.h will be generated? In the header file says\nthat it's generated by generate-cmdlist.sh, so the VS user will need\nto generate this file first (before compiling)?\nWhen I tried to compile after pulling from the repository, I couldn't,\nso I copied it from the the msysgit.\n"},{"id":"121618","messageId":"4A923B3B.6090302@gmail.com","threadId":"20686","inReplyTo":"a4c8a6d00908231229v56eceeddue1b927a4e4e49ee3@mail.gmail.com","subject":"Re: [msysGit] Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-24T07:03:23Z","receivedAt":"2009-08-24T07:03:23Z","isPatch":true,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Thiago Farina said the following on 23.08.2009 21:29:\n> Marius, how common-cmds.h will be generated? In the header file says\n> that it's generated by generate-cmdlist.sh, so the VS user will need\n> to generate this file first (before compiling)?\n> When I tried to compile after pulling from the repository, I couldn't,\n> so I copied it from the the msysgit.\n\nThe easiest is just do the following on the command line, provided \nthat you have the msysgit environment available (so GNU Make etc):\n     make common-cmds.h\n\nThat will ensure that the file is generated correctly. After that you \ncan build with msvc, based on the patch series.\n\n--\n.marius\n"},{"id":"299118","messageId":"40aa078e0908240242t6ff6c5b7y9a5957e6472b7b14@mail.gmail.com","threadId":"20686","inReplyTo":"0123e22f50dfd5e1b483a02cf550e5373125f1d.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH v2 05/14] Change regerror() definition from K&R style to ANSI C (C89)","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-24T09:42:12Z","receivedAt":"2009-08-24T09:42:12Z","isPatch":true,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Fri, Aug 21, 2009 at 10:10 PM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n>  size_t\n> -regerror (errcode, preg, errbuf, errbuf_size)\n> -    int errcode;\n> -    const regex_t *preg;\n> -    char *errbuf;\n> -    size_t errbuf_size;\n> +regerror(int errcode, const regex_t *preg,\n> +        char *errbuf, size_t errbuf_size)\n>  {\n\nSince the real reason isn't the K&R style defintion, but that\n\"errcode\" has been typedef'ed, perhaps it's better to either do\nsomething like this:\n\n#ifdef _MSC_VER\n#define errcode dummy_def\n#include <crtdefs.h>\n#undef errcode\n#endif\n\n...before the first crt-inclusion, or simply to rename \"errcode\" to\nsomething like \"error\"? The latter can be done with the preprocessor\nafter the first crt-inclusion.\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"121730","messageId":"1976ea660908250732q1e1fc153g663f3a9c13f1c902@mail.gmail.com","threadId":"20686","inReplyTo":"a4c8a6d00908231229v56eceeddue1b927a4e4e49ee3@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-25T14:32:41Z","receivedAt":"2009-08-25T14:32:41Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"> that it's generated by generate-cmdlist.sh, so the VS user will need\n> to generate this file first (before compiling)?\n\nI update http://repo.or.cz/w/gitbuild.git.\nAdd create_command.bat to create common-cmds.h.\n"},{"id":"121735","messageId":"a4c8a6d00908251024o24380f7ue409ac5f164c085e@mail.gmail.com","threadId":"20686","inReplyTo":"1976ea660908250732q1e1fc153g663f3a9c13f1c902@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-25T17:24:01Z","receivedAt":"2009-08-25T17:24:01Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"Hi,\nOn Tue, Aug 25, 2009 at 11:32 AM, Frank Li<lznuaa@gmail.com> wrote:\n>> that it's generated by generate-cmdlist.sh, so the VS user will need\n>> to generate this file first (before compiling)?\n>\n> I update http://repo.or.cz/w/gitbuild.git.\n> Add create_command.bat to create common-cmds.h.\n>\nThis is great, thank you for adding this tool.\n\nToday I ran 'git submodule update --init' and I recieved this error:\nNo submodule mapping found in .gitmodules for path 'ext/zlib'\nThe entry I have for zlib in .gitmodules is:\n\n[submodule \"ext\\\\zlib\"]\n       path = ext\\\\zlib\n       url = git://repo.or.cz/zlib.git\n\nIs this correct?  All the others entries are configured like this:\n[submodule ext/git]\n      path = ext/git\n      url = git://repo.or.cz/tgit.git\n\nAnother question: Is not better to put the README inside gitbuild with\nthe other files instead of compat/vcbuild/?\n"},{"id":"121863","messageId":"1976ea660908270616v543776fdv6ec167cc105337fc@mail.gmail.com","threadId":"20686","inReplyTo":"a4c8a6d00908251024o24380f7ue409ac5f164c085e@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-27T13:16:06Z","receivedAt":"2009-08-27T13:16:06Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":">\n> [submodule \"ext\\\\zlib\"]\n>       path = ext\\\\zlib\n>       url = git://repo.or.cz/zlib.git\n>\nI fixed this problem\nIt should be ext/zlib\n"},{"id":"121865","messageId":"a4c8a6d00908270726h387520c8g69bd6e70604caf95@mail.gmail.com","threadId":"20686","inReplyTo":"1976ea660908270616v543776fdv6ec167cc105337fc@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-27T14:26:44Z","receivedAt":"2009-08-27T14:26:44Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"Hi\nOn Thu, Aug 27, 2009 at 10:16 AM, Frank Li<lznuaa@gmail.com> wrote:\n> I fixed this problem\n> It should be ext/zlib\n>\nThanks!\n\nNow when I run 'git submodule update' I recieve this error:\n'fatal: Needed a single revision\nUnable to find the current revision in submodule path 'ext/OpenSSL''\n\nIf the output of 'git submodule status' help, this is:\n fdd0f73b9a3e7c1fdf15c2e2a52582c637ec96f1 ext/OpenSSL\n+3136d3b72e199ad1484629e8ff4563a918cad953 ext/git (remotes/origin/vcpatch)\n-c891963b1c9d2ffbf194b2c2283639d784fa3690 ext/libcurl\n-62cb93cb25e2fbdbc89f90249cd8a024afad8a94 ext/zlib\n"},{"id":"121982","messageId":"4A97920E.20601@gnu.org","threadId":"20686","inReplyTo":"1e623b19b2df001919c83418fef89ef04d7b8dfe.1250860247.git.mstormo@gmail.com","subject":"Re: [PATCH 08/14] Test for WIN32 instead of __MINGW32_","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2009-08-28T08:15:10Z","receivedAt":"2009-08-28T08:15:10Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"Since you are doing this, you may as well change patch 3 from\n\n+#if (defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ < 4) || \ndefined(_MSC_VER)\n\nto this:\n\n#if defined WIN32 && (!defined (__GNUC__) || __GNUC__ < 4))\n\nPaolo\n"},{"id":"122617","messageId":"40aa078e0909070526x479dc769v39d6bbaf27a401a9@mail.gmail.com","threadId":"20686","inReplyTo":"1976ea660908250732q1e1fc153g663f3a9c13f1c902@mail.gmail.com","subject":"Re: [PATCH 14/14] Add README and gitignore file for MSVC build","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-09-07T12:26:48Z","receivedAt":"2009-09-07T12:26:48Z","isPatch":true,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Tue, Aug 25, 2009 at 4:32 PM, Frank Li<lznuaa@gmail.com> wrote:\n> I update http://repo.or.cz/w/gitbuild.git.\n> Add create_command.bat to create common-cmds.h.\n\nI just gave this script a try, but if I simply click the .bat-file, I\nget the following crash in sh.exe: \"Unhandled exception at 0x77ba8e7c\nin sh.exe: 0xC0000005: Access violation writing location 0x00000014.\"\n\nHere's the output I get on the console:\n\n--->8---\n\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild>setlocal\n\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild>set tools=C:\\Users\\Erik\\src\\git-msvc\\gitbuil\nd\\tools\n\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild>echo C:\\Users\\Erik\\src\\git-msvc\\gitbuild\\too\nls\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild\\tools\n\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild>set path=C:\\Users\\Erik\\src\\git-msvc\\gitbuild\n\\tools\n\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild>cd ext\\git\n\nC:\\Users\\Erik\\src\\git-msvc\\gitbuild\\ext\\git>sh generate-cmdlist.sh  1>common-cmd\ns.h\n\nabnormal program termination\n\n--->8---\n\nSince the path is set to only point to the tools, my guess is that\nother msys installations (I've got two) shouldn't affect this, no?\n\nI'm running Vista 64bit.\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"}]}