summaryrefslogtreecommitdiff
path: root/libmailutils/url
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2010-12-29 00:47:26 +0200
committerSergey Poznyakoff <gray@gnu.org.ua>2010-12-29 00:47:26 +0200
commit426df179766b4b144cf746dfc56f4b4a9f80b3ac (patch)
treea249d2c6711b163b425e9eca503be4eec4be3421 /libmailutils/url
parent43508b4588ff631efbb22ee3cb84a802358b5e44 (diff)
downloadmailutils-426df179766b4b144cf746dfc56f4b4a9f80b3ac.tar.gz
mailutils-426df179766b4b144cf746dfc56f4b4a9f80b3ac.tar.bz2
Bugfixes.
* libmailutils/url/create.c (_mu_url_create_internal): Fix parsing of the '|' shortcuts. * libmailutils/tests/url.at: Fix '|' test. Add 'prog://' test. * movemail/movemail.c (set_program_id): Call mu_stdstream_strerr_setup to flush changes. * frm/common.c: Minor changes
Diffstat (limited to 'libmailutils/url')
-rw-r--r--libmailutils/url/create.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/libmailutils/url/create.c b/libmailutils/url/create.c
index 0d0cb304d..bddc7cc78 100644
--- a/libmailutils/url/create.c
+++ b/libmailutils/url/create.c
@@ -378,6 +378,7 @@ _mu_url_create_internal (struct mu_url_ctx *ctx, mu_url_t hint)
if ((ctx->flags & MU_URL_PARSE_PIPE) && ctx->input[0] == '|')
{
struct mu_wordsplit ws;
+ size_t i;
rc = str_assign (&url->scheme, "prog");
if (rc)
@@ -386,15 +387,21 @@ _mu_url_create_internal (struct mu_url_ctx *ctx, mu_url_t hint)
ctx->flags &= ~MU_URL_PARSE_HEXCODE;
if (mu_wordsplit (ctx->input + 1, &ws, MU_WRDSF_DEFFLAGS))
return errno;
- url->qargc = ws.ws_wordc;
- url->qargv = ws.ws_wordv;
+ url->path = ws.ws_wordv[0];
+ url->flags |= MU_URL_PATH;
+
+ url->qargc = ws.ws_wordc - 1;
+ url->qargv = calloc (url->qargc + 1, sizeof (url->qargv[0]));
+ if (!url->qargv)
+ {
+ mu_wordsplit_free (&ws);
+ return ENOMEM;
+ }
+ for (i = 0; i < url->qargc; i++)
+ url->qargv[i] = ws.ws_wordv[i+1];
ws.ws_wordc = 0;
- ws.ws_wordv = NULL;
mu_wordsplit_free (&ws);
url->flags |= MU_URL_QUERY;
- rc = str_assign (&url->path, url->qargv[0]);
- if (rc == 0)
- url->flags |= MU_URL_PATH;
}
else if ((ctx->flags & MU_URL_PARSE_SLASH) && ctx->input[0] == '/')
{

Return to:

Send suggestions and report system problems to the System administrator.