Mercurial > pidgin
comparison libpurple/util.c @ 29298:fb99a0067812
propagate from branch 'im.pidgin.pidgin' (head 70d69397ed952b26b453423c381c70d6783eb66d)
to branch 'im.pidgin.cpw.attention_ui' (head 1cf0dea282a0d0e4aeac4770e0150d6d0c10830a)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Thu, 13 Aug 2009 17:42:44 +0000 |
parents | da22b6d0151e |
children | 9358464cdf6a |
comparison
equal
deleted
inserted
replaced
29297:338d6a211055 | 29298:fb99a0067812 |
---|---|
3517 **************************************************************************/ | 3517 **************************************************************************/ |
3518 | 3518 |
3519 void purple_got_protocol_handler_uri(const char *uri) | 3519 void purple_got_protocol_handler_uri(const char *uri) |
3520 { | 3520 { |
3521 char proto[11]; | 3521 char proto[11]; |
3522 char delimiter; | |
3522 const char *tmp, *param_string; | 3523 const char *tmp, *param_string; |
3523 char *cmd; | 3524 char *cmd; |
3524 GHashTable *params = NULL; | 3525 GHashTable *params = NULL; |
3525 int len; | 3526 int len; |
3526 if (!(tmp = strchr(uri, ':')) || tmp == uri) { | 3527 if (!(tmp = strchr(uri, ':')) || tmp == uri) { |
3532 | 3533 |
3533 strncpy(proto, uri, len); | 3534 strncpy(proto, uri, len); |
3534 proto[len] = '\0'; | 3535 proto[len] = '\0'; |
3535 | 3536 |
3536 tmp++; | 3537 tmp++; |
3537 purple_debug_info("util", "Processing message '%s' for protocol '%s'.\n", tmp, proto); | 3538 |
3539 if (g_str_equal(proto, "xmpp")) | |
3540 delimiter = ';'; | |
3541 else | |
3542 delimiter = '&'; | |
3543 | |
3544 purple_debug_info("util", "Processing message '%s' for protocol '%s' using delimiter '%c'.\n", tmp, proto, delimiter); | |
3538 | 3545 |
3539 if ((param_string = strchr(tmp, '?'))) { | 3546 if ((param_string = strchr(tmp, '?'))) { |
3540 const char *keyend = NULL, *pairstart; | 3547 const char *keyend = NULL, *pairstart; |
3541 char *key, *value = NULL; | 3548 char *key, *value = NULL; |
3542 | 3549 |
3545 | 3552 |
3546 params = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); | 3553 params = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
3547 pairstart = tmp = param_string; | 3554 pairstart = tmp = param_string; |
3548 | 3555 |
3549 while (*tmp || *pairstart) { | 3556 while (*tmp || *pairstart) { |
3550 if (*tmp == '&' || !(*tmp)) { | 3557 if (*tmp == delimiter || !(*tmp)) { |
3551 /* If there is no explicit value */ | 3558 /* If there is no explicit value */ |
3552 if (keyend == NULL) | 3559 if (keyend == NULL) |
3553 keyend = tmp; | 3560 keyend = tmp; |
3554 | 3561 |
3555 if (keyend && keyend != pairstart) { | 3562 if (keyend && keyend != pairstart) { |