drivers: power: report battery voltage in AOSP compatible format
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / scripts / config
CommitLineData
8e54701e
AK
1#!/bin/bash
2# Manipulate options in a .config file from the command line
3
f5ef2f7b
YM
4# If no prefix forced, use the default CONFIG_
5CONFIG_="${CONFIG_-CONFIG_}"
6
8e54701e
AK
7usage() {
8 cat >&2 <<EOL
9Manipulate options in a .config file from the command line.
10Usage:
11config options command ...
12commands:
13 --enable|-e option Enable option
14 --disable|-d option Disable option
1f990cf9 15 --module|-m option Turn option into a module
f0a6332c
JA
16 --set-str option string
17 Set option to "string"
18 --set-val option value
19 Set option to value
d5bfb6b3 20 --undefine|-u option Undefine option
1f990cf9 21 --state|-s option Print state of option (n,y,m,undef)
8e54701e
AK
22
23 --enable-after|-E beforeopt option
24 Enable option directly after other option
25 --disable-after|-D beforeopt option
26 Disable option directly after other option
27 --module-after|-M beforeopt option
28 Turn option into module directly after other option
29
30 commands can be repeated multiple times
31
32options:
4edc7e32
YM
33 --file config-file .config file to change (default .config)
34 --keep-case|-k Keep next symbols' case (dont' upper-case it)
8e54701e
AK
35
36config doesn't check the validity of the .config file. This is done at next
4edc7e32
YM
37make time.
38
39By default, config will upper-case the given symbol. Use --keep-case to keep
40the case of all following symbols unchanged.
f5ef2f7b
YM
41
42config uses 'CONFIG_' as the default symbol prefix. Set the environment
43variable CONFIG_ to the prefix to use. Eg.: CONFIG_="FOO_" config ...
8e54701e
AK
44EOL
45 exit 1
46}
47
48checkarg() {
49 ARG="$1"
50 if [ "$ARG" = "" ] ; then
51 usage
52 fi
53 case "$ARG" in
f5ef2f7b
YM
54 ${CONFIG_}*)
55 ARG="${ARG/${CONFIG_}/}"
8e54701e
AK
56 ;;
57 esac
4edc7e32
YM
58 if [ "$MUNGE_CASE" = "yes" ] ; then
59 ARG="`echo $ARG | tr a-z A-Z`"
60 fi
8e54701e
AK
61}
62
56643222
MM
63set_var() {
64 local name=$1 new=$2 before=$3
65
66 name_re="^($name=|# $name is not set)"
67 before_re="^($before=|# $before is not set)"
68 if test -n "$before" && grep -Eq "$before_re" "$FN"; then
69 sed -ri "/$before_re/a $new" "$FN"
70 elif grep -Eq "$name_re" "$FN"; then
71 sed -ri "s:$name_re.*:$new:" "$FN"
72 else
73 echo "$new" >>"$FN"
74 fi
8e54701e
AK
75}
76
d5bfb6b3
YM
77undef_var() {
78 local name=$1
79
80 sed -ri "/^($name=|# $name is not set)/d" "$FN"
81}
82
8e54701e
AK
83if [ "$1" = "--file" ]; then
84 FN="$2"
85 if [ "$FN" = "" ] ; then
86 usage
87 fi
47312d2c 88 shift 2
8e54701e
AK
89else
90 FN=.config
91fi
92
2302e873
AK
93if [ "$1" = "" ] ; then
94 usage
95fi
96
4edc7e32 97MUNGE_CASE=yes
8e54701e
AK
98while [ "$1" != "" ] ; do
99 CMD="$1"
100 shift
101 case "$CMD" in
4edc7e32
YM
102 --keep-case|-k)
103 MUNGE_CASE=no
4edc7e32
YM
104 continue
105 ;;
47312d2c
MM
106 --refresh)
107 ;;
57a9c760 108 --*-after|-E|-D|-M)
47312d2c
MM
109 checkarg "$1"
110 A=$ARG
111 checkarg "$2"
112 B=$ARG
113 shift 2
114 ;;
45f53cc9 115 -*)
8e54701e 116 checkarg "$1"
8e54701e
AK
117 shift
118 ;;
47312d2c
MM
119 esac
120 case "$CMD" in
121 --enable|-e)
f5ef2f7b 122 set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=y"
47312d2c 123 ;;
8e54701e
AK
124
125 --disable|-d)
f5ef2f7b 126 set_var "${CONFIG_}$ARG" "# ${CONFIG_}$ARG is not set"
8e54701e
AK
127 ;;
128
129 --module|-m)
f5ef2f7b 130 set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=m"
8e54701e
AK
131 ;;
132
1f990cf9 133 --set-str)
d6686da8 134 # sed swallows one level of escaping, so we need double-escaping
f5ef2f7b 135 set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=\"${1//\"/\\\\\"}\""
1f990cf9
MM
136 shift
137 ;;
138
f0a6332c 139 --set-val)
f5ef2f7b 140 set_var "${CONFIG_}$ARG" "${CONFIG_}$ARG=$1"
f0a6332c
JA
141 shift
142 ;;
d5bfb6b3
YM
143 --undefine|-u)
144 undef_var "${CONFIG_}$ARG"
145 ;;
f0a6332c 146
8e54701e 147 --state|-s)
f5ef2f7b 148 if grep -q "# ${CONFIG_}$ARG is not set" $FN ; then
8e54701e
AK
149 echo n
150 else
f5ef2f7b 151 V="$(grep "^${CONFIG_}$ARG=" $FN)"
8e54701e
AK
152 if [ $? != 0 ] ; then
153 echo undef
154 else
f5ef2f7b 155 V="${V/#${CONFIG_}$ARG=/}"
d6686da8
YM
156 V="${V/#\"/}"
157 V="${V/%\"/}"
1925a276 158 V="${V//\\\"/\"}"
d6686da8 159 echo "${V}"
8e54701e
AK
160 fi
161 fi
8e54701e
AK
162 ;;
163
164 --enable-after|-E)
f5ef2f7b 165 set_var "${CONFIG_}$B" "${CONFIG_}$B=y" "${CONFIG_}$A"
8e54701e
AK
166 ;;
167
168 --disable-after|-D)
f5ef2f7b 169 set_var "${CONFIG_}$B" "# ${CONFIG_}$B is not set" "${CONFIG_}$A"
8e54701e
AK
170 ;;
171
172 --module-after|-M)
f5ef2f7b 173 set_var "${CONFIG_}$B" "${CONFIG_}$B=m" "${CONFIG_}$A"
8e54701e
AK
174 ;;
175
176 # undocumented because it ignores --file (fixme)
177 --refresh)
178 yes "" | make oldconfig
179 ;;
180
181 *)
182 usage
183 ;;
184 esac
185done
186