| /* |
| * Copyright (C) the libgit2 contributors. All rights reserved. |
| * |
| * This file is part of libgit2, distributed under the GNU GPL v2 with |
| * a Linking Exception. For full terms see the included COPYING file. |
| */ |
| #ifndef INCLUDE_msvc_compat__ |
| #define INCLUDE_msvc_compat__ |
| |
| #if defined(_MSC_VER) |
| |
| /* access() mode parameter #defines */ |
| # define F_OK 0 /* existence check */ |
| # define W_OK 2 /* write mode check */ |
| # define R_OK 4 /* read mode check */ |
| |
| # define lseek _lseeki64 |
| # define stat _stat64 |
| # define fstat _fstat64 |
| |
| /* stat: file mode type testing macros */ |
| # define _S_IFLNK 0120000 |
| # define S_IFLNK _S_IFLNK |
| # define S_IXUSR 00100 |
| |
| # define S_ISDIR(m) (((m) & _S_IFMT) == _S_IFDIR) |
| # define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG) |
| # define S_ISFIFO(m) (((m) & _S_IFMT) == _S_IFIFO) |
| # define S_ISLNK(m) (((m) & _S_IFMT) == _S_IFLNK) |
| |
| # define mode_t unsigned short |
| |
| /* case-insensitive string comparison */ |
| # define strcasecmp _stricmp |
| # define strncasecmp _strnicmp |
| |
| /* MSVC doesn't define ssize_t at all */ |
| typedef SSIZE_T ssize_t; |
| |
| /* define snprintf using variadic macro support if available */ |
| #if _MSC_VER >= 1400 |
| # define snprintf(BUF, SZ, FMT, ...) _snprintf_s(BUF, SZ, _TRUNCATE, FMT, __VA_ARGS__) |
| #else |
| # define snprintf _snprintf |
| #endif |
| |
| #endif |
| |
| #define GIT_STDLIB_CALL __cdecl |
| |
| #endif /* INCLUDE_msvc_compat__ */ |