浏览代码

initial support for presence.winfo event package

Jamey Hicks 22 年之前
父节点
当前提交
029b10fd15
共有 2 个文件被更改,包括 15 次插入5 次删除
  1. 12 3
      parser/parse_event.c
  2. 3 2
      parser/parse_event.h

+ 12 - 3
parser/parse_event.c

@@ -48,8 +48,11 @@
 #define PRES_STR "presence"
 #define PRES_STR_LEN 8
 
+#define PRES_WINFO_STR "presence.winfo"
+#define PRES_WINFO_STR_LEN 14
 
-static inline char* skip_token_nodot(char* _b, int _l)
+
+static inline char* skip_token(char* _b, int _l)
 {
 	int i = 0;
 
@@ -60,7 +63,6 @@ static inline char* skip_token_nodot(char* _b, int _l)
 		case '\n':
 		case '\t':
 		case ';':
-		case '.':
 			return _b + i;
 		}
 	}
@@ -73,6 +75,7 @@ static inline int event_parser(char* _s, int _l, event_t* _e)
 {
 	str tmp;
 	char* end;
+	char buf[128];
 
 	tmp.s = _s;
 	tmp.len = _l;
@@ -86,13 +89,19 @@ static inline int event_parser(char* _s, int _l, event_t* _e)
 
 	_e->text.s = tmp.s;
 
-	end = skip_token_nodot(tmp.s, tmp.len);
+	end = skip_token(tmp.s, tmp.len);
 
 	_e->text.len = end - tmp.s;
 
+	strncpy(buf, tmp.s, tmp.len);
+	buf[tmp.len] = 0;
+
 	if ((_e->text.len == PRES_STR_LEN) && 
 	    !strncasecmp(PRES_STR, tmp.s, _e->text.len)) {
 		_e->parsed = EVENT_PRESENCE;
+	} else if ((_e->text.len == PRES_WINFO_STR_LEN) && 
+		   !strncasecmp(PRES_WINFO_STR, tmp.s, _e->text.len)) {
+		_e->parsed = EVENT_PRESENCE_WINFO;
 	} else {
 		_e->parsed = EVENT_OTHER;
 	}

+ 3 - 2
parser/parse_event.h

@@ -38,8 +38,9 @@
 #include "../str.h"
 #include "hf.h"
 
-#define EVENT_OTHER    0
-#define EVENT_PRESENCE 1
+#define EVENT_OTHER          0
+#define EVENT_PRESENCE       1
+#define EVENT_PRESENCE_WINFO 2
 
 
 typedef struct event {