uint64_t blerg_get_record_count(struct blerg *blerg) {
uint64_t count;
flock(blerg->meta_fd, LOCK_SH);
uint64_t blerg_get_record_count(struct blerg *blerg) {
uint64_t count;
flock(blerg->meta_fd, LOCK_SH);
if (blerg->data != NULL)
munmap(blerg->data, blerg->data_size);
fstat(blerg->data_fd, &st);
if (blerg->data != NULL)
munmap(blerg->data, blerg->data_size);
fstat(blerg->data_fd, &st);
- blerg->data = (char *) mmap(NULL, st.st_size, PROT_READ, MAP_SHARED, blerg->data_fd, 0);
+ blerg->data = (char *) mmap(NULL, blerg->data_size, PROT_READ, MAP_SHARED, blerg->data_fd, 0);
- snprintf(filename, 512, "%s/index%d", blerg->base_path, new_segment);
+ snprintf(filename, FILENAME_MAX, "%s/index%d", blerg->base_path, new_segment);
blerg->index_fd = open(filename, O_RDWR | O_CREAT, 0600);
if (blerg->index_fd == -1) {
perror("Could not open index");
blerg->index_fd = open(filename, O_RDWR | O_CREAT, 0600);
if (blerg->index_fd == -1) {
perror("Could not open index");
- sprintf(filename, "%s/data%d", blerg->base_path, new_segment);
+ snprintf(filename, FILENAME_MAX, "%s/data%d", blerg->base_path, new_segment);
blerg->data_fd = open(filename, O_RDWR | O_APPEND | O_CREAT, 0600);
if (blerg->data_fd == -1) {
perror("Could not open data");
blerg->data_fd = open(filename, O_RDWR | O_APPEND | O_CREAT, 0600);
if (blerg->data_fd == -1) {
perror("Could not open data");
- snprintf(filename, 512, "%s/%s", DATA_PATH, name);
+ snprintf(filename, FILENAME_MAX, "%s/%s", blergconf.data_path, name);
- blerg->base_path = malloc(512);
- snprintf(blerg->base_path, 512, "%s/%s", DATA_PATH, name);
+ blerg->base_path = malloc(FILENAME_MAX);
+ snprintf(blerg->base_path, FILENAME_MAX, "%s/%s", blergconf.data_path, name);
if (access(blerg->base_path, F_OK) == -1)
mkdir(blerg->base_path, 0755);
/* Open and map metadata */
if (access(blerg->base_path, F_OK) == -1)
mkdir(blerg->base_path, 0755);
/* Open and map metadata */
- snprintf(filename, 512, "%s/meta", blerg->base_path);
+ snprintf(filename, FILENAME_MAX, "%s/meta", blerg->base_path);
blerg->meta_fd = open(filename, O_RDWR | O_CREAT, 0600);
if (blerg->meta_fd == -1) {
perror("Could not open metadata");
blerg->meta_fd = open(filename, O_RDWR | O_CREAT, 0600);
if (blerg->meta_fd == -1) {
perror("Could not open metadata");
- if (len > MAX_RECORD_SIZE || len <= 0) {
- fprintf(stderr, "len out of bounds\n");
- return -1;
+ if (length > MAX_RECORD_SIZE || length <= 0) {
+ fprintf(stderr, "length out of bounds\n");
+ return BLERG_INVALID_RECORD;
uint64_t record = blerg_get_record_count(blerg);
if (record == -1) { /* Intentional signed-unsigned coercion */
fprintf(stderr, "Could not find free record\n");
uint64_t record = blerg_get_record_count(blerg);
if (record == -1) { /* Intentional signed-unsigned coercion */
fprintf(stderr, "Could not find free record\n");
perror("Could not write data");
/* Truncate anything we may have written */
ftruncate(blerg->data_fd, curpos);
perror("Could not write data");
/* Truncate anything we may have written */
ftruncate(blerg->data_fd, curpos);
- tag_scan(blerg->name, data, len, record);
+ tag_scan(blerg->name, data, length, record);
-int blerg_fetch(struct blerg *blerg, int record, char **data, int *length) {
+int blerg_fetch(struct blerg *blerg, uint64_t record, char **data, int *length) {