if (blerg->data != NULL)
munmap(blerg->data, blerg->data_size);
fstat(blerg->data_fd, &st);
- if (st.st_size == 0) {
+ blerg->data_size = st.st_size;
+ if (blerg->data_size == 0) {
/* Can't map an empty data file. */
return 1;
}
- 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);
if (blerg->data == MAP_FAILED) {
perror("Could not remap data");
return 0;
}
- blerg->data_size = st.st_size;
return 1;
}
flock(blerg->data_fd, LOCK_UN);
flock(blerg->index_fd, LOCK_UN);
- /* Now do those dirty microblogging deeds */
- tag_scan(blerg->name, data, len, record);
- subscription_notify(blerg->name, record);
+ if (!blerg_get_mute(blerg)) {
+ /* Now do those dirty microblogging deeds */
+ tag_scan(blerg->name, data, len, record);
+ subscription_notify(blerg->name, record);
+ }
return record;
}
CHECK_VALID_BLERG(0)
return blerg->meta->subscription_mark;
}
+
+int blerg_set_mute(struct blerg *blerg, int v) {
+ CHECK_VALID_BLERG(0)
+ if (v) {
+ blerg->meta->status |= BLERGMETA_MUTED;
+ } else {
+ blerg->meta->status &= ~BLERGMETA_MUTED;
+ }
+ return 1;
+}
+
+int blerg_get_mute(struct blerg *blerg) {
+ CHECK_VALID_BLERG(0)
+ return (blerg->meta->status & BLERGMETA_MUTED) > 0;
+}