This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[RFA] add dos drive support to include/filenames.h
- From: dje at google dot com (Doug Evans)
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 13 Apr 2010 09:48:37 -0700 (PDT)
- Subject: [RFA] add dos drive support to include/filenames.h
Hi.
In GDB we need to be able to strip the drive letter from a path.
This patch provides the support to do so.
Ok to check in?
2010-04-12 Doug Evans <dje@google.com>
* filenames.h (HAVE_DRIVE_SPEC, STRIP_DRIVE_SPEC): New macros.
Index: filenames.h
===================================================================
RCS file: /cvs/src/src/include/filenames.h,v
retrieving revision 1.5
diff -u -p -r1.5 filenames.h
--- filenames.h 21 Mar 2008 23:40:18 -0000 1.5
+++ filenames.h 12 Apr 2010 17:19:32 -0000
@@ -5,7 +5,7 @@
use forward- and back-slash in path names interchangeably, and
some of them have case-insensitive file names.
- Copyright 2000, 2001, 2007 Free Software Foundation, Inc.
+ Copyright 2000, 2001, 2007, 2010 Free Software Foundation, Inc.
This file is part of BFD, the Binary File Descriptor library.
@@ -37,17 +37,27 @@ extern "C" {
#endif
#define IS_DIR_SEPARATOR(c) ((c) == '/' || (c) == '\\')
+
+#define HAVE_DRIVE_SPEC(f) (((f)[0]) && ((f)[1] == ':'))
+
+/* Remove the drive spec from F, assuming HAVE_DRIVE_SPEC (f).
+ The result is a pointer to the remainder of F. */
+#define STRIP_DRIVE_SPEC(f) ((f) + 2)
+
/* Note that IS_ABSOLUTE_PATH accepts d:foo as well, although it is
only semi-absolute. This is because the users of IS_ABSOLUTE_PATH
want to know whether to prepend the current working directory to
a file name, which should not be done with a name like d:foo. */
-#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || (((f)[0]) && ((f)[1] == ':')))
+#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]) || HAVE_DRIVE_SPEC(f))
#else /* not DOSish */
#define IS_DIR_SEPARATOR(c) ((c) == '/')
#define IS_ABSOLUTE_PATH(f) (IS_DIR_SEPARATOR((f)[0]))
+#define HAVE_DRIVE_SPEC(f) (0)
+#define STRIP_DRIVE_SPEC(f) (f)
+
#endif /* not DOSish */
extern int filename_cmp (const char *s1, const char *s2);