From aef7d8b9e580b13d58e39a37f139803f207c464f Mon Sep 17 00:00:00 2001 From: Ingo Karkat Date: Tue, 12 Apr 2022 07:53:07 +0200 Subject: [PATCH] Refactoring: Replace shellquote() with printf %q I didn't know about printf's capability when I introduced quoting 10 years ago. The %q format will do the quoting, and "-v VAR" can be used to reassign to the variable. Note: The shellquote() function has been exported for reuse by add-ons. I don't think anyone has ever used that (it was mostly intended for my own, extensive extensions, and I never used it), and is trivial to move away from, anyway. --- todo.sh | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/todo.sh b/todo.sh index fb8d4bc..d084d58 100755 --- a/todo.sh +++ b/todo.sh @@ -824,11 +824,6 @@ _addto() { fi } -shellquote() -{ - typeset -r qq=\'; printf %s\\n "'${1//\'/${qq}\\${qq}${qq}}'"; -} - filtercommand() { filter=${1:-} @@ -843,13 +838,13 @@ filtercommand() then ## First character isn't a dash: hide lines that don't match ## this $search_term - filter="${filter:-}${filter:+ | }grep -i $(shellquote "$search_term")" + printf -v filter '%sgrep -i %q' "${filter:-}${filter:+ | }" "$search_term" else ## First character is a dash: hide lines that match this ## $search_term # ## Remove the first character (-) before adding to our filter command - filter="${filter:-}${filter:+ | }grep -v -i $(shellquote "${search_term:1}")" + printf -v filter '%sgrep -v -i %q' "${filter:-}${filter:+ | }" "${search_term:1}" fi done @@ -1036,7 +1031,7 @@ listWordsWithSigil() | sort -u } -export -f cleaninput getPrefix getTodo getNewtodo shellquote filtercommand _list listWordsWithSigil getPadding _format die +export -f cleaninput getPrefix getTodo getNewtodo filtercommand _list listWordsWithSigil getPadding _format die # == HANDLE ACTION == action=$( printf "%s\n" "$ACTION" | tr '[:upper:]' '[:lower:]' )