]> localhost Git - pldh.git/commitdiff
Add basic logging
authormisomosi <[email protected]>
Tue, 7 May 2024 01:10:38 +0000 (21:10 -0400)
committermisomosi <[email protected]>
Tue, 7 May 2024 01:23:36 +0000 (21:23 -0400)
examples/writefile.c
pld.h

index 130b481f7e55fd6e9fde38b9f4554171c8d58271..3528609458c7dcbd93ea6c78579d8ac1fd8b7dd8 100644 (file)
@@ -1,6 +1,6 @@
 #include "../pld.h"\r
 \r
-PLD(KERNEL32)\r
+PLD(KERNEL32.DLL)\r
 int main(void) {\r
        DWORD dummy;\r
        PFN(WriteFile)(GetStdHandle(STD_OUTPUT_HANDLE), "Hello World!\n", 13, &dummy, NULL);\r
diff --git a/pld.h b/pld.h
index bd4fa0e82a6fe90fbadb4785614e9f51286b7db1..dd67f0467b5f4c021ad6febfe1b94a01dd7cb616 100644 (file)
--- a/pld.h
+++ b/pld.h
@@ -27,6 +27,18 @@ static void PLD_Private_WriteString(const char *s)
        WriteFile(GetStdHandle(STD_ERROR_HANDLE), s, PLD_Private_strlen(s), &dummy, NULL);\r
 }\r
 \r
+static void PLD_Private_FormatError(int code, char *s, int len)\r
+{\r
+       DWORD_PTR arg = (DWORD_PTR)s;\r
+       FormatMessageA(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ARGUMENT_ARRAY,\r
+               NULL,\r
+               code,\r
+               MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL),\r
+               s,\r
+               len,\r
+               (va_list *)&arg);\r
+}\r
+\r
 static HMODULE PLD_Private_LoadLibrary_wrapper(LPCSTR lpLibFileName)\r
 {\r
        HMODULE hModule = GetModuleHandleA(lpLibFileName);\r
@@ -60,24 +72,16 @@ static FARPROC PLD_Private_GetProcAddress_wrapper(HMODULE hModule, LPCSTR lpProc
 static void PLD_Private_Log(const char *message, const char *name, int err)\r
 {\r
        PLD_Private_WriteString(message);\r
-       PLD_Private_WriteString(" (");\r
+       PLD_Private_WriteString(" ");\r
        PLD_Private_WriteString(name);\r
-       PLD_Private_WriteString(", err = ");\r
-\r
-       char itoastr[8 + 1];\r
-       char *iter = &itoastr[sizeof(itoastr) - 1];\r
-       *iter-- = 0;\r
-       for (int i = 0; i < sizeof(itoastr) - 1; i++) {\r
-               int digit = err & 0xf;\r
-               if (digit >= 9)\r
-                       digit = 'A' + (digit - 10);\r
-               else\r
-                       digit = '0' + digit;\r
-               *iter-- = digit;\r
-               err >>= 4;\r
-       }\r
-       PLD_Private_WriteString(++iter);\r
-       PLD_Private_WriteString(")\n");\r
+#ifdef _WIN32\r
+       PLD_Private_WriteString("\r\n");\r
+#else\r
+       PLD_Private_WriteString("\n");\r
+#endif\r
+       char errtext[256];\r
+       PLD_Private_FormatError(err, errtext, sizeof(errtext));\r
+       PLD_Private_WriteString(errtext);\r
 }\r
 \r
 #ifndef PLDLOG\r