summaryrefslogtreecommitdiff
path: root/src/basic/hash-funcs.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2018-02-08 18:31:15 +0100
committerSven Eden <yamakuzure@gmx.net>2018-05-30 07:54:00 +0200
commit743ac495b83a83e7336f55321d38a4ebe7389e58 (patch)
tree1b07c10fb3fd417601406084d5dacc6b3f7b476a /src/basic/hash-funcs.h
parent0c8cd4e223e968d446136379f6563d1a0aa82956 (diff)
hash-func: add generic hash_ops implementation for hashing paths
This is similar to string_hash_ops but operates one file system paths specifically. It will ensure that "/foo//bar" and "///foo/bar" are considered to be the same path for hashmap purposes. This makes use of the existing path_compare() API, and adds a matching hashing function for it. Note that relative and absolute paths will hash to different values, however whether the path is suffixed with a slash or not is not detected. This matches the existing path_compare() behaviour, and follows the logic that on Linux there can't be two different objects at path /foo/bar and /foo/bar/ either. (cherry picked from commit 46e16b347f83d809ed3d34f26286f580dfd086ce)
Diffstat (limited to 'src/basic/hash-funcs.h')
-rw-r--r--src/basic/hash-funcs.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/basic/hash-funcs.h b/src/basic/hash-funcs.h
index c31ef0cc3..945b4c251 100644
--- a/src/basic/hash-funcs.h
+++ b/src/basic/hash-funcs.h
@@ -36,9 +36,12 @@ void string_hash_func(const void *p, struct siphash *state);
int string_compare_func(const void *a, const void *b) _pure_;
extern const struct hash_ops string_hash_ops;
-/* This will compare the passed pointers directly, and will not
- * dereference them. This is hence not useful for strings or
- * suchlike. */
+void path_hash_func(const void *p, struct siphash *state);
+int path_compare_func(const void *a, const void *b) _pure_;
+extern const struct hash_ops path_hash_ops;
+
+/* This will compare the passed pointers directly, and will not dereference them. This is hence not useful for strings
+ * or suchlike. */
void trivial_hash_func(const void *p, struct siphash *state);
int trivial_compare_func(const void *a, const void *b) _const_;
extern const struct hash_ops trivial_hash_ops;