View | Details | Raw Unified | Return to bug 14675
Collapse All | Expand All

(-)a/libshell/shell-config (-4 / +16 lines)
Lines 8-13 __included_shell_config=1 Link Here
8
8
9
__shell_config_comment='#'
9
__shell_config_comment='#'
10
10
11
__shell_config_quote_value() {
12
	local out="$*"
13
	if [ -z "${out##*[\\\\/]*}" ]; then
14
		out="$(printf %s "$out" |sed -e 's/[\\\/]/\\&/g')" ||
15
			return 1
16
	fi
17
	printf %s "$out"
18
}
19
11
shell_config_get() {
20
shell_config_get() {
12
	[ "$#" -ge 2 -a "$#" -le 3 ] ||
21
	[ "$#" -ge 2 -a "$#" -le 3 ] ||
13
		fatal "Usage: shell_config_get file name [delim]"
22
		fatal "Usage: shell_config_get file name [delim]"
Lines 23-29 shell_config_set() { Link Here
23
	[ "$#" -ge 3 -a "$#" -le 5 ] ||
32
	[ "$#" -ge 3 -a "$#" -le 5 ] ||
24
		fatal "Usage: shell_config_get file name value [read-delim [write-delim]]"
33
		fatal "Usage: shell_config_get file name value [read-delim [write-delim]]"
25
34
26
	local n v created=
35
	local n v nv= created=
27
36
28
	if [ ! -f "$1" ]; then
37
	if [ ! -f "$1" ]; then
29
		if [ ! -w "${1%/*}" ]; then
38
		if [ ! -w "${1%/*}" ]; then
Lines 39-53 shell_config_set() { Link Here
39
		n="$(quote_sed_regexp "$2")"
48
		n="$(quote_sed_regexp "$2")"
40
49
41
		if v="$(grep --mmap -m1 "^[[:space:]]*$n${4-=}" -- "$1" 2>/dev/null)"; then
50
		if v="$(grep --mmap -m1 "^[[:space:]]*$n${4-=}" -- "$1" 2>/dev/null)"; then
42
			[ "${v#*$2${4-=}}" = "$3" ] ||
51
			if [ "${v#*$2${4-=}}" != "$3" ]; then
43
				sed -i -e "s/^[[:space:]]*$n${4-=}.*/$2${5-=}$3/" -- "$1"
52
				nv="$(__shell_config_quote_value "$2${5-=}$3")"
53
				sed -i -e "s/^[[:space:]]*$n${4-=}.*/$nv/" -- "$1"
54
			fi
44
			return
55
			return
45
		fi
56
		fi
46
57
47
		if [ -n "${__shell_config_comment-}" ] &&
58
		if [ -n "${__shell_config_comment-}" ] &&
48
		   v="$(grep --mmap -m1 "^[[:space:]]*${__shell_config_comment:-#}[[:space:]]*$n${4-=}" -- "$1" 2>/dev/null)"; then
59
		   v="$(grep --mmap -m1 "^[[:space:]]*${__shell_config_comment:-#}[[:space:]]*$n${4-=}" -- "$1" 2>/dev/null)"; then
49
			v="$(quote_sed_regexp "$v")"
60
			v="$(quote_sed_regexp "$v")"
50
			sed -i -e "s/^$v\$/$2${5-=}$3/" -- "$1"
61
			nv="$(__shell_config_quote_value "$2${5-=}$3")"
62
			sed -i -e "s/^$v\$/$nv/" -- "$1"
51
			return
63
			return
52
		fi
64
		fi
53
	fi
65
	fi

Return to bug 14675