3 . "$_EXEC/cgilite/storage.sh"
6 local call data file key val seq
7 data="${BR}${1}${BR}" call="$2"
15 cat "$file" || return 1
17 check|contains) key="$(STRING "$1")" val=''
18 val="${data##*"${BR}${key}" }" val="${val%%"${BR}"*}"
19 [ "$val" = '' ] && return 1
21 count) key="$(STRING "$1")" val='' seq=0
22 val="${data##*"${BR}${key}" }" val="${val%%"${BR}"*}"
23 [ "$val" = '' ] || val="${val} "
24 while [ "$val" != '' ]; do
25 seq=$((seq + 1)) val="${val#* }"
28 [ $seq = 0 ] && return 1
30 get) key="$(STRING "$1")" seq="${2:-1}"
31 val="${data##*"${BR}${key}" }" val="${val%%"${BR}"*}"
32 [ "$val" = '' ] && return 1 || val="${val} "
33 while [ $seq -gt 1 ]; do
34 seq=$((seq - 1)) val="${val#* }"
36 [ "$val" = '' ] && return 1
39 iterate|raw) key="$(STRING "$1")"
40 val="${data##*"${BR}${key}" }" val="${val%%"${BR}"*}"
41 [ "$val" = '' ] && return 1
44 delete|remove) key="$(STRING "$1")"
45 val="${data#*"${BR}${key}" *"${BR}"}"
46 key="${data%"${BR}${key}" *"${BR}"*}"
47 [ "${key}${BR}${val}" = "${data}" ] && return 1
48 printf '%s' "${key#"${BR}"}${BR}${val%"${BR}"}"
50 set|store) key="$(STRING "$1")" val=""
52 val="$(for v in "$@"; do STRING "$v"; printf \\t; done)"
53 if [ "${data#*"${BR}${key}" *}" != "$data" ]; then
54 data="${data%"${BR}${key}" *"${BR}"*}${BR}${key} ${val% }${BR}${data#*"${BR}${key}" *"${BR}"}"
55 data="${data#"${BR}"}" data="${data%"${BR}"}"
57 data="${data#"${BR}"}${key} ${val% }${BR}"
58 data="${data#"${BR}"}"
60 printf %s\\n "${data}"
62 append) key="$(STRING "$1")" val=""
63 val="${data##*"${BR}${key}" }" val="${val%%"${BR}"*}"
64 if [ "$val" = '' ]; then
65 printf %s\\n "${data}"
69 val="${val}$(for v in "$@"; do printf \\t; STRING "$v"; done)"
70 data="${data%"${BR}${key}" *"${BR}"*}${BR}${key} ${val% }${BR}${data#*"${BR}${key}" *"${BR}"}"
71 data="${data#"${BR}"}" data="${data%"${BR}"}"
72 printf %s\\n "${data}"
75 flush|save|write) file="$1"
76 data="${data#"${BR}"}" data="${data%"${BR}"}"
77 printf '%s\n' "$data" >"$file" || return 1
84 # wrapper function that allows easyer use of DB2
85 # by always keeping file data in $db3_data
88 new|discard|open|load|delete|remove|set|store|append)
89 db3_data="$(DB2 "$db3_data" "$@")"
92 get|count|check|contains|iterate|raw|flush|save|write)