From 7d30dbc6a8b0a267a0769cf94bfa6cd643a886f5 Mon Sep 17 00:00:00 2001 From: David Vazgenovich Shakaryan Date: Tue, 21 Mar 2023 10:03:04 -0700 Subject: improve array loading, no more xargs --- README | 1 - rbpm.sh | 10 ++++------ 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/README b/README index 339a889..dd2be04 100644 --- a/README +++ b/README @@ -20,7 +20,6 @@ DEPENDENCIES bash (>= 4.0) coreutils (sort) - findutils (xargs) INSTALLING diff --git a/rbpm.sh b/rbpm.sh index 619fc03..cd0696d 100755 --- a/rbpm.sh +++ b/rbpm.sh @@ -44,10 +44,8 @@ _populate_dirs() { [[ -d "${RUBIES_PATH}" ]] \ || _die "directory ${RUBIES_PATH} does not exist." - # Cannot handle paths containing a newline. Only an idiot would - # encounter this in practice. - readarray -t dirs < <(shopt -s nullglob; \ - printf '%s\0' "${RUBIES_PATH}"/* | sort -zV | xargs -0n1) + mapfile -td $'\0' dirs < <(shopt -s nullglob; + printf '%s\0' "${RUBIES_PATH}"/* | sort -zV) [[ -n "${dirs}" ]] || _die "directory ${RUBIES_PATH} is empty." } @@ -55,7 +53,7 @@ _populate_dirs() { _populate_selected() { local dir dirs - IFS=':' read -a dirs <<< "${PATH}" + mapfile -td ':' dirs < <(printf %s "${PATH}") for dir in "${dirs[@]}"; do if [[ "${dir}" == "${RUBIES_PATH}/"* ]]; then @@ -72,7 +70,7 @@ _populate_selected() { _clear() { local dir dirs cdirs - IFS=':' read -a dirs <<< "${PATH}" + mapfile -td ':' dirs < <(printf %s "${PATH}") for dir in "${dirs[@]}"; do if [[ "${dir}" == "${RUBIES_PATH}/"* ]]; then -- cgit v1.2.3-70-g09d2