#include #include #include UserID * MatrixParseID(char *user) { UserID *ret = NULL; char *localstart, *serverstart; if (!user || *user != '@') { return NULL; } localstart = user + 1; serverstart = strchr(user, ':'); if (!*localstart || !serverstart || localstart == serverstart) { return NULL; } if (!*++serverstart) { return NULL; } ret = Malloc(sizeof(*ret)); memset(ret, '\0', sizeof(*ret)); memcpy(ret->localpart, localstart, serverstart - localstart - 1); memcpy(ret->server, serverstart, strlen(serverstart)); return ret; }