@@ -120,25 +120,19 @@ _comp_cmd_gtar__parse_help_line()
120
120
}
121
121
122
122
# Parse the output of "tar --help" with GNU tar and store the parse results
123
- # into variables .
123
+ # in a global variable .
124
124
#
125
- # @var[out] long_opts
126
- # @var[out] short_opts
127
- # @var[out] long_arg_none
128
- # @var[out] long_arg_opt
129
- # @var[out] long_arg_req
130
- # @var[out] short_arg_none
131
- # @var[out] short_arg_opt
132
- # @var[out] short_arg_req
133
- # The parse results are returned in these variables.
134
- _comp_cmd_gtar__parse_help ()
125
+ # @var[out] _comp_cmd_gtar__parse_help__result
126
+ # The parse results are stored in this global variable in a form that can
127
+ # be evaluated by the builtin "eval".
128
+ _comp_cmd_gtar__parse_help_initialize ()
135
129
{
136
- long_arg_none=" "
137
- long_arg_opt=" "
138
- long_arg_req=" "
139
- short_arg_none=" "
140
- short_arg_opt=" "
141
- short_arg_req=" "
130
+ local long_arg_none=" "
131
+ local long_arg_opt=" "
132
+ local long_arg_req=" "
133
+ local short_arg_none=" "
134
+ local short_arg_opt=" "
135
+ local short_arg_req=" "
142
136
143
137
local str line arg
144
138
while IFS= read -r line; do
@@ -164,10 +158,45 @@ _comp_cmd_gtar__parse_help()
164
158
fi
165
159
done <<< " $(tar --help)"
166
160
167
- long_opts=" \
168
- $long_arg_none $long_arg_opt $long_arg_req "
161
+ local long_opts=" $long_arg_none $long_arg_opt $long_arg_req "
162
+
163
+ local short_opts=" $short_arg_none$short_arg_opt$short_arg_req "
164
+
165
+ printf -v _comp_cmd_gtar__parse_help__result ' %s=%q ' \
166
+ long_opts " $long_opts " \
167
+ short_opts " $short_opts " \
168
+ long_arg_none " $long_arg_none " \
169
+ long_arg_opt " $long_arg_opt " \
170
+ long_arg_req " $long_arg_req " \
171
+ short_arg_none " $short_arg_none " \
172
+ short_arg_opt " $short_arg_opt " \
173
+ short_arg_req " $short_arg_req "
169
174
170
- short_opts=" $short_arg_none$short_arg_opt$short_arg_req "
175
+ # Clean up functions only used in initialization
176
+ unset -f " $FUNCNAME "
177
+ unset -f _comp_cmd_gtar__parse_help_line
178
+ unset -f _comp_cmd_gtar__parse_help_opt
179
+ }
180
+ _comp_cmd_gtar__parse_help_initialize
181
+
182
+ # Load the parse results of "tar --help" for GNU tar into variables.
183
+ #
184
+ # @var[out] long_opts
185
+ # @var[out] short_opts
186
+ # @var[out] long_arg_none
187
+ # @var[out] long_arg_opt
188
+ # @var[out] long_arg_req
189
+ # @var[out] short_arg_none
190
+ # @var[out] short_arg_opt
191
+ # @var[out] short_arg_req
192
+ # The parse results are returned in these variables.
193
+ #
194
+ # @var[in] _comp_cmd_gtar__parse_help__result
195
+ # The parse results are obtained by evaluating this variable with the
196
+ # "eval" builtin.
197
+ _comp_cmd_gtar__parse_help ()
198
+ {
199
+ eval -- " $_comp_cmd_gtar__parse_help__result "
171
200
}
172
201
173
202
# Hack: parse --warning keywords from tar's error output
0 commit comments