fill padding bytes when setting raw attribute length
[project/libubox.git] / sh / jshn.sh
index 7389f8c..d325460 100644 (file)
@@ -19,11 +19,15 @@ json_add_generic() {
        local val="$3"
        local cur="${4:-$JSON_CUR}"
 
-       [ "${cur%%[0-9]*}" = "JSON_ARRAY" ] && {
+       if [ "${cur%%[0-9]*}" = "JSON_ARRAY" ]; then
                eval "local aseq=\"\${SEQ_$cur}\""
                var=$(( ${aseq:-0} + 1 ))
                export -- "SEQ_$cur=$var"
-       }
+       else
+               local name="$(echo -n "$var" | tr -C '[a-zA-Z_]' _)"
+               [[ "$name" == "$var" ]] || export -- "NAME_${cur}_${name}=$var"
+               var="$name"
+       fi
 
        export -- "${cur}_$var=$val"
        export -- "TYPE_${cur}_$var=$type"
@@ -96,7 +100,7 @@ json_get_type() {
 
 json_get_var() {
        local dest="$1"
-       local var="$2"
+       local var="$(echo -n "$2" | tr -C '[a-zA-Z_]' _)"
        eval "export -- \"$dest=\${${JSON_CUR}_$var}\""
 }