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  }