(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:TYPE) op: assign_op.Equal rhs: {(DQ <FreeBSD>)} spids: [128] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:REVISION) op: assign_op.Equal rhs: {(DQ <11.1>)} spids: [133] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BRANCH) op: assign_op.Equal rhs: {(DQ <STABLE>)} spids: [138] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name BRANCH_OVERRIDE))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:BRANCH) op: assign_op.Equal rhs: {(${ Id.VSub_Name BRANCH_OVERRIDE)} spids: [161] ) ] ) ] spids: [143 158] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RELEASE) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name REVISION) <-> (${ Id.VSub_Name BRANCH))} spids: [168] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSION) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name TYPE) <' '> (${ Id.VSub_Name RELEASE))} spids: [179] ) ] ) (command.ShFunction name: findvcs body: (BraceGroup children: [ (C {<local>} {<savedir>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:savedir) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>}))} spids: [216] ) ] ) (C {<cd>} {(${ Id.VSub_Name SYSDIR) <'/..'>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<pwd>}))} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <'/'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ <'./'> ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VCSDIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<pwd>}) ) (DQ <'/'> ($ Id.VSub_Number '$1')) } spids: [268] ) ] ) (C {<cd>} {(${ Id.VSub_Name savedir)}) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [251 265] ) ] ) (C {<cd>} {<..>}) ] ) ) (C {<cd>} {(${ Id.VSub_Name savedir)}) (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<1>}) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name SYSDIR))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:SYSDIR) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<dirname>} {($ Id.VSub_Number '$0')}) ) <'/..'> } spids: [333] ) ] ) ] spids: [315 330] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ (${ Id.VSub_Name PARAMFILE))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RELDATE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<awk>} {(SQ <'/__FreeBSD_version.*propagated to newvers/ {print $3}'>)} {(${ Id.VSub_Name PARAMFILE)} ) ) } spids: [362] ) ] ) ] spids: [344 359] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RELDATE) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<awk>} {(SQ <'/__FreeBSD_version.*propagated to newvers/ {print $3}'>)} {(${ Id.VSub_Name SYSDIR) <'/sys/param.h'>} ) ) } spids: [380] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b) op: assign_op.Equal rhs: {<'share/examples/etc/bsd-style-copyright'>} spids: [399] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-r>} {(DQ (${ Id.VSub_Name SYSDIR) <'/../COPYRIGHT'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:year) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<sed>} {<-Ee>} { (SQ < '/^Copyright .* The FreeBSD Project/!d;s/^.*1992-([0-9]*) .*$/\\1/g' > ) } {(${ Id.VSub_Name SYSDIR) <'/../COPYRIGHT'>} ) ) } spids: [421] ) ] ) ] spids: [402 418] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:year) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<date>} {<Id.Lit_Other '+'> <Id.Lit_Other '%'> <Y>}) ) } spids: [440] ) ] ) ] ) (command.ForEach iter_name: bsd_copyright iter_words: [ {<'../'> ($ Id.VSub_DollarName '$b')} {<'../../'> ($ Id.VSub_DollarName '$b')} {<'../../../'> ($ Id.VSub_DollarName '$b')} {<'/usr/src/'> ($ Id.VSub_DollarName '$b')} {<'/usr/'> ($ Id.VSub_DollarName '$b')} ] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-r>} {(DQ ($ Id.VSub_DollarName '$bsd_copyright'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COPYRIGHT) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<sed>} {<-e>} { (DQ <'s/'> <Id.Lit_BadBackslash '\\'> <'[year'> <Id.Lit_BadBackslash '\\'> <']/1992-'> ($ Id.VSub_DollarName '$year') <'/'> ) } {<-e>} {(SQ <'s/\\[your name here\\]\\.* /The FreeBSD Project./'>)} {<-e>} {(SQ <'s/\\[your name\\]\\.*/The FreeBSD Project./'>)} {<-e>} {(SQ <'/\\[id for your version control system, if any\\]/d'>)} {($ Id.VSub_DollarName '$bsd_copyright')} ) ) } spids: [494] ) ] ) (command.ControlFlow token:<Id.ControlFlow_Break break>) ] spids: [478 491] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$COPYRIGHT'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COPYRIGHT) op: assign_op.Equal rhs: { (DQ <'/*-\n'> <' * Copyright (c) 1992-'> ($ Id.VSub_DollarName '$year') <' The FreeBSD Project.\n'> <' * All rights reserved.\n'> <' *\n'> <' */'> ) } spids: [607] ) ] ) ] spids: [591 604] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:COPYRIGHT) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName '$COPYRIGHT') <'\n'>)} spids: [624] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$VARS_ONLY'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>})] spids: [637 650] ) ] ) (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:LC_ALL) op: assign_op.Equal rhs: {<C>} spids: [660] ) ] ) terminator: <Id.Op_Semi _> ) (C {<export>} {<LC_ALL>}) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-r>} {<version>} {<Id.Lit_RBracket ']'>}) ] ) action: [ (command.Simple words: [{<echo>} {<0>}] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<version>})] do_fork: T ) ] spids: [668 680] ) ] ) (C {<touch>} {<version>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:v) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<cat>} {<version>}))} spids: [698] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:u) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name USER> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<root>}) ) } spids: [707] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:d) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))} spids: [714] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:h) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name HOSTNAME> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<hostname>}))} ) ) } spids: [721] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$SOURCE_DATE_EPOCH'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:t) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<date>} {<-r>} {($ Id.VSub_DollarName '$SOURCE_DATE_EPOCH')} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [752] ) ] ) ] negated: T ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<echo>} {(DQ <'Invalid SOURCE_DATE_EPOCH'>)}] redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [748 767] ) ] ) ] spids: [732 745] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:t) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<date>}))} spids: [790] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:i) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C { (braced_var_sub token: <Id.VSub_Name MAKE> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<make>}) ) } {<-V>} {<KERN_IDENT>} ) ) } spids: [799] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:compiler_v) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (command.Simple words: [ { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C { (braced_var_sub token: <Id.VSub_Name MAKE> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<make>} ) ) } {<-V>} {<CC>} ) ) } {<-v>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (C {<grep>} {<-w>} {(SQ <version>)}) ] negated: F ) ) } spids: [814] ) ] ) (command.ForEach iter_name: dir iter_words: [{<'/usr/bin'>} {<'/usr/local/bin'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ (${ Id.VSub_Name svnversion))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [(command.ControlFlow token:<Id.ControlFlow_Break break>)] spids: [859 877] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ (${ Id.VSub_Name dir) <'/svnversion'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name svnversion)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {(${ Id.VSub_Name dir) <'/svnversion'>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<realpath>} {(${ Id.VSub_Number 0)}) ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svnversion) op: assign_op.Equal rhs: {(${ Id.VSub_Name dir) <'/svnversion'>} spids: [966] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [950 963] ) ] ) ] spids: [886 915] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name svnversion))} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-x>} {<'/usr/bin/svnliteversion'>} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<'/usr/bin/svnliteversion'>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<realpath>} {(${ Id.VSub_Number 0)}) ) } ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) (redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>}) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svnversion) op: assign_op.Equal rhs: {<'/usr/bin/svnliteversion'>} spids: [1046] ) ] ) ] spids: [1030 1043] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svnversion) op: assign_op.Equal rhs: (word.Empty) spids: [1053] ) ] ) ] ) ] spids: [984 1010] ) ] ) (command.ForEach iter_name: dir iter_words: [{<'/usr/bin'>} {<'/usr/local/bin'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ (${ Id.VSub_Name dir) <'/p4'>)} {<Id.Lit_RBracket ']'>} ) (C {<Id.Lit_LBracket '['>} {<-z>} {(${ Id.VSub_Name p4_cmd)} {<Id.Lit_RBracket ']'>} ) ] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p4_cmd) op: assign_op.Equal rhs: {(${ Id.VSub_Name dir) <'/p4'>} spids: [1107] ) ] ) ] spids: [1075 1104] ) ] ) ] ) ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {<findvcs>} {<.git>}) terminator:<Id.Op_Semi _>)] ) action: [ (command.ForEach iter_name: dir iter_words: [{<'/usr/bin'>} {<'/usr/local/bin'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ (${ Id.VSub_Name dir) <'/git'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git_cmd) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name dir) <'/git --git-dir='> (${ Id.VSub_Name VCSDIR) ) } spids: [1163] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1143 1160] ) ] ) ] ) ) ] spids: [1119 1126] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [(command.Sentence child:(C {<findvcs>} {<.hg>}) terminator:<Id.Op_Semi _>)] ) action: [ (command.ForEach iter_name: dir iter_words: [{<'/usr/bin'>} {<'/usr/local/bin'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ (${ Id.VSub_Name dir) <'/hg'>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hg_cmd) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name dir) <'/hg -R '> (${ Id.VSub_Name VCSDIR))} spids: [1230] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] spids: [1210 1227] ) ] ) ] ) ) ] spids: [1186 1193] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$svnversion'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} {(${ Id.VSub_Name SYSDIR)}) (command.Simple words: [{($ Id.VSub_DollarName '$svnversion')}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ] ) ) } spids: [1270] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$svn'))} arms: [ (case_arm pat_list: [ {<Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'> <Id.Lit_LBracket '['> <MSP> <Id.Lit_RBracket ']'> } {<Id.Lit_Star '*'> <Id.Lit_Colon ':'> <Id.Lit_Star '*'>} ] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: {(DQ <' r'> (${ Id.VSub_Name svn))} spids: [1312] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:modified) op: assign_op.Equal rhs: {<true>} spids: [1321] ) ] ) ] spids: [1298 1309 1325 -1] ) (case_arm pat_list: [{<Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: {(DQ <' r'> (${ Id.VSub_Name svn))} spids: [1335] ) ] ) ] spids: [1328 1332 1344 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<unset>} {<svn>})] spids: [1347 1348 1356 -1] ) ] ) ] spids: [1253 1267] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$git_cmd'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName '$git_cmd')} {<rev-parse>} {<--verify>} {<--short>} {<HEAD>} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1381] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {($ Id.VSub_DollarName '$git_cmd')} {<svn>} {<find-rev>} {($ Id.VSub_DollarName '$git')} ] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1400] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$svn'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: {(DQ <' r'> (${ Id.VSub_Name svn))} spids: [1434] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git) op: assign_op.Equal rhs: {(DQ <'='> (${ Id.VSub_Name git))} spids: [1443] ) ] ) ] spids: [1417 1431] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$git_cmd')} {<log>} {<--grep>} {(SQ <'^git-svn-id:'>)} ) (C {<grep>} {(SQ <'^ git-svn-id:'>)}) (C {<head>} {<-1>}) (C {<sed>} {<-n>} {(SQ <'s/^.*@\\([0-9][0-9]*\\).*$/\\1/p'>)}) ] negated: F ) ) } spids: [1455] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$svn'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$git_cmd')} {<log>} {<--format> <Id.Lit_Equals '='> (SQ <'format:%N'>)} ) (C {<grep>} {(SQ <'^svn '>)}) (C {<head>} {<-1>}) (C {<sed>} {<-n>} {(SQ <'s/^.*revision=\\([0-9][0-9]*\\).*$/\\1/p'>)} ) ] negated: F ) ) } spids: [1528] ) ] ) ] spids: [1511 1525] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$svn'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: {(DQ <' r'> (${ Id.VSub_Name svn))} spids: [1604] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git) op: assign_op.Equal rhs: {(DQ <'+'> (${ Id.VSub_Name git))} spids: [1613] ) ] ) ] spids: [1587 1601] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git) op: assign_op.Equal rhs: {(DQ <' '> (${ Id.VSub_Name git))} spids: [1625] ) ] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git_b) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {($ Id.VSub_DollarName '$git_cmd')} {<rev-parse>} {<--abbrev-ref>} {<HEAD>}) ) } spids: [1640] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$git_b'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name git) <'('> (${ Id.VSub_Name git_b) <')'>)} spids: [1671] ) ] ) ] spids: [1654 1668] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {($ Id.VSub_DollarName '$git_cmd')} {<--work-tree> <Id.Lit_Equals '='> (${ Id.VSub_Name VCSDIR) <'/..'>} {<diff-index>} {<--name-only>} {<HEAD>} ) (C {<read>} {<dummy>}) ] negated: F ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:git) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name git) <-dirty>)} spids: [1716] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:modified) op: assign_op.Equal rhs: {<true>} spids: [1725] ) ] ) ] spids: [1687 1713] ) ] ) ] spids: [1364 1378] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$p4_cmd'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p4version) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} {(${ Id.VSub_Name SYSDIR)}) (command.Pipeline children: [ (command.Simple words: [ {($ Id.VSub_DollarName '$p4_cmd')} {<changes>} {<-m1>} {(DQ <'./...#have'>)} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) (C {<awk>} {(SQ <'{ print $2 }'>)}) ] negated: F ) ] ) ) } spids: [1751] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$p4version'))} arms: [ (case_arm pat_list: [{<Id.Lit_LBracket '['> <0-9> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p4version) op: assign_op.Equal rhs: {(DQ <' '> (${ Id.VSub_Name p4version))} spids: [1807] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p4opened) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<cd>} {(${ Id.VSub_Name SYSDIR)}) (command.Simple words: [ {($ Id.VSub_DollarName '$p4_cmd')} {<opened>} {<'./...'>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '2>&'> loc: (redir_loc.Fd fd:2) arg: {<1>} ) ] do_fork: T ) ] ) ) } spids: [1816] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$p4opened'))} arms: [ (case_arm pat_list: [{<File> <Id.Lit_Star '*'>}] spids: [1848 1850 1852 -1] ) (case_arm pat_list: [{<'//'> <Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:p4version) op: assign_op.Equal rhs: {(DQ (${ Id.VSub_Name p4version) <'+edit'>)} spids: [1860] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:modified) op: assign_op.Equal rhs: {<true>} spids: [1869] ) ] ) ] spids: [1855 1857 1873 -1] ) ] ) ] spids: [1800 1804 1879 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<unset>} {<p4version>})] spids: [1882 1883 1889 -1] ) ] ) ] spids: [1734 1748] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$hg_cmd'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hg) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{($ Id.VSub_DollarName '$hg_cmd')} {<id>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) ) } spids: [1914] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple words: [{($ Id.VSub_DollarName '$hg_cmd')} {<svn>} {<info>}] redirects: [ (redir op: <Id.Redir_Great '2>'> loc: (redir_loc.Fd fd:2) arg: {<'/dev/null'>} ) ] do_fork: T ) (C {<awk>} {<-F> (SQ <': '>)} {(SQ <'/Revision/ { print $2 }'>)}) ] negated: F ) ) } spids: [1927] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$svn'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:svn) op: assign_op.Equal rhs: {(DQ <' r'> (${ Id.VSub_Name svn))} spids: [1977] ) ] ) ] spids: [1960 1974] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName '$hg'))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:hg) op: assign_op.Equal rhs: {(DQ <' '> (${ Id.VSub_Name hg))} spids: [2006] ) ] ) ] spids: [1989 2003] ) ] ) ] spids: [1897 1911] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:include_metadata) op: assign_op.Equal rhs: {<true>} spids: [2020] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<getopts>} {<rR>} {<opt>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$opt'))} arms: [ (case_arm pat_list: [{<r>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:include_metadata) op: assign_op.Equal rhs: (word.Empty) spids: [2048] ) ] ) ] spids: [2044 2045 2051 -1] ) (case_arm pat_list: [{<R>}] action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name modified))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:include_metadata) op: assign_op.Equal rhs: (word.Empty) spids: [2076] ) ] ) ] spids: [2058 2073] ) ] ) ] spids: [2054 2055 -1 2082] ) ] ) ] ) ) (C {<shift>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike OPTIND> right: {<Id.Lit_Digits 1>} ) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ (${ Id.VSub_Name include_metadata))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERINFO) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name VERSION) <' '> (${ Id.VSub_Name svn) (${ Id.VSub_Name git) (${ Id.VSub_Name hg) (${ Id.VSub_Name p4version) ) } spids: [2116] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSTR) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name VERINFO) (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\\\'> ) <n> ) } spids: [2137] ) ] ) ] spids: [2098 2113] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERINFO) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name VERSION) <' #'> (${ Id.VSub_Name v) (${ Id.VSub_Name svn) (${ Id.VSub_Name git) (${ Id.VSub_Name hg) (${ Id.VSub_Name p4version) <': '> (${ Id.VSub_Name t) ) } spids: [2149] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:VERSTR) op: assign_op.Equal rhs: { (DQ (${ Id.VSub_Name VERINFO) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <'n '> (${ Id.VSub_Name u) <'@'> (${ Id.VSub_Name h) <':'> (${ Id.VSub_Name d) (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\\\'>) <n> ) } spids: [2177] ) ] ) ] ) (command.Simple words: [{<cat>}] redirects: [ (redir op: <Id.Redir_DLess '<<'> loc: (redir_loc.Fd fd:0) arg: (redir_param.HereDoc here_begin: {<EOF>} here_end_span_id: 2267 stdin_parts: [ ($ Id.VSub_DollarName '$COPYRIGHT') <'\n'> <'#define SCCSSTR '> <Id.Right_DoubleQuote '"'> <'@(#)'> (${ Id.VSub_Name VERINFO) <Id.Right_DoubleQuote '"'> <'\n'> <'#define VERSTR '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name VERSTR) <Id.Right_DoubleQuote '"'> <'\n'> <'#define RELSTR '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name RELEASE) <Id.Right_DoubleQuote '"'> <'\n'> <'\n'> <'char sccs[sizeof(SCCSSTR) > 128 ? sizeof(SCCSSTR) : 128] = SCCSSTR;\n'> <'char version[sizeof(VERSTR) > 256 ? sizeof(VERSTR) : 256] = VERSTR;\n'> <'char compiler_version[] = '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name compiler_v) <Id.Right_DoubleQuote '"'> <';\n'> <'char ostype[] = '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name TYPE) <Id.Right_DoubleQuote '"'> <';\n'> <'char osrelease[sizeof(RELSTR) > 32 ? sizeof(RELSTR) : 32] = RELSTR;\n'> <'int osreldate = '> (${ Id.VSub_Name RELDATE) <';\n'> <'char kern_ident[] = '> <Id.Right_DoubleQuote '"'> (${ Id.VSub_Name i) <Id.Right_DoubleQuote '"'> <';\n'> ] ) ) (redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<vers.c>}) ] do_fork: T ) (command.Simple words: [ {<echo>} { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: <Id.Lit_ArithVarLike v> right: {<Id.Lit_Digits 1>} ) ) } ] redirects: [(redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<version>})] do_fork: T ) ] )