- char *p, *q;
- char *t, *d;
-
- p = strchr (eventType, ':');
- if (p) p = strchr (p + 1, ':');
- if (!p) p = eventType + strlen (eventType);
- t = g_malloc (p - eventType + 1);
- if (t)
- {
- memcpy (t, eventType, p - eventType);
- t[p - eventType] = '\0';
- if (!strchr (t, ':'))
- {
- char *q = g_strconcat (t, ":", NULL);
- if (1)
- {
- g_free (t);
- t = q;
- }
- }
- }
- else return FALSE;
- if (*p == ':')
+ char *tmp = g_strdup (eventType);
+ char *category = NULL, *name = NULL, *detail = NULL;
+ char *saveptr = NULL;
+ char *p;
+
+ if (tmp == NULL) return FALSE;
+ while ((p = strchr (tmp, '-'))) *p = '_';
+ category = strtok_r (tmp, ":", &saveptr);
+ if (category) category = g_strdup (category);
+ if (!category) goto oom;
+ name = strtok_r (NULL, ":", &saveptr);
+ if (name)