| 825 | } |
| 826 | |
| 827 | char * |
| 828 | get_executable_path(void) |
| 829 | { |
| 830 | #ifdef UNICODE |
| 831 | { |
| 832 | TCHAR wbuf[BUFSZ]; |
| 833 | GetModuleFileName((HANDLE) 0, wbuf, BUFSZ); |
| 834 | WideCharToMultiByte(CP_ACP, 0, wbuf, -1, path_buffer, |
| 835 | sizeof(path_buffer), NULL, NULL); |
| 836 | } |
| 837 | #else |
| 838 | DWORD length = GetModuleFileName((HANDLE) 0, path_buffer, MAX_PATH); |
| 839 | if (length == ERROR_INSUFFICIENT_BUFFER) |
| 840 | error("Unable to get module name"); |
| 841 | path_buffer[length] = '\0'; |
| 842 | #endif |
| 843 | |
| 844 | char *separator = strrchr(path_buffer, PATH_SEPARATOR); |
| 845 | if (separator) |
| 846 | *separator = '\0'; |
| 847 | |
| 848 | path_buffer_set = TRUE; |
| 849 | return path_buffer; |
| 850 | } |
| 851 | |
| 852 | char * |
| 853 | windows_exepath(void) |