Signed-off-by: Joshua Judson Rosen <[email protected]>
---
 mailutils/reformime.c |   13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/mailutils/reformime.c b/mailutils/reformime.c
index 0f5d768..303beb7 100644
--- a/mailutils/reformime.c
+++ b/mailutils/reformime.c
@@ -145,6 +145,8 @@ static int parse(const char *boundary, char **argv)
 
                        /* Compose target filename */
                        char *filename = (char *)find_token(tokens, "filename", 
NULL);
+                       char *name = (char *)find_token(tokens, "name", NULL);
+
                        if (!filename)
                                filename = xasprintf(uniq, monotonic_us());
                        else
@@ -164,6 +166,7 @@ static int parse(const char *boundary, char **argv)
                                        xsetenv("CHARSET", charset);
                                        xsetenv("ENCODING", encoding);
                                        xsetenv("FILENAME", filename);
+                                       xsetenv("NAME", name);
                                        BB_EXECVP_or_die(argv);
                                }
                                /* parent will write to fd[1] */
@@ -172,6 +175,16 @@ static int parse(const char *boundary, char **argv)
                                signal(SIGPIPE, SIG_IGN);
                        } else {
                                /* write to file */
+                               if (name) {
+                                       /* Prefer `name' over `filename', 
because `name' is
+                                          the useful part that we get when 
processing form-data;
+                                          `filename' is what the file was 
originally called
+                                          by the user.
+                                        */
+                                       free(filename);
+                                       filename = 
bb_get_last_path_component_strip(xstrdup(name));
+                               }
+
                                char *fname = xasprintf("%s%s", *argv, 
filename);
                                fp = xfopen_for_write(fname);
                                free(fname);
-- 
1.7.10.4

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to