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 ) ;