include/
* filenames.h: #include "hashtab.h". (filename_hash, filename_eq): Declare. libiberty/ * filename_cmp.c (filename_hash, filename_eq): New functions.
This commit is contained in:
parent
a2b6eff5c4
commit
0429544a87
|
@ -1,3 +1,8 @@
|
|||
2012-07-13 Doug Evans <dje@google.com>
|
||||
|
||||
* filenames.h: #include "hashtab.h".
|
||||
(filename_hash, filename_eq): Declare.
|
||||
|
||||
2012-07-13 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
|
||||
|
||||
* elf/s390.h (START_RELOC_NUMBERS): Define R_390_IRELATIVE reloc.
|
||||
|
|
|
@ -26,6 +26,8 @@ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
|||
#ifndef FILENAMES_H
|
||||
#define FILENAMES_H
|
||||
|
||||
#include "hashtab.h" /* for hashval_t */
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
@ -84,6 +86,10 @@ extern int filename_cmp (const char *s1, const char *s2);
|
|||
extern int filename_ncmp (const char *s1, const char *s2,
|
||||
size_t n);
|
||||
|
||||
extern hashval_t filename_hash (const void *s);
|
||||
|
||||
extern int filename_eq (const void *s1, const void *s2);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2012-07-13 Doug Evans <dje@google.com>
|
||||
|
||||
* filename_cmp.c (filename_hash, filename_eq): New functions.
|
||||
|
||||
2012-06-29 Andreas Schwab <schwab@linux-m68k.org>
|
||||
|
||||
* copying-lib.texi (Library Copying): Don't use @heading inside
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue