aboutsummaryrefslogtreecommitdiff
path: root/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'main.c')
-rw-r--r--main.c140
1 files changed, 70 insertions, 70 deletions
diff --git a/main.c b/main.c
index 47f6dec..182f149 100644
--- a/main.c
+++ b/main.c
@@ -1,70 +1,70 @@
-// SPDX-License-Identifier: ISC
-// SPDX-FileCopyrightText: 2024 Matthew Wozniak <me@woz.blue>
-
-#include "api.h"
-#include "hook.h"
-#include "log.h"
-#include "os.h"
-
-#include <stddef.h>
-#define WIN32_LEAN_AND_MEAN
-#include <Windows.h>
-
-void (*orig_cbuf_addtext)(char *);
-void hook_cbuf_addtext(char *str) {
- orig_cbuf_addtext(str);
- // this is the last thing that happens when the game is opened
- if (!strcmp(str, "exec modsettings.cfg mod\n")) {
- }
-}
-
-char *cmdline;
-char WINAPI *hook_GetCommandLineA(void) {
- return cmdline;
-}
-
-void *(WINAPI *orig_LoadLibraryExA)(const char *, void *, int);
-void WINAPI *hook_LoadLibraryExA(const char *filename, void *hfile, int flags) {
- // if the dll is already loaded, don't run our code again
- if (os_dlhandle(filename))
- return orig_LoadLibraryExA(filename, hfile, flags);
- void *ret = orig_LoadLibraryExA(filename, hfile, flags);
- if (!ret) return ret;
- // cut down to basename for display
- const char *basename = filename;
- for (const char *p = filename; *p; p++)
- if (*p == '\\') basename = p + 1;
-
- if (!strcmp(basename, "engine.dll")) {
- if (!api_init()) die("couldn't get apis");
- orig_cbuf_addtext = (void (*)(char *))
- hook_inline((void *)cbuf_addtext, (void *)hook_cbuf_addtext);
- }
- return ret;
-}
-
-typedef int (*LauncherMain_t)(void *instance, void *prev_inst, char *cmdline,
- int cmd_show);
-
-int main(void/* int argc, char **argv */) {
- SetDllDirectoryA("bin/");
-
- // TODO: make this changeable by the user
- cmdline = "hl2.exe -console -w 1280 -h 720 -window -high -dxlevel 95";
-
- hook_init();
- orig_LoadLibraryExA = (typeof(orig_LoadLibraryExA))hook_dllapi("kernel32",
- "LoadLibraryExA", (void *)hook_LoadLibraryExA);
- hook_dllapi("kernel32", "GetCommandLineA", (void *)hook_GetCommandLineA);
-
- info("GetCommandLineA() = %s", GetCommandLineA());
-
- void *launcher_dll = os_dlopen("launcher");
- LauncherMain_t launcher_main =
- (LauncherMain_t)os_dlsym(launcher_dll, "LauncherMain");
-
- if (!launcher_main) die("couldn't open launcher");
- launcher_main(NULL, NULL, cmdline, 0);
-}
-
-// vi: sw=4 ts=4 noet tw=80 cc=80
+// SPDX-License-Identifier: ISC
+// SPDX-FileCopyrightText: 2024 Matthew Wozniak <me@woz.blue>
+
+#include "api.h"
+#include "hook.h"
+#include "log.h"
+#include "os.h"
+
+#include <stddef.h>
+#define WIN32_LEAN_AND_MEAN
+#include <Windows.h>
+
+void (*orig_cbuf_addtext)(char *);
+void hook_cbuf_addtext(char *str) {
+ orig_cbuf_addtext(str);
+ // this is the last thing that happens when the game is opened
+ if (!strcmp(str, "exec modsettings.cfg mod\n")) {
+ }
+}
+
+char *cmdline;
+char WINAPI *hook_GetCommandLineA(void) {
+ return cmdline;
+}
+
+void *(WINAPI *orig_LoadLibraryExA)(const char *, void *, int);
+void WINAPI *hook_LoadLibraryExA(const char *filename, void *hfile, int flags) {
+ // if the dll is already loaded, don't run our code again
+ if (os_dlhandle(filename))
+ return orig_LoadLibraryExA(filename, hfile, flags);
+ void *ret = orig_LoadLibraryExA(filename, hfile, flags);
+ if (!ret) return ret;
+ // cut down to basename for display
+ const char *basename = filename;
+ for (const char *p = filename; *p; p++)
+ if (*p == '\\') basename = p + 1;
+
+ if (!strcmp(basename, "engine.dll")) {
+ if (!api_init()) die("couldn't get apis");
+ orig_cbuf_addtext = (void (*)(char *))
+ hook_inline((void *)cbuf_addtext, (void *)hook_cbuf_addtext);
+ }
+ return ret;
+}
+
+typedef int (*LauncherMain_t)(void *instance, void *prev_inst, char *cmdline,
+ int cmd_show);
+
+int main(void/* int argc, char **argv */) {
+ SetDllDirectoryA("bin/");
+
+ // TODO: make this changeable by the user
+ cmdline = "hl2.exe -console -w 1280 -h 720 -window -high -dxlevel 95";
+
+ hook_init();
+ orig_LoadLibraryExA = (typeof(orig_LoadLibraryExA))hook_dllapi("kernel32",
+ "LoadLibraryExA", (void *)hook_LoadLibraryExA);
+ hook_dllapi("kernel32", "GetCommandLineA", (void *)hook_GetCommandLineA);
+
+ info("GetCommandLineA() = %s", GetCommandLineA());
+
+ void *launcher_dll = os_dlopen("launcher");
+ LauncherMain_t launcher_main =
+ (LauncherMain_t)os_dlsym(launcher_dll, "LauncherMain");
+
+ if (!launcher_main) die("couldn't open launcher");
+ launcher_main(NULL, NULL, cmdline, 0);
+}
+
+// vi: sw=4 ts=4 noet tw=80 cc=80