(List (Com {[LIT_OTHER ":"]}) (FunctionDef err_exit [] (List (Com {[LIT_CHARS print]} {[LIT_CHARS -u2]} {[DQ [VarSub command][LIT_CHARS ": "][VarSub @]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef usage [] (List (Com {[LIT_CHARS print]} {[LIT_CHARS -u2]} {[DQ [LIT_CHARS "Usage: "][VarSub command][LIT_CHARS " file ..."]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 2]}) ) ) (= scope= flags=0 words=[] bindings=[('command', {[VarSub 0 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (Case to_match={[VarSub 1]}, pat_word_list=[[{[LIT_CHARS --]}], [{[DQ ]}, {[LIT_CHARS -] [\ LIT_ESCAPED_CHAR "\\?"]}], [{[LIT_CHARS -] [LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS shift]}) (Com {[LIT_CHARS break]}) ) (Com {[LIT_CHARS usage]}) (List (Com {[LIT_CHARS print]} {[LIT_CHARS -u2]} {[LIT_CHARS --]} {[DQ [VarSub 1][LIT_CHARS ": invalid option"]]}) (Com {[LIT_CHARS usage]}) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS 2d]} {[LIT_OTHER "+"]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (AndOr OP_OR_IF (AndOr OP_AND_IF (Com {[LIT_OTHER ":"]} < (FilenameRedirectNode filename={[LIT_CHARS xxx]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS xxx]}) (Com {[LIT_CHARS 2d]} {[LIT_OTHER "+"]}) ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('n', {[ComSub (Com {[LIT_CHARS umask]})]})]) (For i do_arg_iter) (If (DBracket {B1 UNARY_FILE_f {[VarSub i]}}) (AndOr OP_OR_IF (DBracket {B2 BINARY_FILE_EF {[VarSub i]} {[LIT_CHARS .../...]}}) (Com {[LIT_CHARS print]} {[LIT_CHARS -u2]} {[DQ [VarSub command][LIT_CHARS ": "][VarSub i][LIT_CHARS ": file exists"]]}) ) (ElseTrue) (List (Case to_match={[VarSub i]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('dir', {[VarSub i transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS "*"]}]]}), ('file', {[VarSub i transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('dir', {[LIT_CHARS .]}), ('file', {[VarSub i]})]) ) (AndOr OP_OR_IF (DBracket {B2 BINARY_FILE_EF {[VarSub dir]} {[LIT_CHARS .]}}) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub dir]]}) (Com {[LIT_CHARS err_exit]} {[DQ [VarSub dir][LIT_CHARS ": cd failed"]]}) ) ) (If (DBracket {B! {B1 UNARY_FILE_f {[LIT_CHARS .../...]}}}) (If (DBracket {B! {B1 UNARY_FILE_d {[LIT_CHARS ...]}}}) (If (Com {[LIT_CHARS mkdir]} {[LIT_CHARS ...]}) (List (AndOr OP_AND_IF (Com {[LIT_CHARS chgrp]} {[LIT_CHARS 3d]} {[LIT_CHARS ...]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS g] [LIT_OTHER "+"] [LIT_CHARS s]} {[LIT_CHARS ...]}) ) (Com {[LIT_CHARS umask]} {[LIT_CHARS 777]}) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[LIT_CHARS .../...]} "> 1), > ) (Com {[LIT_CHARS err_exit]} {[DQ [VarSub i][LIT_CHARS ": cannot opaque"]]}) ) (Com {[LIT_CHARS umask]} {[VarSub n transform_ops=[VS_UNARY_POUND {[LIT_CHARS 8] [LIT_POUND "#"]}]]}) ) (DBracket {B! {B1 UNARY_FILE_f {[LIT_CHARS ...]}}}) (Com {[LIT_CHARS err_exit]} {[DQ [LIT_CHARS "...: cannot mkdir"]]}) (DBracket {B? LOGICAL_BINARY_OR {B1 UNARY_FILE_r {[LIT_CHARS ...]}} {B? LOGICAL_BINARY_OR {B1 UNARY_FILE_w {[LIT_CHARS ...]}} {B? LOGICAL_BINARY_OR {B1 UNARY_FILE_x {[LIT_CHARS ...]}} {B1 UNARY_FILE_s {[LIT_CHARS ...]}}}}}) (Com {[LIT_CHARS err_exit]} {[DQ [LIT_CHARS "...: obsolescent opaque must be 0 mode file"]]}) (ElseTrue) (List (AndOr OP_OR_IF (Com {[LIT_CHARS mkdir]} {[LIT_CHARS ...3d]}) (Com {[LIT_CHARS err_exit]} {[DQ [LIT_CHARS "...3d: cannot mkdir"]]}) ) (If (Com {[LIT_CHARS mv]} {[LIT_CHARS ...]} {[LIT_CHARS ...3d]}) (If (Com {[LIT_CHARS mv]} {[LIT_CHARS ...3d]} {[LIT_CHARS ...]}) (Com {[LIT_OTHER ":"]}) (ElseTrue) (List (Com {[LIT_CHARS rmdir]} {[LIT_CHARS ...]}) (Com {[LIT_CHARS mv]} {[LIT_CHARS ...3d]} {[LIT_CHARS ...]}) (Com {[LIT_CHARS err_exit]} {[DQ [LIT_CHARS "...: cannot rename obsolescent opaque"]]}) ) ) (ElseTrue) (List (Com {[LIT_CHARS rmdir]} {[LIT_CHARS ...3d]}) (Com {[LIT_CHARS err_exit]} {[DQ [LIT_CHARS "...: cannot rename obsolescent opaque"]]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS chgrp]} {[LIT_CHARS 3d]} {[LIT_CHARS ...]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS chmod]} {[LIT_CHARS g] [LIT_OTHER "+"] [LIT_CHARS s]} {[LIT_CHARS ...]}) ) ) ) (ElseTrue) (List (Com {[LIT_CHARS umask]} {[LIT_CHARS 777]}) (AndOr OP_OR_IF (Com < (FilenameRedirectNode filename={[LIT_CHARS .../...]} "> 1), > ) (Com {[LIT_CHARS err_exit]} {[DQ [VarSub i][LIT_CHARS ": cannot opaque"]]}) ) (Com {[LIT_CHARS umask]} {[VarSub n transform_ops=[VS_UNARY_POUND {[LIT_CHARS 8] [LIT_POUND "#"]}]]}) ) ) ) (Com {[LIT_CHARS ln]} {[LIT_CHARS .../...]} {[DQ [VarSub file]]}) (AndOr OP_OR_IF (DBracket {B2 BINARY_FILE_EF {[VarSub dir]} {[LIT_CHARS .]}}) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[TildeSub '-']}) (Com {[LIT_CHARS err_exit]} {[DQ [VarSub OLDPWD][LIT_CHARS ": cannot restore directory"]]}) ) ) ) ) ) )