(command.CommandList children: [ (command.Simple blame_tok:<set> more_env:[] words:[{<set>} {<-e>}] redirects:[] do_fork:T) (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_Pound '#')}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <0> pattern: (pat.Words words:[{<0>}]) middle: <Id.Right_CasePat _> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'usage: '> ($ Id.VSub_Number 0) <' input-file <config-file>'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '1>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number 2))} {<-a>} {<-f>} {(DQ ($ Id.VSub_Number 2))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <.> more_env: [] words: [{<.>} {($ Id.VSub_Number 2)}] redirects: [] do_fork: T ) ] spids: [47 68] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Pipeline children: [ (command.Simple blame_tok: <sed> more_env: [] words: [ {<sed>} {<-e>} { (SQ <'\n'> <'s/\\$//g\n'> <':join\n'> <'\t/\\\\$/{a\\\n'> <'\n'> <'\tN\n'> <'\ts/\\\\\\n//\n'> <'\tb join\n'> <'\t}\n'> <'2,${\n'> <'\t/^#/!s/\\([{}()*,]\\)/ \\1 /g\n'> <'}\n'> ) } ] redirects: [(Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{($ Id.VSub_Number 1)})] do_fork: T ) (command.Simple blame_tok: <awk> more_env: [] words: [ {<awk>} { (SQ <'\n'> <'\tBEGIN {\n'> <'\t\tprintf "#include <sys/param.h>\\n"\n'> <'\t\tprintf "#include <machine/atomic.h>\\n"\n'> <'\t\tprintf "\\n"\n'> <'\t\tprintf "#include <sys/_semaphore.h>\\n"\n'> <'\t\tprintf "#include <sys/aio.h>\\n"\n'> <'\t\tprintf "#include <sys/cpuset.h>\\n"\n'> <'\t\tprintf "#include <sys/jail.h>\\n"\n'> <'\t\tprintf "#include <sys/linker.h>\\n"\n'> <'\t\tprintf "#include <sys/mac.h>\\n"\n'> <'\t\tprintf "#include <sys/module.h>\\n"\n'> <'\t\tprintf "#include <sys/mount.h>\\n"\n'> <'\t\tprintf "#include <sys/mqueue.h>\\n"\n'> <'\t\tprintf "#include <sys/msg.h>\\n"\n'> <'\t\tprintf "#include <sys/poll.h>\\n"\n'> <'\t\tprintf "#include <sys/proc.h>\\n"\n'> <'\t\tprintf "#include <sys/resource.h>\\n"\n'> <'\t\tprintf "#include <sys/sem.h>\\n"\n'> <'\t\tprintf "#include <sys/shm.h>\\n"\n'> <'\t\tprintf "#include <sys/signal.h>\\n"\n'> <'\t\tprintf "#include <sys/signalvar.h>\\n"\n'> <'\t\tprintf "#include <sys/socket.h>\\n"\n'> <'\t\tprintf "#include <sys/stat.h>\\n"\n'> <'\t\tprintf "#include <sys/thr.h>\\n"\n'> <'\t\tprintf "#include <sys/time.h>\\n"\n'> <'\t\tprintf "#include <sys/timex.h>\\n"\n'> <'\t\tprintf "#include <sys/timeffc.h>\\n"\n'> <'\t\tprintf "#include <sys/ucontext.h>\\n"\n'> <'\t\tprintf "#include <sys/utsname.h>\\n"\n'> <'\t\tprintf "#include <sys/uuid.h>\\n"\n'> <'\t\tprintf "#include <sys/wait.h>\\n"\n'> <'\t\tprintf "\\n"\n'> <'\t\tprintf "#ifndef _ACL_PRIVATE\\n"\n'> <'\t\tprintf "#define _ACL_PRIVATE\\n"\n'> <'\t\tprintf "#endif\\n"\n'> <'\t\tprintf "#include <sys/acl.h>\\n"\n'> <'\t\tprintf "\\n"\n'> <'\t\tprintf "#ifndef EBUSY\\n"\n'> <'\t\tprintf "#define errno 0\\n"\n'> <'\t\tprintf "#define EBUSY 0\\n"\n'> <'\t\tprintf "#endif\\n"\n'> <'\t\tprintf "#include <sys/umtx.h>\\n"\n'> <'\t\tprintf "\\n"\n'> <'\t\t# existing compat shims\n'> <'\t\tprintf "struct ostat;\\n"\n'> <'\t\tprintf "struct nstat;\\n"\n'> <'\t\tprintf "struct ostatfs;\\n"\n'> <'\t\tprintf "struct osigaction;\\n"\n'> <'\t\tprintf "struct osigcontext;\\n"\n'> <'\t\tprintf "struct oaiocb;\\n"\n'> <'\t\tprintf "union semun_old;\\n"\n'> <'\t\tprintf "typedef unsigned int osigset_t;\\n"\n'> <'\t\tprintf "struct msqid_ds_old;\\n"\n'> <'\t\tprintf "struct shmid_ds_old;\\n"\n'> <'\t\t# TODO\n'> <'\t\tprintf "struct ucontext4;\\n"\n'> <'\t\tprintf "struct sctp_sndrcvinfo;\\n"\n'> <'\t\tprintf "\\n"\n'> <'\t}\n'> <'\tNF < 4 || $1 !~ /^[0-9]+$/ {\n'> <'\t\tnext\n'> <'\t}\n'> <'\t$3 ~ "UNIMPL" || $3 ~ "OBSOL" || $3 ~ "NODEF" || $3 ~ "NOPROTO" ||\n'> <'\t$3 ~ "NOSTD"{\n'> <'\t\tnext\n'> <'\t}\n'> <'\t$4 == "{" {\n'> <'\t\tif ($3 ~ /COMPAT[0-9]*/) {\n'> <'\t\t\tn = split($3, flags, /\\|/)\n'> <'\t\t\tfor (i = 1; i <= n; i++) {\n'> <'\t\t\t\tif (flags[i] == "COMPAT") {\n'> <'\t\t\t\t\t$6 = "o" $6\n'> <'\t\t\t\t} else if (flags[i] ~ /COMPAT[0-9]+/) {\n'> <'\t\t\t\t\tsub(/COMPAT/, "freebsd", flags[i])\n'> <'\t\t\t\t\t$6 = flags[i] "_" $6\n'> <'\t\t\t\t}\n'> <'\t\t\t}\n'> <'\t\t}\n'> <'\t\t$6 = "__sysfake_" $6\n'> <'\t\tr = ""\n'> <'\t\tif ($5 != "void")\n'> <'\t\t\tr = "0"\n'> <'\t\tdef = ""\n'> <'\t\timpl = ""\n'> <'\t\tfor ( i = 5; i <= NF; i++) {\n'> <'\t\t\tif ($i == ";")\n'> <'\t\t\t\tbreak;\n'> <'\t\t\tif ($i == "," || $i == ")")\n'> <'\t\t\t\timpl = impl " __unused"\n'> <'\t\t\timpl = impl " " $i\n'> <'\t\t\tdef = def " " $i\n'> <'\t\t}\n'> <'\t\tprintf "%s;\\n", def\n'> <'\t\tprintf "%s\\n{ return %s; }\\n", impl, r\n'> <'\t\tnext\n'> <'\t}\n'> <'\t{\n'> <'\t\tprintf "invalid line: "\n'> <'\t\tprint\n'> <'\t}\n'> ) } ] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) ] )