(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'num_files='> name:num_files) op: assign_op.Equal rhs: {<10>} spids: [125] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'site='> name:site) op: assign_op.Equal rhs: {(DQ <www.pixelbeat.org>)} spids: [128] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'author='> name:author) op: assign_op.Equal rhs: {(DQ <'P@draigBrady.com (Pádraig Brady)'>)} spids: [133] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'suggested_update_freq='> name: suggested_update_freq ) op: assign_op.Equal rhs: {<1440>} spids: [138] ) ] redirects: [] ) (C {<Id.Lit_Colon ':'>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name TITLE> var_name: TITLE suffix_op: (suffix_op.Unary op:<Id.VTest_Equals _> arg_word:{($ Id.VSub_DollarName site)}) right: <Id.Right_DollarBrace '}'> ) } ) (C {<Id.Lit_Colon ':'>} { (braced_var_sub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name DESCRIPTION> var_name: DESCRIPTION suffix_op: (suffix_op.Unary op: <Id.VTest_Equals _> arg_word: {(DQ <'latest from '> ($ Id.VSub_DollarName site))} ) right: <Id.Right_DollarBrace '}'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'include_re='> name:include_re) op: assign_op.Equal rhs: {(SQ <'(^|/)[.].+|(^|/)[^.]+$|[.](c|cpp|py|sh|rc|tips|fortune|html)$'>)} spids: [168] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'exclude_re='> name:exclude_re) op: assign_op.Equal rhs: { (SQ < '(\\.git/|priv/|tmp/|.htaccess|xvpics|timeline\\.html|modified\\.html|head\\.html|header\\.html|footer\\.html|footer-home\\.html|adds\\.html|last\\.html|fslint/(NEWS\\.html|md5sum)|README)' > ) } spids: [177] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'default_files='> name:default_files) op: assign_op.Equal rhs: {(DQ <'index.html index.shtml index.php'>)} spids: [186] ) ] redirects: [] ) (command.ForEach iter_names: [file] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName default_files)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'replace_default_files='> name: replace_default_files ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName replace_default_files) <'; s/'> <Id.Lit_BadBackslash '\\'> <'(.*'> <Id.Lit_BadBackslash '\\'> <')'> ($ Id.VSub_DollarName file) <Id.Lit_Dollar '$'> <'/'> <Id.Lit_BadBackslash '\\'> <'1/;t'> ) } spids: [208] ) ] redirects: [] ) ] ) redirects: [] ) (C {<echo>} { (SQ <'<?xml version="1.0" encoding="utf-8"?>\n'> <'<?xml-stylesheet type="text/css" href="rss2.css" ?>\n'> <'\n'> <'<rss version="2.0">\n'> <'<channel>'> ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'time='> name:time) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<date>} {<--rfc-2822>}) right: <Id.Backtick_Right '`'> ) } spids: [237] ) ] redirects: [] ) (C {<echo>} { (DQ <'\n'> <'<title>'> ($ Id.VSub_DollarName TITLE) <'</title>\n'> <'<ttl>'> ($ Id.VSub_DollarName suggested_update_freq) <'</ttl>\n'> <'<link>http://'> ($ Id.VSub_DollarName site) <'/'> ($ Id.VSub_Number 1) <'</link>\n'> <'<generator>http://www.pixelbeat.org/scripts/bashfeed</generator>\n'> <'<description>'> ($ Id.VSub_DollarName DESCRIPTION) <'</description>\n'> <'<managingEditor>'> ($ Id.VSub_DollarName author) <'</managingEditor>\n'> <'<lastBuildDate>'> ($ Id.VSub_DollarName time) <'</lastBuildDate>\n'> <'<language>'> (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {($ Id.VSub_DollarName LANG)}) (C {<sed>} {(SQ <'s/\\(..\\)_.*/\\1/'>)}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) <'</language>\n'> ) } ) (command.ShFunction name: xml_unescaped body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.Sentence child: (command.Pipeline children: [ (C {<sed>} {(SQ <'s/&//g; s/&[lg]t;//g; s/"//g'>)}) (C {<grep>} {<-q>} {(DQ <'[&<>]'>)}) ] negated: F stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Pipeline children: [ (C {<find>} {($ Id.VSub_Number 1)} {<-type>} {<f>} {<-printf>} {(DQ <'%p'> <Id.Lit_BadBackslash '\\'> <'t%T@'> <Id.Lit_BadBackslash '\\'> <n>)} ) (C {<sed>} {(SQ <'s/^\\.\\///'>)}) (C {<sort>} {<-k2> <Id.Lit_Comma ','> <2nr>}) (C {<cut>} {<-f1>}) (C {<grep>} {<-E>} {(DQ ($ Id.VSub_DollarName include_re))}) (C {<grep>} {<-Ev>} {(DQ ($ Id.VSub_DollarName exclude_re))}) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<file>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<head>} {(DQ ($ Id.VSub_DollarName file))}) (C {<grep>} {<-Fiq>} {(SQ <'<!--Exclude from bashfeed-->'>)}) ] negated: T stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName file))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'i='> name:i) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: ($ Id.Lit_ArithVarLike i) right: {<Id.Lit_Digits 1>} ) ) } spids: [430] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName i)} {<-eq>} {($ Id.VSub_DollarName num_files)} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token: <Id.ControlFlow_Break break> ) ] ) ] spids: [399 420] ) ] else_action: [] redirects: [] ) ] ) redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [(command.Sentence child:(C {<read>} {<file>}) terminator:<Id.Op_Semi _>)] ) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pubDate='> name:pubDate) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<date>} {<--reference> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName file))} {<--rfc-2822>} ) right: <Id.Backtick_Right '`'> ) } spids: [470] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'force_update='> name: force_update ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<date>} {<--reference> <Id.Lit_Equals '='> (DQ ($ Id.VSub_DollarName file))} {(DQ <'+%s'>)} ) right: <Id.Backtick_Right '`'> ) } spids: [486] ) ] redirects: [] ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'title='> name:title) op: assign_op.Equal rhs: {(DQ )} spids: [504] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'keywords='> name:keywords) op: assign_op.Equal rhs: {(DQ )} spids: [509] ) ] redirects: [] ) terminator: <Id.Op_Semi _> ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'description='> name: description ) op: assign_op.Equal rhs: {(DQ )} spids: [514] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName file))}) (C {<grep>} {<-Eq>} {(SQ <'\\.(html|shtml|php)$'>)}) ] negated: F stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'title='> name:title) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<sed>} {<-n>} {(SQ <'s/.*<title>\\(.*\\)<\\/title>.*/\\1/ip;T;q'>)} ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName file))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [541] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'keywords='> name: keywords ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<sed>} {<-n>} { (SQ < 's/.*<META.*NAME="keywords".*CONTENT="\\(.*\\)".*/\\1/ip;T;q' > ) } ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName file))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [569] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'description='> name: description ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<sed>} {<-n>} { (SQ < 's/.*<META.*NAME="description".*CONTENT="\\(.*\\)".*/\\1/ip;T;q' > ) } ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName file))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [595] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'page_author='> name: page_author ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Simple words: [ {<sed>} {<-n>} { (SQ < 's/.*<META.*NAME="author".*CONTENT="\\(.*\\)".*/\\1/ip;T;q' > ) } ] redirects: [ (redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName file))} ) ] more_env: [] do_fork: T ) right: <Id.Backtick_Right '`'> ) } spids: [621] ) ] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'extracted_text='> name: extracted_text ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName title) <' '> ($ Id.VSub_DollarName keywords) <' '> ($ Id.VSub_DollarName description) <Id.Lit_Dollar '$'> <' '> ($ Id.VSub_DollarName page_author) ) } spids: [647] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName extracted_text))}) (C {<xml_unescaped>}) ] negated: F stderr_indices: [] ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [ {<echo>} { (DQ <'Error: HTML metadata in '> ($ Id.VSub_DollarName file) <' will not produce a valid XML feed'> ) } ] redirects: [ (redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] more_env: [] do_fork: T ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [660 673] ) ] else_action: [] redirects: [] ) ] spids: [519 538] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-x>} {(DQ ($ Id.VSub_DollarName file))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'description='> name: description ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<sed>} {<-n>} {(SQ <'3s/# \\(.*\\)/\\1/p'>)} {(DQ ($ Id.VSub_DollarName file))} ) right: <Id.Backtick_Right '`'> ) } spids: [715] ) ] redirects: [] ) ] spids: [696 709] ) ] else_action: [] redirects: [] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'file='> name:file) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (C {<echo>} {(DQ ($ Id.VSub_DollarName file))}) (C {<sed>} {(DQ ($ Id.VSub_DollarName replace_default_files))}) ] negated: F stderr_indices: [] ) right: <Id.Backtick_Right '`'> ) } spids: [742] ) ] redirects: [] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName title))} {<Id.Lit_RBracket ']'>} ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'title='> name:title) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_DollarName file))} spids: [774] ) ] redirects: [] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'tags='> name:tags) op: assign_op.Equal rhs: {(DQ )} spids: [780] ) ] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-z>} {(DQ ($ Id.VSub_DollarName keywords))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ForEach iter_names: [keyword] iterable: (for_iter.Words words:[{($ Id.VSub_DollarName keywords)}]) body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'tags='> name: tags ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<echo>} {<-ne>} { (DQ ($ Id.VSub_DollarName tags) <'<category>'> ($ Id.VSub_DollarName keyword) <'</category>'> <Id.Lit_BadBackslash '\\'> <'n '> ) } ) right: <Id.Backtick_Right '`'> ) } spids: [815] ) ] redirects: [] ) ] ) redirects: [] ) ] spids: [785 800] ) ] else_action: [] redirects: [] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName page_author))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName page_author))} {<Id.Lit_Equals '='>} {(DQ ($ Id.VSub_DollarName author))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'page_author='> name: page_author ) op: assign_op.Equal rhs: {(DQ )} spids: [876] ) ] redirects: [] ) ] spids: [856 873] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'page_author='> name: page_author ) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<echo>} {<-ne>} { (DQ <'<author>'> ($ Id.VSub_DollarName page_author) <'</author>'> <Id.Lit_BadBackslash '\\'> <'n '> ) } ) right: <Id.Backtick_Right '`'> ) } spids: [884] ) ] redirects: [] ) ] redirects: [] ) ] spids: [842 853] ) ] else_action: [] redirects: [] ) (C {<echo>} { (DQ <'\n'> <'<item>\n'> <' <title>'> ($ Id.VSub_DollarName title) <'</title>\n'> <' <guid>http://'> ($ Id.VSub_DollarName site) <'/'> ($ Id.VSub_DollarName file) <'</guid>\n'> <' <pubDate>'> ($ Id.VSub_DollarName pubDate) <'</pubDate>\n'> <' <link>http://'> ($ Id.VSub_DollarName site) <'/'> ($ Id.VSub_DollarName file) <'#'> ($ Id.VSub_DollarName force_update) <'</link>\n'> <' '> ($ Id.VSub_DollarName page_author) ($ Id.VSub_DollarName tags) <'<description><![CDATA['> ($ Id.VSub_DollarName description) <'<!--'> ($ Id.VSub_DollarName force_update) <'-->]]></description>\n'> <'</item>\n'> ) } ) ] ) redirects: [] ) ] negated: F stderr_indices: [] ) (C {<echo>} {(SQ <'</channel>\n'> <'</rss>'>)}) ] ) ] )