X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=url.c;h=f29fd7e50ee41824a147cdadd833cfa82616c047;hp=6e6dc7796be95df263d3fec65bf8f2f29605ff0d;hb=e10e4062ade3f8a2fefddf38f66b5d6c05dd7720;hpb=6833ce8bdca2d64e14485118f2a4417b7e1cb1b1 diff --git a/url.c b/url.c index 6e6dc77..f29fd7e 100644 --- a/url.c +++ b/url.c @@ -20,6 +20,10 @@ * A simple URL parser. */ +#if HAVE_CONFIG_H +# include "config.h" +#endif + #include "mutt.h" #include "mapping.h" #include "url.h" @@ -169,8 +173,11 @@ int url_parse_ciss (ciss_url_t *ciss, char *src) } /* url_ciss_tostring: output the URL string for a given CISS object. */ + int url_ciss_tostring (ciss_url_t* ciss, char* dest, size_t len, int flags) { + long l; + if (ciss->scheme == U_UNKNOWN) return -1; @@ -178,25 +185,26 @@ int url_ciss_tostring (ciss_url_t* ciss, char* dest, size_t len, int flags) if (ciss->host) { - strncat (dest, "//", len - strlen (dest)); + safe_strcat (dest, len, "//"); + len -= (l = strlen (dest)); dest += l; + if (ciss->user) { if (flags & U_DECODE_PASSWD && ciss->pass) - snprintf (dest + strlen (dest), len - strlen (dest), "%s:%s@", - ciss->user, ciss->pass); + snprintf (dest, len, "%s:%s@", ciss->user, ciss->pass); else - snprintf (dest + strlen (dest), len - strlen (dest), "%s@", - ciss->user); + snprintf (dest, len, "%s@", ciss->user); + + len -= (l = strlen (dest)); dest += l; } if (ciss->port) - snprintf (dest + strlen (dest), len - strlen (dest), "%s:%hu/", - ciss->host, ciss->port); + snprintf (dest, len, "%s:%hu/", ciss->host, ciss->port); else - snprintf (dest + strlen (dest), len - strlen (dest), "%s/", ciss->host); + snprintf (dest, len, "%s/", ciss->host); } if (ciss->path) - strncat (dest, ciss->path, len - strlen (dest)); + safe_strcat (dest, len, ciss->path); return 0; } @@ -238,7 +246,10 @@ int url_parse_mailto (ENVELOPE *e, char **body, const char *src) url_pct_decode (value); if (!ascii_strcasecmp (tag, "body")) - mutt_str_replace (body, value); + { + if (body) + mutt_str_replace (body, value); + } else { taglen = strlen (tag);