patch: added str_error()
This commit is contained in:
parent
0535275300
commit
5d71d9455e
4 changed files with 45 additions and 7 deletions
|
@ -107,6 +107,8 @@ void str_ncpy(char *dst, const char *src, size_t n);
|
|||
int str_dup(char **dst, const char *src);
|
||||
int str_casecmp(const char *s1, const char *s2);
|
||||
size_t str_len(const char *s);
|
||||
const char *str_error(int errnum, char *buf, size_t sz);
|
||||
|
||||
|
||||
/**
|
||||
* Check if string is set
|
||||
|
|
|
@ -11,4 +11,5 @@ SRCS += fmt/print.c
|
|||
SRCS += fmt/prm.c
|
||||
SRCS += fmt/regex.c
|
||||
SRCS += fmt/str.c
|
||||
SRCS += fmt/str_error.c
|
||||
SRCS += fmt/time.c
|
||||
|
|
|
@ -3,8 +3,6 @@
|
|||
*
|
||||
* Copyright (C) 2010 Creytiv.com
|
||||
*/
|
||||
#define _GNU_SOURCE 1
|
||||
#define __EXTENSIONS__ 1
|
||||
#include <string.h>
|
||||
#include <re_types.h>
|
||||
#include <re_sa.h>
|
||||
|
@ -315,11 +313,9 @@ int re_vhprintf(const char *fmt, va_list ap, re_vprintf_h *vph, void *arg)
|
|||
break;
|
||||
|
||||
case 'm':
|
||||
(void)strerror_r(va_arg(ap, int), addr, sizeof(addr));
|
||||
addr[sizeof(addr)-1] = '\0';
|
||||
|
||||
err |= write_padded(addr, strlen(addr), pad, ' ',
|
||||
plr, NULL, vph, arg);
|
||||
str = str_error(va_arg(ap, int), addr, sizeof(addr));
|
||||
err |= write_padded(str, str_len(str), pad,
|
||||
' ', plr, NULL, vph, arg);
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
|
|
39
src/fmt/str_error.c
Normal file
39
src/fmt/str_error.c
Normal file
|
@ -0,0 +1,39 @@
|
|||
/**
|
||||
* @file str_error.c System error messages
|
||||
*
|
||||
* Copyright (C) 2010 Creytiv.com
|
||||
*/
|
||||
#define _GNU_SOURCE 1
|
||||
#define __EXTENSIONS__ 1
|
||||
#include <string.h>
|
||||
#include <re_types.h>
|
||||
#include <re_fmt.h>
|
||||
|
||||
|
||||
/**
|
||||
* Look up an error message string corresponding to an error number.
|
||||
*
|
||||
* @param errnum Error Code
|
||||
* @param buf Buffer for storing error message
|
||||
* @param sz Buffer size
|
||||
*
|
||||
* @return Error message string
|
||||
*/
|
||||
const char *str_error(int errnum, char *buf, size_t sz)
|
||||
{
|
||||
const char *s;
|
||||
|
||||
if (!buf || !sz)
|
||||
return NULL;
|
||||
|
||||
buf[0] = '\0';
|
||||
#ifdef LINUX
|
||||
s = strerror_r(errnum, buf, sz);
|
||||
#else
|
||||
(void)strerror_r(errnum, buf, sz);
|
||||
s = buf;
|
||||
#endif
|
||||
buf[sz - 1] = '\0';
|
||||
|
||||
return s;
|
||||
}
|
Loading…
Add table
Reference in a new issue