* Re: [RFA] Remove OS-specific defines (was: _WIN32?) [not found] <3AF6EB58.1020904@cygnus.com> @ 2001-05-10 3:31 ` Eli Zaretskii 0 siblings, 0 replies; 12+ messages in thread From: Eli Zaretskii @ 2001-05-10 3:31 UTC (permalink / raw) To: Andrew Cagney; +Cc: kevinb, gdb-patches On Mon, 7 May 2001, Andrew Cagney wrote: > > Btw, is it perhaps a good idea to add to gdbint.texinfo some > > guidelines about writing portable code which handles file names, > > including the list of these macros? Andrew? > > Yes, and yes. I committed the following patch: --- gdb/doc/gdbint.t~0 Sun Apr 1 11:27:48 2001 +++ gdb/doc/gdbint.texinfo Tue May 8 16:24:42 2001 @@ -4133,7 +4133,7 @@ All static functions must be declared in a block near the top of the source file. -@subsection Clean Design +@subsection Clean Design and Portable Implementation @cindex design In addition to getting the syntax right, there's the little question of @@ -4219,6 +4219,67 @@ duplicated code. Other times, duplicating a few lines of code here or there is much cleaner than introducing a large number of small hooks. +@cindex portable file name handling +@cindex file names, portability +One particularly notorious area where system dependencies tend to +creep in is handling of file names. The mainline @value{GDBN} code +assumes Posix semantics of file names: absolute file names begin with +a forward slash @file{/}, slashes are used to separate leading +directories, case-sensitive file names. These assumptions are not +necessarily true on non-Posix systems such as MS-Windows. To avoid +system-dependent code where you need to take apart or construct a file +name, use the following portable macros: + +@table @code +@findex HAVE_DOS_BASED_FILE_SYSTEM +@item HAVE_DOS_BASED_FILE_SYSTEM +This preprocessing symbol is defined to a non-zero value on hosts +whose filesystems belong to the MS-DOS/MS-Windows family. Use this +symbol to write conditional code which should only be compiled for +such hosts. + +@findex IS_DIR_SEPARATOR +@item IS_DIR_SEPARATOR (@var{c} +Evaluates to a non-zero value if @var{c} is a directory separator +character. On Unix and GNU/Linux systems, only a slash @file{/} is +such a character, but on Windows, both @file{/} and @file{\} will +pass. + +@findex IS_ABSOLUTE_PATH +@item IS_ABSOLUTE_PATH (@var{file}) +Evaluates to a non-zero value if @var{file} is an absolute file name. +For Unix and GNU/Linux hosts, a name which begins with a slash +@file{/} is absolute. On DOS and Windows, @file{d:/foo} and +@file{x:\bar} are also absolute file names. + +@findex FILENAME_CMP +@item FILENAME_CMP (@var{f1}, @var{f2}) +Calls a function which compares file names @var{f1} and @var{f2} as +appropriate for the underlying host filesystem. For Posix systems, +this simply calls @code{strcmp}; on case-insensitive filesystems it +will call @code{strcasecmp} instead. + +@findex DIRNAME_SEPARATOR +@item DIRNAME_SEPARATOR +Evaluates to a character which separates directories in +@code{PATH}-style lists, typically held in environment variables. +This character is @samp{:} on Unix, @samp{;} on DOS and Windows. + +@findex SLASH_STRING +@item SLASH_STRING +This evaluates to a constant string you should use to produce an +absolute filename from leading directories and the file's basename. +@code{SLASH_STRING} is @code{"/"} on most systems, but might be +@code{"\\"} for some Windows-based ports. +@end table + +In addition to using these macros, be sure to use portable library +functions whenever possible. For example, to extract a directory or a +basename part from a file name, use the @code{dirname} and +@code{basename} library functions (available in @code{libiberty} for +platforms which don't provide them), instead of searching for a slash +with @code{strrchr}. + Another way to generalize @value{GDBN} along a particular interface is with an attribute struct. For example, @value{GDBN} has been generalized to handle multiple kinds of remote interfaces---not by @code{#ifdef}s everywhere, but ^ permalink raw reply [flat|nested] 12+ messages in thread
[parent not found: <20010503211502.21716.qmail@web6401.mail.yahoo.com>]
[parent not found: <3AF1DAA0.3060702@cygnus.com>]
[parent not found: <200105071610.TAA24144@is.elta.co.il>]
[parent not found: <1010507173855.ZM18890@ocotillo.lan>]
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) [not found] ` <1010507173855.ZM18890@ocotillo.lan> @ 2001-05-07 11:24 ` Eli Zaretskii 2001-06-10 6:28 ` Eli Zaretskii 1 sibling, 0 replies; 12+ messages in thread From: Eli Zaretskii @ 2001-05-07 11:24 UTC (permalink / raw) To: gdb-patches I see that I sent the original RFA to a wrong address. Sorry, I will resend. Here's my reply to Kevin's approval: > Date: Mon, 7 May 2001 10:38:55 -0700 > From: Kevin Buettner <kevinb@cygnus.com> > > On May 7, 7:10pm, Eli Zaretskii wrote: > > > * solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH > > instead of SLASH_CHAR, ROOTED_P and SLASH_P. > > (top-level): #include "filenames.h". > > Your changes to solib.c are approved. (FWIW, I glanced over your > changes to the other files and they look good too.) Thanks for reviewing them so soon. > Don't forget to also remove the definitions of SLASH_P, SLASH_CHAR, and > ROOTED_P in config/i386/xm-cygwin.h and config/i386/xm-go32.h. Yes, it's in the pipeline ;-) I just wanted to hear from Chris, at the very least, before futzing with his files. Btw, is it perhaps a good idea to add to gdbint.texinfo some guidelines about writing portable code which handles file names, including the list of these macros? Andrew? ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) [not found] ` <1010507173855.ZM18890@ocotillo.lan> 2001-05-07 11:24 ` Eli Zaretskii @ 2001-06-10 6:28 ` Eli Zaretskii 2001-06-12 17:14 ` Christopher Faylor 1 sibling, 1 reply; 12+ messages in thread From: Eli Zaretskii @ 2001-06-10 6:28 UTC (permalink / raw) To: kevinb; +Cc: gdb-patches, Christopher Faylor > Date: Mon, 7 May 2001 10:38:55 -0700 > From: Kevin Buettner <kevinb@cygnus.com> > > On May 7, 7:10pm, Eli Zaretskii wrote: > > > * solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH > > instead of SLASH_CHAR, ROOTED_P and SLASH_P. > > (top-level): #include "filenames.h". > > Your changes to solib.c are approved. (FWIW, I glanced over your > changes to the other files and they look good too.) > > > * defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions. > > (SLASH_STRING): Define only for _WIN32. > > Once your changes to the other .c files are approved, I think this > one can be regarded as an obvious change. > > Don't forget to also remove the definitions of SLASH_P, SLASH_CHAR, and > ROOTED_P in config/i386/xm-cygwin.h and config/i386/xm-go32.h. This time is now. Chris, is the patch below okay with you? 2001-06-10 Eli Zaretskii <eliz@is.elta.co.il> * config/i386/xm-go32.h (SLASH_P, ROOTED_P, SLASH_CHAR) (SLASH_STRING): Remove unised definitions * config/i386/xm-go32.h: Likewise. --- gdb/config/i386/xm-go32.h~0 Mon Apr 3 17:44:56 2000 +++ gdb/config/i386/xm-go32.h Sun Jun 10 15:50:42 2001 @@ -24,13 +24,6 @@ #define GDBINIT_FILENAME "gdb.ini" -#define SLASH_P(X) ((X)=='\\' || (X) == '/') - -#define ROOTED_P(X) ((SLASH_P((X)[0])) || ((X)[0] && (X)[1] ==':')) - -#define SLASH_CHAR '/' -#define SLASH_STRING "/" - #define CRLF_SOURCE_FILES #define DIRNAME_SEPARATOR ';' --- gdb/config/i386/xm-cygwin.h~0 Fri Mar 2 05:14:48 2001 +++ gdb/config/i386/xm-cygwin.h Sun Jun 10 16:00:46 2001 @@ -24,11 +24,6 @@ #define GDBINIT_FILENAME "gdb.ini" -#define SLASH_P(X) ((X)=='\\' || (X) == '/') -#define ROOTED_P(X) ((SLASH_P((X)[0]))|| ((X)[1] ==':')) -#define SLASH_CHAR '/' -#define SLASH_STRING "/" - /* Define this if source files use \r\n rather than just \n. */ #define CRLF_SOURCE_FILES ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-06-10 6:28 ` Eli Zaretskii @ 2001-06-12 17:14 ` Christopher Faylor 2001-06-13 2:08 ` Eli Zaretskii 0 siblings, 1 reply; 12+ messages in thread From: Christopher Faylor @ 2001-06-12 17:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: kevinb, gdb-patches On Sun, Jun 10, 2001 at 04:29:46PM +0300, Eli Zaretskii wrote: >This time is now. Chris, is the patch below okay with you? Looks ok to me. cgf ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-06-12 17:14 ` Christopher Faylor @ 2001-06-13 2:08 ` Eli Zaretskii 0 siblings, 0 replies; 12+ messages in thread From: Eli Zaretskii @ 2001-06-13 2:08 UTC (permalink / raw) To: Christopher Faylor; +Cc: kevinb, gdb-patches On Tue, 12 Jun 2001, Christopher Faylor wrote: > On Sun, Jun 10, 2001 at 04:29:46PM +0300, Eli Zaretskii wrote: > >This time is now. Chris, is the patch below okay with you? > > Looks ok to me. Committed. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) [not found] ` <200105071610.TAA24144@is.elta.co.il> [not found] ` <1010507173855.ZM18890@ocotillo.lan> @ 2001-05-13 1:29 ` Eli Zaretskii 2001-05-13 7:09 ` Fernando Nasser 1 sibling, 1 reply; 12+ messages in thread From: Eli Zaretskii @ 2001-05-13 1:29 UTC (permalink / raw) To: gdb-patches > Date: Mon, 7 May 2001 19:10:59 +0300 (IDT) > From: Eli Zaretskii <eliz@is.elta.co.il> > > I'm seeking approval for the following patches. They remove all the > DOS- and Windows-specific #ifdef's like "#ifdef _WIN32" and use the > portable macros from filenames.h instead. In addition, they convert > code which used macros private to GDB, such as SLASH_P and ROOTED_P, > to use the macros from filenames.h instead. Ping! I think I still need an approval for patches to source.c, completer.c and cli-cmds.c (see below). Did I missed some messages? > 2001-05-07 Eli Zaretskii <eliz@is.elta.co.il> > > * source.c (mod_path, openp): Use HAVE_DOS_BASED_FILE_SYSTEM > instead of system-specific define's like _WIN32 and __MSDOS__. > Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH instead of SLASH_P and > ROOTED_P. > (top-level): #include "filenames.h". > > * solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH > instead of SLASH_CHAR, ROOTED_P and SLASH_P. > (top-level): #include "filenames.h". > > * defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions. > (SLASH_STRING): Define only for _WIN32. > > * completer.c: Use HAVE_DOS_BASED_FILE_SYSTEM instead of > __MSDOS_. > > * cli/cli-cmds.c (cd_command): Use IS_DIR_SEPARATOR and > IS_ABSOLUTE_PATH instead of SLASH_P and ROOTED_P. Replace > system-specific ifdefs with HAVE_DOS_BASED_FILE_SYSTEM. > (top-level): #include "filenames.h". > > > --- gdb/cli/cli-cmds.c~0 Thu Mar 29 01:42:22 2001 > +++ gdb/cli/cli-cmds.c Mon May 7 18:08:40 2001 > @@ -23,6 +23,7 @@ > #include "target.h" /* For baud_rate, remote_debug and remote_timeout */ > #include "gdb_wait.h" /* For shell escape implementation */ > #include "gnu-regex.h" /* Used by apropos_command */ > +#include "filenames.h" /* for DOSish file names */ > > #ifdef UI_OUT > #include "ui-out.h" > @@ -292,7 +293,7 @@ cd_command (char *dir, int from_tty) > if (chdir (dir) < 0) > perror_with_name (dir); > > -#if defined(_WIN32) || defined(__MSDOS__) > +#if HAVE_DOS_BASED_FILE_SYSTEM > /* There's too much mess with DOSish names like "d:", "d:.", > "d:./foo" etc. Instead of having lots of special #ifdef'ed code, > simply get the canonicalized name of the current directory. */ > @@ -300,24 +301,24 @@ cd_command (char *dir, int from_tty) > #endif > > len = strlen (dir); > - if (SLASH_P (dir[len - 1])) > + if (IS_DIR_SEPARATOR (dir[len - 1])) > { > /* Remove the trailing slash unless this is a root directory > (including a drive letter on non-Unix systems). */ > if (!(len == 1) /* "/" */ > -#if defined(_WIN32) || defined(__MSDOS__) > - && !(!SLASH_P (*dir) && ROOTED_P (dir) && len <= 3) /* "d:/" */ > +#if HAVE_DOS_BASED_FILE_SYSTEM > + && !(len == 3 && dir[1] == ':') /* "d:/" */ > #endif > ) > len--; > } > > dir = savestring (dir, len); > - if (ROOTED_P (dir)) > + if (IS_ABSOLUTE_PATH (dir)) > current_directory = dir; > else > { > - if (SLASH_P (current_directory[strlen (current_directory) - 1])) > + if (IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])) > current_directory = concat (current_directory, dir, NULL); > else > current_directory = concat (current_directory, SLASH_STRING, dir, NULL); > @@ -329,17 +330,18 @@ cd_command (char *dir, int from_tty) > found_real_path = 0; > for (p = current_directory; *p;) > { > - if (SLASH_P (p[0]) && p[1] == '.' && (p[2] == 0 || SLASH_P (p[2]))) > + if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' > + && (p[2] == 0 || IS_DIR_SEPARATOR (p[2]))) > strcpy (p, p + 2); > - else if (SLASH_P (p[0]) && p[1] == '.' && p[2] == '.' > - && (p[3] == 0 || SLASH_P (p[3]))) > + else if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' && p[2] == '.' > + && (p[3] == 0 || IS_DIR_SEPARATOR (p[3]))) > { > if (found_real_path) > { > /* Search backwards for the directory just before the "/.." > and obliterate it and the "/..". */ > char *q = p; > - while (q != current_directory && !SLASH_P (q[-1])) > + while (q != current_directory && !IS_DIR_SEPARATOR (q[-1])) > --q; > > if (q == current_directory) > > --- gdb/completer.c~5 Sun May 6 13:10:30 2001 > +++ gdb/completer.c Mon May 7 17:21:02 2001 > @@ -66,7 +66,7 @@ static char *gdb_completer_command_word_ > break characters any characters that are commonly used in file > names, such as '-', '+', '~', etc. Otherwise, readline displays > incorrect completion candidates. */ > -#ifdef __MSDOS__ > +#if HAVE_DOS_BASED_FILE_SYSTEM > /* MS-DOS and MS-Windows use colon as part of the drive spec, and most > programs support @foo style response files. */ > static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@"; > > --- gdb/defs.h~0 Sat Mar 24 02:00:36 2001 > +++ gdb/defs.h Mon May 7 18:08:48 2001 > @@ -1330,34 +1330,14 @@ extern int use_windows; > #define DIRNAME_SEPARATOR ':' > #endif > > -#ifndef SLASH_P > -#if defined(__GO32__)||defined(_WIN32) > -#define SLASH_P(X) ((X)=='\\') > -#else > -#define SLASH_P(X) ((X)=='/') > -#endif > -#endif > - > -#ifndef SLASH_CHAR > -#if defined(__GO32__)||defined(_WIN32) > -#define SLASH_CHAR '\\' > -#else > -#define SLASH_CHAR '/' > -#endif > -#endif > - > #ifndef SLASH_STRING > -#if defined(__GO32__)||defined(_WIN32) > +#ifdef _WIN32 > #define SLASH_STRING "\\" > #else > #define SLASH_STRING "/" > #endif > #endif > > -#ifndef ROOTED_P > -#define ROOTED_P(X) (SLASH_P((X)[0])) > -#endif > - > /* On some systems, PIDGET is defined to extract the inferior pid from > an internal pid that has the thread id and pid in seperate bit > fields. If not defined, then just use the entire internal pid as > > --- gdb/solib.c~0 Tue Mar 6 10:41:56 2001 > +++ gdb/solib.c Mon May 7 18:11:24 2001 > @@ -39,6 +39,7 @@ > #include "language.h" > #include "gdbcmd.h" > #include "completer.h" > +#include "filenames.h" /* for DOSish file names */ > > #include "solist.h" > > @@ -101,10 +102,14 @@ solib_open (char *in_pathname, char **fo > { > int found_file = -1; > char *temp_pathname = NULL; > + char *p = in_pathname; > > - if (strchr (in_pathname, SLASH_CHAR)) > + while (*p && !IS_DIR_SEPARATOR (*p)) > + p++; > + > + if (*p) > { > - if (! ROOTED_P (in_pathname) || solib_absolute_prefix == NULL) > + if (! IS_ABSOLUTE_PATH (in_pathname) || solib_absolute_prefix == NULL) > temp_pathname = in_pathname; > else > { > @@ -112,7 +117,7 @@ solib_open (char *in_pathname, char **fo > > /* Remove trailing slashes from absolute prefix. */ > while (prefix_len > 0 > - && SLASH_P (solib_absolute_prefix[prefix_len - 1])) > + && IS_DIR_SEPARATOR (solib_absolute_prefix[prefix_len - 1])) > prefix_len--; > > /* Cat the prefixed pathname together. */ > > --- gdb/source.c~0 Tue Mar 27 22:57:04 2001 > +++ gdb/source.c Mon May 7 18:26:20 2001 > @@ -40,6 +40,7 @@ > #include "annotate.h" > #include "gdbtypes.h" > #include "linespec.h" > +#include "filenames.h" /* for DOSish file names */ > #ifdef UI_OUT > #include "ui-out.h" > #endif > @@ -330,12 +331,12 @@ mod_path (char *dirname, char **which_pa > } > } > > - if (!(SLASH_P (*name) && p <= name + 1) /* "/" */ > -#if defined(_WIN32) || defined(__MSDOS__) > + if (!(IS_DIR_SEPARATOR (*name) && p <= name + 1) /* "/" */ > +#if HAVE_DOS_BASED_FILE_SYSTEM > /* On MS-DOS and MS-Windows, h:\ is different from h: */ > - && !(!SLASH_P (*name) && ROOTED_P (name) && p <= name + 3) /* d:/ */ > + && !(p == name + 3 && name[1] == ':') /* "d:/" */ > #endif > - && SLASH_P (p[-1])) > + && IS_DIR_SEPARATOR (p[-1])) > /* Sigh. "foo/" => "foo" */ > --p; > *p = '\0'; > @@ -348,7 +349,7 @@ mod_path (char *dirname, char **which_pa > name = current_directory; > goto append; > } > - else if (p > name + 1 && SLASH_P (p[-2])) > + else if (p > name + 1 && IS_DIR_SEPARATOR (p[-2])) > { > if (p - name == 2) > { > @@ -370,11 +371,11 @@ mod_path (char *dirname, char **which_pa > > if (name[0] == '~') > name = tilde_expand (name); > -#if defined(_WIN32) || defined(__MSDOS__) > - else if (ROOTED_P (name) && p == name + 2) /* "d:" => "d:." */ > +#if HAVE_DOS_BASED_FILE_SYSTEM > + else if (IS_ABSOLUTE_PATH (name) && p == name + 2) /* "d:" => "d:." */ > name = concat (name, ".", NULL); > #endif > - else if (!ROOTED_P (name) && name[0] != '$') > + else if (!IS_ABSOLUTE_PATH (name) && name[0] != '$') > name = concat (current_directory, SLASH_STRING, name, NULL); > else > name = savestring (name, p - name); > @@ -530,7 +531,7 @@ openp (char *path, int try_cwd_first, ch > mode |= O_BINARY; > #endif > > - if (try_cwd_first || ROOTED_P (string)) > + if (try_cwd_first || IS_ABSOLUTE_PATH (string)) > { > int i; > filename = string; > @@ -538,12 +539,12 @@ openp (char *path, int try_cwd_first, ch > if (fd >= 0) > goto done; > for (i = 0; string[i]; i++) > - if (SLASH_P (string[i])) > + if (IS_DIR_SEPARATOR (string[i])) > goto done; > } > > /* ./foo => foo */ > - while (string[0] == '.' && SLASH_P (string[1])) > + while (string[0] == '.' && IS_DIR_SEPARATOR (string[1])) > string += 2; > > alloclen = strlen (path) + strlen (string) + 2; > @@ -581,7 +582,7 @@ openp (char *path, int try_cwd_first, ch > } > > /* Remove trailing slashes */ > - while (len > 0 && SLASH_P (filename[len - 1])) > + while (len > 0 && IS_DIR_SEPARATOR (filename[len - 1])) > filename[--len] = 0; > > strcat (filename + len, SLASH_STRING); > @@ -597,14 +598,14 @@ done: > { > if (fd < 0) > *filename_opened = (char *) 0; > - else if (ROOTED_P (filename)) > + else if (IS_ABSOLUTE_PATH (filename)) > *filename_opened = savestring (filename, strlen (filename)); > else > { > /* Beware the // my son, the Emacs barfs, the botch that catch... */ > > *filename_opened = concat (current_directory, > - SLASH_P (current_directory[strlen (current_directory) - 1]) > + IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1]) > ? "" : SLASH_STRING, > filename, NULL); > } > ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-05-13 1:29 ` Eli Zaretskii @ 2001-05-13 7:09 ` Fernando Nasser 2001-05-13 23:34 ` Eli Zaretskii 0 siblings, 1 reply; 12+ messages in thread From: Fernando Nasser @ 2001-05-13 7:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: gdb-patches Eli Zaretskii wrote: > > > Date: Mon, 7 May 2001 19:10:59 +0300 (IDT) > > From: Eli Zaretskii <eliz@is.elta.co.il> > > > > I'm seeking approval for the following patches. They remove all the > > DOS- and Windows-specific #ifdef's like "#ifdef _WIN32" and use the > > portable macros from filenames.h instead. In addition, they convert > > code which used macros private to GDB, such as SLASH_P and ROOTED_P, > > to use the macros from filenames.h instead. > > Ping! > > I think I still need an approval for patches to source.c, completer.c > and cli-cmds.c (see below). Did I missed some messages? > I looked at completer.c and cli-cmds.c. Approved. Thanks. Fernando > > 2001-05-07 Eli Zaretskii <eliz@is.elta.co.il> > > > > * source.c (mod_path, openp): Use HAVE_DOS_BASED_FILE_SYSTEM > > instead of system-specific define's like _WIN32 and __MSDOS__. > > Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH instead of SLASH_P and > > ROOTED_P. > > (top-level): #include "filenames.h". > > > > * solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH > > instead of SLASH_CHAR, ROOTED_P and SLASH_P. > > (top-level): #include "filenames.h". > > > > * defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions. > > (SLASH_STRING): Define only for _WIN32. > > > > * completer.c: Use HAVE_DOS_BASED_FILE_SYSTEM instead of > > __MSDOS_. > > > > * cli/cli-cmds.c (cd_command): Use IS_DIR_SEPARATOR and > > IS_ABSOLUTE_PATH instead of SLASH_P and ROOTED_P. Replace > > system-specific ifdefs with HAVE_DOS_BASED_FILE_SYSTEM. > > (top-level): #include "filenames.h". > > > > > > --- gdb/cli/cli-cmds.c~0 Thu Mar 29 01:42:22 2001 > > +++ gdb/cli/cli-cmds.c Mon May 7 18:08:40 2001 > > @@ -23,6 +23,7 @@ > > #include "target.h" /* For baud_rate, remote_debug and remote_timeout */ > > #include "gdb_wait.h" /* For shell escape implementation */ > > #include "gnu-regex.h" /* Used by apropos_command */ > > +#include "filenames.h" /* for DOSish file names */ > > > > #ifdef UI_OUT > > #include "ui-out.h" > > @@ -292,7 +293,7 @@ cd_command (char *dir, int from_tty) > > if (chdir (dir) < 0) > > perror_with_name (dir); > > > > -#if defined(_WIN32) || defined(__MSDOS__) > > +#if HAVE_DOS_BASED_FILE_SYSTEM > > /* There's too much mess with DOSish names like "d:", "d:.", > > "d:./foo" etc. Instead of having lots of special #ifdef'ed code, > > simply get the canonicalized name of the current directory. */ > > @@ -300,24 +301,24 @@ cd_command (char *dir, int from_tty) > > #endif > > > > len = strlen (dir); > > - if (SLASH_P (dir[len - 1])) > > + if (IS_DIR_SEPARATOR (dir[len - 1])) > > { > > /* Remove the trailing slash unless this is a root directory > > (including a drive letter on non-Unix systems). */ > > if (!(len == 1) /* "/" */ > > -#if defined(_WIN32) || defined(__MSDOS__) > > - && !(!SLASH_P (*dir) && ROOTED_P (dir) && len <= 3) /* "d:/" */ > > +#if HAVE_DOS_BASED_FILE_SYSTEM > > + && !(len == 3 && dir[1] == ':') /* "d:/" */ > > #endif > > ) > > len--; > > } > > > > dir = savestring (dir, len); > > - if (ROOTED_P (dir)) > > + if (IS_ABSOLUTE_PATH (dir)) > > current_directory = dir; > > else > > { > > - if (SLASH_P (current_directory[strlen (current_directory) - 1])) > > + if (IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])) > > current_directory = concat (current_directory, dir, NULL); > > else > > current_directory = concat (current_directory, SLASH_STRING, dir, NULL); > > @@ -329,17 +330,18 @@ cd_command (char *dir, int from_tty) > > found_real_path = 0; > > for (p = current_directory; *p;) > > { > > - if (SLASH_P (p[0]) && p[1] == '.' && (p[2] == 0 || SLASH_P (p[2]))) > > + if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' > > + && (p[2] == 0 || IS_DIR_SEPARATOR (p[2]))) > > strcpy (p, p + 2); > > - else if (SLASH_P (p[0]) && p[1] == '.' && p[2] == '.' > > - && (p[3] == 0 || SLASH_P (p[3]))) > > + else if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' && p[2] == '.' > > + && (p[3] == 0 || IS_DIR_SEPARATOR (p[3]))) > > { > > if (found_real_path) > > { > > /* Search backwards for the directory just before the "/.." > > and obliterate it and the "/..". */ > > char *q = p; > > - while (q != current_directory && !SLASH_P (q[-1])) > > + while (q != current_directory && !IS_DIR_SEPARATOR (q[-1])) > > --q; > > > > if (q == current_directory) > > > > --- gdb/completer.c~5 Sun May 6 13:10:30 2001 > > +++ gdb/completer.c Mon May 7 17:21:02 2001 > > @@ -66,7 +66,7 @@ static char *gdb_completer_command_word_ > > break characters any characters that are commonly used in file > > names, such as '-', '+', '~', etc. Otherwise, readline displays > > incorrect completion candidates. */ > > -#ifdef __MSDOS__ > > +#if HAVE_DOS_BASED_FILE_SYSTEM > > /* MS-DOS and MS-Windows use colon as part of the drive spec, and most > > programs support @foo style response files. */ > > static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@"; > > > > --- gdb/defs.h~0 Sat Mar 24 02:00:36 2001 > > +++ gdb/defs.h Mon May 7 18:08:48 2001 > > @@ -1330,34 +1330,14 @@ extern int use_windows; > > #define DIRNAME_SEPARATOR ':' > > #endif > > > > -#ifndef SLASH_P > > -#if defined(__GO32__)||defined(_WIN32) > > -#define SLASH_P(X) ((X)=='\\') > > -#else > > -#define SLASH_P(X) ((X)=='/') > > -#endif > > -#endif > > - > > -#ifndef SLASH_CHAR > > -#if defined(__GO32__)||defined(_WIN32) > > -#define SLASH_CHAR '\\' > > -#else > > -#define SLASH_CHAR '/' > > -#endif > > -#endif > > - > > #ifndef SLASH_STRING > > -#if defined(__GO32__)||defined(_WIN32) > > +#ifdef _WIN32 > > #define SLASH_STRING "\\" > > #else > > #define SLASH_STRING "/" > > #endif > > #endif > > > > -#ifndef ROOTED_P > > -#define ROOTED_P(X) (SLASH_P((X)[0])) > > -#endif > > - > > /* On some systems, PIDGET is defined to extract the inferior pid from > > an internal pid that has the thread id and pid in seperate bit > > fields. If not defined, then just use the entire internal pid as > > > > --- gdb/solib.c~0 Tue Mar 6 10:41:56 2001 > > +++ gdb/solib.c Mon May 7 18:11:24 2001 > > @@ -39,6 +39,7 @@ > > #include "language.h" > > #include "gdbcmd.h" > > #include "completer.h" > > +#include "filenames.h" /* for DOSish file names */ > > > > #include "solist.h" > > > > @@ -101,10 +102,14 @@ solib_open (char *in_pathname, char **fo > > { > > int found_file = -1; > > char *temp_pathname = NULL; > > + char *p = in_pathname; > > > > - if (strchr (in_pathname, SLASH_CHAR)) > > + while (*p && !IS_DIR_SEPARATOR (*p)) > > + p++; > > + > > + if (*p) > > { > > - if (! ROOTED_P (in_pathname) || solib_absolute_prefix == NULL) > > + if (! IS_ABSOLUTE_PATH (in_pathname) || solib_absolute_prefix == NULL) > > temp_pathname = in_pathname; > > else > > { > > @@ -112,7 +117,7 @@ solib_open (char *in_pathname, char **fo > > > > /* Remove trailing slashes from absolute prefix. */ > > while (prefix_len > 0 > > - && SLASH_P (solib_absolute_prefix[prefix_len - 1])) > > + && IS_DIR_SEPARATOR (solib_absolute_prefix[prefix_len - 1])) > > prefix_len--; > > > > /* Cat the prefixed pathname together. */ > > > > --- gdb/source.c~0 Tue Mar 27 22:57:04 2001 > > +++ gdb/source.c Mon May 7 18:26:20 2001 > > @@ -40,6 +40,7 @@ > > #include "annotate.h" > > #include "gdbtypes.h" > > #include "linespec.h" > > +#include "filenames.h" /* for DOSish file names */ > > #ifdef UI_OUT > > #include "ui-out.h" > > #endif > > @@ -330,12 +331,12 @@ mod_path (char *dirname, char **which_pa > > } > > } > > > > - if (!(SLASH_P (*name) && p <= name + 1) /* "/" */ > > -#if defined(_WIN32) || defined(__MSDOS__) > > + if (!(IS_DIR_SEPARATOR (*name) && p <= name + 1) /* "/" */ > > +#if HAVE_DOS_BASED_FILE_SYSTEM > > /* On MS-DOS and MS-Windows, h:\ is different from h: */ > > - && !(!SLASH_P (*name) && ROOTED_P (name) && p <= name + 3) /* d:/ */ > > + && !(p == name + 3 && name[1] == ':') /* "d:/" */ > > #endif > > - && SLASH_P (p[-1])) > > + && IS_DIR_SEPARATOR (p[-1])) > > /* Sigh. "foo/" => "foo" */ > > --p; > > *p = '\0'; > > @@ -348,7 +349,7 @@ mod_path (char *dirname, char **which_pa > > name = current_directory; > > goto append; > > } > > - else if (p > name + 1 && SLASH_P (p[-2])) > > + else if (p > name + 1 && IS_DIR_SEPARATOR (p[-2])) > > { > > if (p - name == 2) > > { > > @@ -370,11 +371,11 @@ mod_path (char *dirname, char **which_pa > > > > if (name[0] == '~') > > name = tilde_expand (name); > > -#if defined(_WIN32) || defined(__MSDOS__) > > - else if (ROOTED_P (name) && p == name + 2) /* "d:" => "d:." */ > > +#if HAVE_DOS_BASED_FILE_SYSTEM > > + else if (IS_ABSOLUTE_PATH (name) && p == name + 2) /* "d:" => "d:." */ > > name = concat (name, ".", NULL); > > #endif > > - else if (!ROOTED_P (name) && name[0] != '$') > > + else if (!IS_ABSOLUTE_PATH (name) && name[0] != '$') > > name = concat (current_directory, SLASH_STRING, name, NULL); > > else > > name = savestring (name, p - name); > > @@ -530,7 +531,7 @@ openp (char *path, int try_cwd_first, ch > > mode |= O_BINARY; > > #endif > > > > - if (try_cwd_first || ROOTED_P (string)) > > + if (try_cwd_first || IS_ABSOLUTE_PATH (string)) > > { > > int i; > > filename = string; > > @@ -538,12 +539,12 @@ openp (char *path, int try_cwd_first, ch > > if (fd >= 0) > > goto done; > > for (i = 0; string[i]; i++) > > - if (SLASH_P (string[i])) > > + if (IS_DIR_SEPARATOR (string[i])) > > goto done; > > } > > > > /* ./foo => foo */ > > - while (string[0] == '.' && SLASH_P (string[1])) > > + while (string[0] == '.' && IS_DIR_SEPARATOR (string[1])) > > string += 2; > > > > alloclen = strlen (path) + strlen (string) + 2; > > @@ -581,7 +582,7 @@ openp (char *path, int try_cwd_first, ch > > } > > > > /* Remove trailing slashes */ > > - while (len > 0 && SLASH_P (filename[len - 1])) > > + while (len > 0 && IS_DIR_SEPARATOR (filename[len - 1])) > > filename[--len] = 0; > > > > strcat (filename + len, SLASH_STRING); > > @@ -597,14 +598,14 @@ done: > > { > > if (fd < 0) > > *filename_opened = (char *) 0; > > - else if (ROOTED_P (filename)) > > + else if (IS_ABSOLUTE_PATH (filename)) > > *filename_opened = savestring (filename, strlen (filename)); > > else > > { > > /* Beware the // my son, the Emacs barfs, the botch that catch... */ > > > > *filename_opened = concat (current_directory, > > - SLASH_P (current_directory[strlen (current_directory) - 1]) > > + IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1]) > > ? "" : SLASH_STRING, > > filename, NULL); > > } > > -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-05-13 7:09 ` Fernando Nasser @ 2001-05-13 23:34 ` Eli Zaretskii 2001-05-14 13:18 ` Andrew Cagney 0 siblings, 1 reply; 12+ messages in thread From: Eli Zaretskii @ 2001-05-13 23:34 UTC (permalink / raw) To: fnasser; +Cc: gdb-patches > Date: Sun, 13 May 2001 10:07:00 -0400 > From: Fernando Nasser <fnasser@redhat.com> > > Eli Zaretskii wrote: > > > > > Date: Mon, 7 May 2001 19:10:59 +0300 (IDT) > > > From: Eli Zaretskii <eliz@is.elta.co.il> > > > > > > I'm seeking approval for the following patches. They remove all the > > > DOS- and Windows-specific #ifdef's like "#ifdef _WIN32" and use the > > > portable macros from filenames.h instead. In addition, they convert > > > code which used macros private to GDB, such as SLASH_P and ROOTED_P, > > > to use the macros from filenames.h instead. > > > > Ping! > > > > I think I still need an approval for patches to source.c, completer.c > > and cli-cmds.c (see below). Did I missed some messages? > > > > I looked at completer.c and cli-cmds.c. Approved. Thanks! Who is the responsible maintainer of source.c? I cannot figure that out from MAINTAINERS. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-05-13 23:34 ` Eli Zaretskii @ 2001-05-14 13:18 ` Andrew Cagney 2001-06-04 0:46 ` Eli Zaretskii 0 siblings, 1 reply; 12+ messages in thread From: Andrew Cagney @ 2001-05-14 13:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: fnasser, gdb-patches > I looked at completer.c and cli-cmds.c. Approved. > > > Thanks! > > Who is the responsible maintainer of source.c? I cannot figure that > out from MAINTAINERS. FYI, I've been working on the assumption that everyone has decided this change is obvious. enjoy, and thanks for cleaning these out. Andrew ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-05-14 13:18 ` Andrew Cagney @ 2001-06-04 0:46 ` Eli Zaretskii 0 siblings, 0 replies; 12+ messages in thread From: Eli Zaretskii @ 2001-06-04 0:46 UTC (permalink / raw) To: Andrew Cagney; +Cc: fnasser, gdb-patches On Mon, 14 May 2001, Andrew Cagney wrote: > > I looked at completer.c and cli-cmds.c. Approved. > > > > > > Thanks! > > > > Who is the responsible maintainer of source.c? I cannot figure that > > out from MAINTAINERS. > > > FYI, I've been working on the assumption that everyone has decided this > change is obvious. Commited (sorry for a long delay). ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [RFA] Remove OS-specific defines (was: _WIN32?)
@ 2001-05-07 11:36 David Taylor
2001-05-08 0:12 ` Eli Zaretskii
0 siblings, 1 reply; 12+ messages in thread
From: David Taylor @ 2001-05-07 11:36 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: ac131313, danny_r_smith_2001, gdb, mingw-users, gdb-patches
Date: Mon, 7 May 2001 19:10:59 +0300 (IDT)
From: Eli Zaretskii <eliz@is.elta.co.il>
I'm seeking approval for the following patches. They remove all the
DOS- and Windows-specific #ifdef's like "#ifdef _WIN32" and use the
portable macros from filenames.h instead. In addition, they convert
code which used macros private to GDB, such as SLASH_P and ROOTED_P,
to use the macros from filenames.h instead.
I was surprised that you sent this to gdb rather than gdb-patches. I
added gdb-patches to the cc list.
2001-05-07 Eli Zaretskii <eliz@is.elta.co.il>
* source.c (mod_path, openp): Use HAVE_DOS_BASED_FILE_SYSTEM
instead of system-specific define's like _WIN32 and __MSDOS__.
Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH instead of SLASH_P and
ROOTED_P.
(top-level): #include "filenames.h".
* solib.c (solib_open): Use IS_DIR_SEPARATOR and IS_ABSOLUTE_PATH
instead of SLASH_CHAR, ROOTED_P and SLASH_P.
(top-level): #include "filenames.h".
* defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions.
(SLASH_STRING): Define only for _WIN32.
The defs.h part of this patch is approved.
* completer.c: Use HAVE_DOS_BASED_FILE_SYSTEM instead of
__MSDOS_.
* cli/cli-cmds.c (cd_command): Use IS_DIR_SEPARATOR and
IS_ABSOLUTE_PATH instead of SLASH_P and ROOTED_P. Replace
system-specific ifdefs with HAVE_DOS_BASED_FILE_SYSTEM.
(top-level): #include "filenames.h".
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [RFA] Remove OS-specific defines (was: _WIN32?) 2001-05-07 11:36 David Taylor @ 2001-05-08 0:12 ` Eli Zaretskii 0 siblings, 0 replies; 12+ messages in thread From: Eli Zaretskii @ 2001-05-08 0:12 UTC (permalink / raw) To: David Taylor; +Cc: ac131313, danny_r_smith_2001, mingw-users, gdb-patches On Mon, 7 May 2001, David Taylor wrote: > I was surprised that you sent this to gdb rather than gdb-patches. My bad, sorry. > * defs.h (SLASH_P, SLASH_CHAR, ROOTED_P): Remove definitions. > (SLASH_STRING): Define only for _WIN32. > > The defs.h part of this patch is approved. Thanks. ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2001-06-13 2:08 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <3AF6EB58.1020904@cygnus.com>
2001-05-10 3:31 ` [RFA] Remove OS-specific defines (was: _WIN32?) Eli Zaretskii
[not found] <20010503211502.21716.qmail@web6401.mail.yahoo.com>
[not found] ` <3AF1DAA0.3060702@cygnus.com>
[not found] ` <200105071610.TAA24144@is.elta.co.il>
[not found] ` <1010507173855.ZM18890@ocotillo.lan>
2001-05-07 11:24 ` Eli Zaretskii
2001-06-10 6:28 ` Eli Zaretskii
2001-06-12 17:14 ` Christopher Faylor
2001-06-13 2:08 ` Eli Zaretskii
2001-05-13 1:29 ` Eli Zaretskii
2001-05-13 7:09 ` Fernando Nasser
2001-05-13 23:34 ` Eli Zaretskii
2001-05-14 13:18 ` Andrew Cagney
2001-06-04 0:46 ` Eli Zaretskii
2001-05-07 11:36 David Taylor
2001-05-08 0:12 ` Eli Zaretskii
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox