ffi structs and typedefs
							parent
							
								
									9940031cda
								
							
						
					
					
						commit
						9228d367a1
					
				| 
						 | 
				
			
			@ -117,3 +117,18 @@ C-STRUCT: addrinfo
 | 
			
		|||
: ETIME 101 ; inline
 | 
			
		||||
: EOPNOTSUPP 102 ; inline
 | 
			
		||||
: ENOPOLICY 103 ; inline
 | 
			
		||||
 | 
			
		||||
: _UTX_USERSIZE 256 ; inline
 | 
			
		||||
: _UTX_LINESIZE 32 ; inline
 | 
			
		||||
: _UTX_IDSIZE 4 ; inline
 | 
			
		||||
: _UTX_HOSTSIZE 256 ; inline
 | 
			
		||||
    
 | 
			
		||||
C-STRUCT: utmpx
 | 
			
		||||
    { { "char" _UTX_USERSIZE } "ut_user" }
 | 
			
		||||
    { { "char" _UTX_IDSIZE } "ut_id" }
 | 
			
		||||
    { { "char" _UTX_LINESIZE } "ut_line" }
 | 
			
		||||
    { "pid_t" "ut_pid" }
 | 
			
		||||
    { "short" "ut_type" }
 | 
			
		||||
    { "timeval" "ut_tv" }
 | 
			
		||||
    { { "char" _UTX_HOSTSIZE } "ut_host" }
 | 
			
		||||
    { { "uint" 16 } "ut_pad" } ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
USING: alien.syntax ;
 | 
			
		||||
USING: alien.syntax alien.c-types math ;
 | 
			
		||||
IN: unix
 | 
			
		||||
 | 
			
		||||
: FD_SETSIZE 256 ; inline
 | 
			
		||||
| 
						 | 
				
			
			@ -111,3 +111,46 @@ C-STRUCT: addrinfo
 | 
			
		|||
: ENOLINK 95 ; inline
 | 
			
		||||
: EPROTO 96 ; inline
 | 
			
		||||
: ELAST 96 ; inline
 | 
			
		||||
 | 
			
		||||
TYPEDEF: __uint8_t sa_family_t
 | 
			
		||||
 | 
			
		||||
: _UTX_USERSIZE   32 ; inline
 | 
			
		||||
: _UTX_LINESIZE   32 ; inline
 | 
			
		||||
: _UTX_IDSIZE     4 ; inline
 | 
			
		||||
: _UTX_HOSTSIZE   256 ; inline
 | 
			
		||||
 | 
			
		||||
: _SS_MAXSIZE ( -- n )
 | 
			
		||||
    128 ; inline
 | 
			
		||||
 | 
			
		||||
: _SS_ALIGNSIZE ( -- n )
 | 
			
		||||
    "__int64_t" heap-size ; inline
 | 
			
		||||
    
 | 
			
		||||
: _SS_PAD1SIZE ( -- n )
 | 
			
		||||
    _SS_ALIGNSIZE 2 - ; inline
 | 
			
		||||
    
 | 
			
		||||
: _SS_PAD2SIZE ( -- n )
 | 
			
		||||
    _SS_MAXSIZE 2 - _SS_PAD1SIZE - _SS_ALIGNSIZE - ; inline
 | 
			
		||||
 | 
			
		||||
C-STRUCT: sockaddr_storage
 | 
			
		||||
    { "__uint8_t" "ss_len" }
 | 
			
		||||
    { "sa_family_t" "ss_family" }
 | 
			
		||||
    { { "char" _SS_PAD1SIZE } "__ss_pad1" }
 | 
			
		||||
    { "__int64_t" "__ss_align" }
 | 
			
		||||
    { { "char" _SS_PAD2SIZE } "__ss_pad2" } ;
 | 
			
		||||
 | 
			
		||||
C-STRUCT: exit_struct
 | 
			
		||||
    { "uint16_t" "e_termination" }
 | 
			
		||||
    { "uint16_t" "e_exit" } ;
 | 
			
		||||
 | 
			
		||||
C-STRUCT: utmpx
 | 
			
		||||
    { { "char" _UTX_USERSIZE } "ut_user" }
 | 
			
		||||
    { { "char" _UTX_IDSIZE } "ut_id" }
 | 
			
		||||
    { { "char" _UTX_LINESIZE } "ut_line" }
 | 
			
		||||
    { { "char" _UTX_HOSTSIZE } "ut_host" }
 | 
			
		||||
    { "uint16_t" "ut_session" }
 | 
			
		||||
    { "uint16_t" "ut_type" }
 | 
			
		||||
    { "pid_t" "ut_pid" }
 | 
			
		||||
    { "exit_struct" "ut_exit" }
 | 
			
		||||
    { "sockaddr_storage" "ut_ss" }
 | 
			
		||||
    { "timeval" "ut_tv" }
 | 
			
		||||
    { { "uint32_t" 10 } "ut_pad" } ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,18 +15,18 @@ IN: unix.stat
 | 
			
		|||
: S_IFSOCK OCT: 140000 ; inline   ! Socket.
 | 
			
		||||
 | 
			
		||||
! File Access Permissions
 | 
			
		||||
: S_ISUID OCT: 0004000 ; inline
 | 
			
		||||
: S_ISGID OCT: 0002000 ; inline
 | 
			
		||||
: S_ISVTX OCT: 0001000 ; inline
 | 
			
		||||
: S_IRUSR OCT: 0000400 ; inline    ! r owner
 | 
			
		||||
: S_IWUSR OCT: 0000200 ; inline    ! w owner
 | 
			
		||||
: S_IXUSR OCT: 0000100 ; inline    ! x owner
 | 
			
		||||
: S_IRGRP OCT: 0000040 ; inline    ! r group
 | 
			
		||||
: S_IWGRP OCT: 0000020 ; inline    ! w group
 | 
			
		||||
: S_IXGRP OCT: 0000010 ; inline    ! x group
 | 
			
		||||
: S_IROTH OCT: 0000004 ; inline    ! r other
 | 
			
		||||
: S_IWOTH OCT: 0000002 ; inline    ! w other
 | 
			
		||||
: S_IXOTH OCT: 0000001 ; inline    ! x other
 | 
			
		||||
: 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 ) ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,6 +3,29 @@ system ;
 | 
			
		|||
IN: unix.types
 | 
			
		||||
 | 
			
		||||
TYPEDEF: void* caddr_t
 | 
			
		||||
TYPEDEF: uint in_addr_t
 | 
			
		||||
TYPEDEF: uint socklen_t
 | 
			
		||||
 | 
			
		||||
TYPEDEF: char int8_t
 | 
			
		||||
TYPEDEF: short int16_t
 | 
			
		||||
TYPEDEF: int int32_t
 | 
			
		||||
TYPEDEF: longlong int64_t
 | 
			
		||||
 | 
			
		||||
TYPEDEF: uchar uint8_t
 | 
			
		||||
TYPEDEF: ushort uint16_t
 | 
			
		||||
TYPEDEF: uint uint32_t
 | 
			
		||||
TYPEDEF: ulonglong uint64_t
 | 
			
		||||
 | 
			
		||||
TYPEDEF: char __int8_t
 | 
			
		||||
TYPEDEF: short __int16_t
 | 
			
		||||
TYPEDEF: int __int32_t
 | 
			
		||||
TYPEDEF: longlong __int64_t
 | 
			
		||||
 | 
			
		||||
TYPEDEF: uchar __uint8_t
 | 
			
		||||
TYPEDEF: ushort __uint16_t
 | 
			
		||||
TYPEDEF: uint __uint32_t
 | 
			
		||||
TYPEDEF: ulonglong __uint64_t
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
os {
 | 
			
		||||
    { linux   [ "unix.types.linux"   require ] }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,10 +7,6 @@ stack-checker macros locals generalizations unix.types
 | 
			
		|||
debugger io prettyprint ;
 | 
			
		||||
IN: unix
 | 
			
		||||
 | 
			
		||||
TYPEDEF: uint in_addr_t
 | 
			
		||||
TYPEDEF: uint socklen_t
 | 
			
		||||
TYPEDEF: int int32_t
 | 
			
		||||
 | 
			
		||||
: PROT_NONE   0 ; inline
 | 
			
		||||
: PROT_READ   1 ; inline
 | 
			
		||||
: PROT_WRITE  2 ; inline
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue