X-Git-Url: http://git.plutz.net/?p=cgilite;a=blobdiff_plain;f=misc.sh;h=43edfcf70fc88dfc96dfece9036e52ef6851d69b;hp=adc879b3091474e24cbb765a001d211717c1b6d8;hb=d849a531488425d7f86afad48eaa98e14956958f;hpb=7baad0fc1db205353fe7414d358b43a015ef5848 diff --git a/misc.sh b/misc.sh index adc879b..43edfcf 100755 --- a/misc.sh +++ b/misc.sh @@ -17,6 +17,9 @@ # You should have received a copy of the GNU Affero General Public License # along with shcgi. If not, see . +BR=' +' + data_dirs(){ # set up directories for object storage @@ -30,28 +33,28 @@ data_dirs(){ validate(){ # print value if value matches regex; otherwise print default value="$1" - regex="$(printf %s\\n "$2" \ - | sed -r 's;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g; s;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g;' - )" # ^^ escape only unescaped slash characters for later insertion + regex="$(printf %s\\n "$2" | sed -r ':X;s;(^|[^\\])((\\\\)*)/;\1\2\\/;g;tX')" + # ^^ escape only unescaped slash characters for later insertion default="$3" printf %s\\n "${value}" \ - | sed -rn "2q; /^(${regex})\$/{p;q}; a${default}" + | sed -rn "2q; /^(${regex})\$/{p;q}; a${default} + " } invalidate(){ # print default if value matches regex; otherwise print value value="$1" - regex="$(printf %s\\n "$2" \ - | sed -r 's;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g; s;(^|[^\\]+)((\\\\)+)/;\1\2\\/;g; s;(^|[^\\])/;\1\\/;g;' - )" # ^^ escape only unescaped slash characters for later insertion + regex="$(printf %s\\n "$2" | sed -r ':X;s;(^|[^\\])((\\\\)*)/;\1\2\\/;g;tX')" + # ^^ escape only unescaped slash characters for later insertion default="$3" printf %s\\n "${value}" \ - | sed -rn "2q; /^(${regex})\$/{bd}; p;q; :d;a${default}" + | sed -rn "2q; /^(${regex})\$/{bX}; p;q; :X;a${default} + " } declare -A item_name l10n(){ - [ -n "$item_name[$1]+x" ] && printf %s "$item_name[$1]" || printf %s "$1" + [ -n "${item_name[$1]+x}" ] && printf %s "$item_name[$1]" || printf %s "$1" }