* 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".
This commit is contained in:
parent
37ba1196cf
commit
fe4e3eb861
6 changed files with 58 additions and 49 deletions
|
@ -1,5 +1,26 @@
|
||||||
2001-06-04 Eli Zaretskii <eliz@is.elta.co.il>
|
2001-06-04 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".
|
||||||
|
|
||||||
* go32-nat.c (go32_wait): Change the return value to ptid_t.
|
* go32-nat.c (go32_wait): Change the return value to ptid_t.
|
||||||
|
|
||||||
* config/djgpp/fnchange.lst: Add two new files in the
|
* config/djgpp/fnchange.lst: Add two new files in the
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include "target.h" /* For baud_rate, remote_debug and remote_timeout */
|
#include "target.h" /* For baud_rate, remote_debug and remote_timeout */
|
||||||
#include "gdb_wait.h" /* For shell escape implementation */
|
#include "gdb_wait.h" /* For shell escape implementation */
|
||||||
#include "gnu-regex.h" /* Used by apropos_command */
|
#include "gnu-regex.h" /* Used by apropos_command */
|
||||||
|
#include "filenames.h" /* for DOSish file names */
|
||||||
|
|
||||||
#ifdef UI_OUT
|
#ifdef UI_OUT
|
||||||
#include "ui-out.h"
|
#include "ui-out.h"
|
||||||
|
@ -292,7 +293,7 @@ cd_command (char *dir, int from_tty)
|
||||||
if (chdir (dir) < 0)
|
if (chdir (dir) < 0)
|
||||||
perror_with_name (dir);
|
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:.",
|
/* There's too much mess with DOSish names like "d:", "d:.",
|
||||||
"d:./foo" etc. Instead of having lots of special #ifdef'ed code,
|
"d:./foo" etc. Instead of having lots of special #ifdef'ed code,
|
||||||
simply get the canonicalized name of the current directory. */
|
simply get the canonicalized name of the current directory. */
|
||||||
|
@ -300,24 +301,24 @@ cd_command (char *dir, int from_tty)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
len = strlen (dir);
|
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
|
/* Remove the trailing slash unless this is a root directory
|
||||||
(including a drive letter on non-Unix systems). */
|
(including a drive letter on non-Unix systems). */
|
||||||
if (!(len == 1) /* "/" */
|
if (!(len == 1) /* "/" */
|
||||||
#if defined(_WIN32) || defined(__MSDOS__)
|
#if HAVE_DOS_BASED_FILE_SYSTEM
|
||||||
&& !(!SLASH_P (*dir) && ROOTED_P (dir) && len <= 3) /* "d:/" */
|
&& !(len == 3 && dir[1] == ':') /* "d:/" */
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
len--;
|
len--;
|
||||||
}
|
}
|
||||||
|
|
||||||
dir = savestring (dir, len);
|
dir = savestring (dir, len);
|
||||||
if (ROOTED_P (dir))
|
if (IS_ABSOLUTE_PATH (dir))
|
||||||
current_directory = dir;
|
current_directory = dir;
|
||||||
else
|
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);
|
current_directory = concat (current_directory, dir, NULL);
|
||||||
else
|
else
|
||||||
current_directory = concat (current_directory, SLASH_STRING, dir, NULL);
|
current_directory = concat (current_directory, SLASH_STRING, dir, NULL);
|
||||||
|
@ -329,17 +330,18 @@ cd_command (char *dir, int from_tty)
|
||||||
found_real_path = 0;
|
found_real_path = 0;
|
||||||
for (p = current_directory; *p;)
|
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);
|
strcpy (p, p + 2);
|
||||||
else if (SLASH_P (p[0]) && p[1] == '.' && p[2] == '.'
|
else if (IS_DIR_SEPARATOR (p[0]) && p[1] == '.' && p[2] == '.'
|
||||||
&& (p[3] == 0 || SLASH_P (p[3])))
|
&& (p[3] == 0 || IS_DIR_SEPARATOR (p[3])))
|
||||||
{
|
{
|
||||||
if (found_real_path)
|
if (found_real_path)
|
||||||
{
|
{
|
||||||
/* Search backwards for the directory just before the "/.."
|
/* Search backwards for the directory just before the "/.."
|
||||||
and obliterate it and the "/..". */
|
and obliterate it and the "/..". */
|
||||||
char *q = p;
|
char *q = p;
|
||||||
while (q != current_directory && !SLASH_P (q[-1]))
|
while (q != current_directory && !IS_DIR_SEPARATOR (q[-1]))
|
||||||
--q;
|
--q;
|
||||||
|
|
||||||
if (q == current_directory)
|
if (q == current_directory)
|
||||||
|
|
|
@ -64,7 +64,7 @@ static char *gdb_completer_command_word_break_characters =
|
||||||
break characters any characters that are commonly used in file
|
break characters any characters that are commonly used in file
|
||||||
names, such as '-', '+', '~', etc. Otherwise, readline displays
|
names, such as '-', '+', '~', etc. Otherwise, readline displays
|
||||||
incorrect completion candidates. */
|
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
|
/* MS-DOS and MS-Windows use colon as part of the drive spec, and most
|
||||||
programs support @foo style response files. */
|
programs support @foo style response files. */
|
||||||
static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@";
|
static char *gdb_completer_file_name_break_characters = " \t\n*|\"';?><@";
|
||||||
|
|
22
gdb/defs.h
22
gdb/defs.h
|
@ -1364,34 +1364,14 @@ extern int use_windows;
|
||||||
#define DIRNAME_SEPARATOR ':'
|
#define DIRNAME_SEPARATOR ':'
|
||||||
#endif
|
#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
|
#ifndef SLASH_STRING
|
||||||
#if defined(__GO32__)||defined(_WIN32)
|
#ifdef _WIN32
|
||||||
#define SLASH_STRING "\\"
|
#define SLASH_STRING "\\"
|
||||||
#else
|
#else
|
||||||
#define SLASH_STRING "/"
|
#define SLASH_STRING "/"
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ROOTED_P
|
|
||||||
#define ROOTED_P(X) (SLASH_P((X)[0]))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
|
/* Provide default definitions of PIDGET, TIDGET, and MERGEPID.
|
||||||
The name ``TIDGET'' is a historical accident. Many uses of TIDGET
|
The name ``TIDGET'' is a historical accident. Many uses of TIDGET
|
||||||
in the code actually refer to a lightweight process id, i.e,
|
in the code actually refer to a lightweight process id, i.e,
|
||||||
|
|
11
gdb/solib.c
11
gdb/solib.c
|
@ -39,6 +39,7 @@
|
||||||
#include "language.h"
|
#include "language.h"
|
||||||
#include "gdbcmd.h"
|
#include "gdbcmd.h"
|
||||||
#include "completer.h"
|
#include "completer.h"
|
||||||
|
#include "filenames.h" /* for DOSish file names */
|
||||||
|
|
||||||
#include "solist.h"
|
#include "solist.h"
|
||||||
|
|
||||||
|
@ -101,10 +102,14 @@ solib_open (char *in_pathname, char **found_pathname)
|
||||||
{
|
{
|
||||||
int found_file = -1;
|
int found_file = -1;
|
||||||
char *temp_pathname = NULL;
|
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;
|
temp_pathname = in_pathname;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -112,7 +117,7 @@ solib_open (char *in_pathname, char **found_pathname)
|
||||||
|
|
||||||
/* Remove trailing slashes from absolute prefix. */
|
/* Remove trailing slashes from absolute prefix. */
|
||||||
while (prefix_len > 0
|
while (prefix_len > 0
|
||||||
&& SLASH_P (solib_absolute_prefix[prefix_len - 1]))
|
&& IS_DIR_SEPARATOR (solib_absolute_prefix[prefix_len - 1]))
|
||||||
prefix_len--;
|
prefix_len--;
|
||||||
|
|
||||||
/* Cat the prefixed pathname together. */
|
/* Cat the prefixed pathname together. */
|
||||||
|
|
29
gdb/source.c
29
gdb/source.c
|
@ -40,6 +40,7 @@
|
||||||
#include "annotate.h"
|
#include "annotate.h"
|
||||||
#include "gdbtypes.h"
|
#include "gdbtypes.h"
|
||||||
#include "linespec.h"
|
#include "linespec.h"
|
||||||
|
#include "filenames.h" /* for DOSish file names */
|
||||||
#ifdef UI_OUT
|
#ifdef UI_OUT
|
||||||
#include "ui-out.h"
|
#include "ui-out.h"
|
||||||
#endif
|
#endif
|
||||||
|
@ -330,12 +331,12 @@ mod_path (char *dirname, char **which_path)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(SLASH_P (*name) && p <= name + 1) /* "/" */
|
if (!(IS_DIR_SEPARATOR (*name) && p <= name + 1) /* "/" */
|
||||||
#if defined(_WIN32) || defined(__MSDOS__) || defined(__CYGWIN__)
|
#if HAVE_DOS_BASED_FILE_SYSTEM
|
||||||
/* On MS-DOS and MS-Windows, h:\ is different from h: */
|
/* 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
|
#endif
|
||||||
&& SLASH_P (p[-1]))
|
&& IS_DIR_SEPARATOR (p[-1]))
|
||||||
/* Sigh. "foo/" => "foo" */
|
/* Sigh. "foo/" => "foo" */
|
||||||
--p;
|
--p;
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
@ -348,7 +349,7 @@ mod_path (char *dirname, char **which_path)
|
||||||
name = current_directory;
|
name = current_directory;
|
||||||
goto append;
|
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)
|
if (p - name == 2)
|
||||||
{
|
{
|
||||||
|
@ -370,11 +371,11 @@ mod_path (char *dirname, char **which_path)
|
||||||
|
|
||||||
if (name[0] == '~')
|
if (name[0] == '~')
|
||||||
name = tilde_expand (name);
|
name = tilde_expand (name);
|
||||||
#if defined(_WIN32) || defined(__MSDOS__) || defined(__CYGWIN__)
|
#if HAVE_DOS_BASED_FILE_SYSTEM
|
||||||
else if (ROOTED_P (name) && p == name + 2) /* "d:" => "d:." */
|
else if (IS_ABSOLUTE_PATH (name) && p == name + 2) /* "d:" => "d:." */
|
||||||
name = concat (name, ".", NULL);
|
name = concat (name, ".", NULL);
|
||||||
#endif
|
#endif
|
||||||
else if (!ROOTED_P (name) && name[0] != '$')
|
else if (!IS_ABSOLUTE_PATH (name) && name[0] != '$')
|
||||||
name = concat (current_directory, SLASH_STRING, name, NULL);
|
name = concat (current_directory, SLASH_STRING, name, NULL);
|
||||||
else
|
else
|
||||||
name = savestring (name, p - name);
|
name = savestring (name, p - name);
|
||||||
|
@ -530,7 +531,7 @@ openp (char *path, int try_cwd_first, char *string, int mode, int prot,
|
||||||
mode |= O_BINARY;
|
mode |= O_BINARY;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (try_cwd_first || ROOTED_P (string))
|
if (try_cwd_first || IS_ABSOLUTE_PATH (string))
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
filename = string;
|
filename = string;
|
||||||
|
@ -538,12 +539,12 @@ openp (char *path, int try_cwd_first, char *string, int mode, int prot,
|
||||||
if (fd >= 0)
|
if (fd >= 0)
|
||||||
goto done;
|
goto done;
|
||||||
for (i = 0; string[i]; i++)
|
for (i = 0; string[i]; i++)
|
||||||
if (SLASH_P (string[i]))
|
if (IS_DIR_SEPARATOR (string[i]))
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ./foo => foo */
|
/* ./foo => foo */
|
||||||
while (string[0] == '.' && SLASH_P (string[1]))
|
while (string[0] == '.' && IS_DIR_SEPARATOR (string[1]))
|
||||||
string += 2;
|
string += 2;
|
||||||
|
|
||||||
alloclen = strlen (path) + strlen (string) + 2;
|
alloclen = strlen (path) + strlen (string) + 2;
|
||||||
|
@ -581,7 +582,7 @@ openp (char *path, int try_cwd_first, char *string, int mode, int prot,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove trailing slashes */
|
/* Remove trailing slashes */
|
||||||
while (len > 0 && SLASH_P (filename[len - 1]))
|
while (len > 0 && IS_DIR_SEPARATOR (filename[len - 1]))
|
||||||
filename[--len] = 0;
|
filename[--len] = 0;
|
||||||
|
|
||||||
strcat (filename + len, SLASH_STRING);
|
strcat (filename + len, SLASH_STRING);
|
||||||
|
@ -597,14 +598,14 @@ done:
|
||||||
{
|
{
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
*filename_opened = (char *) 0;
|
*filename_opened = (char *) 0;
|
||||||
else if (ROOTED_P (filename))
|
else if (IS_ABSOLUTE_PATH (filename))
|
||||||
*filename_opened = savestring (filename, strlen (filename));
|
*filename_opened = savestring (filename, strlen (filename));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Beware the // my son, the Emacs barfs, the botch that catch... */
|
/* Beware the // my son, the Emacs barfs, the botch that catch... */
|
||||||
|
|
||||||
*filename_opened = concat (current_directory,
|
*filename_opened = concat (current_directory,
|
||||||
SLASH_P (current_directory[strlen (current_directory) - 1])
|
IS_DIR_SEPARATOR (current_directory[strlen (current_directory) - 1])
|
||||||
? "" : SLASH_STRING,
|
? "" : SLASH_STRING,
|
||||||
filename, NULL);
|
filename, NULL);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue