fix load error by making a word windows-file-size independent of the file-size word

add constants
db4
Doug Coleman 2008-12-16 14:35:37 -06:00
parent a92425adef
commit 8e0ff1989b
2 changed files with 78 additions and 68 deletions

View File

@ -4,7 +4,7 @@ io.backend.windows io.files.windows io.encodings.utf16n windows
windows.kernel32 kernel libc math threads system environment windows.kernel32 kernel libc math threads system environment
alien.c-types alien.arrays alien.strings sequences combinators alien.c-types alien.arrays alien.strings sequences combinators
combinators.short-circuit ascii splitting alien strings assocs 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 IN: io.files.windows.nt
M: winnt cwd M: winnt cwd
@ -44,8 +44,18 @@ M: winnt normalize-path ( string -- string' )
M: winnt CreateFile-flags ( DWORD -- DWORD ) M: winnt CreateFile-flags ( DWORD -- DWORD )
FILE_FLAG_OVERLAPPED bitor ; 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 M: winnt open-append
[ dup file-info size>> ] [ drop 0 ] recover [ dup windows-file-size ] [ drop 0 ] recover
[ (open-append) ] dip >>ptr ; [ (open-append) ] dip >>ptr ;
M: winnt home "USERPROFILE" os-env ; M: winnt home "USERPROFILE" os-env ;

View File

@ -15,74 +15,74 @@ TYPEDEF: void* SOCKET
: <wsadata> ( -- byte-array ) : <wsadata> ( -- byte-array )
HEX: 190 <byte-array> ; HEX: 190 <byte-array> ;
: SOCK_STREAM 1 ; inline CONSTANT: SOCK_STREAM 1
: SOCK_DGRAM 2 ; inline CONSTANT: SOCK_DGRAM 2
: SOCK_RAW 3 ; inline CONSTANT: SOCK_RAW 3
: SOCK_RDM 4 ; inline CONSTANT: SOCK_RDM 4
: SOCK_SEQPACKET 5 ; inline CONSTANT: SOCK_SEQPACKET 5
: SO_DEBUG HEX: 1 ; inline CONSTANT: SO_DEBUG HEX: 1
: SO_ACCEPTCONN HEX: 2 ; inline CONSTANT: SO_ACCEPTCONN HEX: 2
: SO_REUSEADDR HEX: 4 ; inline CONSTANT: SO_REUSEADDR HEX: 4
: SO_KEEPALIVE HEX: 8 ; inline CONSTANT: SO_KEEPALIVE HEX: 8
: SO_DONTROUTE HEX: 10 ; inline CONSTANT: SO_DONTROUTE HEX: 10
: SO_BROADCAST HEX: 20 ; inline CONSTANT: SO_BROADCAST HEX: 20
: SO_USELOOPBACK HEX: 40 ; inline CONSTANT: SO_USELOOPBACK HEX: 40
: SO_LINGER HEX: 80 ; inline CONSTANT: SO_LINGER HEX: 80
: SO_OOBINLINE HEX: 100 ; inline CONSTANT: SO_OOBINLINE HEX: 100
: SO_DONTLINGER ( -- n ) SO_LINGER bitnot ; inline : SO_DONTLINGER ( -- n ) SO_LINGER bitnot ; inline
: SO_SNDBUF HEX: 1001 ; inline CONSTANT: SO_SNDBUF HEX: 1001
: SO_RCVBUF HEX: 1002 ; inline CONSTANT: SO_RCVBUF HEX: 1002
: SO_SNDLOWAT HEX: 1003 ; inline CONSTANT: SO_SNDLOWAT HEX: 1003
: SO_RCVLOWAT HEX: 1004 ; inline CONSTANT: SO_RCVLOWAT HEX: 1004
: SO_SNDTIMEO HEX: 1005 ; inline CONSTANT: SO_SNDTIMEO HEX: 1005
: SO_RCVTIMEO HEX: 1006 ; inline CONSTANT: SO_RCVTIMEO HEX: 1006
: SO_ERROR HEX: 1007 ; inline CONSTANT: SO_ERROR HEX: 1007
: SO_TYPE HEX: 1008 ; inline CONSTANT: SO_TYPE HEX: 1008
: TCP_NODELAY HEX: 1 ; inline CONSTANT: TCP_NODELAY HEX: 1
: AF_UNSPEC 0 ; inline CONSTANT: AF_UNSPEC 0
: AF_UNIX 1 ; inline CONSTANT: AF_UNIX 1
: AF_INET 2 ; inline CONSTANT: AF_INET 2
: AF_IMPLINK 3 ; inline CONSTANT: AF_IMPLINK 3
: AF_PUP 4 ; inline CONSTANT: AF_PUP 4
: AF_CHAOS 5 ; inline CONSTANT: AF_CHAOS 5
: AF_NS 6 ; inline CONSTANT: AF_NS 6
: AF_ISO 7 ; inline CONSTANT: AF_ISO 7
ALIAS: AF_OSI AF_ISO ALIAS: AF_OSI AF_ISO
: AF_ECMA 8 ; inline CONSTANT: AF_ECMA 8
: AF_DATAKIT 9 ; inline CONSTANT: AF_DATAKIT 9
: AF_CCITT 10 ; inline CONSTANT: AF_CCITT 10
: AF_SNA 11 ; inline CONSTANT: AF_SNA 11
: AF_DECnet 12 ; inline CONSTANT: AF_DECnet 12
: AF_DLI 13 ; inline CONSTANT: AF_DLI 13
: AF_LAT 14 ; inline CONSTANT: AF_LAT 14
: AF_HYLINK 15 ; inline CONSTANT: AF_HYLINK 15
: AF_APPLETALK 16 ; inline CONSTANT: AF_APPLETALK 16
: AF_NETBIOS 17 ; inline CONSTANT: AF_NETBIOS 17
: AF_MAX 18 ; inline CONSTANT: AF_MAX 18
: AF_INET6 23 ; inline CONSTANT: AF_INET6 23
: AF_IRDA 26 ; inline CONSTANT: AF_IRDA 26
: AF_BTM 32 ; inline CONSTANT: AF_BTM 32
: PF_UNSPEC 0 ; inline CONSTANT: PF_UNSPEC 0
: PF_LOCAL 1 ; inline CONSTANT: PF_LOCAL 1
: PF_INET 2 ; inline CONSTANT: PF_INET 2
: PF_INET6 23 ; inline CONSTANT: PF_INET6 23
: AI_PASSIVE 1 ; inline CONSTANT: AI_PASSIVE 1
: AI_CANONNAME 2 ; inline CONSTANT: AI_CANONNAME 2
: AI_NUMERICHOST 4 ; inline CONSTANT: AI_NUMERICHOST 4
: AI_MASK ( -- n ) { AI_PASSIVE AI_CANONNAME AI_NUMERICHOST } flags ; : AI_MASK ( -- n ) { AI_PASSIVE AI_CANONNAME AI_NUMERICHOST } flags ;
: NI_NUMERICHOST 1 ; CONSTANT: NI_NUMERICHOST 1
: NI_NUMERICSERV 2 ; CONSTANT: NI_NUMERICSERV 2
: IPPROTO_TCP 6 ; inline CONSTANT: IPPROTO_TCP 6
: IPPROTO_UDP 17 ; inline CONSTANT: IPPROTO_UDP 17
: IPPROTO_RM 113 ; inline CONSTANT: IPPROTO_RM 113
CONSTANT: WSA_FLAG_OVERLAPPED 1 CONSTANT: WSA_FLAG_OVERLAPPED 1
ALIAS: WSA_WAIT_EVENT_0 WAIT_OBJECT_0 ALIAS: WSA_WAIT_EVENT_0 WAIT_OBJECT_0
@ -94,16 +94,16 @@ ALIAS: WSA_WAIT_TIMEOUT WAIT_TIMEOUT
ALIAS: WSA_INFINITE INFINITE ALIAS: WSA_INFINITE INFINITE
ALIAS: WSA_IO_PENDING ERROR_IO_PENDING ALIAS: WSA_IO_PENDING ERROR_IO_PENDING
: INADDR_ANY 0 ; inline CONSTANT: INADDR_ANY 0
: INVALID_SOCKET ( -- alien ) -1 <alien> ; inline : INVALID_SOCKET ( -- alien ) -1 <alien> ; inline
: SOCKET_ERROR -1 ; inline CONSTANT: SOCKET_ERROR -1
: SD_RECV 0 ; inline CONSTANT: SD_RECV 0
: SD_SEND 1 ; inline CONSTANT: SD_SEND 1
: SD_BOTH 2 ; inline CONSTANT: SD_BOTH 2
: SOL_SOCKET HEX: ffff ; inline CONSTANT: SOL_SOCKET HEX: ffff
! TYPEDEF: uint in_addr_t ! TYPEDEF: uint in_addr_t
! C-STRUCT: in_addr ! C-STRUCT: in_addr
@ -207,7 +207,7 @@ C-STRUCT: QOS
{ "WSABUF" "ProviderSpecific" } ; { "WSABUF" "ProviderSpecific" } ;
TYPEDEF: QOS* LPQOS TYPEDEF: QOS* LPQOS
: MAX_PROTOCOL_CHAIN 7 ; inline CONSTANT: MAX_PROTOCOL_CHAIN 7
C-STRUCT: WSAPROTOCOLCHAIN C-STRUCT: WSAPROTOCOLCHAIN
{ "int" "ChainLen" } { "int" "ChainLen" }
@ -215,7 +215,7 @@ C-STRUCT: WSAPROTOCOLCHAIN
{ { "DWORD" 7 } "ChainEntries" } ; { { "DWORD" 7 } "ChainEntries" } ;
TYPEDEF: WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN TYPEDEF: WSAPROTOCOLCHAIN* LPWSAPROTOCOLCHAIN
: WSAPROTOCOL_LEN 255 ; inline CONSTANT: WSAPROTOCOL_LEN 255
C-STRUCT: WSAPROTOCOL_INFOW C-STRUCT: WSAPROTOCOL_INFOW
{ "DWORD" "dwServiceFlags1" } { "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: 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 ) ; 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 ) : WSAID_CONNECTEX ( -- GUID )
"GUID" <c-object> "GUID" <c-object>