Use thread-safe functions 56/62256/8 accepted/tizen/common/20160321.145913 accepted/tizen/ivi/20160321.004613 accepted/tizen/ivi/20160322.023144 accepted/tizen/mobile/20160321.004507 accepted/tizen/tv/20160321.004535 accepted/tizen/wearable/20160321.004554 submit/tizen/20160318.074817 submit/tizen_ivi/20160322.020156
authorSukHyung, Kang <shine.kang@samsung.com>
Tue, 15 Mar 2016 05:44:43 +0000 (14:44 +0900)
committerSukHyung, Kang <shine.kang@samsung.com>
Wed, 16 Mar 2016 07:02:13 +0000 (16:02 +0900)
Change-Id: I4c57beb60bc601072b27b1af869e83c45db54602
Signed-off-by: SukHyung, Kang <shine.kang@samsung.com>
client/c_direct.c
client/c_proc.c
common/backends.c

index eaa31be..86b95bc 100644 (file)
@@ -30,6 +30,8 @@
 #include "c_common.h"
 #include "c_direct.h"
 
+#define BUFFER_SIZE 1024
+
 static const char *confpath;
 
 void c_direct_set_conf(const char *conf)
@@ -87,13 +89,15 @@ static void c_exit(void)
 static int c_init(void)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        /* TODO: configurable */
        change_user("buxton");
 
        r = direct_init(MODULE_DIR, confpath ? confpath : CONFPATH);
        if (r == -1) {
-               bxt_err("Init: %s", strerror(errno));
+               strerror_r(errno, err_buf, sizeof(err_buf));
+               bxt_err("Init: %s", err_buf);
                return -1;
        }
 
@@ -106,12 +110,14 @@ int c_direct_get(const struct buxton_layer *layer,
 {
        int r;
        struct buxton_value val;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get: Layer '%s' Key '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               key ? key : "", strerror(errno));
+                               key ? key : "", err_buf);
                return -1;
        }
 
@@ -124,9 +130,10 @@ int c_direct_get(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get: Layer '%s' Key '%s': %s",
                                buxton_layer_get_name(layer), key,
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -142,13 +149,15 @@ static int c_direct_set(const struct buxton_layer *layer,
 {
        int r;
        struct buxton_value val;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key || !value) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set: Layer '%s' Key '%s' Value '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "", value ? value : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -165,9 +174,10 @@ static int c_direct_set(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set: Layer '%s' Key '%s' Value '%s': %s",
                                buxton_layer_get_name(layer), key, value,
-                               strerror(errno));
+                               err_buf);
        }
 
        return r;
@@ -229,14 +239,16 @@ static int c_direct_create(const struct buxton_layer *layer,
 {
        int r;
        struct buxton_value val;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key || !value || !rpriv || !wpriv) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Create: '%s' '%s' '%s' Priv '%s' '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "", value ? value : "",
                                rpriv ? rpriv : "", wpriv ? wpriv : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -253,9 +265,10 @@ static int c_direct_create(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Create: '%s' '%s' '%s' Priv '%s' '%s': %s",
                                buxton_layer_get_name(layer), key, value,
-                               rpriv, wpriv, strerror(errno));
+                               rpriv, wpriv, err_buf);
        }
 
        return r;
@@ -322,13 +335,15 @@ static int c_direct_get_priv(const struct buxton_layer *layer,
 {
        int r;
        char *priv;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get-priv: Layer '%s' Key '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -341,9 +356,10 @@ static int c_direct_get_priv(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get-priv: Layer '%s' Key '%s': %s",
                                buxton_layer_get_name(layer), key,
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -371,13 +387,15 @@ static int c_direct_set_priv(const struct buxton_layer *layer,
                const char *key, const char *priv, enum buxton_priv_type type)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key || !priv) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set-priv: Layer '%s' Key '%s' Priv. '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "", priv ? priv : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -390,9 +408,10 @@ static int c_direct_set_priv(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set-priv: Layer '%s' Key '%s' Priv. '%s': %s",
                                buxton_layer_get_name(layer), key, priv,
-                               strerror(errno));
+                               err_buf);
        }
 
        return r;
@@ -417,12 +436,14 @@ int c_direct_unset(const struct buxton_layer *layer,
                UNUSED const char *rpriv, UNUSED const char *wpriv)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Unset: Layer '%s' Key '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               key ? key : "", strerror(errno));
+                               key ? key : "", err_buf);
                return -1;
        }
 
@@ -435,9 +456,10 @@ int c_direct_unset(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Unset: Layer '%s' Key '%s': %s",
                                buxton_layer_get_name(layer), key,
-                               strerror(errno));
+                               err_buf);
        }
 
        return r;
@@ -450,12 +472,14 @@ int c_direct_list(const struct buxton_layer *layer,
        int r;
        char **keys;
        char **k;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("List: Layer '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -468,8 +492,9 @@ int c_direct_list(const struct buxton_layer *layer,
        c_exit();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("List: Layer '%s': %s", buxton_layer_get_name(layer),
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
index 1b32c86..1fa24cc 100644 (file)
@@ -27,6 +27,8 @@
 #include "c_common.h"
 #include "c_proc.h"
 
+#define BUFFER_SIZE 1024
+
 static struct buxton_client *client;
 
 static void status_cb(enum buxton_status status, void *data)
@@ -37,13 +39,16 @@ static void status_cb(enum buxton_status status, void *data)
 static int _close(void)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        if (!client)
                return 0;
 
        r = buxton_close(client);
-       if (r == -1)
-               bxt_err("close: %s", strerror(errno));
+       if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
+               bxt_err("close: %s", err_buf);
+       }
 
        client = NULL;
 
@@ -53,13 +58,16 @@ static int _close(void)
 static int _open(void)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        if (client)
                return 0;
 
        r = buxton_open(&client, status_cb, NULL);
-       if (r == -1)
-               bxt_err("open: %s", strerror(errno));
+       if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
+               bxt_err("open: %s", err_buf);
+       }
 
        return r;
 }
@@ -95,12 +103,14 @@ int c_get(const struct buxton_layer *layer,
 {
        int r;
        struct buxton_value *val;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get: Layer '%s' Key '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               key ? key : "", strerror(errno));
+                               key ? key : "", err_buf);
                return -1;
        }
 
@@ -113,9 +123,10 @@ int c_get(const struct buxton_layer *layer,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get: Layer '%s' Key '%s': %s",
                                buxton_layer_get_name(layer), key,
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -131,13 +142,15 @@ static int c_set(const struct buxton_layer *layer,
 {
        int r;
        struct buxton_value val;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key || !value) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set: Layer '%s' Key '%s' Value '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "", value ? value : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -154,9 +167,10 @@ static int c_set(const struct buxton_layer *layer,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set: Layer '%s' Key '%s' Value '%s': %s",
                                buxton_layer_get_name(layer), key, value,
-                               strerror(errno));
+                               err_buf);
        }
 
        return r;
@@ -217,14 +231,16 @@ static int c_create(const struct buxton_layer *layer, const char *key,
 {
        int r;
        struct buxton_value val;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key || !value || !rpriv || !wpriv) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Create: '%s' '%s' '%s' Priv '%s' '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "", value ? value : "",
                                rpriv ? rpriv : "", wpriv ? wpriv : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -241,9 +257,10 @@ static int c_create(const struct buxton_layer *layer, const char *key,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Create: '%s' '%s' '%s' Priv '%s' '%s': %s",
                                buxton_layer_get_name(layer), key, value,
-                               rpriv, wpriv, strerror(errno));
+                               rpriv, wpriv, err_buf);
        }
 
        return r;
@@ -296,12 +313,14 @@ static int c_get_priv(const struct buxton_layer *layer,
 {
        int r;
        char *priv;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get-priv: Layer '%s' Key '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               key ? key : "", strerror(errno));
+                               key ? key : "", err_buf);
                return -1;
        }
 
@@ -314,9 +333,10 @@ static int c_get_priv(const struct buxton_layer *layer,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Get-priv: Layer '%s' Key '%s': %s",
                                buxton_layer_get_name(layer), key,
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -344,13 +364,15 @@ int c_set_priv(const struct buxton_layer *layer,
                const char *key, const char *priv, enum buxton_priv_type type)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key || !priv) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set-priv: Layer '%s' Key '%s' Priv '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
                                key ? key : "", priv ? priv : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -363,9 +385,10 @@ int c_set_priv(const struct buxton_layer *layer,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Set-priv: Layer '%s' Key '%s' Priv '%s': %s",
                                buxton_layer_get_name(layer), key, priv,
-                               strerror(errno));
+                               err_buf);
        }
 
        return r;
@@ -390,12 +413,14 @@ int c_unset(const struct buxton_layer *layer,
                UNUSED const char *rpriv, UNUSED const char *wpriv)
 {
        int r;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer || !key || !*key) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Unset: Layer '%s' Key '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               key ? key : "", strerror(errno));
+                               key ? key : "", err_buf);
                return -1;
        }
 
@@ -408,9 +433,10 @@ int c_unset(const struct buxton_layer *layer,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("Unset: Layer '%s' Key '%s': %s",
                                buxton_layer_get_name(layer), key,
-                               strerror(errno));
+                               err_buf);
        }
 
        return r;
@@ -423,12 +449,14 @@ int c_list(const struct buxton_layer *layer,
        int r;
        char **keys;
        char **k;
+       char err_buf[BUFFER_SIZE];
 
        if (!layer) {
                errno = EINVAL;
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("List: Layer '%s': %s",
                                layer ? buxton_layer_get_name(layer) : "",
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
@@ -441,8 +469,9 @@ int c_list(const struct buxton_layer *layer,
        _close();
 
        if (r == -1) {
+               strerror_r(errno, err_buf, sizeof(err_buf));
                bxt_err("List: Layer '%s': %s", buxton_layer_get_name(layer),
-                               strerror(errno));
+                               err_buf);
                return -1;
        }
 
index f067882..a91795f 100644 (file)
@@ -135,7 +135,8 @@ err:
 static int load_modules(const char *moddir)
 {
        DIR *dir;
-       struct dirent *de;
+       struct dirent de;
+       struct dirent *result;
        char *ext;
        struct module *mod;
 
@@ -148,15 +149,15 @@ static int load_modules(const char *moddir)
                return -1;
        }
 
-       while ((de = readdir(dir)) != NULL) {
-               ext = strrchr(de->d_name, '.');
+       while ((readdir_r(dir, &de, &result) == 0) && (result != NULL)) {
+               ext = strrchr(result->d_name, '.');
                if (!ext)
                        continue;
 
                if (strncmp(ext, ".so", sizeof(".so")))
                        continue;
 
-               mod = load_module(moddir, de->d_name);
+               mod = load_module(moddir, result->d_name);
                if (mod) {
                        g_hash_table_insert(backends,
                                        (gpointer)mod->backend->name, mod);