Beispiel #1
0
int bb_readdir(const char *path, void *buf, fuse_fill_dir_t filler, off_t offset,
	       struct fuse_file_info *fi)
{
    int retstat = 0;
    char *files[100];

    files[0] = ".";
    files[1] = "..";

    log_msg("\nbb_readdir(path=\"%s\", buf=0x%08x, filler=0x%08x, offset=%lld, fi=0x%08x)\n",
	    path, buf, filler, offset, fi);

    int i, count = myreaddir(path, &files[2]) + 2;

    log_msg("count: %d, files[2]: %s\n", count, files[1]);

    for (i = 0; i < count; i++) {
        log_msg("calling filler with name %s\n", files[i]);
        if (filler(buf, files[i], NULL, 0) != 0) {
            log_msg("    ERROR bb_readdir filler:  buffer full");
            return -ENOMEM;
        }
    }

    log_fi(fi);

    return retstat;
}
void run_test(int nargs, char* args[]) {
    if (nargs < 1) {
        return;
    }

    char* dbname = args[1];

    struct MetaDB mdb;

    printf("metadb_init return value %d\n", metadb_init(&mdb, dbname));

    int dir_id = 1;
    int partition_id = 1;

    num_print_entries = 0;
    myreaddir(mdb, dir_id, partition_id);
    printf("After myreaddir %d \n", num_print_entries);

    struct stat statbuf;
    printf("%d\n", metadb_lookup(mdb, dir_id, partition_id,
           "h0.giga.ycsb.marmot.pdl.cmu.local_p5369_f34", &statbuf));

    metadb_close(mdb);
}