From f21702d86a2e0050fcbbda2267813618d130ff13 Mon Sep 17 00:00:00 2001 From: "SukHyung, Kang" Date: Tue, 15 Mar 2016 14:44:43 +0900 Subject: [PATCH] Use thread-safe functions Change-Id: I4c57beb60bc601072b27b1af869e83c45db54602 Signed-off-by: SukHyung, Kang --- client/c_direct.c | 55 +++++++++++++++++++++++++++++++++------------- client/c_proc.c | 65 ++++++++++++++++++++++++++++++++++++++++--------------- common/backends.c | 9 ++++---- 3 files changed, 92 insertions(+), 37 deletions(-) diff --git a/client/c_direct.c b/client/c_direct.c index eaa31be..86b95bc 100644 --- a/client/c_direct.c +++ b/client/c_direct.c @@ -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; } diff --git a/client/c_proc.c b/client/c_proc.c index 1b32c86..1fa24cc 100644 --- a/client/c_proc.c +++ b/client/c_proc.c @@ -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; } diff --git a/common/backends.c b/common/backends.c index f067882..a91795f 100644 --- a/common/backends.c +++ b/common/backends.c @@ -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); -- 2.7.4