aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2009-05-10 15:21:17 -0400
committerJorge Arellano Cid <jcid@dillo.org>2009-05-10 15:21:17 -0400
commit4d42e72f4dd6d7472b67deb32bde17fd1a56f4e2 (patch)
treec792cac20aabaa8e7365c8f66dd8127114f6f49b /src
parent2023266c7206c3fb456fda012ae0a4c81b69a634 (diff)
Replace %20 and ' ' with '_' in the suggested filename for saving
Diffstat (limited to 'src')
-rw-r--r--src/uicmd.cc13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/uicmd.cc b/src/uicmd.cc
index 38c883e0..f299db23 100644
--- a/src/uicmd.cc
+++ b/src/uicmd.cc
@@ -684,14 +684,23 @@ void a_UIcmd_redirection0(void *vbw, const DilloUrl *url)
static char *UIcmd_make_save_filename(const char *pathstr)
{
size_t MaxLen = 64;
- char *FileName, *name;
+ char *FileName, *name, *newname, *o, *n;
const char *dir = a_UIcmd_get_save_dir();
if ((name = strrchr(pathstr, '/'))) {
if (strlen(++name) > MaxLen) {
name = name + strlen(name) - MaxLen;
}
- FileName = dStrconcat(dir ? dir : "", name, NULL);
+ /* Replace %20 and ' ' with '_' in Filename */
+ o = n = newname = dStrdup(name);
+ for (int i = 0; o[i]; i++) {
+ *n++ = (o[i] == ' ') ? '_' :
+ (o[i] == '%' && o[i+1] == '2' && o[i+2] == '0') ?
+ i+=2, '_' : o[i];
+ }
+ *n = 0;
+ FileName = dStrconcat(dir ? dir : "", newname, NULL);
+ dFree(newname);
} else {
FileName = dStrconcat(dir ? dir : "", pathstr, NULL);
}