From b196440c9dc0528f29f6acf0adbc26dd2bd4fb07 Mon Sep 17 00:00:00 2001 From: George Makrydakis Date: Sun, 8 Sep 2013 13:20:54 +0300 Subject: [PATCH 1/2] Deferring output directory after -f check has taken place. --- lrztar | 1 - 1 file changed, 1 deletion(-) diff --git a/lrztar b/lrztar index 71cc375..5ab110b 100755 --- a/lrztar +++ b/lrztar @@ -76,7 +76,6 @@ Notice: i+="/${vopt[v_d]##*/}" i="${i%.tar.*}" ((v_O)) && { - mkdir -p "${vopt[v_O]}" &> /dev/null for x in ${!p[@]};do [ "${p[x]}"x == "-O"x ] && { p[x]= From 66ae7c85bf6e5f8277454d74532acb162a86cdf1 Mon Sep 17 00:00:00 2001 From: George Makrydakis Date: Sun, 8 Sep 2013 14:20:06 +0300 Subject: [PATCH 2/2] Target directories must always exist and -f should not create them. --- lrztar | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/lrztar b/lrztar index 5ab110b..ced7b9d 100755 --- a/lrztar +++ b/lrztar @@ -91,7 +91,11 @@ Notice: return 1 } if ((v_O)); then - mkdir -p "$i" &> /dev/null + if ! [[ -d $i ]]; then + printf "lrztar: %s output path does not exist.\n"\ + "$i" + return 1 + fi else i="./" fi @@ -110,7 +114,18 @@ Notice: } else if ((v_O)); then - ((v_f)) && mkdir -p "${vopt[v_O]}" &> /dev/null + if ! [[ -d ${vopt[v_O]} ]]; then + printf "lrztar: %s output path does not exist.\n"\ + "${vopt[v_O]}" + return 1 + fi + if [[ $(shopt -s nullglob; + shopt -s dotglob; + echo "${vopt[v_O]}"/*) ]] && ! ((v_f)); then + printf "lrztar: %s output path is not empty.\n"\ + "${vopt[v_O]}" + return 1 + fi for x in ${!p[@]};do [ "${p[x]}"x == "-O"x ] && { p[x]=