diff --git a/.gitignore b/.gitignore index cc7fe15..177af74 100644 --- a/.gitignore +++ b/.gitignore @@ -44,7 +44,6 @@ # Kernel Module Compile Results *.mod* -*.cmd .tmp_versions/ modules.order Module.symvers @@ -52,9 +51,10 @@ Mkfile.old dkms.conf /.vs/Program-Manager-II /planning -/progmgr/RCa10968 +/progmgr/RCa* /progmgr/icons/Thumbs.db /bin/ /misc/supermiumman.png /bin.7z *.zip +*.res \ No newline at end of file diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000..6ca332b --- /dev/null +++ b/build.cmd @@ -0,0 +1,33 @@ +@echo off + +set DEFS=/DUNICODE +set DIR_ROOT=%~dp0. +set DIR_PROGMGR=%DIR_ROOT%\progmgr +set DIR_RELEASE=%DIR_ROOT%\release + +rmdir /S /Q "%DIR_RELEASE%" > nul 2>&1 +if not exist "%DIR_RELEASE%" mkdir "%DIR_RELEASE%" + +if "%1" == "debug" ( + rem NOTE: This currently doesn't link properly + set CL=/MT /Od /Zi /RTC1 /Fdprogmgr.pdb /fsanitize=address %DEFS% + set LINK=/DEBUG msvcrt.lib vcruntime.lib ucrtd.lib +) else ( + set CL=/O1 /DNDEBUG /GS- %DEFS% + set LINK=/OPT:REF /OPT:ICF +) + +pushd "%DIR_RELEASE%" +rc /nologo /i "%DIR_PROGMGR%" "%DIR_PROGMGR%\lang\dlg_en-US.rc" +rc /nologo /i "%DIR_PROGMGR%" "%DIR_PROGMGR%\lang\res_en-US.rc" +rc /nologo /i "%DIR_PROGMGR%" "%DIR_PROGMGR%\resource.rc" +cl /nologo /W3 /WX /MP /Feprogmgr.exe ^ + "%DIR_PROGMGR%\*.c" ^ + "%DIR_PROGMGR%\resource.res" ^ + "%DIR_PROGMGR%\lang\dlg_en-US.res" ^ + "%DIR_PROGMGR%\lang\res_en-US.res" ^ + /link /NODEFAULTLIB /INCREMENTAL:NO /SUBSYSTEM:WINDOWS /FIXED /merge:_RDATA=.rdata ^ + /MANIFEST:EMBED /MANIFESTINPUT:%DIR_PROGMGR%\progmgr.exe.manifest ^ + kernel32.lib user32.lib gdi32.lib advapi32.lib shell32.lib ^ + secur32.lib comdlg32.lib pathcch.lib shlwapi.lib +popd diff --git a/progmgr/group.c b/progmgr/group.c index 41b277c..25b09fa 100644 --- a/progmgr/group.c +++ b/progmgr/group.c @@ -84,6 +84,8 @@ BOOL InitializeGroups() Pointer to a group window structure or NULL on failure \* * * */ +#pragma warning(push) +#pragma warning(disable: 4172) PGROUPWND CreateGroupWindow(PGROUP pgGroup) { GROUPWND gw = { NULL }; @@ -144,6 +146,7 @@ PGROUPWND CreateGroupWindow(PGROUP pgGroup) return &gw; } +#pragma warning(pop) /* * * *\ SetGroupFlags - diff --git a/progmgr/lang/dlg_en-US.rc b/progmgr/lang/dlg_en-US.rc index 14718d0..e96fb1d 100644 Binary files a/progmgr/lang/dlg_en-US.rc and b/progmgr/lang/dlg_en-US.rc differ diff --git a/progmgr/lang/res_en-US.rc b/progmgr/lang/res_en-US.rc index 78cd15b..c104f3e 100644 Binary files a/progmgr/lang/res_en-US.rc and b/progmgr/lang/res_en-US.rc differ diff --git a/progmgr/progmgr.c b/progmgr/progmgr.c index 0444763..bcdc05a 100644 --- a/progmgr/progmgr.c +++ b/progmgr/progmgr.c @@ -165,3 +165,20 @@ int WINAPI wWinMain(_In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, return 0; } + +#pragma function(memset) +void *memset(char* dst, int value, size_t count) { + while (count--) { *dst++ = value; } + return dst; +} + +#pragma function(memcpy) +void *memcpy(char *dst, const char *src, size_t count) { + while (count--) { *dst++ = *src++; } + return dst; +} + +void __stdcall wWinMainCRTStartup() { + int code = wWinMain(GetModuleHandle(0), 0, 0, 0); + ExitProcess(code); +} \ No newline at end of file diff --git a/progmgr/resource.rc b/progmgr/resource.rc index af7f3a7..65fc50d 100644 --- a/progmgr/resource.rc +++ b/progmgr/resource.rc @@ -9,7 +9,7 @@ /* Necessary Evil */ #define APSTUDIO_HIDDEN_SYMBOLS -#include +#include #include "resource.h" #undef APSTUDIO_HIDDEN_SYMBOLS