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

Eli Zaretskii eliz@is.elta.co.il
Sun May 13 01:29:00 GMT 2001


> 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);
>  	}
> 



More information about the Gdb-patches mailing list