Beispiel #1
0
void dirgetas (flux_t *h, const char *dir, const char *key, const char *type)
{
    kvsdir_t *d;

    if (kvs_get_dir (h, &d, "%s", dir) < 0)
        log_err_exit ("kvs_get_dir %s", dir);

    if (type == NULL) {
        char *value;
        if (kvsdir_get (d, key, &value) < 0)
            log_err_exit ("kvsdir_get %s", key);
        printf ("%s\n", value);
        free (value);
    }
    else if (!strcmp (type, "int")) {
        int value;
        if (kvsdir_get_int (d, key, &value) < 0)
            log_err_exit ("kvsdir_get_int %s", key);
        printf ("%d\n", value);
    }
    else if (!strcmp (type, "int64")) {
        int64_t value;
        if (kvsdir_get_int64 (d, key, &value) < 0)
            log_err_exit ("kvsdir_get_int64 %s", key);
        printf ("%" PRIi64 "\n", value);
    }
    else if (!strcmp (type, "boolean")) {
        bool value;
        if (kvsdir_get_boolean (d, key, &value) < 0)
            log_err_exit ("kvsdir_get_int64 %s", key);
        printf ("%s\n", value ? "true" : "false");
    }
    else if (!strcmp (type, "double")) {
        double value;
        if (kvsdir_get_double (d, key, &value) < 0)
            log_err_exit ("kvsdir_get_int64 %s", key);
        printf ("%f\n", value);
    }
    else if (!strcmp (type, "string")) {
        char *s;
        if (kvsdir_get_string (d, key, &s) < 0)
            log_err_exit ("kvsdir_get_string %s", key);
        printf ("%s\n", s);
        free (s);
    }
    else {
        log_msg_exit ("unknown type (use int/int64/boolean/double/string)");
    }

    kvsdir_destroy (d);
}
Beispiel #2
0
static int load_one (flux_conf_t cf, kvsdir_t *dir, const char *name)
{
    char *key = kvsdir_key_at (dir, name);
    char *skey = key + strlen (kvs_conf_root) + 1;
    char *val = NULL;
    int rc = -1;

    assert (strlen (kvs_conf_root) < strlen (key));

    if (kvsdir_get_string (dir, name, &val) == 0) { /* ignore if !string */
        if (flux_conf_put (cf, skey, val) < 0)
            goto done;
    }
    rc = 0;
done:
    if (val)
        free (val);
    free (key);
    return rc;
}