12 #define FORMAT_FLAGS (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS)
17 return (os_error_t)GetLastError();
20 static DWORD format_inner(os_error_t error,
char *buffer,
size_t size)
22 return FormatMessageA(
26 MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
42 DWORD written = format_inner(error, buffer,
size);
46 return str_sprintf(buffer,
size,
"GetLastError: 0x%08lX", (DWORD)error);
#define STA_DECL
sal2 annotation on function implementations to copy annotations from the declaration
CT_CONSTFN CT_BASE_API text_t text_make(STA_READS(length) char *text, size_t length)
create a new owning text array text must be a valid string at least length bytes long
#define CT_UNUSED(x)
mark a variable as unused
CT_STD_API void str_replace_inplace(INOUT_NOTNULL text_t *text, const char *search, const char *repl)
replace all instances of a substring in a string in place
CT_STD_API size_t str_sprintf(STA_WRITES(len) char *str, size_t len, STA_FORMAT_STRING const char *fmt,...)
format a string with printf-like syntax
CT_STD_API void str_trim_back_inplace(INOUT_NOTNULL text_t *text, const char *chars)
trim chars from the back of a string in place
CT_LOCAL size_t impl_error_length(os_error_t error)
STA_DECL CT_LOCAL os_error_t impl_last_error(void)
CT_LOCAL size_t impl_error_string(os_error_t error, char *buffer, size_t size)
size_t length
the number of characters in the text