X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=database%2Ftags.c;h=ba7c376031d246a65473e7b9729c5b882a40f472;hb=HEAD;hp=3e3b14fa864f592ba05e38d962ad9ef34d7ca25b;hpb=c38b2e192d8de8ef38389cc8071881464fff99bb;p=blerg.git diff --git a/database/tags.c b/database/tags.c index 3e3b14f..ba7c376 100644 --- a/database/tags.c +++ b/database/tags.c @@ -65,6 +65,7 @@ tag_scan_start: int tag_add(const char *author, const char *tag, uint64_t record) { char filename[FILENAME_MAX]; struct blergref t; + const char *tagval = tag + 1; memset(t.author, 0, 32); strncpy(t.author, author, 32); @@ -72,10 +73,10 @@ int tag_add(const char *author, const char *tag, uint64_t record) { switch(tag[0]) { case '#': - snprintf(filename, FILENAME_MAX, "%s/%s", blergconf.hash_tags_path, tag + 1); + snprintf(filename, FILENAME_MAX, "%s/%s", blergconf.hash_tags_path, tagval); break; case '@': - snprintf(filename, FILENAME_MAX, "%s/%s", blergconf.ref_tags_path, tag + 1); + snprintf(filename, FILENAME_MAX, "%s/%s", blergconf.ref_tags_path, tagval); break; default: fprintf(stderr, "Invalid tag type: %s\n", tag); @@ -96,6 +97,15 @@ int tag_add(const char *author, const char *tag, uint64_t record) { flock(tag_fd, LOCK_UN); close(tag_fd); + /* Set a flag for mentioned users */ + if (tag[0] == '@' && blerg_exists(tagval)) { + struct blerg *b = blerg_open(tagval); + if (b != NULL) { + blerg_set_status(b, BLERGSTATUS_MENTIONED, 1); + blerg_close(b); + } + } + return 1; }