Add ssh_strerror function

- strerror_r for linux
- strerror_s for windows

Keep in mind that strerror_r has two versions:
- XSI
- GNU
see manpage for more information

Signed-off-by: Norbert Pocs <npocs@redhat.com>
Reviewed-by: Jakub Jelen <jjelen@redhat.com>
This commit is contained in:
Norbert Pocs
2022-06-30 23:00:37 +02:00
committed by Jakub Jelen
parent b6a4330fe4
commit 738cedb8be
2 changed files with 26 additions and 0 deletions

View File

@@ -429,4 +429,6 @@ void ssh_agent_state_free(void *data);
bool is_ssh_initialized(void);
char *ssh_strerror(int err_num, char *buf, size_t buflen);
#endif /* _LIBSSH_PRIV_H */

View File

@@ -1941,4 +1941,28 @@ char *ssh_strreplace(const char *src, const char *pattern, const char *replace)
}
}
/**
* @internal
*
* @brief Processes errno into error string
*
* @param[in] err_num The errno value
* @param[out] buf Pointer to a place where the string could be saved
* @param[in] buflen The allocated size of buf
*
* @return error string
*/
char *ssh_strerror(int err_num, char *buf, size_t buflen)
{
#if defined(_WIN32)
strerror_s(buf, buflen, err_num);
return buf;
#elif !defined(_GNU_SOURCE)
strerror_r(err_num, buf, buflen);
return buf;
#else
return strerror_r(err_num, buf, buflen);
#endif /* _WIN32 */
}
/** @} */