Hi,

I update the patch and put those new function into a separate file.

ChangeLog include/

2011-03-08  Kai Tietz

        * filenames.h (filename_dirchr): New prototype.
        (filename_dirrchr): Likewise.

ChangeLog libiberty/

2011-03-08  Kai Tietz

        * filename_chr.c: New file.
        * Makefile.in (CFILES): Add filename_chr.c file.
        (REQUIRED_OFILES): Add filename_chr.o
        (filename_chr.o): New rule.
        * functions.texi: Regenerated.

Tested for x86_64-pc-linux-gnu and x86_64-w64-mingw32. Ok for apply?

Regards,
Kai
Index: gcc/include/filenames.h
===================================================================
--- gcc.orig/include/filenames.h        2011-02-28 19:16:35.000000000 +0100
+++ gcc/include/filenames.h     2011-03-08 11:11:10.909109700 +0100
@@ -75,6 +75,8 @@ extern int filename_cmp (const char *s1,
 
 extern int filename_ncmp (const char *s1, const char *s2,
                          size_t n);
+extern char *filename_dirchr (const char *p);
+extern char *filename_dirrchr (const char *p);
 
 #ifdef __cplusplus
 }
Index: gcc/libiberty/functions.texi
===================================================================
--- gcc.orig/libiberty/functions.texi   2011-02-28 19:16:35.000000000 +0100
+++ gcc/libiberty/functions.texi        2011-03-08 16:02:12.147905400 +0100
@@ -296,6 +296,30 @@ and backward slashes are equal.
 
 @end deftypefn
 
+@c filename_chr.c:32
+@deftypefn Extension int filename_dirchr (const char *@var{p})
+
+The returned value is similar to what @code{strchr} would return for
+searching for a directory separator.
+
+This function does not normalize file name.  However, it does handle
+the fact that on DOS-like file systems, forward and backward slashes
+are directory separators.
+
+@end deftypefn
+
+@c filename_chr.c:65
+@deftypefn Extension int filename_dirrchr (const char *@var{p})
+
+The returned value is similar to what @code{strrchr} would return for
+searching for a directory separator.
+
+This function does not normalize file name.  However, it does handle
+the fact that on DOS-like file systems, forward and backward slashes
+are directory separators.
+
+@end deftypefn
+
 @c filename_cmp.c:81
 @deftypefn Extension int filename_ncmp (const char *@var{s1}, const char 
*@var{s2}, size_t @var{n})
 
Index: gcc/libiberty/Makefile.in
===================================================================
--- gcc.orig/libiberty/Makefile.in      2010-11-21 14:28:05.000000000 +0100
+++ gcc/libiberty/Makefile.in   2011-03-08 16:01:09.254418900 +0100
@@ -127,8 +127,8 @@ CFILES = alloca.c argv.c asprintf.c atex
        calloc.c choose-temp.c clock.c concat.c cp-demangle.c           \
         cp-demint.c cplus-dem.c crc32.c                                \
        dyn-string.c                                                    \
-       fdmatch.c ffs.c fibheap.c filename_cmp.c floatformat.c          \
-       fnmatch.c fopen_unlocked.c                                      \
+       fdmatch.c ffs.c fibheap.c filename_cmp.c filename_chr.c         \
+       floatformat.c fnmatch.c fopen_unlocked.c                        \
        getcwd.c getopt.c getopt1.c getpagesize.c getpwd.c getruntime.c \
          gettimeofday.c                                                 \
        hashtab.c hex.c                                                 \
@@ -168,7 +168,8 @@ REQUIRED_OFILES =                                           
        \
        ./choose-temp.$(objext) ./concat.$(objext)                      \
        ./cp-demint.$(objext) ./crc32.$(objext) ./dyn-string.$(objext)  \
        ./fdmatch.$(objext) ./fibheap.$(objext)                         \
-       ./filename_cmp.$(objext) ./floatformat.$(objext)                \
+       ./filename_cmp.$(objext) ./filename_chr.$(objext)               \
+       ./floatformat.$(objext)                                         \
        ./fnmatch.$(objext) ./fopen_unlocked.$(objext)                  \
        ./getopt.$(objext) ./getopt1.$(objext) ./getpwd.$(objext)       \
        ./getruntime.$(objext) ./hashtab.$(objext) ./hex.$(objext)      \
@@ -653,6 +654,13 @@ $(CONFIGURED_OFILES): stamp-picdir
        else true; fi
        $(COMPILE.c) $(srcdir)/filename_cmp.c $(OUTPUT_OPTION)
 
+./filename_chr.$(objext): $(srcdir)/filename_chr.c config.h 
$(INCDIR)/filenames.h \
+       $(INCDIR)/safe-ctype.h
+       if [ x"$(PICFLAG)" != x ]; then \
+         $(COMPILE.c) $(PICFLAG) $(srcdir)/filename_chr.c -o pic/$@; \
+       else true; fi
+       $(COMPILE.c) $(srcdir)/filename_chr.c $(OUTPUT_OPTION)
+
 ./floatformat.$(objext): $(srcdir)/floatformat.c config.h $(INCDIR)/ansidecl.h 
\
        $(INCDIR)/floatformat.h $(INCDIR)/libiberty.h
        if [ x"$(PICFLAG)" != x ]; then \
Index: gcc/libiberty/filename_chr.c
===================================================================
--- /dev/null   1970-01-01 00:00:00.000000000 +0000
+++ gcc/libiberty/filename_chr.c        2011-03-08 15:55:30.844446300 +0100
@@ -0,0 +1,95 @@
+/* File name comparison routine.
+
+   Copyright (C) 2011 Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software Foundation,
+   Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#ifdef HAVE_STRING_H
+#include <string.h>
+#endif
+
+#include "filenames.h"
+#include "safe-ctype.h"
+
+/*
+
+@deftypefn Extension int filename_dirchr (const char *@var{p})
+
+The returned value is similar to what @code{strchr} would return for
+searching for a directory separator.
+
+This function does not normalize file name.  However, it does handle
+the fact that on DOS-like file systems, forward and backward slashes
+are directory separators.
+
+@end deftypefn
+
+*/
+
+char *
+filename_dirchr (const char *p)
+{
+  char *r;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+  char *r2;
+#endif
+  if (!p)
+    return NULL;
+  r = strchr (p, '/');
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+  r2 = strchr (p, '\\');
+  if (!r || (r2 && r2 < r))
+    r = r2;
+#endif
+  return r;
+}
+
+/*
+
+@deftypefn Extension int filename_dirrchr (const char *@var{p})
+
+The returned value is similar to what @code{strrchr} would return for
+searching for a directory separator.
+
+This function does not normalize file name.  However, it does handle
+the fact that on DOS-like file systems, forward and backward slashes
+are directory separators.
+
+@end deftypefn
+
+*/
+
+char *
+filename_dirrchr (const char *p)
+{
+  char *r;
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+  char *r2;
+#endif
+
+  if (!p)
+    return NULL;
+  r = strrchr (p, '/');
+#ifdef HAVE_DOS_BASED_FILE_SYSTEM
+  r2 = strrchr (p, '\\');
+  if (!r || (r2 && r2 > r))
+    r = r2;
+#endif
+  return r;
+}

Reply via email to