From dd07a4d55b45f9de3ac736e31bd66ce764d4907f Mon Sep 17 00:00:00 2001 From: Akianonymus Date: Sat, 12 Jun 2021 13:51:29 +0530 Subject: [PATCH] common-utils.sh: Fix _json_escape function for OSX sed | Resolve #162 --- sh/common-utils.sh | 18 ++++++++---------- sh/release/gsync | 18 ++++++++---------- sh/release/gupload | 18 ++++++++---------- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/sh/common-utils.sh b/sh/common-utils.sh index 350dd15..1277265 100755 --- a/sh/common-utils.sh +++ b/sh/common-utils.sh @@ -183,19 +183,17 @@ _json_escape() { # just for refrence "s|'|\'|g" if [ "${mode_json_escape}" = "j" ]; then output_json_escape="$(printf "%s" "${input_json_escape}" | sed \ - -e "s|'\'|'\\'|g" \ - -e "s|'/'|'\/'|g" \ + -e "s|\\\|\\\\\\\|g" \ + -e "s|\/|\\\/|g" \ -e 's/\"/\\\"/g' \ - -e ':a; $!N' \ - -e 's|\t|\\t|g' \ - -e 's|\r|\\r|g' \ - -e 's|\f|\\f|g')" + -e "s/$(printf '\t')/\\t/g" \ + -e "s/$(printf '\r')/\\r/g" \ + -e "s/$(printf '\f')/\\f/g")" else output_json_escape="$(printf "%s" "${input_json_escape}" | sed \ - -e ':a; $!N' \ - -e 's|\t|\\t|g' \ - -e 's|\r|\\r|g' \ - -e 's|\f|\\f|g')" + -e "s/$(printf '\t')/\\t/g" \ + -e "s/$(printf '\r')/\\r/g" \ + -e "s/$(printf '\f')/\\f/g")" fi # use awk because sed just messes up with newlines output_json_escape="$(printf "%s" "${output_json_escape}" | awk '{printf "%s%s",sep,$0; sep="\\n"} END{print ""}')" diff --git a/sh/release/gsync b/sh/release/gsync index fa356b0..adfeb67 100755 --- a/sh/release/gsync +++ b/sh/release/gsync @@ -184,19 +184,17 @@ _json_escape() { # just for refrence "s|'|\'|g" if [ "${mode_json_escape}" = "j" ]; then output_json_escape="$(printf "%s" "${input_json_escape}" | sed \ - -e "s|'\'|'\\'|g" \ - -e "s|'/'|'\/'|g" \ + -e "s|\\\|\\\\\\\|g" \ + -e "s|\/|\\\/|g" \ -e 's/\"/\\\"/g' \ - -e ':a; $!N' \ - -e 's|\t|\\t|g' \ - -e 's|\r|\\r|g' \ - -e 's|\f|\\f|g')" + -e "s/$(printf '\t')/\\t/g" \ + -e "s/$(printf '\r')/\\r/g" \ + -e "s/$(printf '\f')/\\f/g")" else output_json_escape="$(printf "%s" "${input_json_escape}" | sed \ - -e ':a; $!N' \ - -e 's|\t|\\t|g' \ - -e 's|\r|\\r|g' \ - -e 's|\f|\\f|g')" + -e "s/$(printf '\t')/\\t/g" \ + -e "s/$(printf '\r')/\\r/g" \ + -e "s/$(printf '\f')/\\f/g")" fi # use awk because sed just messes up with newlines output_json_escape="$(printf "%s" "${output_json_escape}" | awk '{printf "%s%s",sep,$0; sep="\\n"} END{print ""}')" diff --git a/sh/release/gupload b/sh/release/gupload index 27760bb..ca1e4d5 100755 --- a/sh/release/gupload +++ b/sh/release/gupload @@ -184,19 +184,17 @@ _json_escape() { # just for refrence "s|'|\'|g" if [ "${mode_json_escape}" = "j" ]; then output_json_escape="$(printf "%s" "${input_json_escape}" | sed \ - -e "s|'\'|'\\'|g" \ - -e "s|'/'|'\/'|g" \ + -e "s|\\\|\\\\\\\|g" \ + -e "s|\/|\\\/|g" \ -e 's/\"/\\\"/g' \ - -e ':a; $!N' \ - -e 's|\t|\\t|g' \ - -e 's|\r|\\r|g' \ - -e 's|\f|\\f|g')" + -e "s/$(printf '\t')/\\t/g" \ + -e "s/$(printf '\r')/\\r/g" \ + -e "s/$(printf '\f')/\\f/g")" else output_json_escape="$(printf "%s" "${input_json_escape}" | sed \ - -e ':a; $!N' \ - -e 's|\t|\\t|g' \ - -e 's|\r|\\r|g' \ - -e 's|\f|\\f|g')" + -e "s/$(printf '\t')/\\t/g" \ + -e "s/$(printf '\r')/\\r/g" \ + -e "s/$(printf '\f')/\\f/g")" fi # use awk because sed just messes up with newlines output_json_escape="$(printf "%s" "${output_json_escape}" | awk '{printf "%s%s",sep,$0; sep="\\n"} END{print ""}')"