diff options
author | Doug Evans <dje@google.com> | 2012-07-13 22:12:28 +0000 |
---|---|---|
committer | Doug Evans <devans@gcc.gnu.org> | 2012-07-13 22:12:28 +0000 |
commit | 69488641ac7fa957a4e9f9cf9f04126f80099839 (patch) | |
tree | d0faf1e028dded68f8851bbadd980ad8284dbc72 /libiberty/filename_cmp.c | |
parent | c8b8af718c7b79ac11d346a220fc90670a293c6f (diff) | |
download | gcc-69488641ac7fa957a4e9f9cf9f04126f80099839.zip gcc-69488641ac7fa957a4e9f9cf9f04126f80099839.tar.gz gcc-69488641ac7fa957a4e9f9cf9f04126f80099839.tar.bz2 |
filenames.h: #include "hashtab.h".
include/
* filenames.h: #include "hashtab.h".
(filename_hash, filename_eq): Declare.
libiberty/
* filename_cmp.c (filename_hash, filename_eq): New functions.
From-SVN: r189472
Diffstat (limited to 'libiberty/filename_cmp.c')
-rw-r--r-- | libiberty/filename_cmp.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/libiberty/filename_cmp.c b/libiberty/filename_cmp.c index 5179f8d..9e16d24 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; +} |