(command.CommandList children: [ (command.If arms: [ (if_arm cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-lt)} {(2)} {(Lit_Other ']')})] action: [ (C {(echo)} {(DQ ('Usage: headers_install.sh OUTDIR SRCDIR [FILES...]'))}) (C {(echo)}) (C {(echo)} {(DQ ('Prepares kernel header files for use by user space, by removing'))}) (C {(echo)} {(DQ ('all compiler.h definitions and #includes, removing any'))}) (C {(echo)} {(DQ ('#ifdef __KERNEL__ sections, and putting __underscores__ around'))}) (C {(echo)} {(DQ ('asm/inline/volatile keywords.'))}) (C {(echo)}) (C {(echo)} {(DQ ('OUTDIR: directory to write each userspace header FILE to.'))}) (C {(echo)} {(DQ ('SRCDIR: source directory where files are picked.'))}) (C {(echo)} {(DQ ('FILES: list of header files to operate on.'))}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:OUTDIR) op:Equal rhs:{(DQ ($ VSub_Number '$1'))})] ) (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:SRCDIR) op:Equal rhs:{(DQ ($ VSub_Number '$1'))})] ) (C {(shift)}) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:FILE) op:Equal rhs:(word.EmptyWord))] ) (C {(trap)} {(SQ <'rm -f "$OUTDIR/$FILE" "$OUTDIR/$FILE.sed"'>)} {(EXIT)}) (command.ForEach iter_name: i iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:FILE) op: Equal rhs: { (DQ (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(basename)} {(DQ ($ VSub_DollarName '$i'))})] ) left_token: <Left_CommandSub '$('> ) ) } ) ] ) (command.AndOr ops: [Op_DPipe] children: [ (command.SimpleCommand words: [ {(sed)} {(-r)} {(-e)} {(SQ <'s/([ \\t(])(__user|__force|__iomem)[ \\t]/\\1/g'>)} {(-e)} {(SQ <'s/__attribute_const__([ \\t]|$)/\\1/g'>)} {(-e)} {(SQ <'s@^#include <linux/compiler.h>@@'>)} {(-e)} { (SQ < 's/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\\1__attribute__((packed))\\2/g' > ) } {(-e)} {(SQ <'s/(^|[ \\t(])(inline|asm|volatile)([ \\t(]|$)/\\1__\\2__\\3/g'>)} {(-e)} {(SQ <'s@#(ifndef|define|endif[ \\t]*/[*])[ \\t]*_UAPI@#\\1 @'>)} {(DQ ($ VSub_DollarName '$SRCDIR') (/) ($ VSub_DollarName '$i'))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$OUTDIR') (/) ($ VSub_DollarName '$FILE') (.sed))} ) ] ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (command.SimpleCommand words: [ {(scripts/unifdef)} {(-U__KERNEL__)} {(-D__EXPORTED_HEADERS__)} {(DQ ($ VSub_DollarName '$OUTDIR') (/) ($ VSub_DollarName '$FILE') (.sed))} ] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_DollarName '$OUTDIR') (/) ($ VSub_DollarName '$FILE'))} ) ] ) (command.AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-gt)} {(1)} {(Lit_Other ']')}) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (C {(rm)} {(-f)} {(DQ ($ VSub_DollarName '$OUTDIR') (/) ($ VSub_DollarName '$FILE') (.sed))}) ] ) ) (C {(trap)} {(-)} {(EXIT)}) ] )