From fb23eca0d93df5689faa5e7f57f094d2eef5ffdd Mon Sep 17 00:00:00 2001 From: Doug Coleman <doug.coleman@gmail.com> Date: Wed, 8 Oct 2008 13:03:55 -0500 Subject: [PATCH] move file flags to io.unix.files, change some word names for consistency --- basis/io/unix/files/files.factor | 39 +++++++++++++++++++++++++------- basis/unix/stat/stat.factor | 14 ------------ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/basis/io/unix/files/files.factor b/basis/io/unix/files/files.factor index ba8f51da4c..49510f9841 100644 --- a/basis/io/unix/files/files.factor +++ b/basis/io/unix/files/files.factor @@ -150,9 +150,25 @@ os { PRIVATE> -: set-uid? ( path -- ? ) UID file-mode? ; -: set-gid? ( path -- ? ) GID file-mode? ; -: set-sticky? ( path -- ? ) STICKY file-mode? ; +: UID OCT: 0004000 ; inline +: GID OCT: 0002000 ; inline +: STICKY OCT: 0001000 ; inline +: USER-ALL OCT: 0000700 ; inline +: USER-READ OCT: 0000400 ; inline +: USER-WRITE OCT: 0000200 ; inline +: USER-EXECUTE OCT: 0000100 ; inline +: GROUP-ALL OCT: 0000070 ; inline +: GROUP-READ OCT: 0000040 ; inline +: GROUP-WRITE OCT: 0000020 ; inline +: GROUP-EXECUTE OCT: 0000010 ; inline +: OTHER-ALL OCT: 0000007 ; inline +: OTHER-READ OCT: 0000004 ; inline +: OTHER-WRITE OCT: 0000002 ; inline +: OTHER-EXECUTE OCT: 0000001 ; inline + +: uid? ( path -- ? ) UID file-mode? ; +: gid? ( path -- ? ) GID file-mode? ; +: sticky? ( path -- ? ) STICKY file-mode? ; : user-read? ( path -- ? ) USER-READ file-mode? ; : user-write? ( path -- ? ) USER-WRITE file-mode? ; : user-execute? ( path -- ? ) USER-EXECUTE file-mode? ; @@ -176,9 +192,12 @@ PRIVATE> : set-other-write ( path ? -- ) OTHER-WRITE swap chmod-set-bit ; : set-other-execute ( path ? -- ) OTHER-EXECUTE swap chmod-set-bit ; -: set-file-permissions ( path octal-n -- ) +: set-file-permissions ( path n -- ) [ normalize-path ] dip chmod io-error ; +: file-permissions ( path -- n ) + normalize-path file-info permissions>> ; + <PRIVATE : make-timeval-array ( array -- byte-array ) @@ -225,10 +244,14 @@ M: string set-file-group ( path string -- ) group-id f swap set-file-ids ; -: file-uid ( path -- uid ) normalize-path file-info uid>> ; +: file-username-id ( path -- uid ) + normalize-path file-info uid>> ; -: file-user-name ( path -- string ) file-uid username ; +: file-username ( path -- string ) + file-username-id username ; -: file-gid ( path -- gid ) normalize-path file-info gid>> ; +: file-group-id ( path -- gid ) + normalize-path file-info gid>> ; -: file-group ( path -- string ) file-gid group-name ; +: file-group-name ( path -- string ) + file-group-id group-name ; diff --git a/basis/unix/stat/stat.factor b/basis/unix/stat/stat.factor index 139f1b1983..46fe7d98f9 100644 --- a/basis/unix/stat/stat.factor +++ b/basis/unix/stat/stat.factor @@ -14,20 +14,6 @@ IN: unix.stat : S_IFLNK OCT: 120000 ; inline ! Symbolic link. : S_IFSOCK OCT: 140000 ; inline ! Socket. -! File Access Permissions -: UID OCT: 0004000 ; inline -: GID OCT: 0002000 ; inline -: STICKY OCT: 0001000 ; inline -: USER-READ OCT: 0000400 ; inline ! r owner -: USER-WRITE OCT: 0000200 ; inline ! w owner -: USER-EXECUTE OCT: 0000100 ; inline ! x owner -: GROUP-READ OCT: 0000040 ; inline ! r group -: GROUP-WRITE OCT: 0000020 ; inline ! w group -: GROUP-EXECUTE OCT: 0000010 ; inline ! x group -: OTHER-READ OCT: 0000004 ; inline ! r other -: OTHER-WRITE OCT: 0000002 ; inline ! w other -: OTHER-EXECUTE OCT: 0000001 ; inline ! x other - FUNCTION: int chmod ( char* path, mode_t mode ) ; FUNCTION: int fchmod ( int fd, mode_t mode ) ; FUNCTION: int mkdir ( char* path, mode_t mode ) ;