projects
/
apps
/
madmutt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Nico Golde:
[apps/madmutt.git]
/
url.c
diff --git
a/url.c
b/url.c
index
6e6dc77
..
f29fd7e
100644
(file)
--- a/
url.c
+++ b/
url.c
@@
-20,6
+20,10
@@
* A simple URL parser.
*/
* A simple URL parser.
*/
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "mutt.h"
#include "mapping.h"
#include "url.h"
#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. */
}
/* 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)
{
int url_ciss_tostring (ciss_url_t* ciss, char* dest, size_t len, int flags)
{
+ long l;
+
if (ciss->scheme == U_UNKNOWN)
return -1;
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)
{
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)
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
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)
}
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
else
- snprintf (dest
+ strlen (dest), len - strlen (dest)
, "%s/", ciss->host);
+ snprintf (dest
, len
, "%s/", ciss->host);
}
if (ciss->path)
}
if (ciss->path)
- s
trncat (dest, ciss->path, len - strlen (dest)
);
+ s
afe_strcat (dest, len, ciss->path
);
return 0;
}
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"))
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);
else
{
taglen = strlen (tag);