summaryrefslogtreecommitdiff
path: root/include/util.h
diff options
context:
space:
mode:
authorDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-06-19 15:59:12 +0200
committerDavid Oberhollenzer <david.oberhollenzer@sigma-star.at>2019-06-20 10:26:39 +0200
commitf2981c2ff581e4e425c7b23da43aee29f25232c5 (patch)
tree5e809b9d7aff2db64edcd89afdf1ed4b40f054d5 /include/util.h
parent2f172ede7115d0a2730a3b689131042ba559e272 (diff)
simplify and improve canonicalize_name
- Replace scan and memmove with simple automaton - Convert forward to back slashes, lots of file systems treat them equivalenty, this saves us a few more checks down the road - Remove './' path components. We can saveley remove them in a string processing step instead of throwing an error. Also they actually appear often in tar balls, possibly not under user control. Signed-off-by: David Oberhollenzer <david.oberhollenzer@sigma-star.at>
Diffstat (limited to 'include/util.h')
-rw-r--r--include/util.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/include/util.h b/include/util.h
index 28d21bc..d5b20dd 100644
--- a/include/util.h
+++ b/include/util.h
@@ -6,9 +6,9 @@
#include <stdint.h>
/*
- Removes all preceeding and trailing slashes, shortens all sequences of
- slashes to a single slash and returns failure state if one of the path
- components is '..' or '.'.
+ Convert back to forward slashed, remove all preceeding and trailing slashes,
+ collapse all sequences of slashes, remove all path components that are '.'
+ and returns failure state if one of the path components is '..'.
Returns 0 on success.
*/