From: Paul Hänsch Date: Mon, 13 Sep 2021 10:37:12 +0000 (+0200) Subject: STRING encodes empty values as backslash for easyer `read`ing of TAB-DBs, UNSTRING... X-Git-Url: https://git.plutz.net/?p=cgilite;a=commitdiff_plain;h=bcca3c04531619b1ed26fed0fd323623321e54e7 STRING encodes empty values as backslash for easyer `read`ing of TAB-DBs, UNSTRING produces trailing newline for consistent output of encoded \n, obsoleted `sed` $UNSTRING code --- diff --git a/storage.sh b/storage.sh index 77ee29c..22e6acc 100755 --- a/storage.sh +++ b/storage.sh @@ -66,11 +66,6 @@ RELEASE(){ fi } -# STRING=' -# s;\\;\\\\;g; s;\t;\\t;g; -# s;\n;\\n;g; s;\r;\\r;g; -# s;\+;\\+;g; s; ;+;g; -# ' STRING(){ local in out='' [ $# -gt 0 ] && in="$*" || in="$(cat)" @@ -83,19 +78,9 @@ STRING(){ " "*) out="${out}+"; in="${in# }" ;; *) out="${out}${in%%[\\${CR}${BR} + ]*}"; in="${in#"${in%%[\\${BR}${CR} + ]*}"}" ;; esac; done - printf '%s' "$out" + printf '%s' "${out:-\\}" } -UNSTRING=' - :UNSTRING_X - s;((^|[^\\])(\\\\)*)\\n;\1\n;g; - s;((^|[^\\])(\\\\)*)\\t;\1\t;g; - s;((^|[^\\])(\\\\)*)\\r;\1\r;g; - s;((^|[^\\])(\\\\)*)\+;\1 ;g; - tUNSTRING_X; - s;((^|[^\\])(\\\\)*)\\\+;\1+;g; - s;\\\\;\\;g; -' UNSTRING(){ local in out='' [ $# -gt 0 ] && in="$*" || in="$(cat)" @@ -109,7 +94,7 @@ UNSTRING(){ \\*) in="${in#\\}" ;; *) out="${out}${in%%[\\+]*}"; in="${in#"${in%%[\\+]*}"}" ;; esac; done - printf '%s' "$out" + printf '%s\n' "$out" } DBM() {