|
@@ -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;
|
|
|
}
|