(command.CommandList children: [ (C {(.)} {(/lib/lsb/init-functions)}) (C {(.)} {(/lib/init/vars.sh)}) (C {(.)} {(/lib/init/mount-functions.sh)}) (command.ShFunction name: do_wait_async_mount body: (command.BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:waitnfs) op: assign_op.Equal rhs: (word.Empty) spids: [76] ) ] ) (command.ForEach iter_name: file iter_words: [ { (DQ (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:86) command_list: (command.CommandList children: [ (C {(eval)} {(ls)} { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:91) command_list: (command.CommandList children:[(C {(fstab_files)})]) ) } ) ] ) ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(-f)} {(DQ ($ Id.VSub_DollarName '$file'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:112) ) ] action: [ (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:117) cond: [ (command.Sentence child: (C {(read)} {(DEV)} {(MTPT)} {(FSTYPE)} {(OPTS)} {(REST)}) terminator: (Token id:Id.Op_Semi val:';' span_id:130) ) ] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$DEV'))} arms: [ (case_arm pat_list: [ {(DQ )} { (word_part.EscapedLiteral token: (Token id: Id.Lit_EscapedChar val: '\\#' span_id: 147 ) ) (Id.Lit_Star '*') } ] action: [ (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 152 ) ) ] spids: [144 149 155 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$OPTS'))} arms: [ (case_arm pat_list: [ {(noauto)} {(Id.Lit_Star '*') (Id.Lit_Comma ',') (noauto)} {(noauto) (Id.Lit_Comma ',') (Id.Lit_Star '*')} {(Id.Lit_Star '*') (Id.Lit_Comma ',') (noauto) (Id.Lit_Comma ',') (Id.Lit_Star '*') } ] action: [ (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 188 ) ) ] spids: [170 185 191 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$FSTYPE'))} arms: [ (case_arm pat_list: [ {(nfs)} {(nfs4)} {(smbfs)} {(cifs)} {(coda)} {(ncp)} {(ncpfs)} {(ocfs2)} {(gfs)} {(ceph)} ] spids: [206 225 228 -1] ) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.ControlFlow token: (Token id: Id.ControlFlow_Continue val: continue span_id: 235 ) ) ] spids: [231 232 238 -1] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$MTPT'))} arms: [ (case_arm pat_list: [{(/usr/local)} {(/usr/local/) (Id.Lit_Star '*')}] spids: [253 257 260 -1] ) (case_arm pat_list: [{(/usr)} {(/usr/) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:waitnfs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$waitnfs') (' ') ($ Id.VSub_DollarName '$MTPT') ) } spids: [270] ) ] ) ] spids: [263 267 278 -1] ) (case_arm pat_list: [{(/var)} {(/var/) (Id.Lit_Star '*')}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:waitnfs) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$waitnfs') (' ') ($ Id.VSub_DollarName '$MTPT') ) } spids: [288] ) ] ) ] spids: [281 285 296 -1] ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Less val:'<' span_id:304) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$file'))} ) ] ) ] spids: [101 114] ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TIMEOUT) op: assign_op.Equal rhs: {(900)} spids: [326] ) ] ) (command.ForEach iter_name: mountpt iter_words: [{($ Id.VSub_DollarName '$waitnfs')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(log_action_begin_msg)} {(DQ ('Waiting for ') ($ Id.VSub_DollarName '$mountpt'))} ) (command.WhileUntil keyword: (Token id:Id.KW_While val:while span_id:351) cond: [ (command.Sentence child: (command.Pipeline children: [(C {(mountpoint)} {(-q)} {($ Id.VSub_DollarName '$mountpt')})] negated: T ) terminator: (Token id:Id.Op_Semi val:';' span_id:360) ) ] body: (command.DoGroup children: [ (C {(sleep)} {(0.1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TIMEOUT) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: (arith_expr.ArithWord w: {($ Id.VSub_DollarName '$TIMEOUT')} ) right: (arith_expr.ArithWord w:{(Id.Lit_Digits 1)}) ) ) } spids: [371] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$TIMEOUT')} {(-le)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:395) ) ] action: [ (C {(log_action_end_msg)} {(1)}) (command.ControlFlow token: (Token id:Id.ControlFlow_Break val:break span_id:405) ) ] spids: [384 397] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {($ Id.VSub_DollarName '$TIMEOUT')} {(-gt)} {(0)} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:426) ) ] action: [(C {(log_action_end_msg)} {(0)})] spids: [415 428] ) ] ) ] ) ) ] ) ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(start)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(Id.Lit_LBracket '[')} {(no)} {(Id.KW_Bang '!') (Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$ASYNCMOUNTNFS'))} {(Id.Lit_RBracket ']')} ) terminator: (Token id:Id.Op_Semi val:';' span_id:484) ) ] action: [(C {(do_wait_async_mount)})] spids: [469 486] ) ] else_action: [ (command.Simple words: [{(/etc/network/if-up.d/mountnfs)}] more_env: [(env_pair name:FROMINITD val:{(yes)} spids:[495])] ) ] ) ] spids: [453 454 504 -1] ) (case_arm pat_list: [{(restart)} {(reload)} {(force-reload)}] action: [ (command.Simple words: [{(echo)} {(DQ ("Error: argument '") ($ Id.VSub_Number '$1') ("' not supported"))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:523) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:527) arg_word: {(3)} ) ] spids: [507 512 532 -1] ) (case_arm pat_list:[{(stop)} {(status)}] spids:[535 538 545 -1]) (case_arm pat_list: [{(Id.Lit_Star '*')}] action: [ (command.Simple words: [{(echo)} {(DQ ('Usage: ') ($ Id.VSub_Number '$0') (' start|stop'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_GreatAnd val:'>&' span_id:560) fd: -1 arg_word: {(2)} ) ] ) (command.ControlFlow token: (Token id:Id.ControlFlow_Exit val:exit span_id:564) arg_word: {(3)} ) ] spids: [548 549 569 -1] ) ] ) (C {(Id.Lit_Other ':')}) ] )