version 1.1, 2008/08/19 20:18:58
|
version 1.3, 2008/10/06 20:40:32
|
Line 1
|
Line 1
|
\ socket interface |
\ mkdir wrapper |
|
|
\ Copyright (C) 2008 Free Software Foundation, Inc. |
\ Copyright (C) 2008 Free Software Foundation, Inc. |
|
|
Line 21 require cstr.fs
|
Line 21 require cstr.fs
|
c-library mkdir |
c-library mkdir |
\c #include <sys/stat.h> |
\c #include <sys/stat.h> |
\c #include <sys/types.h> |
\c #include <sys/types.h> |
c-function mkdir1 mkdir a n -- n ( pathname\0 mode -- f ) |
c-function mkdir mkdir a n -- n ( pathname\0 mode -- f ) |
\c #include <errno.h> |
\c #include <errno.h> |
\c #define IOR(flag) ((flag)? -512-errno : 0) |
\c #define IOR(flag) ((flag)? -512-errno : 0) |
c-function f>ior IOR n -- n ( f -- ior ) |
c-function f>ior IOR n -- n ( f -- ior ) |
|
|
: mkdir ( c-addr u mode -- ior ) |
: =mkdir ( c-addr u mode -- ior ) |
>r 1 tilde_cstr r> mkdir1 f>ior ; |
>r 1 tilde_cstr r> mkdir f>ior ; |
end-c-library |
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 ; |
|
|
|
|
|
|