@@ -220,9 +220,7 @@ fn cd dir {
220220}
221221
222222# The vars function is provided for cultural compatibility with
223- # rc 's whatis when used without arguments . The option parsing
224- # is very primitive ; perhaps es should provide a getopt - like
225- # builtin .
223+ # rc 's whatis when used without arguments .
226224#
227225# The options to vars can be partitioned into two categories :
228226# those which pick variables based on their source ( - e for
@@ -237,17 +235,10 @@ fn cd dir {
237235# unless it is on the noexport list .
238236
239237fn vars {
240- # choose default options
241- if { ~ $ * - a } {
242- * = - v - f - s - e - p - i
243- } {
244- if { ! ~ $ * - [ vfs ] } { * = $ * - v }
245- if { ! ~ $ * - [ epi ] } { * = $ * - e }
246- }
247238 # check args
248239 for ( i = $ * )
249- if { ! ~ $i - [ vfsepi ] } {
250- throw error vars illegal option : $i -- usage : vars ' - [ vfsepia ] '
240+ if { ! ~ $i - * } {
241+ throw error vars illegal option : $i -- usage : vars - [ vfsepia ]
251242 }
252243 let (
253244 vars = false
@@ -256,34 +247,44 @@ fn vars {
256247 export = false
257248 priv = false
258249 intern = false
250+ all = false
259251 ) {
260- for ( i = $ * ) if (
261- { ~ $i - v } { vars = true }
262- { ~ $i - f } { fns = true }
263- { ~ $i - s } { sets = true }
264- { ~ $i - e } { export = true }
265- { ~ $i - p } { priv = true }
266- { ~ $i - i } { intern = true }
252+ for ( a = $ * )
253+ for ( i = <= { % fsplit '' <= { ~ ~ $a - * } } )
254+ if (
255+ { ~ $i v } { vars = true }
256+ { ~ $i f } { fns = true }
257+ { ~ $i s } { sets = true }
258+ { ~ $i e } { export = true }
259+ { ~ $i p } { priv = true }
260+ { ~ $i i } { intern = true }
261+ { ~ $i a } { all = true }
267262 { throw error vars vars : bad option : $i }
268263 )
264+ if { ! { $vars || $fns || $sets } } {
265+ vars = true
266+ }
267+ if { ! { $export || $priv || $intern } } {
268+ export = true
269+ }
269270 let (
270- dovar = @ var {
271+ fn dovar var {
271272 # print functions and / or settor vars
272- if { if { ~ $var fn - * } $fns { ~ $var set - * } $sets $vars } {
273+ if { $all || if { ~ $var fn - * } $fns { ~ $var set - * } $sets $vars } {
273274 echo <= { % var $var }
274275 }
275276 }
276277 ) {
277- if { $export || $priv } {
278- for ( var = <= $ & vars )
278+ if { $all || $ export || $priv } {
279+ for ( var = <= $ & vars )
279280 # if not exported but in priv
280- if { if { ~ $var $noexport } $priv $export } {
281- $ dovar $var
281+ if { $all || if { ~ $var $noexport } $priv $export } {
282+ dovar $var
282283 }
283284 }
284- if { $intern } {
285- for ( var = <= $ & internals )
286- $ dovar $var
285+ if { $all || $ intern} {
286+ for ( var = <= $ & internals )
287+ dovar $var
287288 }
288289 }
289290 }
0 commit comments