diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-12-29 00:47:26 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2010-12-29 00:47:26 +0200 |
commit | 426df179766b4b144cf746dfc56f4b4a9f80b3ac (patch) | |
tree | a249d2c6711b163b425e9eca503be4eec4be3421 /libmailutils/url | |
parent | 43508b4588ff631efbb22ee3cb84a802358b5e44 (diff) | |
download | mailutils-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.c | 19 |
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] == '/') { |