diff --git a/sup b/sup index fe2cb5f..ecd4687 100755 --- a/sup +++ b/sup @@ -93,26 +93,36 @@ sup.mktemp() { } sup.getopt() { - local keys + while (( $# )); do + unset -v arg opt c keys - for i in "$@"; do - case "$i" in - --*) echo "$i";; + case "$1" in + (--) printf '%s\n' '--'; break;; - -*) - keys=( $(echo "${i##*-}" | fold -w1) ) + (--*) + IFS='=' read arg opt <<< "$1" + printf '%s\n' "$arg" - if [[ "${#keys[@]}" -gt 1 ]]; then - for k in "${keys[@]}"; do - echo "-${k}" - done - else - echo "$i" - fi + [[ "$opt" ]] && { + printf '%s\n' "$opt" + } ;; - *) echo "$i";; + (-*) + while read -n1 c + do + case "$c" in + -|'') :;; + *) keys+=( "-$c" );; + esac + done <<< "$1" + + printf '%s\n' "${keys[@]}" + ;; + + (*) printf '%s\n' "$1";; esac + shift done }