Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* 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 [RFA] Remove OS-specific defines (was: _WIN32?) 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

* 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?)
  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?)
       [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-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-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-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  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?)
       [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?)
       [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

* 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

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 --
2001-05-07 11:36 [RFA] Remove OS-specific defines (was: _WIN32?) David Taylor
2001-05-08  0:12 ` Eli Zaretskii
     [not found] <3AF6EB58.1020904@cygnus.com>
2001-05-10  3:31 ` 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox