(command.CommandList children: [ (command.Simple blame_tok: <Id.Lit_Colon ':'> more_env: [] words: [{<Id.Lit_Colon ':'>} {<message>} {<catalog>} {<administration>}] redirects: [] do_fork: T ) (command.ShAssignment left: <Id.Lit_VarLike 'command='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'command='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'command='> name:command) op: assign_op.Equal rhs: {<msgadmin>} ) ] redirects: [] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Subshell left: <Id.Op_LParen _> child: (command.CommandList children: [ (command.Sentence child: (command.Simple blame_tok: <getopts> more_env: [] words: [{<getopts>} {(SQ <'[-][123:xyz]'>)} {<opt>} {<--xyz>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {<0> ($ Id.VSub_DollarName opt)}] redirects: [] do_fork: T ) ] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] ) right: <Id.Backtick_Right '`'> ) } ) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0123> pattern: (pat.Words words:[{<0123>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ <'-a '> ($ Id.VSub_DollarName command))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: { (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals '\n'> <Id.Char_Literals '[-?\n'> <Id.Char_Literals '@(#)$Id: msgadmin (AT&T Labs Research) 2001-06-08 $\n'> <Id.Char_Literals ']\n'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName USAGE_LICENSE) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [<Id.Char_Literals '\n'> <Id.Char_Literals '[+NAME?'>] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName command) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_Literals ' - message catalog file administration]\n'> <Id.Char_Literals '[+DESCRIPTION?'> <Id.Char_OneChar '\\b'> ] right: <Id.Right_SingleQuote '\''> ) ($ Id.VSub_DollarName command) (SingleQuoted left: <Id.Left_DollarSingleQuote '$\''> tokens: [ <Id.Char_OneChar '\\b'> <Id.Char_Literals ' administers message catalog files. If no '> <Id.Char_OneChar '\\a'> <Id.Char_Literals file> <Id.Char_OneChar '\\a'> <Id.Char_Literals '\n'> <Id.Char_Literals '\toperands are specified then all message files in the local\n' > <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals '$INSTALLROOT'> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' source tree are operated on. Exactly one of\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals --generate> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --remove> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals ', or '> <Id.Char_OneChar '\\b'> <Id.Char_Literals --verify> <Id.Char_OneChar '\\b'> <Id.Char_Literals '\n'> <Id.Char_Literals '\tmust be specified.]\n'> <Id.Char_Literals '[D:debug?Passed to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[a:all?Passed to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[c:cache?Passed to '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[d:dialect?Operate on the dialects in the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ','> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' separated '> <Id.Char_OneChar '\\a'> <Id.Char_Literals dialect> <Id.Char_OneChar '\\a'> <Id.Char_Literals ' list.\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\b'> <Id.Char_Literals -> <Id.Char_OneChar '\\b'> <Id.Char_Literals ' means all dialects supported by '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]:[dialect:=-]\n'> <Id.Char_Literals '[f:force?Force binary catalog generation even when the current binary is newer\n' > <Id.Char_Literals '\tthan the source.]\n'> <Id.Char_Literals '[g:generate?Generate and install '> <Id.Char_OneChar '\\b'> <Id.Char_Literals gencat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) binary message catalogs.]\n'> <Id.Char_Literals '[l:list?List each installed message catalog name paired with its input source.]\n' > <Id.Char_Literals '[n:show?Show commands but do not execute.]\n'> <Id.Char_Literals '[o:omit?Omit '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) methods matching the '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)\n'> <Id.Char_Literals '\t'> <Id.Char_OneChar '\\a'> <Id.Char_Literals pattern> <Id.Char_OneChar '\\a'> <Id.Char_Literals '.]:[pattern]\n'> <Id.Char_Literals '[r:remove?Remove all translated message files and work directories.]\n' > <Id.Char_Literals '[s:share?Generate and install '> <Id.Char_OneChar '\\b'> <Id.Char_Literals msggen> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) machine independent binary\n'> <Id.Char_Literals '\tmessage catalogs.]\n'> <Id.Char_Literals '[t:translate?Translate using '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1).]\n'> <Id.Char_Literals '[v:verify?Verify that translated message files satisfy ' > <Id.Char_OneChar '\\b'> <Id.Char_Literals gencat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1) syntax.]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[ file ... ]\n'> <Id.Char_Literals '\n'> <Id.Char_Literals '[+SEE ALSO?'> <Id.Char_OneChar '\\b'> <Id.Char_Literals gencat> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals ksh> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals msggen> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1), '> <Id.Char_OneChar '\\b'> <Id.Char_Literals translate> <Id.Char_OneChar '\\b'> <Id.Char_Literals '(1)]\n'> ] right: <Id.Right_SingleQuote '\''> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'ARGV0='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'ARGV0='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'ARGV0='> name:ARGV0) op: assign_op.Equal rhs: {(DQ )} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'USAGE='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'USAGE='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'USAGE='> name:USAGE) op: assign_op.Equal rhs: {(DQ <'Dcd:gno:rstv [ file ... ]'>)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.ShFunction name_tok: <usage> name: usage body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'OPTIND='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'OPTIND='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'OPTIND='> name:OPTIND) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} {(SQ <'-?'>)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<2>}) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <messages> name: messages body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalAnd left: (bool_expr.WordTest w:{($ Id.VSub_DollarName PACKAGEROOT)}) right: (bool_expr.Unary op_id: Id.BoolUnary_d child: {($ Id.VSub_DollarName PACKAGEROOT)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MSGROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MSGROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MSGROOT='> name:MSGROOT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PACKAGEROOT)} ) ] redirects: [] ) ] spids: [316 331] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'MSGROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MSGROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MSGROOT='> name:MSGROOT) op: assign_op.Equal rhs: {($ Id.VSub_DollarName HOME)} ) ] redirects: [] ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} {($ Id.VSub_DollarName MSGROOT) <'/arch/'> <Id.Lit_Star '*'> <'/src/cmd/INIT/INIT.msg'>} ] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_f child:{($ Id.VSub_Number 1)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DoubleQuoted left: <Id.Left_DollarDoubleQuote '$"'> parts: [($ Id.VSub_DollarName command) <': INIT.msg: not found'>] right: <Id.Right_DoubleQuote '"'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'MSGROOT='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'MSGROOT='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'MSGROOT='> name:MSGROOT) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Number 1> var_name: 1 suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Slash '/'> <src> <Id.Lit_Slash '/'> <cmd> <Id.Lit_Slash '/'> <INIT> <Id.Lit_Slash '/'> <INIT.msg> } ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.Simple blame_tok: <grep> more_env: [] words: [ {<grep>} {<-l>} {(SQ <'^1'>)} {($ Id.VSub_DollarName MSGROOT) <'/src/'> (word_part.ExtGlob op: <Id.ExtGlob_At '@('> arms: [{<cmd>} {<lib>}] right: <Id.Right_ExtGlob _> ) <'/'> <Id.Lit_Star '*'> <'/'> <Id.Lit_Star '*'> <.msg> } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Simple blame_tok: <integer> more_env: [] words: [{<integer>} {<n>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<all>} {<cache>} {<Id.Lit_VarLike 'dialect='> <->} {<exec>} {<force>} {<omit>} {<op>} {<show>} {<verbose>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <typeset> more_env: [] words: [ {<typeset>} {<Id.Lit_VarLike 'dir='> ($ Id.VSub_DollarName INSTALLROOT)} {<Id.Lit_VarLike 'gen='> <gencat>} ] redirects: [] do_fork: T ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <getopts> more_env: [] words: [ {<getopts>} {($ Id.VSub_DollarName ARGV0)} {(DQ ($ Id.VSub_DollarName USAGE))} {<OPT>} ] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName OPT)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <D> pattern: (pat.Words words:[{<D>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'debug='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'debug='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'debug='> name:debug) op: assign_op.Equal rhs: {<-D>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <a> pattern: (pat.Words words:[{<a>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'all='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'all='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'all='> name:all) op: assign_op.Equal rhs: {<-a>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <c> pattern: (pat.Words words:[{<c>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'cache='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'cache='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'cache='> name:cache) op: assign_op.Equal rhs: {<-c>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <d> pattern: (pat.Words words:[{<d>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dialect='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dialect='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dialect='> name:dialect) op: assign_op.Equal rhs: {($ Id.VSub_DollarName OPTARG)} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <f> pattern: (pat.Words words:[{<f>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'force='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'force='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'force='> name:force) op: assign_op.Equal rhs: {<1>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <g> pattern: (pat.Words words:[{<g>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<generate>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <l> pattern: (pat.Words words:[{<l>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<list>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <n> pattern: (pat.Words words:[{<n>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'exec='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'exec='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exec='> name:exec) op: assign_op.Equal rhs: {<print>} ) (AssignPair left: <Id.Lit_VarLike 'show='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'show='> name:show) op: assign_op.Equal rhs: {<-n>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <o> pattern: (pat.Words words:[{<o>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'omit='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'omit='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'omit='> name:omit) op: assign_op.Equal rhs: {(DQ <'-o '> ($ Id.VSub_DollarName OPTARG))} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <r> pattern: (pat.Words words:[{<r>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<remove>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <s> pattern: (pat.Words words:[{<s>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'gen='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'gen='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'gen='> name:gen) op: assign_op.Equal rhs: {<msggen>} ) (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/share'>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <t> pattern: (pat.Words words:[{<t>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<translate>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <v> pattern: (pat.Words words:[{<v>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'op='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'op='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'op='> name:op) op: assign_op.Equal rhs: {<verify>} ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <shift> more_env: [] words: [{<shift>} {($ Id.VSub_DollarName OPTIND) <-1>}] redirects: [] do_fork: T ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.WordTest w:{($ Id.VSub_DollarName INSTALLROOT)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DoubleQuoted left: <Id.Left_DollarDoubleQuote '$"'> parts: [($ Id.VSub_DollarName command) <': INSTALLROOT not defined'>] right: <Id.Right_DoubleQuote '"'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName op)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <generate> pattern: (pat.Words words:[{<generate>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'dir='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'dir='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'dir='> name:dir) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/lib/locale'>} ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id:Id.BoolUnary_d child:{($ Id.VSub_DollarName dir)}) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DoubleQuoted left: <Id.Left_DollarDoubleQuote '$"'> parts: [ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName dir) <': not found'> ] right: <Id.Right_DoubleQuote '"'> ) } ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DPipe _>] ) (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id:Id.Arith_Bang child:{($ Id.VSub_Pound '#')}) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} {<C>} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple blame_tok: <ls> more_env: [] words: [{<ls>} {<Id.Lit_Star '*'> <-> <Id.Lit_Star '*'> <.msg>}] redirects: [ (Redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,.*-\\(.*\\)\\.msg,\\1,'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-u>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ShAssignment left: <Id.Lit_VarLike 'owd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'owd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'owd='> name:owd) op: assign_op.Equal rhs: {($ Id.VSub_DollarName PWD)} ) ] redirects: [] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [locale] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName locale)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <C> pattern: (pat.Words words:[{<C>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <messages> more_env: [] words: [{<messages>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} {<Id.Lit_Star '*'> <-> ($ Id.VSub_DollarName locale) <.msg>} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalNot child: (bool_expr.Unary op_id: Id.BoolUnary_f child: {($ Id.VSub_Number 1)} ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ ($ Id.VSub_DollarName command) <': '> ($ Id.VSub_DollarName locale) <': no message files'> ) } ] redirects: [] do_fork: T ) ] spids: [795 808] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.ShAssignment left: <Id.Lit_VarLike 'nwd='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nwd='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nwd='> name:nwd) op: assign_op.Equal rhs: {($ Id.VSub_DollarName dir) <'/'> ($ Id.VSub_DollarName locale) <'/LC_MESSAGES'> } ) ] redirects: [] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_d child: {($ Id.VSub_DollarName nwd)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<mkdir>} {<-p>} {($ Id.VSub_DollarName nwd)} ] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _> <Id.Op_DPipe _>] ) (command.AndOr children: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Unary op_id: Id.BoolUnary_d child: {($ Id.VSub_DollarName nwd)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.AndOr children: [ (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName nwd)}] redirects: [] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> ) ] ops: [<Id.Op_DPipe _>] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName file)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <'/'> pattern: (pat.Words words:[{<'/'> <Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'name='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'name='> name: name ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name file> var_name: file suffix_op: (suffix_op.Unary op: <Id.VOp1_DPound '##'> arg_word: {<Id.Lit_Other '*'> <Id.Lit_Slash '/'>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'name='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'name='> name: name ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name name> var_name: name suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<Id.Lit_Other '*'> <.msg>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'name='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'name='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'name='> name: name ) op: assign_op.Equal rhs: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name file> var_name: file suffix_op: (suffix_op.Unary op: <Id.VOp1_Percent '%'> arg_word: {<-> ($ Id.VSub_DollarName locale) <.msg>} ) right: <Id.Right_DollarBrace '}'> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'file='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'file='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'file='> name: file ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName owd) <'/'> ($ Id.VSub_DollarName file) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.LogicalOr left: (bool_expr.WordTest w: {($ Id.VSub_DollarName force)} ) right: (bool_expr.LogicalNot child: (bool_expr.Binary op_id: Id.BoolBinary_nt left: {($ Id.VSub_DollarName name)} right: {($ Id.VSub_DollarName file)} ) ) ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} {($ Id.VSub_DollarName locale)} {($ Id.VSub_DollarName name) <Id.Lit_Colon ':'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {<rm>} {<-f>} {($ Id.VSub_DollarName name)} {($ Id.VSub_DollarName name) <.> <Id.Lit_Star '*'>} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [ {($ Id.VSub_DollarName exec)} {($ Id.VSub_DollarName gen)} {($ Id.VSub_DollarName name)} {($ Id.VSub_DollarName file)} ] redirects: [] do_fork: T ) ] spids: [942 961] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.Simple blame_tok: <cd> more_env: [] words: [{<cd>} {($ Id.VSub_DollarName owd)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <list> pattern: (pat.Words words:[{<list>}]) middle: <Id.Right_CasePat _> action: [ (command.Pipeline children: [ (command.Simple blame_tok: <messages> more_env: [] words: [{<messages>}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sed> more_env: [] words: [{<sed>} {(SQ <'s,^.*/\\(.*\\)\\.msg$,\\1 &,'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <remove> pattern: (pat.Words words:[{<remove>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id:Id.Arith_Bang child:{($ Id.VSub_Pound '#')}) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {<Id.Lit_Star '*'> <.msg>} {<translate.tmp>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <Id.VSub_DollarName '$exec'> more_env: [] words: [{($ Id.VSub_DollarName exec)} {<rm>} {<-rf>} {(DQ ($ Id.VSub_At '@'))}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <translate> pattern: (pat.Words words:[{<translate>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id:Id.Arith_Bang child:{($ Id.VSub_Pound '#')}) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [ {<set>} {<-->} { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <messages> more_env: [] words: [{<messages>}] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.Simple blame_tok: <translate> more_env: [] words: [ {<translate>} {<-lmv>} {($ Id.VSub_DollarName all)} {($ Id.VSub_DollarName cache)} {($ Id.VSub_DollarName debug)} {($ Id.VSub_DollarName omit)} {($ Id.VSub_DollarName show)} {($ Id.VSub_DollarName dialect)} {(DQ ($ Id.VSub_At '@'))} ] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <verify> pattern: (pat.Words words:[{<verify>}]) middle: <Id.Right_CasePat _> action: [ (command.AndOr children: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Unary op_id:Id.Arith_Bang child:{($ Id.VSub_Pound '#')}) right: <Id.Op_DRightParen _> redirects: [] ) (command.Simple blame_tok: <set> more_env: [] words: [{<set>} {<-->} {<Id.Lit_Star '*'> <.msg>}] redirects: [] do_fork: T ) ] ops: [<Id.Op_DAmp _>] ) (command.ForEach keyword: <Id.KW_For for> iter_names: [file] iterable: (for_iter__Args) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'n='> name:n) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<-r>} {<num>} {<txt>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobDEqual left: {($ Id.VSub_DollarName num)} right: { (word_part.ExtGlob op: <Id.ExtGlob_Plus '+('> arms: [{<'[0-9]'>}] right: <Id.Right_ExtGlob _> ) } ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.UnaryAssign op_id: Id.Node_PostDPlus child: ($ Id.Lit_ArithVarLike n) ) right: <Id.Op_DRightParen _> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DBracket left: <Id.KW_DLeftBracket '[['> expr: (bool_expr.Binary op_id: Id.BoolBinary_GlobNEqual left: {($ Id.VSub_DollarName n)} right: {($ Id.VSub_DollarName num)} ) right: <Id.Lit_DRightBracket ']]'> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.DParen left: <Id.Op_DLeftParen _> child: (arith_expr.Binary op_id: Id.Arith_DEqual left: ($ Id.Lit_ArithVarLike n) right: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName num)} right: {<Id.Lit_Digits 1>} ) ) right: <Id.Op_DRightParen _> redirects: [] ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ ($ Id.VSub_DollarName file) <': ['> ($ Id.VSub_DollarName n) <'] missing'> ) } ] redirects: [] do_fork: T ) ] spids: [1201 1217] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <print> more_env: [] words: [ {<print>} {<-u2>} { (DQ ($ Id.VSub_DollarName file) <': ['> ($ Id.VSub_DollarName n) <-> (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {($ Id.VSub_DollarName num)} right: {<Id.Lit_Digits 1>} ) right: <Id.Right_DollarDParen _> ) <'] missing'> ) } ] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'n='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'n='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'n='> name: n ) op: assign_op.Equal rhs: {($ Id.VSub_DollarName num)} ) ] redirects: [] ) ] spids: [1186 1199] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [1162 1177] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_DollarName file)} ) ] ) ] right: <Id.KW_Done done> ) redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <Id.Lit_Star '*'> pattern: (pat.Words words:[{<Id.Lit_Star '*'>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <usage> more_env: [] words: [{<usage>}] redirects: [] do_fork: T ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] )