mirror of
git://git.psyc.eu/libpsyc
synced 2024-08-15 03:19:02 +00:00
added entity & slash to uniform struct
This commit is contained in:
parent
0cd53743e2
commit
ed5feee0e3
3 changed files with 17 additions and 2 deletions
|
@ -32,8 +32,10 @@ typedef struct {
|
||||||
PsycString body; // the URL without scheme and '//'
|
PsycString body; // the URL without scheme and '//'
|
||||||
PsycString user_host; // mailto and xmpp style
|
PsycString user_host; // mailto and xmpp style
|
||||||
PsycString host_port; // just host:port (and transport)
|
PsycString host_port; // just host:port (and transport)
|
||||||
PsycString root; // root UNI of peer/server
|
PsycString root; // root UNI
|
||||||
|
PsycString entity; // entity UNI, without the channel
|
||||||
PsycString slashes; // the // if the protocol has them
|
PsycString slashes; // the // if the protocol has them
|
||||||
|
PsycString slash; // first / after host
|
||||||
PsycString nick; // whatever works as a nickname
|
PsycString nick; // whatever works as a nickname
|
||||||
} PsycUniform;
|
} PsycUniform;
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,9 @@ int psyc_uniform_parse (PsycUniform *uni, char *str, size_t length)
|
||||||
part = PSYC_UNIFORM_PORT;
|
part = PSYC_UNIFORM_PORT;
|
||||||
p = &uni->port;
|
p = &uni->port;
|
||||||
} else if (c == '/') {
|
} else if (c == '/') {
|
||||||
|
uni->slash.data = str + pos;
|
||||||
|
uni->slash.length = 1;
|
||||||
|
|
||||||
part = PSYC_UNIFORM_RESOURCE;
|
part = PSYC_UNIFORM_RESOURCE;
|
||||||
p = &uni->resource;
|
p = &uni->resource;
|
||||||
}
|
}
|
||||||
|
@ -83,6 +86,9 @@ int psyc_uniform_parse (PsycUniform *uni, char *str, size_t length)
|
||||||
return PSYC_PARSE_UNIFORM_INVALID_PORT;
|
return PSYC_PARSE_UNIFORM_INVALID_PORT;
|
||||||
|
|
||||||
if (c == '/') {
|
if (c == '/') {
|
||||||
|
uni->slash.data = str + pos;
|
||||||
|
uni->slash.length = 1;
|
||||||
|
|
||||||
part = PSYC_UNIFORM_RESOURCE;
|
part = PSYC_UNIFORM_RESOURCE;
|
||||||
uni->resource.data = str + pos + 1;
|
uni->resource.data = str + pos + 1;
|
||||||
uni->resource.length = 0;
|
uni->resource.length = 0;
|
||||||
|
@ -108,6 +114,9 @@ int psyc_uniform_parse (PsycUniform *uni, char *str, size_t length)
|
||||||
uni->transport.length++;
|
uni->transport.length++;
|
||||||
break;
|
break;
|
||||||
case '/':
|
case '/':
|
||||||
|
uni->slash.data = str + pos;
|
||||||
|
uni->slash.length = 1;
|
||||||
|
|
||||||
part = PSYC_UNIFORM_RESOURCE;
|
part = PSYC_UNIFORM_RESOURCE;
|
||||||
uni->resource.data = str + pos + 1;
|
uni->resource.data = str + pos + 1;
|
||||||
uni->resource.length = 0;
|
uni->resource.length = 0;
|
||||||
|
@ -149,6 +158,9 @@ int psyc_uniform_parse (PsycUniform *uni, char *str, size_t length)
|
||||||
uni->root.length = uni->scheme.length + 1 + uni->slashes.length +
|
uni->root.length = uni->scheme.length + 1 + uni->slashes.length +
|
||||||
uni->host_port.length;
|
uni->host_port.length;
|
||||||
|
|
||||||
|
uni->entity.data = str;
|
||||||
|
uni->entity.length = uni->root.length + uni->slash.length + uni->resource.length;
|
||||||
|
|
||||||
uni->body.data = uni->host.data;
|
uni->body.data = uni->host.data;
|
||||||
uni->body.length = length - uni->scheme.length - 1 - uni->slashes.length;
|
uni->body.length = length - uni->scheme.length - 1 - uni->slashes.length;
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ testUniform (char *str, int ret) {
|
||||||
printf("%s\n", str);
|
printf("%s\n", str);
|
||||||
int r = psyc_uniform_parse(uni, str, strlen(str));
|
int r = psyc_uniform_parse(uni, str, strlen(str));
|
||||||
|
|
||||||
PP(("[%.*s] : [%.*s] [%.*s] : [%.*s] [%.*s] / [%.*s] # [%.*s]\n[%.*s] [%.*s]\n[%.*s]\n\n",
|
PP(("[%.*s] : [%.*s] [%.*s] : [%.*s] [%.*s] / [%.*s] # [%.*s]\n[%.*s]\n[%.*s] [%.*s]\n[%.*s]\n\n",
|
||||||
(int)PSYC_S2ARG2(uni->scheme),
|
(int)PSYC_S2ARG2(uni->scheme),
|
||||||
(int)PSYC_S2ARG2(uni->slashes),
|
(int)PSYC_S2ARG2(uni->slashes),
|
||||||
(int)PSYC_S2ARG2(uni->host),
|
(int)PSYC_S2ARG2(uni->host),
|
||||||
|
@ -18,6 +18,7 @@ testUniform (char *str, int ret) {
|
||||||
(int)PSYC_S2ARG2(uni->transport),
|
(int)PSYC_S2ARG2(uni->transport),
|
||||||
(int)PSYC_S2ARG2(uni->resource),
|
(int)PSYC_S2ARG2(uni->resource),
|
||||||
(int)PSYC_S2ARG2(uni->channel),
|
(int)PSYC_S2ARG2(uni->channel),
|
||||||
|
(int)PSYC_S2ARG2(uni->entity),
|
||||||
(int)PSYC_S2ARG2(uni->root),
|
(int)PSYC_S2ARG2(uni->root),
|
||||||
(int)PSYC_S2ARG2(uni->nick),
|
(int)PSYC_S2ARG2(uni->nick),
|
||||||
(int)PSYC_S2ARG2(uni->body)));
|
(int)PSYC_S2ARG2(uni->body)));
|
||||||
|
|
Loading…
Reference in a new issue