move url.[hc] into the lib-lib.
authorPierre Habouzit <madcoder@debian.org>
Sun, 12 Nov 2006 16:21:35 +0000 (17:21 +0100)
committerPierre Habouzit <madcoder@debian.org>
Sun, 12 Nov 2006 16:21:35 +0000 (17:21 +0100)
move parse_mailto into the lib-mime

Signed-off-by: Pierre Habouzit <madcoder@debian.org>
21 files changed:
Makefile.am
account.c
account.h
imap/mx_imap.c
imap/util.c
lib-crypt/pgp.c
lib-lib/Makefile.am
lib-lib/url.c [new file with mode: 0644]
lib-lib/url.h [new file with mode: 0644]
lib-mime/mime.c
lib-mime/mime.h
lib-mime/rfc822parse.c
main.c
muttlib.c
mx.c
nntp/mx_nntp.c
pop/mx_pop.c
pop/pop_lib.c
send.c
url.c [deleted file]
url.h [deleted file]

index 9d2ae40..8edfb70 100644 (file)
@@ -25,7 +25,7 @@ madmutt_SOURCES = $(BUILT_SOURCES) \
        pager.c pattern.c postpone.c query.c \
        recvattach.c recvcmd.c rfc1524.c rfc3676.c \
        score.c send.c sendlib.c sidebar.c sort.c state.c status.c \
-       thread.c url.c utf8.c wcwidth.c account.c
+       thread.c utf8.c wcwidth.c account.c
 
 madmutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ \
               -Limap -limap -Lpop -lpop $(LIBNNTP) \
@@ -61,7 +61,7 @@ CPPFLAGS=@CPPFLAGS@ -I$(includedir)
 
 EXTRA_madmutt_SOURCES = \
        account.c mutt_sasl.c dotlock.c remailer.c \
-       alias.h browser.h mbyte.h remailer.h url.h state.h \
+       alias.h browser.h mbyte.h remailer.h state.h \
        mutt_idna.h mutt_libesmtp.c sidebar.h state.h
 
 EXTRA_DIST = config.rpath  COPYRIGHT GPL OPS OPS.PGP OPS.CRYPT OPS.SMIME TODO \
index c4eb502..dc12bc6 100644 (file)
--- a/account.c
+++ b/account.c
 #include <lib-lib/str.h>
 #include <lib-lib/ascii.h>
 #include <lib-lib/macros.h>
+#include <lib-lib/url.h>
 
 #include <lib-ui/enter.h>
 
 #include "mutt.h"
 #include "account.h"
-#include "url.h"
-
 
 /* mutt_account_match: compare account info (host/port/user/login) */
 int mutt_account_match (const ACCOUNT * a1, const ACCOUNT * a2)
index 9bbd203..a838b67 100644 (file)
--- a/account.h
+++ b/account.h
@@ -12,7 +12,7 @@
 #ifndef _MUTT_ACCOUNT_H_
 #define _MUTT_ACCOUNT_H_ 1
 
-#include "url.h"
+#include <lib-lib/url.h>
 
 /* account types */
 enum {
index f3bb4f3..d622a47 100644 (file)
@@ -12,6 +12,7 @@
 #include <lib-lib/mem.h>
 #include <lib-lib/file.h>
 #include <lib-lib/str.h>
+#include <lib-lib/url.h>
 
 #include "mutt.h"
 #include "imap_private.h"
@@ -20,7 +21,6 @@
 #include "mx_imap.h"
 
 
-#include "url.h"
 
 int imap_is_magic (const char* path, struct stat* st) {
   url_scheme_t s;
index 373cad0..c14c72b 100644 (file)
 
 #include <lib-lib/mem.h>
 #include <lib-lib/ascii.h>
+#include <lib-lib/url.h>
 
 #include "mutt.h"
 #include "mx.h"                 /* for M_IMAP */
-#include "url.h"
 #include "imap_private.h"
 #include <lib-sys/mutt_ssl.h>
 
index e90943d..0a35e6b 100644 (file)
@@ -420,7 +420,6 @@ int pgp_application_pgp_handler (BODY * m, STATE * s)
       }
       else if (pgpout) {
         FGETCONV *fc;
-        int c;
 
         rewind (pgpout);
         state_set_prefix (s);
index 89120e3..035dcba 100644 (file)
@@ -3,10 +3,10 @@ noinst_LIBRARIES = liblib.a
 liblib_a_SOURCES = mem.h str.h ascii.h buffer.h hash.h list.h file.h mapping.h \
                          str.c ascii.c buffer.c hash.c list.c file.c mapping.c \
                   \
-                  date.h debug.h rx.h                                         \
-                  date.c debug.c rx.c
+                  date.h debug.h rx.h url.h                                   \
+                  date.c debug.c rx.c url.c
 
 noinst_HEADERS   = mem.h str.h ascii.h buffer.h hash.h list.h file.h mapping.h \
-                  date.h debug.h rx.h
+                  date.h debug.h rx.h url.h
 
 -include ../cflags.mk
diff --git a/lib-lib/url.c b/lib-lib/url.c
new file mode 100644 (file)
index 0000000..afc444b
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or (at
+ *  your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ *  Copyright © 2006 Pierre Habouzit
+ */
+/*
+ * Copyright notice from original mutt:
+ * Copyright (C) 2000 Thomas Roessler <roessler@does-not-exist.org>
+ *
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License,
+ * please see the file GPL in the top level source directory.
+ */
+
+/*
+ * A simple URL parser.
+ */
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <ctype.h>
+
+#include <lib-lib/mem.h>
+#include <lib-lib/ascii.h>
+#include <lib-lib/mapping.h>
+#include <lib-lib/url.h>
+
+#include <lib-mime/mime.h>
+
+#include "mutt.h"
+
+static struct mapping_t UrlMap[] = {
+    {"file",   U_FILE},
+    {"imap",   U_IMAP},
+    {"imaps",  U_IMAPS},
+    {"pop",    U_POP},
+    {"pops",   U_POPS},
+    {"nntp",   U_NNTP},
+    {"news",   U_NNTP},
+    {"nntps",  U_NNTPS},
+    {"snews",  U_NNTPS},
+    {"mailto", U_MAILTO},
+    {NULL,     U_UNKNOWN}
+};
+
+/* decode url escaping */
+char *url_decode(char *p)
+{
+    char *q = p;
+
+    if (!p)
+        return NULL;
+
+    while (*q) {
+        if (*q == '%' && hexval(q[1]) >= 0 && hexval(q[2]) >= 0) {
+            *p++ = (hexval(q[1]) << 4) | hexval(q[2]);
+            q += 3;
+        } else {
+            *p++ = *q++;
+        }
+    }
+
+    *p = '\0';
+    return p;
+}
+
+url_scheme_t url_check_scheme(const char *s)
+{
+    char sbuf[STRING];
+    char *t;
+    int i;
+
+    if (!s || !(t = strchr(s, ':')))
+        return U_UNKNOWN;
+
+    m_strncpy(sbuf, sizeof(sbuf), s, t - s);
+    i = mutt_getvaluebyname(sbuf, UrlMap);
+    return i == -1 ? U_UNKNOWN : i;
+}
+
+/* ciss_parse_userhost: fill in components of ciss with info from src. Note
+ *   these are pointers into src, which is altered with '\0's. Port of 0
+ *   means no port given.
+ * FIXME: THIS IS TASTELESS
+ */
+static char *ciss_parse_userhost(ciss_url_t *ciss, char *src)
+{
+    char *t;
+    char *p;
+    char *path;
+
+    ciss->user = NULL;
+    ciss->pass = NULL;
+    ciss->host = NULL;
+    ciss->port = 0;
+
+    if (strncmp(src, "//", 2))
+        return src;
+
+    src += 2;
+
+    if ((path = strchr(src, '/')))
+        *path++ = '\0';
+
+    if ((t = strrchr(src, '@'))) {
+        *t = '\0';
+        if ((p = strchr (src, ':'))) {
+            *p = '\0';
+            ciss->pass = p + 1;
+            url_decode (ciss->pass);
+        }
+        ciss->user = src;
+        url_decode (ciss->user);
+        t++;
+    }
+    else
+        t = src;
+
+    if ((p = strchr (t, ':'))) {
+        *p++ = '\0';
+        ciss->port = atoi (p);
+    }
+    else
+        ciss->port = 0;
+
+    ciss->host = t;
+    url_decode(ciss->host);
+    return path;
+}
+
+/* url_parse_ciss: Fill in ciss_url_t. char* elements are pointers into src,
+ *   which is modified by this call (duplicate it first if you need to).
+ * FIXME: THIS IS TASTELESS
+ */
+int url_parse_ciss(ciss_url_t *ciss, char *src)
+{
+    ciss->scheme = url_check_scheme(src);
+    if (ciss->scheme == U_UNKNOWN)
+        return -1;
+
+    ciss->path = ciss_parse_userhost(ciss, strchr(src, ':') + 1);
+    url_decode(ciss->path);
+
+    return 0;
+}
+
+/* url_ciss_tostring: output the URL string for a given CISS object. */
+int url_ciss_tostring(ciss_url_t *ciss, char *dst, ssize_t len, int flags)
+{
+    ssize_t l = 0;
+
+    if (ciss->scheme == U_UNKNOWN)
+        return -1;
+
+    snprintf(dst, len, "%s:", mutt_getnamebyvalue(ciss->scheme, UrlMap));
+
+    if (ciss->host) {
+        l = m_strcat(dst, len, "//");
+
+        if (ciss->user) {
+            if ((flags & U_DECODE_PASSWD) && ciss->pass) {
+                l += snprintf(dst + l, len - l, "%s:%s@", ciss->user, ciss->pass);
+            } else {
+                l += snprintf(dst + l, len - l, "%s@", ciss->user);
+            }
+        }
+
+        if (ciss->port) {
+            l += snprintf(dst + l, len - l, "%s:%hu/", ciss->host, ciss->port);
+        } else {
+            l += snprintf(dst + l, len - l, "%s/", ciss->host);
+        }
+    }
+
+    l += m_strcpy(dst + l, len - l, ciss->path);
+
+    return 0;
+}
diff --git a/lib-lib/url.h b/lib-lib/url.h
new file mode 100644 (file)
index 0000000..3078ebd
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or (at
+ *  your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful, but
+ *  WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License
+ *  along with this program; if not, write to the Free Software
+ *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ *  MA 02110-1301, USA.
+ *
+ *  Copyright © 2006 Pierre Habouzit
+ */
+/*
+ * This file is part of mutt-ng, see http://www.muttng.org/.
+ * It's licensed under the GNU General Public License,
+ * please see the file GPL in the top level source directory.
+ */
+
+#ifndef MUTT_LIB_LIB_URL_H
+#define MUTT_LIB_LIB_URL_H
+
+#include <unistd.h>
+
+typedef enum url_scheme {
+    U_FILE,
+    U_POP,
+    U_POPS,
+    U_IMAP,
+    U_IMAPS,
+    U_NNTP,
+    U_NNTPS,
+    U_MAILTO,
+    U_UNKNOWN
+} url_scheme_t;
+
+#define U_DECODE_PASSWD (1)
+
+typedef struct ciss_url {
+    url_scheme_t scheme;
+    char *user;
+    char *pass;
+    char *host;
+    int   port;
+    char *path;
+} ciss_url_t;
+
+char *url_decode(char *);
+
+url_scheme_t url_check_scheme (const char *s);
+int url_parse_ciss(ciss_url_t *ciss, char *src);
+int url_ciss_tostring(ciss_url_t *ciss, char *dst, ssize_t len, int flags);
+
+#endif /* MUTT_LIB_LIB_URL_H */
index 2311083..fdb2935 100644 (file)
@@ -17,6 +17,9 @@
  *  Copyright © 2006 Pierre Habouzit
  */
 
+#include <lib-lib/ascii.h>
+#include <lib-lib/url.h>
+
 #include "mime-types.h"
 
 #include "mutt.h"
@@ -104,3 +107,63 @@ void header_wipe(HEADER *h)
     p_delete(&h->data);
 }
 
+int url_parse_mailto(ENVELOPE *e, char **body, const char *src)
+{
+    char *t;
+    char *tmp;
+    char *headers;
+    char *tag, *value;
+    char scratch[HUGE_STRING];
+
+    int taglen;
+
+    LIST **last = &e->userhdrs;
+
+    if (!(t = strchr (src, ':')))
+        return -1;
+
+    if ((tmp = m_strdup(t + 1)) == NULL)
+        return -1;
+
+    if ((headers = strchr (tmp, '?')))
+        *headers++ = '\0';
+
+    url_decode(tmp);
+    e->to = rfc822_parse_adrlist (e->to, tmp);
+
+    tag = headers ? strtok (headers, "&") : NULL;
+
+    for (; tag; tag = strtok (NULL, "&")) {
+        if ((value = strchr (tag, '=')))
+            *value++ = '\0';
+        if (!value || !*value)
+            continue;
+
+        url_decode (tag);
+        url_decode (value);
+
+        if (!ascii_strcasecmp (tag, "body")) {
+            if (body)
+                m_strreplace(body, value);
+        }
+        else {
+#define SAFEPFX (option (OPTSTRICTMAILTO) ? "" : "X-Mailto-")
+            taglen = m_strlen(tag) + m_strlen(SAFEPFX);
+            /* mutt_parse_rfc822_line makes some assumptions */
+            snprintf (scratch, sizeof (scratch), "%s%s: %s", SAFEPFX, tag, value);
+#undef SAVEPFX
+            scratch[taglen] = '\0';
+            value = vskipspaces(&scratch[taglen + 1]);
+            last = mutt_parse_rfc822_line (e, NULL, scratch, value, 0, 0, last);
+            /* if $strict_mailto is set, force editing headers to let
+             * users have a look at what we got */
+            if (!option (OPTSTRICTMAILTO)) {
+                set_option (OPTXMAILTO);
+                set_option (OPTEDITHDRS);
+            }
+        }
+    }
+
+    p_delete(&tmp);
+    return 0;
+}
index 4e678e4..d2b6fd5 100644 (file)
@@ -51,6 +51,8 @@ extern const char *BodyEncodings[];
 #define TYPE(X) ((X->type == TYPEOTHER) && (X->xtype != NULL) ? X->xtype : BodyTypes[(X->type)])
 #define ENCODING(X) BodyEncodings[(X)]
 
+int url_parse_mailto(ENVELOPE *e, char **body, const char *src);
+
 /****************************************************************************/
 /* RFC 822                                                                  */
 /*                Standard for ARPA Internet Text Messages                  */
index 732a046..1eee71a 100644 (file)
 #include <lib-lib/buffer.h>
 #include <lib-lib/date.h>
 #include <lib-lib/debug.h>
+#include <lib-lib/url.h>
 
 #include "recvattach.h"
-#include "url.h"
-
 
 #include "mime.h"
 
diff --git a/main.c b/main.c
index 4a735ef..e020974 100644 (file)
--- a/main.c
+++ b/main.c
 #include <lib-lib/macros.h>
 #include <lib-lib/file.h>
 #include <lib-lib/debug.h>
+#include <lib-lib/url.h>
 
 #include <lib-sys/mutt_signal.h>
 
+#include <lib-mime/mime.h>
+
 #include <lib-ui/curses.h>
 
 #include "mutt.h"
@@ -43,7 +46,6 @@
 #include "sort.h"
 #include <lib-crypt/crypt.h>
 #include "keymap.h"
-#include "url.h"
 #include "mutt_idna.h"
 #include "xterm.h"
 
index 1c54b13..28f6af3 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -31,6 +31,7 @@
 #include <lib-lib/buffer.h>
 #include <lib-lib/file.h>
 #include <lib-lib/debug.h>
+#include <lib-lib/url.h>
 
 #include <lib-mime/mime.h>
 
@@ -39,7 +40,6 @@
 
 #include "mutt.h"
 #include "mx.h"
-#include "url.h"
 #include "attach.h"
 
 #include "version.h"
diff --git a/mx.c b/mx.c
index 4aef72f..8e645c1 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -29,6 +29,7 @@
 #include <lib-lib/macros.h>
 #include <lib-lib/file.h>
 #include <lib-lib/debug.h>
+#include <lib-lib/url.h>
 
 #include <lib-sys/unix.h>
 
@@ -43,7 +44,6 @@
 #include "thread.h"
 #include "copy.h"
 #include "keymap.h"
-#include "url.h"
 #include "sidebar.h"
 #include "compress.h"
 
index 675a7aa..e607885 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <lib-lib/mem.h>
 #include <lib-lib/str.h>
+#include <lib-lib/url.h>
 
 #include "mutt.h"
 #include "nntp.h"
@@ -19,7 +20,6 @@
 #include "mx_nntp.h"
 
 
-#include "url.h"
 
 static int nntp_is_magic (const char* path, struct stat* st) {
   url_scheme_t s = url_check_scheme (NONULL (path));
index 95f2fb6..f30dbbd 100644 (file)
@@ -11,6 +11,7 @@
 
 #include <lib-lib/mem.h>
 #include <lib-lib/str.h>
+#include <lib-lib/url.h>
 
 #include "mutt.h"
 #include "pop.h"
@@ -18,9 +19,6 @@
 #include "mx.h"
 #include "mx_pop.h"
 
-
-#include "url.h"
-
 static int pop_is_magic (const char* path, struct stat* st) {
   url_scheme_t s = url_check_scheme (NONULL (path));
   return ((s == U_POP || s == U_POPS) ? M_POP : -1);
index 38454ef..b1cab50 100644 (file)
 #include <lib-lib/ascii.h>
 #include <lib-lib/macros.h>
 #include <lib-lib/debug.h>
+#include <lib-lib/url.h>
 
 #include "mutt.h"
 #include "mx.h"
-#include "url.h"
 #include "pop.h"
 #if defined (USE_SSL) || defined (USE_GNUTLS)
 # include <lib-sys/mutt_ssl.h>
diff --git a/send.c b/send.c
index 2cf6550..eb57837 100644 (file)
--- a/send.c
+++ b/send.c
@@ -29,6 +29,7 @@
 #include <lib-lib/macros.h>
 #include <lib-lib/file.h>
 #include <lib-lib/debug.h>
+#include <lib-lib/url.h>
 
 #include <lib-mime/mime.h>
 
@@ -42,7 +43,6 @@
 #include "mx.h"
 #include <lib-crypt/crypt.h>
 #include "mutt_idna.h"
-#include "url.h"
 #include "attach.h"
 
 #ifdef USE_NNTP
diff --git a/url.c b/url.c
deleted file mode 100644 (file)
index 39bbec8..0000000
--- a/url.c
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- * Copyright notice from original mutt:
- * Copyright (C) 2000 Thomas Roessler <roessler@does-not-exist.org>
- *
- * This file is part of mutt-ng, see http://www.muttng.org/.
- * It's licensed under the GNU General Public License,
- * please see the file GPL in the top level source directory.
- */
-
-/*
- * A simple URL parser.
- */
-
-#if HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#include <lib-lib/mem.h>
-#include <lib-lib/ascii.h>
-#include <lib-lib/mapping.h>
-
-#include <lib-mime/mime.h>
-
-#include "mutt.h"
-#include "url.h"
-
-
-#include <ctype.h>
-
-static struct mapping_t UrlMap[] = {
-  {"file", U_FILE},
-  {"imap", U_IMAP},
-  {"imaps", U_IMAPS},
-  {"pop", U_POP},
-  {"pops", U_POPS},
-  {"nntp", U_NNTP},
-  {"news", U_NNTP},
-  {"nntps", U_NNTPS},
-  {"snews", U_NNTPS},
-  {"mailto", U_MAILTO},
-  {NULL, U_UNKNOWN}
-};
-
-
-static void url_pct_decode (char *s)
-{
-  char *d;
-
-  if (!s)
-    return;
-
-  for (d = s; *s; s++) {
-    if (*s == '%' && hexval (s[1]) >= 0 && hexval (s[2]) >= 0) {
-      *d++ = (hexval (s[1]) << 4) | (hexval (s[2]));
-      s += 2;
-    }
-    else
-      *d++ = *s;
-  }
-  *d = '\0';
-}
-
-url_scheme_t url_check_scheme (const char *s)
-{
-  char sbuf[STRING];
-  char *t;
-  int i;
-
-  if (!s || !(t = strchr (s, ':')))
-    return U_UNKNOWN;
-  if ((t - s) + 1 >= sizeof (sbuf))
-    return U_UNKNOWN;
-
-  m_strcpy(sbuf, t - s + 1, s);
-  for (t = sbuf; *t; t++)
-    *t = ascii_tolower (*t);
-
-  if ((i = mutt_getvaluebyname (sbuf, UrlMap)) == -1)
-    return U_UNKNOWN;
-  else
-    return (url_scheme_t) i;
-}
-
-int url_parse_file (char *d, const char *src, size_t dl)
-{
-  if (ascii_strncasecmp (src, "file:", 5))
-    return -1;
-  else if (!ascii_strncasecmp (src, "file://", 7))      /* we don't support remote files */
-    return -1;
-  else
-    m_strcpy(d, dl, src + 5);
-
-  url_pct_decode (d);
-  return 0;
-}
-
-/* ciss_parse_userhost: fill in components of ciss with info from src. Note
- *   these are pointers into src, which is altered with '\0's. Port of 0
- *   means no port given. */
-static char *ciss_parse_userhost (ciss_url_t * ciss, char *src)
-{
-  char *t;
-  char *p;
-  char *path;
-
-  ciss->user = NULL;
-  ciss->pass = NULL;
-  ciss->host = NULL;
-  ciss->port = 0;
-
-  if (strncmp (src, "//", 2))
-    return src;
-
-  src += 2;
-
-  if ((path = strchr (src, '/')))
-    *path++ = '\0';
-
-  if ((t = strrchr (src, '@'))) {
-    *t = '\0';
-    if ((p = strchr (src, ':'))) {
-      *p = '\0';
-      ciss->pass = p + 1;
-      url_pct_decode (ciss->pass);
-    }
-    ciss->user = src;
-    url_pct_decode (ciss->user);
-    t++;
-  }
-  else
-    t = src;
-
-  if ((p = strchr (t, ':'))) {
-    *p++ = '\0';
-    ciss->port = atoi (p);
-  }
-  else
-    ciss->port = 0;
-
-  ciss->host = t;
-  url_pct_decode (ciss->host);
-  return path;
-}
-
-/* url_parse_ciss: Fill in ciss_url_t. char* elements are pointers into src,
- *   which is modified by this call (duplicate it first if you need to). */
-int url_parse_ciss (ciss_url_t * ciss, char *src)
-{
-  char *tmp;
-
-  if ((ciss->scheme = url_check_scheme (src)) == U_UNKNOWN)
-    return -1;
-
-  tmp = strchr (src, ':') + 1;
-
-  ciss->path = ciss_parse_userhost (ciss, tmp);
-  url_pct_decode (ciss->path);
-
-  return 0;
-}
-
-/* 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;
-
-  snprintf (dest, len, "%s:", mutt_getnamebyvalue (ciss->scheme, UrlMap));
-
-  if (ciss->host) {
-    m_strcat(dest, len, "//");
-    len -= (l = m_strlen(dest));
-    dest += l;
-
-    if (ciss->user) {
-      if (flags & U_DECODE_PASSWD && ciss->pass)
-        snprintf (dest, len, "%s:%s@", ciss->user, ciss->pass);
-      else
-        snprintf (dest, len, "%s@", ciss->user);
-
-      len -= (l = m_strlen(dest));
-      dest += l;
-    }
-
-    if (ciss->port)
-      snprintf (dest, len, "%s:%hu/", ciss->host, ciss->port);
-    else
-      snprintf (dest, len, "%s/", ciss->host);
-  }
-
-  if (ciss->path)
-    m_strcat(dest, len, ciss->path);
-
-  return 0;
-}
-
-int url_parse_mailto (ENVELOPE * e, char **body, const char *src)
-{
-  char *t;
-  char *tmp;
-  char *headers;
-  char *tag, *value;
-  char scratch[HUGE_STRING];
-
-  int taglen;
-
-  LIST **last = &e->userhdrs;
-
-  if (!(t = strchr (src, ':')))
-    return -1;
-
-  if ((tmp = m_strdup(t + 1)) == NULL)
-    return -1;
-
-  if ((headers = strchr (tmp, '?')))
-    *headers++ = '\0';
-
-  url_pct_decode (tmp);
-  e->to = rfc822_parse_adrlist (e->to, tmp);
-
-  tag = headers ? strtok (headers, "&") : NULL;
-
-  for (; tag; tag = strtok (NULL, "&")) {
-    if ((value = strchr (tag, '=')))
-      *value++ = '\0';
-    if (!value || !*value)
-      continue;
-
-    url_pct_decode (tag);
-    url_pct_decode (value);
-
-    if (!ascii_strcasecmp (tag, "body")) {
-      if (body)
-        m_strreplace(body, value);
-    }
-    else {
-#define SAFEPFX (option (OPTSTRICTMAILTO) ? "" : "X-Mailto-")
-      taglen = m_strlen(tag) + m_strlen(SAFEPFX);
-      /* mutt_parse_rfc822_line makes some assumptions */
-      snprintf (scratch, sizeof (scratch), "%s%s: %s", SAFEPFX, tag, value);
-#undef SAVEPFX
-      scratch[taglen] = '\0';
-      value = vskipspaces(&scratch[taglen + 1]);
-      last = mutt_parse_rfc822_line (e, NULL, scratch, value, 0, 0, last);
-      /* if $strict_mailto is set, force editing headers to let
-       * users have a look at what we got */
-      if (!option (OPTSTRICTMAILTO)) {
-        set_option (OPTXMAILTO);
-        set_option (OPTEDITHDRS);
-      }
-    }
-  }
-
-  p_delete(&tmp);
-  return 0;
-}
diff --git a/url.h b/url.h
deleted file mode 100644 (file)
index fda4e64..0000000
--- a/url.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright notice from original mutt:
- * [none]
- *
- * This file is part of mutt-ng, see http://www.muttng.org/.
- * It's licensed under the GNU General Public License,
- * please see the file GPL in the top level source directory.
- */
-
-#ifndef _URL_H
-# define _URL_H
-
-#include <lib-mime/mime.h>
-
-typedef enum url_scheme {
-  U_FILE,
-  U_POP,
-  U_POPS,
-  U_IMAP,
-  U_IMAPS,
-  U_NNTP,
-  U_NNTPS,
-  U_MAILTO,
-  U_UNKNOWN
-} url_scheme_t;
-
-#define U_DECODE_PASSWD (1)
-
-typedef struct ciss_url {
-  url_scheme_t scheme;
-  char *user;
-  char *pass;
-  char *host;
-  unsigned short port;
-  char *path;
-} ciss_url_t;
-
-url_scheme_t url_check_scheme (const char *s);
-int url_parse_file (char *d, const char *src, size_t dl);
-int url_parse_ciss (ciss_url_t * ciss, char *src);
-int url_ciss_tostring (ciss_url_t * ciss, char *dest, size_t len, int flags);
-int url_parse_mailto (ENVELOPE * e, char **body, const char *src);
-
-#endif