fix load error by making a word windows-file-size independent of the file-size word
add constantsdb4
							parent
							
								
									a92425adef
								
							
						
					
					
						commit
						8e0ff1989b
					
				| 
						 | 
				
			
			@ -4,7 +4,7 @@ io.backend.windows io.files.windows io.encodings.utf16n windows
 | 
			
		|||
windows.kernel32 kernel libc math threads system environment
 | 
			
		||||
alien.c-types alien.arrays alien.strings sequences combinators
 | 
			
		||||
combinators.short-circuit ascii splitting alien strings assocs
 | 
			
		||||
namespaces make accessors tr io.files.info ;
 | 
			
		||||
namespaces make accessors tr windows.time ;
 | 
			
		||||
IN: io.files.windows.nt
 | 
			
		||||
 | 
			
		||||
M: winnt cwd
 | 
			
		||||
| 
						 | 
				
			
			@ -44,8 +44,18 @@ M: winnt normalize-path ( string -- string' )
 | 
			
		|||
M: winnt CreateFile-flags ( DWORD -- DWORD )
 | 
			
		||||
    FILE_FLAG_OVERLAPPED bitor ;
 | 
			
		||||
 | 
			
		||||
<PRIVATE
 | 
			
		||||
 | 
			
		||||
: windows-file-size ( path -- size )
 | 
			
		||||
    normalize-path 0 "WIN32_FILE_ATTRIBUTE_DATA" <c-object>
 | 
			
		||||
    [ GetFileAttributesEx win32-error=0/f ] keep
 | 
			
		||||
    [ WIN32_FILE_ATTRIBUTE_DATA-nFileSizeLow ]
 | 
			
		||||
    [ WIN32_FILE_ATTRIBUTE_DATA-nFileSizeHigh ] bi >64bit ;
 | 
			
		||||
 | 
			
		||||
PRIVATE>
 | 
			
		||||
 | 
			
		||||
M: winnt open-append
 | 
			
		||||
    [ dup file-info size>> ] [ drop 0 ] recover
 | 
			
		||||
    [ dup windows-file-size ] [ drop 0 ] recover
 | 
			
		||||
    [ (open-append) ] dip >>ptr ;
 | 
			
		||||
 | 
			
		||||
M: winnt home "USERPROFILE" os-env ;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -15,74 +15,74 @@ TYPEDEF: void* SOCKET
 | 
			
		|||
: <wsadata> ( -- byte-array )
 | 
			
		||||
    HEX: 190 <byte-array> ;
 | 
			
		||||
 | 
			
		||||
: SOCK_STREAM    1 ; inline
 | 
			
		||||
: SOCK_DGRAM     2 ; inline
 | 
			
		||||
: SOCK_RAW       3 ; inline
 | 
			
		||||
: SOCK_RDM       4 ; inline
 | 
			
		||||
: SOCK_SEQPACKET 5 ; inline
 | 
			
		||||
CONSTANT: SOCK_STREAM    1
 | 
			
		||||
CONSTANT: SOCK_DGRAM     2
 | 
			
		||||
CONSTANT: SOCK_RAW       3
 | 
			
		||||
CONSTANT: SOCK_RDM       4
 | 
			
		||||
CONSTANT: SOCK_SEQPACKET 5
 | 
			
		||||
 | 
			
		||||
: SO_DEBUG       HEX:   1 ; inline
 | 
			
		||||
: SO_ACCEPTCONN  HEX:   2 ; inline
 | 
			
		||||
: SO_REUSEADDR   HEX:   4 ; inline
 | 
			
		||||
: SO_KEEPALIVE   HEX:   8 ; inline
 | 
			
		||||
: SO_DONTROUTE   HEX:  10 ; inline
 | 
			
		||||
: SO_BROADCAST   HEX:  20 ; inline
 | 
			
		||||
: SO_USELOOPBACK HEX:  40 ; inline
 | 
			
		||||
: SO_LINGER      HEX:  80 ; inline
 | 
			
		||||
: SO_OOBINLINE   HEX: 100 ; inline
 | 
			
		||||
CONSTANT: SO_DEBUG       HEX:   1
 | 
			
		||||
CONSTANT: SO_ACCEPTCONN  HEX:   2
 | 
			
		||||
CONSTANT: SO_REUSEADDR   HEX:   4
 | 
			
		||||
CONSTANT: SO_KEEPALIVE   HEX:   8
 | 
			
		||||
CONSTANT: SO_DONTROUTE   HEX:  10
 | 
			
		||||
CONSTANT: SO_BROADCAST   HEX:  20
 | 
			
		||||
CONSTANT: SO_USELOOPBACK HEX:  40
 | 
			
		||||
CONSTANT: SO_LINGER      HEX:  80
 | 
			
		||||
CONSTANT: SO_OOBINLINE   HEX: 100
 | 
			
		||||
: SO_DONTLINGER ( -- n ) SO_LINGER bitnot ; inline
 | 
			
		||||
 | 
			
		||||
: SO_SNDBUF     HEX: 1001 ; inline
 | 
			
		||||
: SO_RCVBUF     HEX: 1002 ; inline
 | 
			
		||||
: SO_SNDLOWAT   HEX: 1003 ; inline
 | 
			
		||||
: SO_RCVLOWAT   HEX: 1004 ; inline
 | 
			
		||||
: SO_SNDTIMEO   HEX: 1005 ; inline
 | 
			
		||||
: SO_RCVTIMEO   HEX: 1006 ; inline
 | 
			
		||||
: SO_ERROR      HEX: 1007 ; inline
 | 
			
		||||
: SO_TYPE       HEX: 1008 ; inline
 | 
			
		||||
CONSTANT: SO_SNDBUF     HEX: 1001
 | 
			
		||||
CONSTANT: SO_RCVBUF     HEX: 1002
 | 
			
		||||
CONSTANT: SO_SNDLOWAT   HEX: 1003
 | 
			
		||||
CONSTANT: SO_RCVLOWAT   HEX: 1004
 | 
			
		||||
CONSTANT: SO_SNDTIMEO   HEX: 1005
 | 
			
		||||
CONSTANT: SO_RCVTIMEO   HEX: 1006
 | 
			
		||||
CONSTANT: SO_ERROR      HEX: 1007
 | 
			
		||||
CONSTANT: SO_TYPE       HEX: 1008
 | 
			
		||||
 | 
			
		||||
: TCP_NODELAY   HEX:    1 ; inline
 | 
			
		||||
CONSTANT: TCP_NODELAY   HEX:    1
 | 
			
		||||
 | 
			
		||||
: AF_UNSPEC      0 ; inline
 | 
			
		||||
: AF_UNIX        1 ; inline
 | 
			
		||||
: AF_INET        2 ; inline
 | 
			
		||||
: AF_IMPLINK     3 ; inline
 | 
			
		||||
: AF_PUP         4 ; inline
 | 
			
		||||
: AF_CHAOS       5 ; inline
 | 
			
		||||
: AF_NS          6 ; inline
 | 
			
		||||
: AF_ISO         7 ; inline
 | 
			
		||||
CONSTANT: AF_UNSPEC      0
 | 
			
		||||
CONSTANT: AF_UNIX        1
 | 
			
		||||
CONSTANT: AF_INET        2
 | 
			
		||||
CONSTANT: AF_IMPLINK     3
 | 
			
		||||
CONSTANT: AF_PUP         4
 | 
			
		||||
CONSTANT: AF_CHAOS       5
 | 
			
		||||
CONSTANT: AF_NS          6
 | 
			
		||||
CONSTANT: AF_ISO         7
 | 
			
		||||
ALIAS: AF_OSI    AF_ISO
 | 
			
		||||
: AF_ECMA        8 ; inline
 | 
			
		||||
: AF_DATAKIT     9 ; inline
 | 
			
		||||
: AF_CCITT      10 ; inline
 | 
			
		||||
: AF_SNA        11 ; inline
 | 
			
		||||
: AF_DECnet     12 ; inline
 | 
			
		||||
: AF_DLI        13 ; inline
 | 
			
		||||
: AF_LAT        14 ; inline
 | 
			
		||||
: AF_HYLINK     15 ; inline
 | 
			
		||||
: AF_APPLETALK  16 ; inline
 | 
			
		||||
: AF_NETBIOS    17 ; inline
 | 
			
		||||
: AF_MAX        18 ; inline
 | 
			
		||||
: AF_INET6      23 ; inline
 | 
			
		||||
: AF_IRDA       26 ; inline
 | 
			
		||||
: AF_BTM        32 ; inline
 | 
			
		||||
CONSTANT: AF_ECMA        8
 | 
			
		||||
CONSTANT: AF_DATAKIT     9
 | 
			
		||||
CONSTANT: AF_CCITT      10
 | 
			
		||||
CONSTANT: AF_SNA        11
 | 
			
		||||
CONSTANT: AF_DECnet     12
 | 
			
		||||
CONSTANT: AF_DLI        13
 | 
			
		||||
CONSTANT: AF_LAT        14
 | 
			
		||||
CONSTANT: AF_HYLINK     15
 | 
			
		||||
CONSTANT: AF_APPLETALK  16
 | 
			
		||||
CONSTANT: AF_NETBIOS    17
 | 
			
		||||
CONSTANT: AF_MAX        18
 | 
			
		||||
CONSTANT: AF_INET6      23
 | 
			
		||||
CONSTANT: AF_IRDA       26
 | 
			
		||||
CONSTANT: AF_BTM        32
 | 
			
		||||
 | 
			
		||||
: PF_UNSPEC      0 ; inline
 | 
			
		||||
: PF_LOCAL       1 ; inline
 | 
			
		||||
: PF_INET        2 ; inline
 | 
			
		||||
: PF_INET6      23 ; inline
 | 
			
		||||
CONSTANT: PF_UNSPEC      0
 | 
			
		||||
CONSTANT: PF_LOCAL       1
 | 
			
		||||
CONSTANT: PF_INET        2
 | 
			
		||||
CONSTANT: PF_INET6      23
 | 
			
		||||
 | 
			
		||||
: AI_PASSIVE     1 ; inline
 | 
			
		||||
: AI_CANONNAME   2 ; inline
 | 
			
		||||
: AI_NUMERICHOST 4 ; inline
 | 
			
		||||
CONSTANT: AI_PASSIVE     1
 | 
			
		||||
CONSTANT: AI_CANONNAME   2
 | 
			
		||||
CONSTANT: AI_NUMERICHOST 4
 | 
			
		||||
: AI_MASK ( -- n ) { AI_PASSIVE AI_CANONNAME AI_NUMERICHOST } flags ;
 | 
			
		||||
 | 
			
		||||
: NI_NUMERICHOST 1 ;
 | 
			
		||||
: NI_NUMERICSERV 2 ;
 | 
			
		||||
CONSTANT: NI_NUMERICHOST 1
 | 
			
		||||
CONSTANT: NI_NUMERICSERV 2
 | 
			
		||||
 | 
			
		||||
: IPPROTO_TCP    6 ; inline
 | 
			
		||||
: IPPROTO_UDP   17 ; inline
 | 
			
		||||
: IPPROTO_RM   113 ; inline
 | 
			
		||||
CONSTANT: IPPROTO_TCP    6
 | 
			
		||||
CONSTANT: IPPROTO_UDP   17
 | 
			
		||||
CONSTANT: IPPROTO_RM   113
 | 
			
		||||
 | 
			
		||||
CONSTANT: WSA_FLAG_OVERLAPPED 1
 | 
			
		||||
ALIAS: WSA_WAIT_EVENT_0 WAIT_OBJECT_0
 | 
			
		||||
| 
						 | 
				
			
			@ -94,16 +94,16 @@ ALIAS: WSA_WAIT_TIMEOUT WAIT_TIMEOUT
 | 
			
		|||
ALIAS: WSA_INFINITE INFINITE
 | 
			
		||||
ALIAS: WSA_IO_PENDING ERROR_IO_PENDING
 | 
			
		||||
 | 
			
		||||
: INADDR_ANY 0 ; inline
 | 
			
		||||
CONSTANT: INADDR_ANY 0
 | 
			
		||||
 | 
			
		||||
: INVALID_SOCKET ( -- alien ) -1 <alien> ; inline
 | 
			
		||||
: SOCKET_ERROR -1 ; inline
 | 
			
		||||
CONSTANT: SOCKET_ERROR -1
 | 
			
		||||
 | 
			
		||||
: SD_RECV 0 ; inline
 | 
			
		||||
: SD_SEND 1 ; inline
 | 
			
		||||
: SD_BOTH 2 ; inline
 | 
			
		||||
CONSTANT: SD_RECV 0
 | 
			
		||||
CONSTANT: SD_SEND 1
 | 
			
		||||
CONSTANT: SD_BOTH 2
 | 
			
		||||
 | 
			
		||||
: SOL_SOCKET HEX: ffff ; inline
 | 
			
		||||
CONSTANT: SOL_SOCKET HEX: ffff
 | 
			
		||||
 | 
			
		||||
! TYPEDEF: uint in_addr_t
 | 
			
		||||
! C-STRUCT: in_addr
 | 
			
		||||
| 
						 | 
				
			
			@ -207,7 +207,7 @@ C-STRUCT: QOS
 | 
			
		|||
    { "WSABUF" "ProviderSpecific" } ;
 | 
			
		||||
TYPEDEF: QOS* LPQOS
 | 
			
		||||
 | 
			
		||||
: MAX_PROTOCOL_CHAIN 7 ; inline
 | 
			
		||||
CONSTANT: MAX_PROTOCOL_CHAIN 7
 | 
			
		||||
 | 
			
		||||
C-STRUCT: WSAPROTOCOLCHAIN
 | 
			
		||||
    { "int" "ChainLen" }
 | 
			
		||||
| 
						 | 
				
			
			@ -215,7 +215,7 @@ C-STRUCT: WSAPROTOCOLCHAIN
 | 
			
		|||
    { { "DWORD" 7 } "ChainEntries" } ;
 | 
			
		||||
TYPEDEF: WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN
 | 
			
		||||
 | 
			
		||||
: WSAPROTOCOL_LEN 255 ; inline
 | 
			
		||||
CONSTANT: WSAPROTOCOL_LEN 255
 | 
			
		||||
 | 
			
		||||
C-STRUCT: WSAPROTOCOL_INFOW
 | 
			
		||||
    { "DWORD" "dwServiceFlags1" }
 | 
			
		||||
| 
						 | 
				
			
			@ -387,7 +387,7 @@ LIBRARY: mswsock
 | 
			
		|||
FUNCTION: int AcceptEx ( void* listen, void* accept, void* out-buf, int recv-len, int addr-len, int remote-len, void* out-len, void* overlapped ) ;
 | 
			
		||||
FUNCTION: void GetAcceptExSockaddrs ( void* a, int b, int c, int d, void* e, void* f, void* g, void* h ) ;
 | 
			
		||||
 | 
			
		||||
: SIO_GET_EXTENSION_FUNCTION_POINTER -939524090 ; inline
 | 
			
		||||
CONSTANT: SIO_GET_EXTENSION_FUNCTION_POINTER -939524090
 | 
			
		||||
 | 
			
		||||
: WSAID_CONNECTEX ( -- GUID )
 | 
			
		||||
    "GUID" <c-object>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue