From eca5c0ad73b60cd4a3408454ea920f356ef83b19 Mon Sep 17 00:00:00 2001 From: Stefan Knoblich Date: Tue, 14 Aug 2012 14:54:06 +0200 Subject: [PATCH] FreeSWITCH: Add WIN32 strerror_s() variant to custom switch_strerror_r() helper function and fix more strerror_r() users. Convert mod_xml_cdr, mod_json_cdr and mod_conference to the new function. Signed-off-by: Stefan Knoblich --- .../applications/mod_conference/mod_conference.c | 8 ++------ .../event_handlers/mod_json_cdr/mod_json_cdr.c | 16 ++++------------ src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c | 16 ++++------------ src/switch_utils.c | 6 ++++++ 4 files changed, 16 insertions(+), 30 deletions(-) diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index fccdefd46e..bc60091964 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1029,12 +1029,8 @@ static void conference_cdr_render(conference_obj_t *conference) fd = -1; } else { char ebuf[512] = { 0 }; -#ifdef WIN32 - strerror_s(ebuf, sizeof(ebuf), errno); -#else - strerror_r(errno, ebuf, sizeof(ebuf)); -#endif - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", path, ebuf); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", + path, switch_strerror_r(errno, ebuf, sizeof(ebuf))); } diff --git a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c index e07871b88d..7b1cf2a6a9 100644 --- a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c +++ b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c @@ -253,12 +253,8 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) } } else { char ebuf[512] = { 0 }; -#ifdef WIN32 - strerror_s(ebuf, sizeof(ebuf), errno); -#else - strerror_r(errno, ebuf, sizeof(ebuf)); -#endif - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", path, ebuf); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", + path, switch_strerror_r(errno, ebuf, sizeof(ebuf))); } switch_safe_free(path); } @@ -412,12 +408,8 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) break; } else { char ebuf[512] = { 0 }; -#ifdef WIN32 - strerror_s(ebuf, sizeof(ebuf), errno); -#else - strerror_r(errno, ebuf, sizeof(ebuf)); -#endif - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open %s! [%s]\n", path, ebuf); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open %s! [%s]\n", + path, switch_strerror_r(errno, ebuf, sizeof(ebuf))); } diff --git a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c index 44379444e3..28f4ae2e44 100644 --- a/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c +++ b/src/mod/xml_int/mod_xml_cdr/mod_xml_cdr.c @@ -244,12 +244,8 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) fd = -1; } else { char ebuf[512] = { 0 }; -#ifdef WIN32 - strerror_s(ebuf, sizeof(ebuf), errno); -#else - strerror_r(errno, ebuf, sizeof(ebuf)); -#endif - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", path, ebuf); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error writing [%s][%s]\n", + path, switch_strerror_r(errno, ebuf, sizeof(ebuf))); } switch_safe_free(path); } @@ -400,12 +396,8 @@ static switch_status_t my_on_reporting(switch_core_session_t *session) fd = -1; } else { char ebuf[512] = { 0 }; -#ifdef WIN32 - strerror_s(ebuf, sizeof(ebuf), errno); -#else - strerror_r(errno, ebuf, sizeof(ebuf)); -#endif - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error![%s]\n", ebuf); + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error![%s]\n", + switch_strerror_r(errno, ebuf, sizeof(ebuf))); } } } diff --git a/src/switch_utils.c b/src/switch_utils.c index b0c4e1a287..d877061e39 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -2985,6 +2985,12 @@ SWITCH_DECLARE(char *) switch_strerror_r(int errnum, char *buf, switch_size_t bu } return buf; #endif /* STRERROR_R_CHAR_P */ +#elif defined(WIN32) + /* WIN32 variant */ + if (strerror_s(buf, buflen, errnum)) { + switch_snprintf(buf, buflen, "Unknown error %d", errnum); + } + return buf; #else /* Fallback, copy string into private buffer */ switch_copy_string(buf, strerror(errnum), buflen);