#!/bin/sh ######################################################################## # # # This software is part of the ast package # # Copyright (c) 1994-2011 AT&T Intellectual Property # # and is licensed under the # # Eclipse Public License, Version 1.0 # # by AT&T Intellectual Property # # # # A copy of the License is available at # # http://www.eclipse.org/org/documents/epl-v10.html # # (with md5 checksum b35adb5213ca9657e911e9befb180842) # # # # Information and Software Systems Research # # AT&T Research # # Florham Park NJ # # # # Glenn Fowler # # # ######################################################################## : mkdir for systems that do not support -p : 2002-09-01 : global MKDIR := '/bin/mkdir' global CHMOD := 'chmod' global mode := '' global parents := '' while : { matchstr $1 { -m { matchstr $Argc { 1 { echo "mkdir: -m: mode argument expected" > !2 exit 1 } } shift global mode := $1 } -m* { global mode := $[echo X$1 | sed 's/X-m//] } -p { global parents := '1' } * { break } } shift } if test "" != $parents {for d in @Argv { if test ! -d $d { global ifs := $(IFS-' ') global IFS := '/' set '' $d global IFS := $ifs shift global dir := $1 shift if test -n $dir -a ! -d $dir { $MKDIR $dir || exit 1 if test "" != $mode { $CHMOD $mode $dir || exit 1 } }for d in @Argv { global dir := "$dir/$d" if test ! -d $dir { $MKDIR $dir || exit 1 if test "" != $mode { $CHMOD $mode $dir || exit 1 } } } } } } else { $MKDIR @Argv || exit 1 if test "" != $mode {for d in @Argv { $CHMOD $mode $d || exit 1 } } } exit 0 (CommandList children: [ (C {(Lit_Other ":")} {(mkdir)} {(KW_For for)} {(systems)} {(that)} {(KW_Do do)} {(not)} {(support)} {(-p)} {(Lit_Other ":")} {(2002-09-01)} {(Lit_Other ":")} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MKDIR) op:Equal rhs:{(/bin/mkdir)} spids:[84])] spids: [84] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:CHMOD) op:Equal rhs:{(chmod)} spids:[87])] spids: [87] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:mode) op:Equal rhs:{(SQ )} spids:[90])] spids: [90] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:parents) op:Equal rhs:{(SQ )} spids:[92])] spids: [92] ) (While cond: [(C {(Lit_Other ":")})] body: (DoGroup children: [ (Case to_match: {($ VSub_Number "$1")} arms: [ (case_arm pat_list: [{(-m)}] action: [ (Case to_match: {($ VSub_Pound "$#")} arms: [ (case_arm pat_list: [{(1)}] action: [ (SimpleCommand words: [{(echo)} {(DQ ("mkdir: -m: mode argument expected"))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(2)} spids: [126] ) ] ) (C {(exit)} {(1)}) ] spids: [117 118 135 -1] ) ] spids: [110 114 138] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mode) op: Equal rhs: {($ VSub_Number "$1")} spids: [144] ) ] spids: [144] ) ] spids: [107 108 148 -1] ) (case_arm pat_list: [{(-m) (Lit_Other "*")}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:mode) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(X) ($ VSub_Number "$1")}) (C {(sed)} {(SQ )}) ] negated: False ) ] ) left_token: spids: [156 169] ) } spids: [155] ) ] spids: [155] ) ] spids: [151 153 172 -1] ) (case_arm pat_list: [{(-p)}] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:parents) op:Equal rhs:{(1)} spids:[178])] spids: [178] ) ] spids: [175 176 182 -1] ) (case_arm pat_list: [{(Lit_Other "*")}] action: [(ControlFlow token:)] spids: [185 186 191 -1] ) ] spids: [100 104 194] ) (C {(shift)}) ] spids: [98 199] ) ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$parents"))})] action: [ (ForEach iter_name: d do_arg_iter: True body: (DoGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(KW_Bang "!")} {(-d)} {($ VSub_Name "$d")})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ifs) op: Equal rhs: { (BracedVarSub token: suffix_op: (StringUnary op_id: VTest_Hyphen arg_word: {(SQ <"\n"> <"\t ">)} ) spids: [238 245] ) } spids: [237] ) ] spids: [237] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(/)} spids: [248] ) ] spids: [248] ) (C {(set)} {(SQ )} {($ VSub_Name "$d")}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {($ VSub_Name "$ifs")} spids: [260] ) ] spids: [260] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {($ VSub_Number "$1")} spids: [267] ) ] spids: [267] ) (C {(shift)}) (If arms: [ (if_arm cond: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name "$dir"))} {(-a)} {(KW_Bang "!")} {(-d)} {(DQ ($ VSub_Name "$dir"))} ) ] action: [ (AndOr children: [ (C {($ VSub_Name "$MKDIR")} {(DQ ($ VSub_Name "$dir"))}) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$mode"))} ) ] action: [ (AndOr children: [ (C {($ VSub_Name "$CHMOD")} {(DQ ($ VSub_Name "$mode"))} {(DQ ($ VSub_Name "$dir"))} ) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) ] spids: [-1 325] ) ] spids: [-1 344] ) ] spids: [-1 295] ) ] spids: [-1 347] ) (ForEach iter_name: d do_arg_iter: True body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:dir) op: Equal rhs: {($ VSub_Name "$dir") (/) ($ VSub_Name "$d")} spids: [357] ) ] spids: [357] ) (If arms: [ (if_arm cond: [ (C {(test)} {(KW_Bang "!")} {(-d)} {(DQ ($ VSub_Name "$dir"))}) ] action: [ (AndOr children: [ (C {($ VSub_Name "$MKDIR")} {(DQ ($ VSub_Name "$dir"))}) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$mode"))} ) ] action: [ (AndOr children: [ (C {($ VSub_Name "$CHMOD")} {(DQ ($ VSub_Name "$mode"))} {(DQ ($ VSub_Name "$dir"))} ) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) ] spids: [-1 406] ) ] spids: [-1 425] ) ] spids: [-1 376] ) ] spids: [-1 428] ) ] spids: [355 431] ) spids: [-1 -1] ) ] spids: [-1 235] ) ] spids: [-1 434] ) ] spids: [222 437] ) spids: [-1 -1] ) ] spids: [-1 215] ) ] else_action: [ (AndOr children: [(C {($ VSub_Name "$MKDIR")} {(DQ ($ VSub_At "$@"))}) (C {(exit)} {(1)})] op_id: Op_DPipe ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ )} {(KW_Bang "!") (Lit_Other "=")} {(DQ ($ VSub_Name "$mode"))})] action: [ (ForEach iter_name: d do_arg_iter: True body: (DoGroup children: [ (AndOr children: [ (C {($ VSub_Name "$CHMOD")} {(DQ ($ VSub_Name "$mode"))} {(DQ ($ VSub_Name "$d"))} ) (C {(exit)} {(1)}) ] op_id: Op_DPipe ) ] spids: [476 495] ) spids: [-1 -1] ) ] spids: [-1 469] ) ] spids: [-1 498] ) ] spids: [439 500] ) (C {(exit)} {(0)}) ] )