summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Reisner <d@falconindy.com>2011-07-15 04:59:36 +0200
committerDave Reisner <dreisner@archlinux.org>2011-09-27 12:18:04 +0200
commit06331559487ccc6cca1b770b2e21c5e3f7bec5c3 (patch)
tree9abc0272bfbf52c09f18dab18790f29aaf491002
parent5a0f7ebc8d2cede7532539268e0ffc0bd6816572 (diff)
downloadmkinitcpio-06331559487ccc6cca1b770b2e21c5e3f7bec5c3.tar.gz
mkinitcpio-06331559487ccc6cca1b770b2e21c5e3f7bec5c3.tar.xz
functions: refactor get_{base,dir}name
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 <d@falconindy.com>
-rw-r--r--functions15
1 files changed, 8 insertions, 7 deletions
diff --git a/functions b/functions
index c7e167e..2f5797a 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() {