windows.errors, debugger.windows: improve description of Windows error objects

db4
Joe Groff 2010-05-02 22:29:59 -07:00
parent c167646e3b
commit 7e2d32b7d2
2 changed files with 20 additions and 6 deletions

View File

@ -1,7 +1,8 @@
! Copyright (C) 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: assocs debugger io kernel literals math.parser namespaces
prettyprint sequences system windows.kernel32 ;
USING: accessors assocs debugger io kernel literals math.parser
namespaces prettyprint sequences system windows.kernel32
windows.ole32 windows.errors math ;
IN: debugger.windows
CONSTANT: seh-names
@ -41,3 +42,14 @@ CONSTANT: seh-names
M: windows signal-error.
"Windows exception 0x" write
third [ >hex write ] [ seh-name. ] bi nl ;
M: ole32-error error.
"COM error 0x" write
dup code>> HEX: ffff,ffff bitand >hex write ": " write
message>> write ;
M: windows-error error.
"Win32 error 0x" write
dup n>> HEX: ffff,ffff bitand >hex write ": " write
string>> write ;

View File

@ -1,7 +1,8 @@
USING: alien.data kernel locals math math.bitwise
windows.kernel32 sequences byte-arrays unicode.categories
io.encodings.string io.encodings.utf16n alien.strings
arrays literals windows.types specialized-arrays ;
arrays literals windows.types specialized-arrays
math.parser ;
SPECIALIZED-ARRAY: TCHAR
IN: windows.errors
@ -703,7 +704,6 @@ CONSTANT: FORMAT_MESSAGE_MAX_WIDTH_MASK HEX: 000000FF
: make-lang-id ( lang1 lang2 -- n )
10 shift bitor ; inline
ERROR: error-message-failed id ;
:: n>win32-error-string ( id -- string )
flags{
FORMAT_MESSAGE_FROM_SYSTEM
@ -713,8 +713,10 @@ ERROR: error-message-failed id ;
id
LANG_NEUTRAL SUBLANG_DEFAULT make-lang-id
32768 [ TCHAR <c-array> ] [ ] bi
f pick [ FormatMessage 0 = [ id error-message-failed ] when ] dip
utf16n alien>string [ blank? ] trim ;
f pick [ FormatMessage ] dip
swap zero?
[ drop "Unknown error 0x" id HEX: ffff,ffff bitand >hex append ]
[ utf16n alien>string [ blank? ] trim ] if ;
: win32-error-string ( -- str )
GetLastError n>win32-error-string ;