summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/manual.xml.head3
-rw-r--r--headers.c19
2 files changed, 16 insertions, 6 deletions
diff --git a/doc/manual.xml.head b/doc/manual.xml.head
index 0c227c7c..78bc19a4 100644
--- a/doc/manual.xml.head
+++ b/doc/manual.xml.head
@@ -1126,7 +1126,8 @@ You can also attach files to your message by specifying
<literal>Attach:</literal> <emphasis>filename</emphasis> &lsqb; <emphasis>description</emphasis> &rsqb;
where <emphasis>filename</emphasis> is the file to attach and <emphasis>description</emphasis> is an
-optional string to use as the description of the attached file.
+optional string to use as the description of the attached file. Spaces
+in filenames have to be escaped using backslash (<quote>&bsol;</quote>).
</para>
</sect3>
diff --git a/headers.c b/headers.c
index 0aa79154..ea085715 100644
--- a/headers.c
+++ b/headers.c
@@ -148,18 +148,27 @@ void mutt_edit_headers (const char *editor,
BODY *body;
BODY *parts;
char *q;
+ int l = 0;
p = cur->data + 7;
SKIPWS (p);
if (*p)
{
- if ((q = strpbrk (p, " \t")))
+ for (q = p; *q && *q != ' ' && *q != '\t'; q++)
{
- mutt_substrcpy (path, p, q, sizeof (path));
- SKIPWS (q);
+ if (*q == '\\')
+ {
+ if (!*(q+1))
+ break;
+ q++;
+ }
+ if (l < sizeof (path) - 1)
+ path[l++] = *q;
}
- else
- strfcpy (path, p, sizeof (path));
+ *q++ = 0;
+ SKIPWS (q);
+ path[l] = 0;
+
mutt_expand_path (path, sizeof (path));
if ((body = mutt_make_file_attach (path)))
{