(command.CommandList children: [ (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions.sh'>}) (C {<.>} {(${ Id.VSub_Name BACKEND) <'/functions-parse.sh'>}) (command.Sentence child: (command.ShFunction name: opt_fail body: (BraceGroup children: [ (C {<get_value_from_cfg>} {<installInteractive>}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ (${ Id.VSub_Name VAL))} {<Id.Lit_Equals '='>} {(DQ <yes>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo_log>} {(DQ <'DISK ERROR: Unable to find installation disk!'>)}) (C {<echo_log>} {(DQ <'Please insert the installation disk and press enter.'>)}) (C {<read>} {<tmp>}) ] spids: [120 139] ) ] else_action: [(C {<exit_err>} {(DQ <'ERROR: Unable to locate installation DVD/USB'>)})] ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: opt_mount body: (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FOUND) op: assign_op.Equal rhs: {(DQ <0>)} spids: [191] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name CDMNT))} {<Id.Lit_RBracket ']'>} ) ] ) action: [(C {<mkdir>} {<-p>} {(${ Id.VSub_Name CDMNT)})] spids: [202 219] ) ] ) (command.Pipeline children: [ (C {<mount>}) (command.Simple words: [{<grep>} {<-q>} {(DQ (${ Id.VSub_Name CDMNT) <' '>)}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] negated: F ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ (${ Id.VSub_Name CDMNT) <'/'> (${ Id.VSub_Name INSFILE))} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <MOUNTED>)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>} ) ] do_fork: T ) (C {<echo_log>} {(DQ <'FOUND DVD: MOUNTED'>)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FOUND) op: assign_op.Equal rhs: {(DQ <1>)} spids: [317] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [275 294] ) ] ) (C {<opt_fail>}) (command.ControlFlow token: <Id.ControlFlow_Return return> ) ] spids: [259 272] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:z) op: assign_op.Equal rhs: {<1>} spids: [351] ) ] ) ] ) body: (command.DoGroup children: [ (command.ForEach iter_name: i iter_words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<ls>} {<-1>} {<'/dev/acd'> <Id.Lit_Star '*'>} {<'/dev/cd'> <Id.Lit_Star '*'>} {<'/dev/scd'> <Id.Lit_Star '*'>} {<'/dev/rscd'> <Id.Lit_Star '*'>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {<'/sbin/mount_cd9660'>} {($ Id.VSub_DollarName '$i')} {(${ Id.VSub_Name CDMNT)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ (${ Id.VSub_Name CDMNT) <'/'> (${ Id.VSub_Name INSFILE) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_Name i))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>} ) ] do_fork: T ) (C {<echo_log>} {(DQ <'FOUND DVD: '> (${ Id.VSub_Name i))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FOUND) op: assign_op.Equal rhs: {(DQ <1>)} spids: [461] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [414 433] ) ] ) (command.Simple words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FOUND'))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <1>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.ForEach iter_name: i iter_words: [ { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<ls>} {<-1>} {<'/dev/da'> <Id.Lit_Star '*'>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } ] do_arg_iter: F body: (command.DoGroup children: [ (C {<'/sbin/mount'>} {<-r>} {($ Id.VSub_DollarName '$i')} {(${ Id.VSub_Name CDMNT)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ (${ Id.VSub_Name CDMNT) <'/'> (${ Id.VSub_Name INSFILE) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_Name i))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>} ) ] do_fork: T ) (C {<echo_log>} {(DQ <'FOUND USB: '> (${ Id.VSub_Name i))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FOUND) op: assign_op.Equal rhs: {(DQ <1>)} spids: [610] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [563 582] ) ] ) (command.Simple words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<'/sbin/mount'>} {<-r>} {<-t>} {<msdosfs>} {($ Id.VSub_DollarName '$i')} {(${ Id.VSub_Name CDMNT)} ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<-e>} { (DQ (${ Id.VSub_Name CDMNT) <'/'> (${ Id.VSub_Name INSFILE) ) } {<Id.Lit_RBracket ']'>} ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ (${ Id.VSub_Name i))}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(${ Id.VSub_Name TMPDIR) <'/cdmnt'>} ) ] do_fork: T ) (C {<echo_log>} {(DQ <'FOUND USB: '> (${ Id.VSub_Name i))} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:FOUND) op: assign_op.Equal rhs: {(DQ <1>)} spids: [707] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [660 679] ) ] ) (command.Simple words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) ) ] spids: [494 512] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$FOUND'))} {<Id.Lit_Equals '='>} {(DQ <1>)} {<Id.Lit_RBracket ']'>} ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [743 760] ) ] ) (C {<opt_fail>}) ] ) ) ] ) ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShFunction name: opt_umount body: (BraceGroup children: [ (command.Simple words: [{<'/sbin/umount'>} {(${ Id.VSub_Name CDMNT)}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) ) terminator: <Id.Op_Semi _> ) ] )