make sigar_strerror usable internally w/o sigar_t
This commit is contained in:
parent
8f837228b3
commit
07c0cb7ff0
|
@ -146,6 +146,8 @@ int sigar_os_close(sigar_t *sigar);
|
|||
|
||||
char *sigar_os_error_string(sigar_t *sigar, int err);
|
||||
|
||||
char *sigar_strerror_get(int err, char *errbuf, int buflen);
|
||||
|
||||
int sigar_sys_info_get_uname(sigar_sys_info_t *sysinfo);
|
||||
|
||||
int sigar_os_sys_info_get(sigar_t *sigar, sigar_sys_info_t *sysinfo);
|
||||
|
|
25
src/sigar.c
25
src/sigar.c
|
@ -114,10 +114,7 @@ static char *sigar_error_string(int err)
|
|||
|
||||
SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err)
|
||||
{
|
||||
char *buf = NULL;
|
||||
#ifdef WIN32
|
||||
DWORD len;
|
||||
#endif
|
||||
char *buf;
|
||||
|
||||
if (err > SIGAR_OS_START_ERROR) {
|
||||
if ((buf = sigar_os_error_string(sigar, err)) != NULL) {
|
||||
|
@ -130,14 +127,22 @@ SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err)
|
|||
return sigar_error_string(err);
|
||||
}
|
||||
|
||||
return sigar_strerror_get(err, sigar->errbuf, sizeof(sigar->errbuf));
|
||||
}
|
||||
|
||||
char *sigar_strerror_get(int err, char *errbuf, int buflen)
|
||||
{
|
||||
char *buf = NULL;
|
||||
#ifdef WIN32
|
||||
DWORD len;
|
||||
|
||||
len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM |
|
||||
FORMAT_MESSAGE_IGNORE_INSERTS,
|
||||
NULL,
|
||||
err,
|
||||
0, /* default language */
|
||||
(LPTSTR)sigar->errbuf,
|
||||
(DWORD)sizeof(sigar->errbuf),
|
||||
(LPTSTR)errbuf,
|
||||
(DWORD)buflen,
|
||||
NULL);
|
||||
#else
|
||||
|
||||
|
@ -146,9 +151,9 @@ SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err)
|
|||
* strerror_r man page says:
|
||||
* "The GNU version may, but need not, use the user supplied buffer"
|
||||
*/
|
||||
buf = strerror_r(err, sigar->errbuf, sizeof(sigar->errbuf));
|
||||
buf = strerror_r(err, errbuf, buflen);
|
||||
#elif defined(HAVE_STRERROR_R)
|
||||
if (strerror_r(err, sigar->errbuf, sizeof(sigar->errbuf)) < 0) {
|
||||
if (strerror_r(err, errbuf, buflen) < 0) {
|
||||
buf = "Unknown Error";
|
||||
}
|
||||
#else
|
||||
|
@ -157,11 +162,11 @@ SIGAR_DECLARE(char *) sigar_strerror(sigar_t *sigar, int err)
|
|||
#endif
|
||||
|
||||
if (buf != NULL) {
|
||||
SIGAR_SSTRCPY(sigar->errbuf, buf);
|
||||
SIGAR_STRNCPY(errbuf, buf, buflen);
|
||||
}
|
||||
|
||||
#endif
|
||||
return sigar->errbuf;
|
||||
return errbuf;
|
||||
}
|
||||
|
||||
#include <stdio.h> /* for sprintf */
|
||||
|
|
Loading…
Reference in New Issue