#include "c_common.h"
#include "c_direct.h"
+#define BUFFER_SIZE 1024
+
static const char *confpath;
void c_direct_set_conf(const char *conf)
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;
}
{
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;
}
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;
}
{
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;
}
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;
{
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;
}
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;
{
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;
}
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;
}
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;
}
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;
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;
}
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;
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;
}
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;
}
#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)
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;
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;
}
{
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;
}
_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;
}
{
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;
}
_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;
{
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;
}
_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;
{
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;
}
_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;
}
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;
}
_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;
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;
}
_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;
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;
}
_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;
}
static int load_modules(const char *moddir)
{
DIR *dir;
- struct dirent *de;
+ struct dirent de;
+ struct dirent *result;
char *ext;
struct module *mod;
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);