0.9.9.31:
[sbcl.git] / src / runtime / win32-os.c
index 9e41866..8ec02db 100644 (file)
@@ -38,6 +38,7 @@
 #include "interrupt.h"
 #include "interr.h"
 #include "lispregs.h"
+#include "runtime.h"
 #include "monitor.h"
 #include "alloc.h"
 #include "genesis/primitive-objects.h"
@@ -620,9 +621,34 @@ void scratch(void)
     dup(0);
     LoadLibrary(0);
     GetProcAddress(0, 0);
+    FreeLibrary(0);
     mkdir(0);
     isatty(0);
     access(0,0);
+    GetLastError();
+    FormatMessageA(0, 0, 0, 0, 0, 0, 0);
+    _get_osfhandle(0);
+    ReadFile(0, 0, 0, 0, 0);
+    WriteFile(0, 0, 0, 0, 0);
+    PeekNamedPipe(0, 0, 0, 0, 0, 0);
+    FlushConsoleInputBuffer(0);
+    PeekConsoleInput(0, 0, 0, 0);
+    Sleep(0);
+}
+
+char *
+os_get_runtime_executable_path()
+{
+    char path[MAX_PATH + 1];
+    DWORD bufsize = sizeof(path);
+    DWORD size;
+
+    if ((size = GetModuleFileNameA(NULL, path, bufsize)) == 0)
+        return NULL;
+    else if (size == bufsize && GetLastError() == ERROR_INSUFFICIENT_BUFFER)
+        return NULL;
+
+    return copied_string(path);
 }
 
 /* EOF */