Mercurial > dwindows
view winmain.c @ 2131:fc29c4c2d386
Mac: Changes for supporting Big Sur. These changes don't actually work.
The Xcode beta SDK is listed as 10.16, although it has been reported that
Big Sur will be 11.0 not 10.16. The 10.16 SDK does not include constants
for either 10.16 or 11.0 so I am writing the code as if it will be 11.0.
The 10.16 SDK complains that NSBox's setBorderType is deprecated and it
seems like the styles don't apply to the box type I am using anyway,
so might want to just remove the setBorderType from NSBox and see if
it still works on other versions of MacOS, but committing for now so
I have this record of it.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 30 Jun 2020 20:10:23 +0000 |
parents | aedf5903db0a |
children | 05dd5189099f |
line wrap: on
line source
/* Dynamic Windows stub file to allow Win32 applications * to use the main() entry point instead of WinMain(). * * (C) 2000-2012 Brian Smith <brian@dbsoft.org> */ #include <windows.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <process.h> #ifndef NODW void Win32_Set_Instance(HINSTANCE hInstance); #endif char **_convertargs(int *count, char *start, HINSTANCE DWInstance) { char *tmp, *argstart, **argv; int loc = 0, inquotes = 0; (*count) = 1; tmp = start; /* Count the number of entries */ if(*start) { (*count)++; while(*tmp) { if(*tmp == '"' && inquotes) inquotes = 0; else if(*tmp == '"' && !inquotes) inquotes = 1; else if(*tmp == ' ' && !inquotes) { /* Push past any white space */ while(*(tmp+1) == ' ') tmp++; /* If we aren't at the end of the command * line increment the count. */ if(*(tmp+1)) (*count)++; } tmp++; } } argv = (char **)malloc(sizeof(char *) * ((*count)+1)); argv[0] = malloc(260); GetModuleFileNameA(DWInstance, argv[0], 260); argstart = tmp = start; if(*start) { loc = 1; while(*tmp) { if(*tmp == '"' && inquotes) { *tmp = 0; inquotes = 0; } else if(*tmp == '"' && !inquotes) { argstart = tmp+1; inquotes = 1; } else if(*tmp == ' ' && !inquotes) { *tmp = 0; argv[loc] = strdup(argstart); /* Push past any white space */ while(*(tmp+1) == ' ') tmp++; /* Move the start pointer */ argstart = tmp+1; /* If we aren't at the end of the command * line increment the count. */ if(*(tmp+1)) loc++; } tmp++; } if(*argstart) argv[loc] = strdup(argstart); } argv[loc+1] = NULL; return argv; } /* Ok this is a really big hack but what the hell ;) */ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { char **argv; int argc; #ifndef NODW Win32_Set_Instance(hInstance); #endif argv = _convertargs(&argc, lpCmdLine, hInstance); return main(argc, argv); }