--- gforth/mkdir.fs 2008/08/19 20:18:58 1.1 +++ gforth/mkdir.fs 2008/10/06 20:40:32 1.3 @@ -1,4 +1,4 @@ -\ socket interface +\ mkdir wrapper \ Copyright (C) 2008 Free Software Foundation, Inc. @@ -21,11 +21,23 @@ require cstr.fs c-library mkdir \c #include \c #include -c-function mkdir1 mkdir a n -- n ( pathname\0 mode -- f ) +c-function mkdir mkdir a n -- n ( pathname\0 mode -- f ) \c #include \c #define IOR(flag) ((flag)? -512-errno : 0) c-function f>ior IOR n -- n ( f -- ior ) -: mkdir ( c-addr u mode -- ior ) - >r 1 tilde_cstr r> mkdir1 f>ior ; +: =mkdir ( c-addr u mode -- ior ) + >r 1 tilde_cstr r> mkdir f>ior ; end-c-library + +: mkdir-p { c-addr u mode -- ior } + \G create the directory @i{c-addr u} and all it's parents with + \G mode @i{mode} (modified by umask) + c-addr u begin { d: s } + s 1 /string '/' scan 2dup while ( s1 s1addr ) + c-addr tuck - mode =mkdir drop + repeat + drop 2drop + c-addr u mode =mkdir ; + + \ No newline at end of file