Index: libiberty/filename_cmp.c |
diff --git a/libiberty/filename_cmp.c b/libiberty/filename_cmp.c |
index 5179f8dd14ff40b3ebcefc1c36d9ee9f278ed53c..9e16d242086d499a795f1d8f954fc4964c391b8e 100644 |
--- a/libiberty/filename_cmp.c |
+++ b/libiberty/filename_cmp.c |
@@ -141,3 +141,52 @@ filename_ncmp (const char *s1, const char *s2, size_t n) |
return 0; |
#endif |
} |
+ |
+/* |
+ |
+@deftypefn Extension hashval_t filename_hash (const void *@var{s}) |
+ |
+Return the hash value for file name @var{s} that will be compared |
+using filename_cmp. |
+This function is for use with hashtab.c hash tables. |
+ |
+@end deftypefn |
+ |
+*/ |
+ |
+hashval_t |
+filename_hash (const void *s) |
+{ |
+ /* The cast is for -Wc++-compat. */ |
+ const unsigned char *str = (const unsigned char *) s; |
+ hashval_t r = 0; |
+ unsigned char c; |
+ |
+ while ((c = *str++) != 0) |
+ { |
+ if (c == '\\') |
+ c = '/'; |
+ c = TOLOWER (c); |
+ r = r * 67 + c - 113; |
+ } |
+ |
+ return r; |
+} |
+ |
+/* |
+ |
+@deftypefn Extension int filename_eq (const void *@var{s1}, const void *@var{s2}) |
+ |
+Return non-zero if file names @var{s1} and @var{s2} are equivalent. |
+This function is for use with hashtab.c hash tables. |
+ |
+@end deftypefn |
+ |
+*/ |
+ |
+int |
+filename_eq (const void *s1, const void *s2) |
+{ |
+ /* The casts are for -Wc++-compat. */ |
+ return filename_cmp ((const char *) s1, (const char *) s2) == 0; |
+} |