(command.CommandList children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:USAGE) op: Equal rhs: {(SQ <'[--browser=browser|--tool=browser] [--config=conf.var] url/file ...'>)} ) ] ) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:NONGIT_OK) op:Equal rhs:{(Yes)})] ) (C {(.)} {(git-sh-setup)}) (command.FuncDef name: valid_custom_tool body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_cmd) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(git)} {(config)} {(DQ (browser.) ($ VSub_Number '$1') (.cmd))}) ] ) ) ) } ) ] ) (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$browser_cmd'))}) ] ) ) (command.FuncDef name: valid_tool body: (command.BraceGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [ {(firefox)} {(iceweasel)} {(seamonkey)} {(iceape)} {(chrome)} {(google-chrome)} {(chromium)} {(chromium-browser)} {(konqueror)} {(opera)} {(w3m)} {(elinks)} {(links)} {(lynx)} {(dillo)} {(open)} {(start)} {(cygstart)} {(xdg-open)} ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(valid_custom_tool)} {(DQ ($ VSub_Number '$1'))}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] ) ] ) ] ) ] ) ) (command.FuncDef name: init_browser_path body: (command.BraceGroup children: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_path) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(git)} {(config)} {(DQ (browser.) ($ VSub_Number '$1') (.path))}) ] ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$browser_path'))}) (C {(test)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(chromium)}) (command.Simple words: [{(type)} {(chromium-browser)}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) ] ) ] ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_path) op: Equal rhs: {(chromium-browser)} ) ] ) ] ) ] ) (C {(Lit_Other ':')} { (word_part.BracedVarSub token: <VSub_Name browser_path> suffix_op: (suffix_op.Unary op_id: VTest_ColonEquals arg_word: {(DQ ($ VSub_Number '$1'))} ) ) } ) ] ) ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)})] body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(-b)} {(--browser) (Lit_Star '*')} {(-t)} {(--tool) (Lit_Star '*')}] action: [ (command.Case to_match: {(DQ ($ VSub_Pound '$#') (',') ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [ {(Lit_Star '*') (Lit_Comma ',') (Lit_Star '*') (Lit_Other '=') (Lit_Star '*') } ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(expr)} {(DQ (z) ($ VSub_Number '$1'))} {(Lit_Other ':')} {(SQ <'z-[^=]*=\\(.*\\)'>)} ) ] ) ) } ) ] ) ] ) (case_arm pat_list: [{(1) (Lit_Comma ',') (Lit_Star '*')}] action: [(C {(usage)})] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} ) ] ) (C {(shift)}) ] ) ] ) ] ) (case_arm pat_list: [{(-c)} {(--config) (Lit_Star '*')}] action: [ (command.Case to_match: {(DQ ($ VSub_Pound '$#') (',') ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [ {(Lit_Star '*') (Lit_Comma ',') (Lit_Star '*') (Lit_Other '=') (Lit_Star '*') } ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:conf) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(expr)} {(DQ (z) ($ VSub_Number '$1'))} {(Lit_Other ':')} {(SQ <'z-[^=]*=\\(.*\\)'>)} ) ] ) ) } ) ] ) ] ) (case_arm pat_list: [{(1) (Lit_Comma ',') (Lit_Star '*')}] action: [(C {(usage)})] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:conf) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} ) ] ) (C {(shift)}) ] ) ] ) ] ) (case_arm pat_list: [{(--)}] action: [(command.ControlFlow token:<ControlFlow_Break break>)] ) (case_arm pat_list:[{(-) (Lit_Star '*')}] action:[(C {(usage)})]) (case_arm pat_list: [{(Lit_Star '*')}] action: [(command.ControlFlow token:<ControlFlow_Break break>)] ) ] ) (C {(shift)}) ] ) ) (command.AndOr ops: [Op_DAmp] children: [(C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(0)}) (C {(usage)})] ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$browser'))})] action: [ (command.ForEach iter_name: opt iter_words: [{(DQ ($ VSub_DollarName '$conf'))} {(DQ (web.browser))}] do_arg_iter: F body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$opt'))}) (command.ControlFlow token: <ControlFlow_Continue continue> ) ] ) (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(git)} {(config)} {($ VSub_DollarName '$opt')})] ) ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$browser'))}) (command.ControlFlow token:<ControlFlow_Break break>) ] ) ] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$browser'))}) (command.Pipeline children: [(C {(valid_tool)} {(DQ ($ VSub_DollarName '$browser'))})] negated: T ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.Simple words: [ {(echo)} { (DQ ('git config option ') ($ VSub_DollarName '$opt') (' set to unknown browser: ') ($ VSub_DollarName '$browser') ) } ] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (command.Simple words: [{(echo)} {(DQ ('Resetting to default...'))}] redirects: [(redir.Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (C {(unset)} {(browser)}) ] ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$browser'))}) terminator: <Op_Semi ';'> ) ] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$DISPLAY'))}) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_candidates) op: Equal rhs: { (DQ ( 'firefox iceweasel google-chrome chrome chromium chromium-browser konqueror opera seamonkey iceape w3m elinks links lynx dillo xdg-open' ) ) } ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(DQ ($ VSub_DollarName '$KDE_FULL_SESSION'))} {(Lit_Other '=')} {(DQ (true))} ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_candidates) op: Equal rhs: {(DQ ('konqueror ') ($ VSub_DollarName '$browser_candidates'))} ) ] ) ] ) ] ) ] ) ] else_action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_candidates) op: Equal rhs: {(DQ ('w3m elinks links lynx'))} ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$SECURITYSESSIONID'))}) (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$TERM_PROGRAM'))}) ] ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_candidates) op: Equal rhs: {(DQ ('open ') ($ VSub_DollarName '$browser_candidates'))} ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-x)} {(/bin/start)}) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_candidates) op: Equal rhs: {(DQ ('start ') ($ VSub_DollarName '$browser_candidates'))} ) ] ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-x)} {(/usr/bin/cygstart)}) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_candidates) op: Equal rhs: {(DQ ('cygstart ') ($ VSub_DollarName '$browser_candidates'))} ) ] ) ] ) ] ) (command.ForEach iter_name: i iter_words: [{($ VSub_DollarName '$browser_candidates')}] do_arg_iter: F body: (command.DoGroup children: [ (C {(init_browser_path)} {($ VSub_DollarName '$i')}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.Simple words: [{(type)} {(DQ ($ VSub_DollarName '$browser_path'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser) op: Equal rhs: {($ VSub_DollarName '$i')} ) ] ) (command.ControlFlow token: <ControlFlow_Break break> ) ] ) ] ) ] ) ) (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$browser'))}) (C {(die)} {(DQ ('No known browser available.'))}) ] ) ] ) ] else_action: [ (command.AndOr ops: [Op_DPipe] children: [ (C {(valid_tool)} {(DQ ($ VSub_DollarName '$browser'))}) (C {(die)} {(DQ ("Unknown browser '") ($ VSub_DollarName '$browser') ("'."))}) ] ) (C {(init_browser_path)} {(DQ ($ VSub_DollarName '$browser'))}) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_DollarName '$browser_cmd'))}) (command.Pipeline children: [ (command.Simple words: [{(type)} {(DQ ($ VSub_DollarName '$browser_path'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) ] ) ] negated: T ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(die)} { (DQ ('The browser ') ($ VSub_DollarName '$browser') (" is not available as '") ($ VSub_DollarName '$browser_path') ("'.") ) } ) ] ) ] ) ] ) (command.Case to_match: {(DQ ($ VSub_DollarName '$browser'))} arms: [ (case_arm pat_list: [{(firefox)} {(iceweasel)} {(seamonkey)} {(iceape)}] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:vers) op: Equal rhs: { (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {(expr)} { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (C {($ VSub_DollarName '$browser_path')} {(-version)}) ] ) ) ) } {(Lit_Other ':')} {(SQ <'.* \\([0-9][0-9]*\\)\\..*'>)} ) ] ) ) } ) ] ) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:NEWTAB) op:Equal rhs:{(SQ <-new-tab>)})] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_DollarName '$vers'))} {(-lt)} {(2)}) (command.Assignment pairs: [(assign_pair lhs:(lhs_expr.LhsName name:NEWTAB) op:Equal rhs:{(SQ )})] ) ] ) (command.Sentence child: (C {(DQ ($ VSub_DollarName '$browser_path'))} {($ VSub_DollarName '$NEWTAB')} {(DQ ($ VSub_At '$@'))} ) terminator: <Op_Amp '&'> ) ] ) (case_arm pat_list: [{(google-chrome)} {(chrome)} {(chromium)} {(chromium-browser)}] action: [ (command.Sentence child: (C {(DQ ($ VSub_DollarName '$browser_path'))} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Amp '&'> ) ] ) (case_arm pat_list: [{(konqueror)}] action: [ (command.Case to_match: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [(C {(basename)} {(DQ ($ VSub_DollarName '$browser_path'))})] ) ) ) } arms: [ (case_arm pat_list: [{(konqueror)}] action: [ (command.Assignment pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:browser_path) op: Equal rhs: { (DQ (word_part.CommandSub left_token: <Left_DollarParen '$('> command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(echo)} {(DQ ($ VSub_DollarName '$browser_path'))}) (C {(sed)} {(-e)} {(SQ <'s/konqueror$/kfmclient/'>)}) ] negated: F ) ] ) ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.Simple words: [{(type)} {(DQ ($ VSub_DollarName '$browser_path'))}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_GreatAnd '2>&'> fd: 2 arg_word: {(1)} ) ] ) (C {(die)} {(DQ ("No '") ($ VSub_DollarName '$browser_path') ("' found."))}) ] ) (command.Sentence child: (C {(DQ ($ VSub_DollarName '$browser_path'))} {(newTab)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Amp '&'> ) ] ) (case_arm pat_list: [{(kfmclient)}] action: [ (command.Sentence child: (C {(DQ ($ VSub_DollarName '$browser_path'))} {(newTab)} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Amp '&'> ) ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (command.Sentence child: (C {(DQ ($ VSub_DollarName '$browser_path'))} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Amp '&'> ) ] ) ] ) ] ) (case_arm pat_list: [{(w3m)} {(elinks)} {(links)} {(lynx)} {(open)} {(cygstart)} {(xdg-open)}] action: [(C {(DQ ($ VSub_DollarName '$browser_path'))} {(DQ ($ VSub_At '$@'))})] ) (case_arm pat_list: [{(start)}] action: [ (C {(exec)} {(DQ ($ VSub_DollarName '$browser_path'))} {(SQ <'"web-browse"'>)} {(DQ ($ VSub_At '$@'))} ) ] ) (case_arm pat_list: [{(opera)} {(dillo)}] action: [ (command.Sentence child: (C {(DQ ($ VSub_DollarName '$browser_path'))} {(DQ ($ VSub_At '$@'))}) terminator: <Op_Amp '&'> ) ] ) (case_arm pat_list: [{(Lit_Star '*')}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (C {(test)} {(-n)} {(DQ ($ VSub_DollarName '$browser_cmd'))}) terminator: <Op_Semi ';'> ) ] action: [ (command.Subshell command_list: (command.CommandList children: [ (C {(eval)} { (DQ ($ VSub_DollarName '$browser_cmd') (' ') (word_part.EscapedLiteral token: <Lit_EscapedChar '\\"'> ) (word_part.EscapedLiteral token:<Lit_EscapedChar '\\$'>) ('@') (word_part.EscapedLiteral token: <Lit_EscapedChar '\\"'> ) ) } ) ] ) ) ] ) ] ) ] ) ] ) ] )