From: Robert Pengelly Date: Sun, 18 Oct 2026 08:29:17 +0000 (+0100) Subject: Fix DOS drive root and initial working directory mapping X-Git-Url: https://git.candlhat.org/?a=commitdiff_plain;h=b2a196ebcd620b7e745869fb72953ab4eb3f899d;p=dosemu.git Fix DOS drive root and initial working directory mapping --- diff --git a/interrupts.c b/interrupts.c index d990a5d..29c89f3 100644 --- a/interrupts.c +++ b/interrupts.c @@ -5896,6 +5896,49 @@ void init_ivt (CPU8086 *cpu) { dos_drive_root[0] = '\0'; dos_append_bounded (dos_drive_root, sizeof (dos_drive_root), env_p); + } else { + + char cwd[260]; + + const char *relative; + size_t i; + +#if defined (_WIN32) + if (_getcwd (cwd, sizeof (cwd)) != NULL && cwd[0] && cwd[1] == ':') { + + dos_drive_root[0] = cwd[0]; + dos_drive_root[1] = ':'; + dos_drive_root[2] = '/'; + dos_drive_root[3] = '\0'; + + relative = cwd + 2; + +#else + if (getcwd (cwd, sizeof (cwd)) != NULL && cwd[0] == '/') { + + dos_drive_root[0] = '/'; + dos_drive_root[1] = '\0'; + + relative = cwd; + +#endif + while (*relative == '/' || *relative == '\\') { + relative++; + } + + dos_current_dir[0] = '\0'; + dos_append_bounded (dos_current_dir, sizeof (dos_current_dir), relative); + + for (i = 0; dos_current_dir[i]; i++) { + + if (dos_current_dir[i] == '\\') { + dos_current_dir[i] = '/'; + } + + } + + } + } file_handles[0] = stdin;