summaryrefslogtreecommitdiff
path: root/parsing.c
diff options
context:
space:
mode:
Diffstat (limited to 'parsing.c')
-rw-r--r--parsing.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/parsing.c b/parsing.c
index 58a5303..e554907 100644
--- a/parsing.c
+++ b/parsing.c
@@ -9,6 +9,7 @@
#include "user.h"
#include "word.h"
#include "export_xml.h"
+#include "config.h"
#define NICK_BUFFER_SIZE 0x100
#define TEXT_BUFFER_SIZE 0x400
@@ -19,6 +20,9 @@ pthread_mutex_t user_mutex, word_mutex;
static void process_file(FILE *f, struct channel_t *channel, struct regexset_t *rs) {
char line[LINE_BUFFER_SIZE];
+ struct user_t *last_user = NULL;
+ int in_monolog = 0, monolog_len = 0;;
+
while(fgets(line, LINE_BUFFER_SIZE, f)) {
int rc;
int ovector[30];
@@ -32,6 +36,21 @@ static void process_file(FILE *f, struct channel_t *channel, struct regexset_t *
pcre_copy_named_substring(rs->text, line, ovector, rc, "minute", min_s, TIME_BUFFER_SIZE);
pthread_mutex_lock(&user_mutex);
struct user_t *user = user_get(nick);
+ if(user == last_user) {
+ monolog_len++;
+ if(!in_monolog && monolog_len >= ircstats_config.monolog_min) {
+ in_monolog = 1;
+ user->monologs++;
+ /* Count first lines. */
+ user->monolog_lines += monolog_len;
+ } else if(in_monolog) {
+ user->monolog_lines++;
+ }
+ } else {
+ last_user = user;
+ in_monolog = 0;
+ monolog_len = 1;
+ }
pthread_mutex_unlock(&user_mutex);
/* Calculate array index for lines. */