`strerror_s` is the windows alternative of `strerror_r` used by EFL.
`strerror_s` never return the error code with the message as
`strerror_r` does, because of that, while comparing the first 14
characters of `Unknown error ` to the message from unknown code 4096
(`Unknown error`) they were accusing being different - in UNIX this
works because the message returned is `Unknown error 4096`.
This error was noticeable at `eina_error_test_failures` test case.
This Diff adds the error code to the message in case of an `Unknown
error`, making the windows implementation compliant with UNIX.
Reviewed-by: Vincent Torri <vincent.torri@gmail.com>
Reviewed-by: Wander Lairson Costa <wander.lairson@gmail.com>
Reviewed-by: Stefan Schmidt <stefan@datenfreihafen.org>
Differential Revision: https://phab.enlightenment.org/D12033
/* Windows has strerror_s(), similar to POSIX strerror_r() */
static inline int strerror_r(int errnum, char *buf, size_t buflen)
{
- return strerror_s(buf, buflen, errnum);
+ int ret;
+
+ ret = strerror_s(buf, buflen, errnum);
+ if (strcmp(buf, "Unknown error") == 0)
+ snprintf(buf, buflen, "Unknown error %d", errnum);
+
+ return ret;
}
#endif