git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 08/12] Add MSVC porting files.

From
Frank Li <lznuaa@gmail.com>
Date
Aug 19, 2009, 15:52 UTC
Message-ID
<1250697167-5536-8-git-send-email-lznuaa@gmail.com>
In-Reply-To
<1250697167-5536-7-git-send-email-lznuaa@gmail.com>
Add msvc.c and msvc.h to build git under MSVC
Signed-off-by: Frank Li <lznuaa@gmail.com>
---
 compat/msvc.c |   33 ++++++++++++++++++++++
 compat/msvc.h |   86 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 119 insertions(+), 0 deletions(-)
 create mode 100644 compat/msvc.c
 create mode 100644 compat/msvc.h
diff --git a/compat/msvc.c b/compat/msvc.c
new file mode 100644
index 0000000..80afd4d
--- /dev/null
+++ b/compat/msvc.c
@@ -0,0 +1,33 @@
+#include "../git-compat-util.h"
+#include "win32.h"
+#include <conio.h>
+#include "../strbuf.h"
+
+DIR *opendir(const char *name)
+{
+	int len;
+	DIR *p;
+	p = (DIR*)malloc(sizeof(DIR));
+	memset(p, 0, sizeof(DIR));
+	strncpy(p->dd_name, name, PATH_MAX);
+	len = strlen(p->dd_name);
+	p->dd_name[len] = '/';
+	p->dd_name[len+1] = '*';
+
+	if (p == NULL)
+		return NULL;
+
+	p->dd_handle = _findfirst(p->dd_name, &p->dd_dta);
+
+	if (p->dd_handle == -1) {
+		free(p);
+		return NULL;
+	}
+	return p;
+}
+int closedir(DIR *dir)
+{
+	_findclose(dir->dd_handle);
+	free(dir);
+	return 0;
+}
diff --git a/compat/msvc.h b/compat/msvc.h
new file mode 100644
index 0000000..76cc6e5
--- /dev/null
+++ b/compat/msvc.h
@@ -0,0 +1,86 @@
+#ifndef __MSVC__HEAD
+#define __MSVC__HEAD
+
+/*Define minimize windows version*/
+#define WINVER 0x0500
+#define _WIN32_WINNT 0x0500
+#define _WIN32_WINDOWS 0x0410
+#define _WIN32_IE 0x0700
+#define NTDDI_VERSION NTDDI_WIN2KSP1
+#include <winsock2.h>
+
+/*Configuration*/
+#define NO_PREAD
+#define NO_OPENSSL
+#define NO_LIBGEN_H
+#define NO_SYMLINK_HEAD
+#define NO_IPV6
+#define NO_SETENV
+#define NO_UNSETENV
+#define NO_STRCASESTR
+#define NO_STRLCPY
+#define NO_MEMMEM
+#define NO_C99_FORMAT
+#define NO_STRTOUMAX
+#define NO_MKDTEMP
+#define NO_MKSTEMPS
+#define NO_ST_BLOCKS_IN_STRUCT_STAT
+#define NO_NSEC
+#define NO_REGEX
+#define NO_SYS_SELECT_H
+#define NO_PTHEADS
+#define NO_ICONV
+#define NO_PTHREADS
+#define NO_CURL
+#define NO_STRTOUMAX
+#define NO_STRLCPY
+#define NO_UNSETENV
+#define NO_SETENV
+
+#define USE_WIN32_MMAP
+#define USE_NED_ALLOCATOR
+#define HAVE_STRING_H 1
+#define STDC_HEADERS
+#define SNPRINTF_RETURNS_BOGUS
+#define RUNTIME_PREFIX
+#define REGEX_MALLOC
+
+/*Git runtime infomation*/
+#define ETC_GITCONFIG "%HOME%"
+#define SHA1_HEADER "mozilla-sha1\\sha1.h"
+#define GIT_EXEC_PATH "bin"
+#define GIT_VERSION "1.6"
+#define BINDIR "bin"
+#define PREFIX "."
+#define GIT_MAN_PATH "man"
+#define GIT_INFO_PATH "info"
+#define GIT_HTML_PATH "html"
+#define DEFAULT_GIT_TEMPLATE_DIR "templates"
+
+/*porting function*/
+#define strdup _strdup
+#define read _read
+#define close _close
+#define dup _dup
+#define dup2 _dup2
+#define strncasecmp _strnicmp
+#define strtoull _strtoui64
+#define inline __inline
+#define __inline__ __inline
+#define __attribute__(x)
+#define va_copy(dst, src)     ((dst) = (src))
+
+static __inline int strcasecmp (const char *s1, const char *s2)
+{
+	int size1=strlen(s1);
+	int sisz2=strlen(s2);
+
+	return _strnicmp(s1,s2,sisz2>size1?sisz2:size1);
+}
+
+#include "compat/mingw.h"
+#undef ERROR
+#undef stat
+#define stat(x,y) mingw_lstat(x,y)
+#define stat      _stat64
+#endif
\ No newline at end of file
-- 
1.6.4.msysgit.0
Previous: Frank LiNext: Frank Li
Message 8 of 12 in “Avoid declaration after instruction”
  1. 01/12 Avoid declaration after instructionFrank Li, Aug 19, 2009
  2. 02/12 Define SNPRINTF_SIZE_CORR=1 for Microsoft Visual C++Frank Li, Aug 19, 2009
  3. 03/12 Using macro WIN32 replace __MINGW32_ at Windows special handler The code which is conditional on MinGW32 is actually conditional on Windows. Use WIN32 macro will share both MINGW32 and MSVC environment.Frank Li, Aug 19, 2009
  4. 04/12 mingw.c: Use the O_BINARY flag to open filesFrank Li, Aug 19, 2009
  5. 05/12 Place __stdcall between return value and function nameFrank Li, Aug 19, 2009
  6. 06/12 Add _MSC_VER in porting head file git-compat-util.hFrank Li, Aug 19, 2009
  7. 07/12 Add Unix header files to build git at MSVC.Frank Li, Aug 19, 2009
  8. 08/12 Add MSVC porting files.Frank Li, Aug 19, 2009
  9. 09/12 Don't include windows.h at winansi.c at MSVC buildFrank Li, Aug 19, 2009
  10. 10/12 Fix errcode have defined as int at MSVCFrank Li, Aug 19, 2009
  11. 11/12 Add MSVC Project fileFrank Li, Aug 19, 2009
  12. Erik Faye-LundAug 19, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.