mirror of https://github.com/EasyDarwin/EasyDarwin
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
24 lines
650 B
24 lines
650 B
// +build windows |
|
|
|
package ole |
|
|
|
import ( |
|
"fmt" |
|
"syscall" |
|
"unicode/utf16" |
|
) |
|
|
|
// errstr converts error code to string. |
|
func errstr(errno int) string { |
|
// ask windows for the remaining errors |
|
var flags uint32 = syscall.FORMAT_MESSAGE_FROM_SYSTEM | syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY | syscall.FORMAT_MESSAGE_IGNORE_INSERTS |
|
b := make([]uint16, 300) |
|
n, err := syscall.FormatMessage(flags, 0, uint32(errno), 0, b, nil) |
|
if err != nil { |
|
return fmt.Sprintf("error %d (FormatMessage failed with: %v)", errno, err) |
|
} |
|
// trim terminating \r and \n |
|
for ; n > 0 && (b[n-1] == '\n' || b[n-1] == '\r'); n-- { |
|
} |
|
return string(utf16.Decode(b[:n])) |
|
}
|
|
|