(command.CommandList children: [ (command.CommandList children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {<'/bin'> <Id.Lit_Colon ':'> <'/sbin'> <Id.Lit_Colon ':'> <'/usr/bin'> <Id.Lit_Colon ':'> <'/usr/sbin'> } spids: [144] ) ] ) terminator: <Id.Op_Semi _> ) (C {<export>} {<PATH>}) ] ) (command.ShFunction name: do_purge body: (BraceGroup children: [ (command.Simple words: [{<echo>} {(DQ <'purge '> ($ Id.VSub_At '$@'))}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <'not implemented yet'> <Id.Lit_BadBackslash '\\'> <n>)}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) ] ) ) (command.ShFunction name: uncompress_page body: (BraceGroup children: [ (C {<local>} {<pname>}) (C {<local>} {<fname>}) (C {<local>} {<sect>}) (C {<local>} {<ext>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [242] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(SQ <.>)} spids: [246] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} {($ Id.VSub_DollarName '$pname')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<3>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [280] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple words: [{<echo>} {<ignoring>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [262 276] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [313] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<2>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_Number '$1')} spids: [338] ) ] ) (C {<shift>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sect) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [350] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:ext) op: assign_op.Equal rhs: {($ Id.VSub_Number '$2')} spids: [354] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [359] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$ext'))} arms: [ (case_arm pat_list: [{<gz>} {<Z>}] action: [ (BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [383] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<file>} {($ Id.VSub_DollarName '$pname')}) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <gzip>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<moving>} {<hard>} {<link>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (C {<mv>} {($ Id.VSub_DollarName '$pname')} {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_DollarName '$ext')} ) ] spids: [401 418] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <symbolic>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<gunzipping>} {<page>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<-t>} {<manager>}) ) } spids: [483] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ) (command.Simple words: [{<gunzip>} {<-c>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$temp')} ) ] do_fork: T ) (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName '$pname')} ) (C {<cp>} {($ Id.VSub_DollarName '$temp')} {($ Id.VSub_DollarName '$pname')} ) (C {<chmod>} {<444>} {($ Id.VSub_DollarName '$pname')}) (C {<mv>} {($ Id.VSub_DollarName '$pname')} {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_DollarName '$sect') } ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp')}) ] spids: [451 468] ) ] else_action: [ (command.Simple words: [ {<echo>} {<skipping>} {<symlink>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] ) ] ) ] spids: [374 377 584 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [593] ) ] ) (command.Simple words: [{<echo>} {<skipping>} {<file>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] spids: [587 588 613 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [623] ) ] ) ] ) ) (command.ShFunction name: do_uncompress body: (BraceGroup children: [ (C {<local>} {<i>}) (C {<local>} {<dir>}) (C {<local>} {<workdir>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:workdir) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))} spids: [664] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<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 '['>} {<-d>} {($ Id.VSub_Number '$1')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dir) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [705] ) ] ) (C {<cd>} {($ Id.VSub_DollarName '$dir')}) (command.ForEach iter_name: i iter_words: [{<Id.Lit_Star '*'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <cat> <Id.Lit_QMark '?'>}] spids: [734 737 739 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<do_uncompress>} {($ Id.VSub_DollarName '$i')} ) ] spids: [751 763] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<uncompress_page>} {($ Id.VSub_DollarName '$i')} ) ] spids: [775 787] ) ] ) ] ) ] ) ] spids: [745 746 802 -1] ) ] ) ] ) ) (C {<cd>} {($ Id.VSub_DollarName '$workdir')}) ] spids: [690 702] ) ] else_action: [ (command.Simple words: [{<echo>} {(DQ <'directory '> ($ Id.VSub_Number '$1') <' not found'>)}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) (C {<shift>}) ] ) ) ] ) ) (command.ShFunction name: so_purge_page body: (BraceGroup children: [ (C {<local>} {<so_entries>}) (C {<local>} {<lines>}) (C {<local>} {<fname>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:so_entries) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<grep>} {(DQ <'^'> <Id.Lit_BadBackslash '\\'> <.so>)} {($ Id.VSub_Number '$1')} ) (C {<wc>} {<-l>}) ] negated: F ) ) } spids: [874] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$so_entries')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [898 912] ) ] ) (command.Simple words: [{<echo>} {($ Id.VSub_Number '$1')} {<contains>} {<a>} {<.so>} {<entry>}] redirects: [(redir op:<Id.Redir_GreatAnd '2>&'> loc:(redir_loc.Fd fd:2) arg:{<1>})] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:lines) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [{<wc>} {<-l>}] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {($ Id.VSub_Number '$1')} ) ] do_fork: T ) ) } spids: [950] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$lines')} {<-eq>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [990] ) ] ) terminator: <Id.Op_Semi _> ) (C {<echo>} {<replacing>} {($ Id.VSub_DollarName '$fname')} {<with>} {<a>} {<hard>} {<link>} ) (command.Sentence child: (C {<set>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<cat>} {($ Id.VSub_DollarName '$fname')}) ) } ) terminator: <Id.Op_Semi _> ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$fname')}) (C {<ln>} {<'../'> ($ Id.VSub_Number '$2')} {($ Id.VSub_DollarName '$fname')}) ] spids: [973 987] ) ] else_action: [ (command.Simple words: [{<echo>} {<inlining>} {<page>} {($ Id.VSub_DollarName '$fname')}] redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<-t>} {<manager>}) ) } spids: [1052] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$fname')}) (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {<cd>} {<..>}) terminator: <Id.Op_Semi _> ) (C {<soelim>}) ] ) redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$temp')} ) ] ) ] negated: F ) (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName '$fname')}) (C {<cp>} {($ Id.VSub_DollarName '$temp')} {($ Id.VSub_DollarName '$fname')}) (C {<chmod>} {<444>} {($ Id.VSub_DollarName '$fname')}) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp')}) ] ) ] ) ) (command.ShFunction name: remove_so body: (BraceGroup children: [ (C {<local>} {<pname>}) (C {<local>} {<fname>}) (C {<local>} {<sect>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1171] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(SQ <.>)} spids: [1175] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} {($ Id.VSub_DollarName '$pname')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1205] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple words: [{<echo>} {<ignoring>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [1187 1201] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1238] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_Number '$1')} spids: [1263] ) ] ) (C {<shift>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sect) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1275] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1280] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$sect'))} arms: [ (case_arm pat_list: [{<gz>}] action: [ (BraceGroup children: [ (command.Sentence child: (command.Simple words: [ {<echo>} {<file>} {($ Id.VSub_DollarName '$pname')} {<already>} {<gzipped>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) ] spids: [1295 1296 1317 -1] ) (case_arm pat_list: [{<Z>}] action: [ (BraceGroup children: [ (command.Sentence child: (command.Simple words: [ {<echo>} {<file>} {($ Id.VSub_DollarName '$pname')} {<already>} {<compressed>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) ] spids: [1320 1321 1342 -1] ) (case_arm pat_list: [ {<Id.Lit_LBracket '['> <12345678ln> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>} ] action: [ (BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1353] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<file>} {($ Id.VSub_DollarName '$pname')}) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<Id.Lit_Equals '='>} {(DQ <gzip>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<moving>} {<hard>} {<link>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (C {<mv>} {($ Id.VSub_DollarName '$pname')} {($ Id.VSub_DollarName '$pname') <.gz>} ) ] spids: [1371 1387] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <symbolic>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ <'removing .so\'s in page '> ($ Id.VSub_DollarName '$pname') ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (C {<so_purge_page>} {($ Id.VSub_DollarName '$pname')}) ] spids: [1419 1436] ) ] else_action: [ (command.Simple words: [ {<echo>} {<skipping>} {<symlink>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] ) ] ) ] spids: [1345 1349 1488 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1497] ) ] ) (command.Simple words: [{<echo>} {<skipping>} {<file>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] spids: [1491 1492 1517 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1527] ) ] ) ] ) ) (command.ShFunction name: compress_page body: (BraceGroup children: [ (C {<local>} {<pname>}) (C {<local>} {<fname>}) (C {<local>} {<sect>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:pname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1575] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(SQ <.>)} spids: [1579] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} {($ Id.VSub_DollarName '$pname')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1609] ) ] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.Simple words: [{<echo>} {<ignoring>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Return return> arg_word:{<0>}) terminator: <Id.Op_Semi _> ) ] spids: [1591 1605] ) ] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1642] ) ] ) terminator: <Id.Op_Semi _> ) (C {<shift>}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-gt>} {<1>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fname) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$fname') <.> ($ Id.VSub_Number '$1')} spids: [1667] ) ] ) (C {<shift>}) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sect) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [1679] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1684] ) ] ) (command.Case to_match: {(DQ ($ Id.VSub_DollarName '$sect'))} arms: [ (case_arm pat_list: [{<gz>}] action: [ (BraceGroup children: [ (command.Sentence child: (command.Simple words: [ {<echo>} {<file>} {($ Id.VSub_DollarName '$pname')} {<already>} {<gzipped>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) ] spids: [1699 1700 1721 -1] ) (case_arm pat_list: [{<Z>}] action: [ (BraceGroup children: [ (command.Sentence child: (command.Simple words: [ {<echo>} {<file>} {($ Id.VSub_DollarName '$pname')} {<already>} {<compressed>} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) ] spids: [1724 1725 1746 -1] ) (case_arm pat_list: [ {<Id.Lit_LBracket '['> <12345678ln> <Id.Lit_RBracket ']'> <Id.Lit_Star '*'>} ] action: [ (BraceGroup children: [ (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1757] ) ] ) terminator: <Id.Op_Semi _> ) (C {<set>} { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<file>} {($ Id.VSub_DollarName '$pname')}) ) } ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<Id.Lit_Equals '='>} {(DQ <gzip>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<moving>} {<hard>} {<link>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (C {<mv>} {($ Id.VSub_DollarName '$pname')} {($ Id.VSub_DollarName '$pname') <.gz>} ) ] spids: [1775 1791] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Number '$2')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {(DQ <symbolic>)} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} {<gzipping>} {<page>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.AndOr ops: [Id.Op_DPipe] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:temp) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<mktemp>} {<-t>} {<manager>}) ) } spids: [1855] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] ) (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$pname')}) (command.Subshell child: (command.CommandList children: [ (command.Sentence child: (C {<cd>} {<..>}) terminator: <Id.Op_Semi _> ) (C {<soelim>}) ] ) ) (command.Simple words: [{<gzip>} {<-c>} {<-->}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$temp')} ) ] do_fork: T ) ] negated: F ) (C {<chmod>} {<u> <Id.Lit_Other '+'> <w>} {($ Id.VSub_DollarName '$pname')} ) (C {<cp>} {($ Id.VSub_DollarName '$temp')} {($ Id.VSub_DollarName '$pname')} ) (C {<chmod>} {<444>} {($ Id.VSub_DollarName '$pname')}) (C {<mv>} {($ Id.VSub_DollarName '$pname')} {($ Id.VSub_DollarName '$pname') <.gz>} ) (C {<rm>} {<-f>} {($ Id.VSub_DollarName '$temp')}) ] spids: [1823 1840] ) ] else_action: [ (command.Simple words: [ {<echo>} {<skipping>} {<symlink>} {($ Id.VSub_DollarName '$pname')} ] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] ) ] ) ] spids: [1749 1753 1975 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (BraceGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [1984] ) ] ) (command.Simple words: [{<echo>} {<skipping>} {<file>} {($ Id.VSub_DollarName '$pname')}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) ] spids: [1978 1979 2004 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:IFS) op: assign_op.Equal rhs: {(DQ <' \t'>)} spids: [2014] ) ] ) ] ) ) (command.ShFunction name: do_compress_so body: (BraceGroup children: [ (C {<local>} {<i>}) (C {<local>} {<dir>}) (C {<local>} {<workdir>}) (C {<local>} {<what>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:what) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2059] ) ] ) (C {<shift>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:workdir) op: assign_op.Equal rhs: {(command_sub left_token:<Id.Left_Backtick '`'> child:(C {<pwd>}))} spids: [2066] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<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 '['>} {<-d>} {($ Id.VSub_Number '$1')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:dir) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [2107] ) ] ) (C {<cd>} {($ Id.VSub_DollarName '$dir')}) (command.ForEach iter_name: i iter_words: [{<Id.Lit_Star '*'>}] do_arg_iter: F body: (command.DoGroup children: [ (command.Case to_match: {($ Id.VSub_DollarName '$i')} arms: [ (case_arm pat_list: [{<Id.Lit_Star '*'> <cat> <Id.Lit_QMark '?'>}] spids: [2136 2139 2141 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (BraceGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-d>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<do_compress_so>} {($ Id.VSub_DollarName '$what')} {($ Id.VSub_DollarName '$i')} ) ] spids: [2153 2165] ) ] else_action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {($ Id.VSub_DollarName '$i')} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {($ Id.VSub_DollarName '$what')} {($ Id.VSub_DollarName '$i')} ) ] spids: [2180 2192] ) ] ) ] ) ] ) ] spids: [2147 2148 2207 -1] ) ] ) ] ) ) (C {<cd>} {($ Id.VSub_DollarName '$workdir')}) ] spids: [2092 2104] ) ] else_action: [ (command.Simple words: [{<echo>} {(DQ <'directory '> ($ Id.VSub_Number '$1') <' not found'>)}] redirects: [ (redir op: <Id.Redir_GreatAnd '1>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) ] ) (C {<shift>}) ] ) ) ] ) ) (command.ShFunction name: ctl_usage body: (BraceGroup children: [ (command.Simple words: [{<echo>} {(DQ <'usage: '> ($ Id.VSub_Number '$1') <' -compress <path> ... '>)}] redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <' '> ($ Id.VSub_Number '$1') <' -uncompress <path> ... '>)}] redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <' '> ($ Id.VSub_Number '$1') <' -purge <days> <path> ... '>)}] redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.Simple words: [{<echo>} {(DQ <' '> ($ Id.VSub_Number '$1') <' -purge expire <path> ... '>)}] redirects: [(redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] ) ) (command.ShFunction name: do_compress body: (BraceGroup children: [ (C {<do_compress_so>} {<remove_so>} {(DQ ($ Id.VSub_At '$@'))}) (C {<do_compress_so>} {<compress_page>} {(DQ ($ Id.VSub_At '$@'))}) ] ) ) (command.Sentence child: (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-lt>} {<2>} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Sentence child: (C {<ctl_usage>} {($ Id.VSub_Number '$0')}) terminator: <Id.Op_Semi _> ) ] spids: [2371 2385] ) ] ) terminator: <Id.Op_Semi _> ) (command.Case to_match: {(DQ ($ Id.VSub_Number '$1'))} arms: [ (case_arm pat_list: [{<-compress>}] action: [ (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<do_compress>} {(DQ ($ Id.VSub_At '$@'))}) ] spids: [2407 2408 2420 -1] ) (case_arm pat_list: [{<-uncompress>}] action: [ (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<do_uncompress>} {(DQ ($ Id.VSub_At '$@'))}) ] spids: [2423 2424 2436 -1] ) (case_arm pat_list: [{<-purge>}] action: [ (command.Sentence child:(C {<shift>}) terminator:<Id.Op_Semi _>) (C {<do_purge>} {(DQ ($ Id.VSub_At '$@'))}) ] spids: [2439 2440 2452 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [(C {<ctl_usage>} {($ Id.VSub_Number '$0')})] spids: [2455 2456 2462 -1] ) ] ) ] )