Exemple #1
0
void cmd_mkdir (flux_t h, int argc, char **argv)
{
    int i;

    if (argc == 0)
        msg_exit ("mkdir: specify one or more directories");
    for (i = 0; i < argc; i++) {
        if (kvs_mkdir (h, argv[i]) < 0)
            err_exit ("%s", argv[i]);
    }
    if (kvs_commit (h) < 0)
        err_exit ("kvs_commit");
}
Exemple #2
0
kz_t *kz_open (flux_t *h, const char *name, int flags)
{
    kz_t *kz = xzmalloc (sizeof (*kz));

    kz->flags = flags;
    kz->name = xstrdup (name);
    if ((kz->stream = strchr (kz->name, '.')))
        kz->stream++;
    else
        kz->stream = kz->name;
    kz->h = h;

    if ((flags & KZ_FLAGS_WRITE)) {
        if (key_exists (h, name)) {
            if (!(flags & KZ_FLAGS_TRUNC)) {
                errno = EEXIST;
                goto error;
            } else if (kvs_unlink (h, name) < 0)
                goto error;
        }
        if (kvs_mkdir (h, name) < 0) /* N.B. does not catch EEXIST */
            goto error;
        if (!(flags & KZ_FLAGS_NOCOMMIT_OPEN)) {
            if (kvs_commit (h) < 0)
                goto error;
        }
    } else if ((flags & KZ_FLAGS_READ)) {
        if (!(flags & KZ_FLAGS_NOEXIST)) {
            if (kvs_get_dir (h, &kz->dir, "%s", name) < 0)
                goto error;
        }
    }
    return kz;
error:
    kz_destroy (kz);
    return NULL;
}