--- gforth/mkdir.fs 2008/10/06 20:40:32 1.3 +++ gforth/mkdir.fs 2010/12/30 21:46:14 1.6 @@ -17,21 +17,30 @@ \ You should have received a copy of the GNU General Public License \ along with this program. If not, see http://www.gnu.org/licenses/. -require cstr.fs -c-library mkdir -\c #include -\c #include -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 ) +\ there is now a primitive =MKDIR +[IFUNDEF] =mkdir + [IFUNDEF] c-library + \ define dummy mkdir + : =mkdir ( c-addr u mode -- ior ) + 2drop drop 0 ; + [ELSE] + require cstr.fs + c-library mkdir + \c #include + \c #include + 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> mkdir f>ior ; + end-c-library + [THEN] +[THEN] -: =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 +: mkdir-parents { c-addr u mode -- ior } + \G create the directory @i{c-addr u} and all its parents with \G mode @i{mode} (modified by umask) c-addr u begin { d: s } s 1 /string '/' scan 2dup while ( s1 s1addr ) @@ -39,5 +48,3 @@ end-c-library repeat drop 2drop c-addr u mode =mkdir ; - - \ No newline at end of file