diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 12:41:27 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 12:41:27 +0300 |
| commit | 4f2d36194b4f299aa7509d815c07121039ea833b (patch) | |
| tree | f3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /mnv/src/os_win32.h | |
| parent | 5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff) | |
| download | Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip | |
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'mnv/src/os_win32.h')
| -rw-r--r-- | mnv/src/os_win32.h | 230 |
1 files changed, 230 insertions, 0 deletions
diff --git a/mnv/src/os_win32.h b/mnv/src/os_win32.h new file mode 100644 index 0000000000..e556b21f07 --- /dev/null +++ b/mnv/src/os_win32.h @@ -0,0 +1,230 @@ +/* vi:set ts=8 sts=4 sw=4 noet: + * + * MNV - MNV is not Vim by Bram Moolenaar + * + * Do ":help uganda" in MNV to read copying and usage conditions. + * Do ":help credits" in MNV to see a list of people who contributed. + */ + +/* + * Win32 machine-dependent things. + */ + +#include "os_dos.h" // common MS-DOS and Win32 stuff +#include <direct.h> // for _mkdir() + +#define BINARY_FILE_IO +#define USE_EXE_NAME // use argv[0] for $MNV +#define USE_TERM_CONSOLE +#ifndef HAVE_STRING_H +# define HAVE_STRING_H +#endif +#ifndef HAVE_MATH_H +# define HAVE_MATH_H +#endif +#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 +#define HAVE_QSORT +#define HAVE_ST_MODE // have stat.st_mode + +#define FEAT_SHORTCUT // resolve shortcuts + +// Access Control List (actually security info). +#define HAVE_ACL + +#define USE_FNAME_CASE // adjust case of file names +#if !defined(FEAT_CLIPBOARD) +# define FEAT_CLIPBOARD // include clipboard support +#endif +#if defined(__DATE__) && defined(__TIME__) +# define HAVE_DATE_TIME +#endif +#ifndef FEAT_GUI_MSWIN // GUI works different +# define BREAKCHECK_SKIP 1 // call mch_breakcheck() each time, it's fast +#endif + +#define HAVE_TOTAL_MEM + +#define HAVE_PUTENV // at least Bcc 5.2 and MSC have it + +#if defined(FEAT_GUI_MSWIN) && !defined(MNVDLL) +# define NO_CONSOLE // don't include 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 <signal.h> +#include <stdlib.h> +#include <time.h> +#include <sys/types.h> + +#ifndef STRICT +# define STRICT +#endif +#ifndef COBJMACROS +# define COBJMACROS // For OLE: Enable "friendlier" access to objects +#endif + +// Must include winsock2.h before windows.h since it conflicts with winsock.h +// (included in windows.h). +#include <winsock2.h> +#include <ws2tcpip.h> +#include <windows.h> + +// Weird: rpcndr.h defines "small" to "char", which causes trouble +#undef small + +#ifndef SM_CXPADDEDBORDER +# define SM_CXPADDEDBORDER 92 +#endif + +typedef void (*sighandler_T)(int, int); + +/* + * Win32 has plenty of memory, use large buffers + */ +#define CMDBUFFSIZE 1024 // size of the command processing buffer + +// _MAX_PATH is only 260 (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 MNV +#endif + +/* + * Reparse Point + */ +#ifndef FILE_ATTRIBUTE_REPARSE_POINT +# define FILE_ATTRIBUTE_REPARSE_POINT 0x00000400 +#endif +#ifndef IO_REPARSE_TAG_MOUNT_POINT +# define IO_REPARSE_TAG_MOUNT_POINT 0xA0000003 +#endif +#ifndef IO_REPARSE_TAG_SYMLINK +# define IO_REPARSE_TAG_SYMLINK 0xA000000C +#endif +#ifndef IO_REPARSE_TAG_APPEXECLINK +# define IO_REPARSE_TAG_APPEXECLINK 0x8000001B +#endif + +/* + * Definition of the reparse point buffer. + * This is usually defined in the DDK, copy the definition here to avoid + * adding it as a dependence only for a single structure. + */ +typedef struct _REPARSE_DATA_BUFFER { + ULONG ReparseTag; + USHORT ReparseDataLength; + USHORT Reserved; + union { + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + ULONG Flags; + WCHAR PathBuffer[1]; + } SymbolicLinkReparseBuffer; + struct { + USHORT SubstituteNameOffset; + USHORT SubstituteNameLength; + USHORT PrintNameOffset; + USHORT PrintNameLength; + WCHAR PathBuffer[1]; + } MountPointReparseBuffer; + struct { + UCHAR DataBuffer[1]; + } GenericReparseBuffer; + struct + { + ULONG StringCount; + WCHAR StringList[1]; + } AppExecLinkReparseBuffer; + } DUMMYUNIONNAME; +} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER; + +#ifdef _MSC_VER + // Support for __try / __except. All versions of MSVC are + // expected to have this. Any other compilers that support it? +# define HAVE_TRY_EXCEPT 1 +# include <malloc.h> // for _resetstkoflw() +#endif + +/* + * Some simple debugging macros that look and behave a lot like their + * namesakes in MFC. + */ + +#ifdef _DEBUG + +# include <crtdbg.h> +# define ASSERT(f) _ASSERT(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 TRACE 1 ? (void)0 : (void)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)) + +#ifndef HAVE_SETENV +# define HAVE_SETENV +#endif +#define mch_getenv(x) (char_u *)getenv((char *)(x)) +#define mnv_mkdir(x, y) mch_mkdir(x) + +// Windows Version +#define MAKE_VER(major, minor, build) \ + (((major) << 24) | ((minor) << 16) | (build)) |
