diff options
Diffstat (limited to 'src/os_win32.h')
-rw-r--r-- | src/os_win32.h | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/src/os_win32.h b/src/os_win32.h new file mode 100644 index 000000000..d9aaa6e54 --- /dev/null +++ b/src/os_win32.h @@ -0,0 +1,190 @@ +/* vi:set ts=8 sts=4 sw=4: + * + * VIM - Vi IMproved by Bram Moolenaar + * + * Do ":help uganda" in Vim to read copying and usage conditions. + * Do ":help credits" in Vim to see a list of people who contributed. + */ + +/* + * Win32 (Windows NT and Windows 95) machine-dependent things. + */ + +#include "os_dos.h" /* common MS-DOS and Win32 stuff */ +#ifndef __CYGWIN__ +#include <direct.h> /* for _mkdir() */ +#endif + +#define BINARY_FILE_IO +#define USE_EXE_NAME /* use argv[0] for $VIM */ +#define NO_COOKED_INPUT /* mch_inchar() doesn't return whole lines */ +#define SYNC_DUP_CLOSE /* sync() a file with dup() and close() */ +#define USE_TERM_CONSOLE +#ifndef HAVE_STRING_H +# define HAVE_STRING_H +#endif +#define HAVE_STRCSPN +#ifndef __GNUC__ +#define HAVE_STRICMP +#define HAVE_STRNICMP +#endif +#ifndef HAVE_STRFTIME +# define HAVE_STRFTIME /* guessed */ +#endif +#define HAVE_MEMSET +#ifndef HAVE_LOCALE_H +# define HAVE_LOCALE_H 1 +#endif +#ifndef HAVE_FCNTL_H +# define HAVE_FCNTL_H +#endif +#ifndef HAVE_STDARG_H +# define HAVE_STDARG_H +#endif +#define HAVE_QSORT +#define HAVE_ST_MODE /* have stat.st_mode */ + +#define FEAT_SHORTCUT /* resolve shortcuts */ + +#if !defined(__MINGW32__) \ + && !defined(__CYGWIN__) \ + && (!defined(__BORLANDC__) || __BORLANDC__ >= 0x550) \ + && (!defined(_MSC_VER) || _MSC_VER > 1020) +/* + * Access Control List (actually security info). + * Mingw and Cygwin don't have the acl stuff. + * Borland only in version 5.5 and later. + * MSVC in 5.0, not in 4.2, don't know about 4.3. + */ +# define HAVE_ACL +#endif + +#define USE_FNAME_CASE /* adjust case of file names */ +#if !defined(FEAT_CLIPBOARD) && defined(FEAT_VISUAL) && defined(FEAT_MOUSE) +# define FEAT_CLIPBOARD /* include clipboard support */ +#endif +#if defined(__DATE__) && defined(__TIME__) +# define HAVE_DATE_TIME +#endif +#ifndef FEAT_GUI_W32 /* GUI works different */ +# define BREAKCHECK_SKIP 1 /* call mch_breakcheck() each time, it's fast */ +#endif +#define HAVE_AVAIL_MEM + +#define HAVE_PUTENV /* at least Bcc 5.2 and MSC have it */ + +#ifdef FEAT_GUI_W32 +# define NO_CONSOLE /* don't included console-only code */ +#endif + +/* toupper() is not really broken, but it's very slow. Probably because of + * using Unicode characters on Windows NT */ +#define BROKEN_TOUPPER + +#define FNAME_ILLEGAL "\"*?><|" /* illegal characters in a file name */ + +#include <stdlib.h> +#include <time.h> + +#ifndef STRICT +# define STRICT +#endif +#ifndef COBJMACROS +# define COBJMACROS /* For OLE: Enable "friendlier" access to objects */ +#endif +#include <windows.h> + +/* + * Win32 has plenty of memory, use large buffers + */ +#define CMDBUFFSIZE 1024 /* size of the command processing buffer */ + +/* _MAX_PATH is only 256 (stdlib.h), but we want more for the 'path' option, + * thus use a larger number. */ +#define MAXPATHL 1024 + +#ifndef BASENAMELEN +# define BASENAMELEN (_MAX_PATH - 5) /* length of base of file name */ +#endif + +#define TEMPNAMELEN _MAX_PATH /* length of temp file name path */ + +#ifndef DFLT_MAXMEM +# define DFLT_MAXMEM (2*1024) /* use up to 2 Mbyte for a buffer */ +#endif + +#ifndef DFLT_MAXMEMTOT +# define DFLT_MAXMEMTOT (5*1024) /* use up to 5 Mbyte for Vim */ +#endif + +#if defined(_MSC_VER) || defined(__BORLANDC__) + /* Support for __try / __except. All versions of MSVC and Borland C are + * expected to have this. Any other compilers that support it? */ +# define HAVE_TRY_EXCEPT 1 +# include <malloc.h> /* for _resetstkoflw() */ +# if defined(_MSC_VER) && (_MSC_VER >= 1300) +# define RESETSTKOFLW _resetstkoflw +# else +# define RESETSTKOFLW myresetstkoflw +# define MYRESETSTKOFLW +# endif +#endif + +/* + * Some simple debugging macros that look and behave a lot like their + * namesakes in MFC. + */ + +#ifdef _DEBUG + +# if defined(_MSC_VER) && (_MSC_VER >= 1000) + /* Use the new debugging tools in Visual C++ 4.x */ +# include <crtdbg.h> +# define ASSERT(f) _ASSERT(f) +# else +# include <assert.h> +# define ASSERT(f) assert(f) +# endif + +# define VERIFY(f) ASSERT(f) +# define DEBUG_ONLY(f) (f) +# define TRACE Trace +# define TRACE0(sz) Trace(_T("%s"), _T(sz)) +# define TRACE1(sz, p1) Trace(_T(sz), p1) +# define TRACE2(sz, p1, p2) Trace(_T(sz), p1, p2) +# define TRACE3(sz, p1, p2, p3) Trace(_T(sz), p1, p2, p3) +# define TRACE4(sz, p1, p2, p3, p4) Trace(_T(sz), p1, p2, p3, p4) + +/* In debug version, writes trace messages to debug stream */ +void __cdecl +Trace(char *pszFormat, ...); + +#else /* !_DEBUG */ + + /* These macros should all compile away to nothing */ +# define ASSERT(f) ((void)0) +# define VERIFY(f) ((void)f) +# define DEBUG_ONLY(f) ((void)0) +# define TRACE 1 ? (void)0 : printf +# define TRACE0(sz) +# define TRACE1(sz, p1) +# define TRACE2(sz, p1, p2) +# define TRACE3(sz, p1, p2, p3) +# define TRACE4(sz, p1, p2, p3, p4) + +#endif /* !_DEBUG */ + + +#define ASSERT_POINTER(p, type) \ + ASSERT(((p) != NULL) && IsValidAddress((p), sizeof(type), FALSE)) + +#define ASSERT_NULL_OR_POINTER(p, type) \ + ASSERT(((p) == NULL) || IsValidAddress((p), sizeof(type), FALSE)) + +#define mch_setenv(name, val, x) setenv(name, val, x) +#define mch_getenv(x) (char_u *)getenv((char *)(x)) +#ifdef __BORLANDC__ +# define vim_mkdir(x, y) mkdir(x) +#else +# define vim_mkdir(x, y) _mkdir(x) +#endif |