This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: [RFA] Remove OS-specific defines (was: _WIN32?)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]