From 06331559487ccc6cca1b770b2e21c5e3f7bec5c3 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Thu, 14 Jul 2011 22:59:36 -0400 Subject: 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 --- functions | 15 ++++++++------- 1 file 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() { -- cgit v1.2.3-24-g4f1b