diff options
-rw-r--r-- | xmpp.c | 36 |
1 files changed, 35 insertions, 1 deletions
@@ -2,16 +2,50 @@ #include <stdlib.h> #include <stdio.h> +#include <string.h> +#include <sys/types.h> +#include <sys/socket.h> +/* + * Get the domainpart of the Jabber ID (JID). + * See https://datatracker.ietf.org/doc/html/rfc7622#section-3.2 for details. + */ +char *domainpart(char *jid) +{ + int start = 0; // inclusive + int stop = strlen(jid); // exclusive + + for(int i=0; i<strlen(jid); i++) { + if (jid[i] == '/') { + stop = i; + break; + } + } + + for(int i=0; i<strlen(jid); i++) { + if (jid[i] == '@') { + start = i + 1; + break; + } + } + + char* retval = (char *)malloc((stop-start+1) * sizeof(char)); + memcpy(retval, jid+start, (stop-start)*sizeof(char)); + retval[stop] = '\0'; + + return retval; +} + void net_init(void) { printf("net_init()\n"); char* user_str = getenv("LIMOX_USER"); char* pwd_str = getenv("LIMOX_PWD"); - + char *domain = domainpart(user_str); printf("Trying to connect as '%s' with '%s'.\n", user_str, pwd_str); + printf("Domainpart is '%s'.\n", domain); } void net_quit(void) |