diff --git a/ls_zero.bash b/ls_zero.bash index 5c1e77a..d723c17 100644 --- a/ls_zero.bash +++ b/ls_zero.bash @@ -3,12 +3,27 @@ _ls() { env ls "$@" } +matchtest() { + printf "%s" "$1" | grep -qE "$2" +} + _lsp() { - printf "%s" "$*" | grep -qE '(^| )--zero( |$)' + if matchtest "$(uname)" "Linux" && matchtest "$*" '(^| )(-h|--help)( |$)'; then + _ls "$@" + local error=$? + test $error -eq 0 && cat <<- EOF + ls zero bash polyfill: + adds additional --zero option, which seperates + output with null characters rather than newlines + use _ls or env ls for default behavior + EOF + return $error + fi + matchtest "$*" '(^| )--zero( |$)' local zero=$? local args="$@" declare -a args=(${args[@]/--zero/}) - if test "$zero" -eq 0; then + if test $zero -eq 0; then output="$(_ls "${args[@]}")" error=$? printf "%s" "$output" | tr '\n' '\0'