#include "util.h"
#include "config.h"
+#define CHECK_VALID_BLERG(r) \
+ if (blerg == NULL) { \
+ fprintf(stderr, "Invalid struct blerg\n"); \
+ return r; \
+ }
+
uint64_t blerg_get_record_count(struct blerg *blerg) {
uint64_t count;
flock(blerg->meta_fd, LOCK_SH);
}
int blerg_close(struct blerg *blerg) {
+ CHECK_VALID_BLERG(0)
blerg_segment_close(blerg);
munmap((void *)blerg->meta, sizeof(struct meta));
close(blerg->meta_fd);
struct stat st;
int n;
- if (len > MAX_RECORD_SIZE) {
- fprintf(stderr, "len > 64K\n");
+ CHECK_VALID_BLERG(-1)
+
+ if (len > MAX_RECORD_SIZE || len <= 0) {
+ fprintf(stderr, "len out of bounds\n");
return -1;
}
}
int blerg_fetch(struct blerg *blerg, int record, char **data, int *length) {
- if (record < 0) {
+ CHECK_VALID_BLERG(0)
+ if (record < 0 || record >= blerg_get_record_count(blerg)) {
fprintf(stderr, "Invalid record\n");
return 0;
}
- if (record >= blerg_get_record_count(blerg)) {
- fprintf(stderr, "Invalid record\n");
+ if (data == NULL || length == NULL) {
+ fprintf(stderr, "data or length is null\n");
return 0;
}
}
time_t blerg_get_timestamp(struct blerg *blerg, int record) {
- if (record < 0) {
- fprintf(stderr, "Invalid record\n");
- return 0;
- }
- if (record >= blerg_get_record_count(blerg)) {
+ CHECK_VALID_BLERG(0)
+ if (record < 0 || record >= blerg_get_record_count(blerg)) {
fprintf(stderr, "Invalid record\n");
return 0;
}
}
int blerg_set_subscription_mark(struct blerg *blerg) {
+ CHECK_VALID_BLERG(0)
blerg->meta->subscription_mark = subscription_count_items(blerg->name);
+ return 1;
}
uint64_t blerg_get_subscription_mark(struct blerg *blerg) {
+ CHECK_VALID_BLERG(0)
return blerg->meta->subscription_mark;
}