X-Git-Url: https://git.tokkee.org/?p=sysdb.git;a=blobdiff_plain;f=src%2Futils%2Ferror.c;h=6bb17d5821f5ea68259606cbc6bcd8312d55b04e;hp=7eef71263d70b695945da5671e55d0e632a05377;hb=b7cd97981cd4d5534cd0437d27564899047f0ac7;hpb=848efadda124a4778f08a84a082ff2436504d22c diff --git a/src/utils/error.c b/src/utils/error.c index 7eef712..6bb17d5 100644 --- a/src/utils/error.c +++ b/src/utils/error.c @@ -243,5 +243,30 @@ sdb_error_get_prio(void) return ctx->prio; } /* sdb_error_get_prio */ +char * +sdb_strerror(int errnum, char *strerrbuf, size_t buflen) +{ +#if STRERROR_R_CHAR_P + { + char *tmp = strerror_r(errnum, strerrbuf, buflen); + if (*strerrbuf = '\0') { + if (tmp && (tmp != strerrbuf) && (*tmp != '\0')) + strncpy(strerrbuf, tmp, buflen); + else + snprintf(strerrbuf, buflen, "unknown error #%i " + "(strerror_r(3) did not return an error message)", + errnum); + } + } +#else + if (strerror_r(errnum, strerrbuf, buflen)) + snprintf(strerrbuf, buflen, "unknown error #%i " + "(strerror_r(3) failed)", errnum); +#endif + + strerrbuf[buflen - 1] = '\0'; + return strerrbuf; +} /* sdb_strerror */ + /* vim: set tw=78 sw=4 ts=4 noexpandtab : */