From: Dave Reisner
Make sure these are completely safe for user input. Use the same three
step process in both cases:
1) Strip any trailing slash
2) Trim the string according to base/dir request
3) Print the result, defaulting to / if step 2 yielded an empty string
Signed-off-by: Dave Reisner
---
functions | 15 ++++++++-------
1 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/functions b/functions
index 69a4aad..db639fc 100644
--- a/functions
+++ b/functions
@@ -30,15 +30,16 @@ die() {
cleanup 1
}
-get_dirname() {
- # strip any trailing slash first...
- local dir="${1%/}"
- # then get the directory portion
- echo "${dir%/*}"
+get_basename() {
+ local base=${1%/}
+ base=${base##*/}
+ printf '%s' "${base:-/}"
}
-get_basename() {
- echo "${1##*/}"
+get_dirname() {
+ local dir=${1%/}
+ dir=${dir%/*}
+ printf '%s' "${dir:-/}"
}
in_array() {
--
1.7.6