github.com/gofiber/fiber/v2@v2.47.0/internal/go-ole/error_windows.go (about) 1 //go:build windows 2 // +build windows 3 4 package ole 5 6 import ( 7 "fmt" 8 "syscall" 9 "unicode/utf16" 10 ) 11 12 // errstr converts error code to string. 13 func errstr(errno int) string { 14 // ask windows for the remaining errors 15 var flags uint32 = syscall.FORMAT_MESSAGE_FROM_SYSTEM | syscall.FORMAT_MESSAGE_ARGUMENT_ARRAY | syscall.FORMAT_MESSAGE_IGNORE_INSERTS 16 b := make([]uint16, 300) 17 n, err := syscall.FormatMessage(flags, 0, uint32(errno), 0, b, nil) 18 if err != nil { 19 return fmt.Sprintf("error %d (FormatMessage failed with: %v)", errno, err) 20 } 21 // trim terminating \r and \n 22 for ; n > 0 && (b[n-1] == '\n' || b[n-1] == '\r'); n-- { 23 } 24 return string(utf16.Decode(b[:n])) 25 }