(List (= scope= flags=0 words=[] bindings=[('cvs_dir', {[DQ ]})]) (= scope= flags=0 words=[] bindings=[('tempfiles', {[Array ]})]) (= scope= flags=0 words=[] bindings=[('tmplate', {[DQ [LIT_CHARS /tmp/][ComSub (Com {[LIT_CHARS basename]} {[VarSub 0]})][LIT_CHARS .XXXXXX]]})]) (FunctionDef cleanup [] (List (If (DBracket {B1 UNARY_STRING_n {[VarSub cvs_dir]}}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -r]} {[DQ [VarSub cvs_dir]]}) ) (If (DBracket {B1 UNARY_STRING_n {[VarSub tempfiles bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]}}) (Com {[LIT_CHARS rm]} {[DQ [VarSub tempfiles bracket_op=(Index {A Atom NODE_ARITH_WORD {AS_OP_AT "@"}})]]}) ) (Com {[LIT_CHARS cd]} {[VarSub starting_dir]}) ) ) (Com {[LIT_CHARS trap]} {[LIT_CHARS cleanup]} {[LIT_CHARS 0]}) (FunctionDef tempfile [] (List (= scope= flags=0 words=[] bindings=[('result', {[VarSub 1]})]) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('tmpfile', {[ComSub (Com {[LIT_CHARS mktemp]} {[VarSub tmplate]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (= scope= flags=0 words=[] bindings=[('tempfiles+', {[Array {[DQ [VarSub tmpfile]]}]})]) (Com {[LIT_CHARS eval]} {[VarSub result] [LIT_OTHER "="] [DQ [LIT_CHARS "'"][VarSub tmpfile][LIT_CHARS "'"]]}) ) ) (= scope= flags=0 words=[] bindings=[('starting_dir', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (= scope= flags=0 words=[] bindings=[('hunspell_dir', {[ComSub (Com {[LIT_CHARS dirname]} {[ComSub (Com {[LIT_CHARS readlink]} {[LIT_CHARS -e]} {[VarSub 0]})]})]})]) (Com {[LIT_CHARS tempfile]} {[LIT_CHARS filter_file]}) (Com {[LIT_CHARS cat]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "google.patch\n"][LIT_CHARS "update_google_patch.sh\n"][LIT_CHARS "README.chromium\n"]]} 0), (FilenameRedirectNode filename={[VarSub filter_file]} "> 1), > ) (= scope= flags=0 words=[] bindings=[('changed_files', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS --no-pager]} {[LIT_CHARS diff]} {[LIT_OTHER "@"] [LIT_LBRACE "{"] [LIT_CHARS u] [LIT_RBRACE "}"]} {[LIT_CHARS --name-status]}) (Com {[LIT_CHARS grep]} {[LIT_CHARS -vf]} {[VarSub filter_file]}) )]})]) (= scope= flags=0 words=[] bindings=[('added_files', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub changed_files]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^A"]]}) )]})]) (If (DBracket {B1 UNARY_STRING_n {[VarSub added_files]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Script cannot handle added files"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('deleted_files', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub changed_files]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^D"]]}) )]})]) (If (DBracket {B1 UNARY_STRING_n {[VarSub deleted_files]}}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Script cannot handle deleted files"]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (= scope= flags=0 words=[] bindings=[('diff_files', {[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub changed_files]]}) (Com {[LIT_CHARS grep]} {[DQ [LIT_CHARS "^M"]]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -f1]} {[LIT_CHARS --complement]}) )]})]) (Com {[LIT_CHARS tempfile]} {[LIT_CHARS local_patch_file]}) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub diff_files]]}) (Com {[LIT_CHARS xargs]} {[LIT_CHARS -IXX]} {[LIT_CHARS git]} {[LIT_CHARS --no-pager]} {[LIT_CHARS diff]} {[LIT_CHARS --no-prefix]} {[LIT_OTHER "@"] [LIT_LBRACE "{"] [LIT_CHARS u] [LIT_RBRACE "}"]} {[LIT_CHARS --]} {[LIT_CHARS XX]} < (FilenameRedirectNode filename={[VarSub local_patch_file]} "> 1), > ) ) (Com {[LIT_CHARS tempfile]} {[LIT_CHARS google_patch_file]}) (Com {[LIT_CHARS git]} {[LIT_CHARS show]} {[LIT_OTHER "@"] [LIT_LBRACE "{"] [LIT_CHARS u] [LIT_RBRACE "}"] [LIT_OTHER ":"] [LIT_CHARS google.patch]} < (FilenameRedirectNode filename={[VarSub google_patch_file]} "> 1), > ) (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('cvs_dir', {[ComSub (Com {[LIT_CHARS mktemp]} {[LIT_CHARS -d]} {[VarSub tmplate]})]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS cd]} {[VarSub cvs_dir]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS Checking]} {[LIT_CHARS out]} {[LIT_CHARS CVS]} {[LIT_CHARS version.]}) (Com {[LIT_CHARS cvs]} {[LIT_CHARS -z3]} {[LIT_CHARS -qd] [LIT_OTHER ":"] [LIT_CHARS pserver] [LIT_OTHER ":"] [LIT_CHARS anonymous] [LIT_OTHER "@"] [LIT_CHARS hunspell.cvs.sourceforge.net] [LIT_OTHER ":"] [LIT_CHARS /cvsroot/hunspell]} {[LIT_CHARS co]} {[LIT_CHARS -D]} {[DQ [LIT_CHARS "23 Mar 2012"]]} {[LIT_CHARS -P]} {[LIT_CHARS hunspell]}) (Com {[LIT_CHARS cd]} {[LIT_CHARS hunspell]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS Applying]} {[LIT_CHARS google.patch.]}) (Com {[LIT_CHARS patch]} {[LIT_CHARS -p0]} {[LIT_CHARS -i]} {[VarSub google_patch_file]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS Applying]} {[LIT_CHARS local]} {[LIT_CHARS patch.]}) (Com {[LIT_CHARS patch]} {[LIT_CHARS -p0]} {[LIT_CHARS -i]} {[VarSub local_patch_file]}) (Com {[LIT_CHARS echo]} {[LIT_CHARS Updating]} {[LIT_CHARS google.patch.]}) (Com {[LIT_CHARS cvs]} {[LIT_CHARS -q]} {[LIT_CHARS diff]} {[LIT_CHARS -u]} < (FilenameRedirectNode filename={[VarSub hunspell_dir] [LIT_CHARS /google.patch]} "> 1), > ) )