X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=database.c;h=4b16d32898ee8d7a4310e4231029ade1dda5bb8c;hb=08a6fd7b17e7d092899dc92fb81a941b77ab9407;hp=6e9f494da1f7e8a87bfb244be0e82aa41b4327d7;hpb=f10cc7cf39e0aa34583d4d5811615211660edc8c;p=blerg.git diff --git a/database.c b/database.c index 6e9f494..4b16d32 100644 --- a/database.c +++ b/database.c @@ -11,8 +11,6 @@ #include "database.h" #include "config.h" -#define RECORDS_PER_SEGMENT 65536 - uint64_t blerg_get_record_count(struct blerg *blerg) { uint64_t count; flock(blerg->meta_fd, LOCK_SH); @@ -101,13 +99,29 @@ int blerg_segment_switch(struct blerg *blerg, int new_segment) { open_failed_data_mmap: close(blerg->data_fd); open_failed_data_open: - munmap((void *)blerg->index, sizeof(65536 * sizeof(struct record))); + munmap((void *)blerg->index, sizeof(RECORDS_PER_SEGMENT * sizeof(struct record))); open_failed_index_mmap: close(blerg->index_fd); open_failed_index_open: return 0; } +int blerg_exists(const char *name) { + int namelen = strlen(name); + char filename[512]; + + if (namelen > 32) { + perror("Name too long"); + return 0; + } + + snprintf(filename, 512, "%s/%s", DATA_PATH, name); + if (access(filename, F_OK) == -1) + return 0; + else + return 1; +} + struct blerg *blerg_open(const char *name) { int namelen = strlen(name); char filename[512]; @@ -187,7 +201,7 @@ int blerg_close(struct blerg *blerg) { } int blerg_store(struct blerg *blerg, const char *data, int len) { - if (len > 65536) { + if (len > MAX_RECORD_SIZE) { printf("len > 64K\n"); return -1; }