[RFA] Re: DOS/Windows-specific code: cli-cmds.c

Eli Zaretskii
2001-06-10T06:27:00Z

> Date: Tue, 8 May 2001 14:41:53 +0300 (IDT)
> From: Eli Zaretskii <eliz@is.elta.co.il>
>
> * cli-cmds.c:
>
> /* FIXME: this should be auto-configured! */
> #ifdef __MSDOS__
> # define CANT_FORK
> #endif
>
> This seems to cry for either an Autoconf test (based on whether the
> compiler defines __MSDOS__ or not) or perhaps the whole snippet should
> be moved to config/i386/xm-go32.h.
>
>
> * cli-cmds.c:shell_escape()
>
> #ifdef __DJGPP__
> /* Make sure to return to the directory GDB thinks it is, in case the
> shell command we just ran changed it. */
> chdir (current_directory);
> #endif
>
> This code is there because the current working directory is a global
> notion (as opposed to being private to each process on Posix
> systems). Windows ports, at least the non-Cygwin ones, probably want
> this as well. Suggestions how to test this, anyone? Should we define
> a GLOBAL_CURDIR macro (zero by default)?

Here's the patch to fix these two issues. Okay to commit?

2001-06-10 Eli Zaretskii <eliz@is.elta.co.il>

* cli/cli-cmds.c (shell_escape) [GLOBAL_CURDIR]: Condition the
call to chdir on this symbol rather than on __DJGPP__.
(CANT_FORK) [__MSDOS__]: Move from here...
* defs.h (CANT_FORK) [__MSDOS__]: ...to here.
(GLOBAL_CURDIR) [__MSDOS__]: Define.

--- gdb/defs.h~0 Mon Jun 4 09:38:04 2001
+++ gdb/defs.h Sun Jun 10 16:08:22 2001
@@ -1372,6 +1372,11 @@
#endif
#endif

+#ifdef __MSDOS__
+# define CANT_FORK
+# define GLOBAL_CURDIR
+#endif
+
/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
The name ``TIDGET'' is a historical accident. Many uses of TIDGET
in the code actually refer to a lightweight process id, i.e,
--- gdb/cli/cli-cmds.c~0 Wed Jun 6 12:25:24 2001
+++ gdb/cli/cli-cmds.c Sun Jun 10 16:10:18 2001
@@ -39,11 +39,6 @@
#define GDBINIT_FILENAME ".gdbinit"
#endif

-/* FIXME: this should be auto-configured! */
-#ifdef __MSDOS__
-# define CANT_FORK
-#endif
-
/* From gdb/top.c */

extern void dont_repeat (void);
@@ -454,7 +449,7 @@
fprintf_unfiltered (gdb_stderr, "%s exited with status %d\n", arg, rc);
gdb_flush (gdb_stderr);
}
-#ifdef __DJGPP__
+#ifdef GLOBAL_CURDIR
/* Make sure to return to the directory GDB thinks it is, in case the
shell command we just ran changed it. */
chdir (current_directory);