72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Factor
		
	
	
| 
 | |
| USING: kernel system combinators alien.syntax alien.c-types
 | |
|        math io.unix.backend vocabs.loader unix ;
 | |
| 
 | |
| IN: unix.stat
 | |
| 
 | |
| ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| ! File Types
 | |
| ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| 
 | |
| : S_IFMT   OCT: 170000 ; ! These bits determine file type.
 | |
| 
 | |
| : S_IFDIR  OCT:  40000 ; inline   ! Directory.
 | |
| : S_IFCHR  OCT:  20000 ; inline   ! Character device.
 | |
| : S_IFBLK  OCT:  60000 ; inline   ! Block device.
 | |
| : S_IFREG  OCT: 100000 ; inline   ! Regular file.
 | |
| : S_IFIFO  OCT: 010000 ; inline   ! FIFO.
 | |
| : S_IFLNK  OCT: 120000 ; inline   ! Symbolic link.
 | |
| : S_IFSOCK OCT: 140000 ; inline   ! Socket.
 | |
| 
 | |
| ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| ! File Access Permissions
 | |
| ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| 
 | |
| ! Read, write, execute/search by owner
 | |
| : S_IRWXU OCT: 0000700 ; inline    ! rwx mask owner
 | |
| : S_IRUSR OCT: 0000400 ; inline    ! r owner
 | |
| : S_IWUSR OCT: 0000200 ; inline    ! w owner
 | |
| : S_IXUSR OCT: 0000100 ; inline    ! x owner
 | |
| ! Read, write, execute/search by group
 | |
| : S_IRWXG OCT: 0000070 ; inline    ! rwx mask group
 | |
| : S_IRGRP OCT: 0000040 ; inline    ! r group
 | |
| : S_IWGRP OCT: 0000020 ; inline    ! w group
 | |
| : S_IXGRP OCT: 0000010 ; inline    ! x group
 | |
| ! Read, write, execute/search by others
 | |
| : S_IRWXO OCT: 0000007 ; inline    ! rwx mask other
 | |
| : S_IROTH OCT: 0000004 ; inline    ! r other
 | |
| : S_IWOTH OCT: 0000002 ; inline    ! w other
 | |
| : S_IXOTH 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 ) ;
 | |
| 
 | |
| ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| <<
 | |
|   os
 | |
|   {
 | |
|     { linux   [ "unix.stat.linux"   require ] }
 | |
|     { macosx  [ "unix.stat.macosx"  require ] }
 | |
|     { freebsd [ "unix.stat.freebsd" require ] }
 | |
|     { netbsd  [ "unix.stat.netbsd"  require ] }
 | |
|     { openbsd [ "unix.stat.openbsd" require ] }
 | |
|   }
 | |
|   case
 | |
| >>
 | |
| ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 | |
| 
 | |
| : file-status ( pathname -- stat )
 | |
|     "stat" <c-object> dup >r
 | |
|     [ stat ] unix-system-call drop
 | |
|     r> ;
 | |
| 
 | |
| : link-status ( pathname -- stat )
 | |
|     "stat" <c-object> dup >r
 | |
|     [ lstat ] unix-system-call drop
 | |
|     r> ;
 |