]> localhost Git - pldh.git/commitdiff
Add POSIX write example
authormisomosi <[email protected]>
Tue, 7 May 2024 04:42:16 +0000 (00:42 -0400)
committermisomosi <[email protected]>
Tue, 7 May 2024 04:42:16 +0000 (00:42 -0400)
examples/write.c [new file with mode: 0644]
pld.h

diff --git a/examples/write.c b/examples/write.c
new file mode 100644 (file)
index 0000000..9620caf
--- /dev/null
@@ -0,0 +1,15 @@
+// PLDLOG uses write by default so redefine it to do nothing
+#define PLDLOG(err, buf, len) (void)err, (void)buf, (void)len
+#include "../pld.h"
+
+PLD("libc.so.6");
+long write(int fd, void *buf, unsigned long len)
+{
+       return PFN(write)(fd, buf, len);
+}
+
+int main(void)
+{
+       write(1, "Hello World!\n", 13);
+       return 0;
+}
diff --git a/pld.h b/pld.h
index f103b88d0787b2b1191ab547af54d9992a067ec6..52ebbe61de4a85beb3c611bba2e993b43b1a613f 100644 (file)
--- a/pld.h
+++ b/pld.h
@@ -27,10 +27,6 @@ static int PLD_Private_strlen(const char *s)
 \r
 #ifdef _WIN32\r
 #include <windows.h>\r
-static void *PLD_Private_ErrCode(void)\r
-{\r
-       return (void *)(DWORD_PTR)GetLastError();\r
-}\r
 static void PLD_Private_WriteString(const char *s)\r
 {\r
        DWORD dummy;\r
@@ -48,12 +44,7 @@ static void PLD_Private_FormatError(void *code, char *s, int len, const char *na
                (va_list *)&arg);\r
 }\r
 #else // _WIN32\r
-#include <unistd.h>\r
 #include <dlfcn.h>\r
-static void *PLD_Private_ErrCode(void)\r
-{\r
-       return dlerror();\r
-}\r
 static void PLD_Private_WriteString(const char *s)\r
 {\r
        write(2, s, PLD_Private_strlen(s));\r
@@ -143,10 +134,16 @@ static PLD_ProcAddress PLD_Private_dlsym(PLD_LibHandle handle, const char *name)
        return GetProcAddress(handle, name);\r
 }\r
 \r
+static void *PLD_Private_ErrCode(void)\r
+{\r
+       return (void *)(DWORD_PTR)GetLastError();\r
+}\r
+\r
 #else // _WIN32\r
 \r
 #ifndef PLD_PRIVATE_LOG_INCLUDED\r
 #include <dlfcn.h>\r
+#include <stddef.h>\r
 #endif\r
 \r
 typedef void *PLD_LibHandle;\r
@@ -169,6 +166,11 @@ static PLD_ProcAddress PLD_Private_dlsym(PLD_LibHandle handle, const char *name)
        return dlsym(handle, name);\r
 }\r
 \r
+static void *PLD_Private_ErrCode(void)\r
+{\r
+       return dlerror();\r
+}\r
+\r
 #endif // _WIN32\r
 \r
 static PLD_ProcAddress PLD_Private_dlsym_wrapper(PLD_LibHandle handle, const char *name)\r