[arch-projects] [PATCH 08/13] functions: refactor get_{base, dir}name

Dave Reisner d at falconindy.com
Fri Jul 22 20:21:15 EDT 2011


From: Dave Reisner <d at falconindy.com>

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 at falconindy.com>
---
 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



More information about the arch-projects mailing list