Update portable strerror_r
authorJeroen van der Heijden <jeroen@transceptor.technology>
Wed, 26 Feb 2020 15:33:27 +0000 (16:33 +0100)
committerJeroen van der Heijden <jeroen@transceptor.technology>
Wed, 26 Feb 2020 15:33:27 +0000 (16:33 +0100)
include/siri/siri.h
src/siri/db/shard.c

index aa615da9bb169c32cee2f0e2ab3b410ea56a17d8..ec42665d8410802770104e75478e24b5988c7624 100644 (file)
 #define SIRI_MAX_SIZE_ERR_MSG 1024
 #define MAX_NUMBER_DB 1024
 
+#if defined(__GLIBC__)
+#define strerror_s(__err, __buf, __sz) \
+    strerror_r(__err, __buf, __sz)
+#else
+#define strerror_s(__err, __buf, __sz) \
+    (strerror_r(__err, __buf, __sz) == 0 ? __buf : "unexpected error")
+#endif
+
 typedef enum
 {
     SIRI_STATUS_LOADING,
index 61ffb5351718061b4e6c8b9688b62452f6ee6c2b..cd89df90f0cdeef6c5ccd64202a83f31c8a0d5b3 100644 (file)
@@ -23,7 +23,6 @@
 #include <unistd.h>
 #include <xstr/xstr.h>
 
-
 /* max read buffer size used for reading from index file */
 #define SIRIDB_SHARD_MAX_CHUNK_SZ 65536
 
@@ -336,7 +335,7 @@ siridb_shard_t *  siridb_shard_create(
     {
         char buf[1024];
         log_critical("Cannot create shard file: '%s' (%s)",
-                shard->fn, strerror_r(errno, buf, 1024));
+                shard->fn, strerror_s(errno, buf, sizeof(buf)));
         siridb_shard_decref(shard);
         ERR_FILE
         return NULL;
@@ -360,7 +359,7 @@ siridb_shard_t *  siridb_shard_create(
     {
         char buf[1024];
         log_critical("Cannot write to shard file: '%s' (%s)",
-                shard->fn, strerror_r(errno, buf, 1024));
+                shard->fn, strerror_s(errno, buf, sizeof(buf)));
         fclose(fp);
         siridb_shard_decref(shard);
         ERR_FILE
@@ -371,7 +370,7 @@ siridb_shard_t *  siridb_shard_create(
     {
         char buf[1024];
         log_critical("Cannot close shard file: '%s' (%s)",
-                shard->fn, strerror_r(errno, buf, 1024));
+                shard->fn, strerror_s(errno, buf, sizeof(buf)));
         siridb_shard_decref(shard);
         ERR_FILE
         return NULL;