diff options
author | portix <none@none> | 2012-07-17 20:34:11 +0200 |
---|---|---|
committer | portix <none@none> | 2012-07-17 20:34:11 +0200 |
commit | bec6b431b3d5266b73d6fb76956a81e813733049 (patch) | |
tree | 03b51b855aec16dc546d9387dcc7d939fed87cd3 | |
parent | 71c8610b5ac009f2b9781be7d707380740ba6412 (diff) | |
download | dwb-bec6b431b3d5266b73d6fb76956a81e813733049.zip |
Replace slash with underscore in download-filenames, fixes #201
-rw-r--r-- | api/jsapi.txt | 2 | ||||
-rw-r--r-- | src/download.c | 3 | ||||
-rw-r--r-- | src/util.c | 9 | ||||
-rw-r--r-- | src/util.h | 1 |
4 files changed, 14 insertions, 1 deletions
diff --git a/api/jsapi.txt b/api/jsapi.txt index 31e5272e..4aeb6132 100644 --- a/api/jsapi.txt +++ b/api/jsapi.txt @@ -675,7 +675,7 @@ The +util+ object implements helper functions. **** [float] -==== *getBody(Function)* ==== +==== *getBody()* ==== [source,javascript] ---- diff --git a/src/download.c b/src/download.c index 81827283..9f748489 100644 --- a/src/download.c +++ b/src/download.c @@ -390,6 +390,9 @@ download_start(const char *path) { WebKitNetworkRequest *request = webkit_download_get_network_request(dwb.state.download); dwb.state.download = webkit_download_new(request); + char escape_buffer[255]; + filename = util_normalize_filename(escape_buffer, filename, 255); + if (EMIT_SCRIPT(DOWNLOAD_START)) { if (dwb.state.dl_action == DL_ACTION_EXECUTE) { json = util_create_json(4, @@ -331,6 +331,15 @@ util_expand_home(char *buffer, const char *filename, size_t length) { strncpy(buffer, filename, length); return buffer; } +char * +util_normalize_filename(char *buffer, const char *filename, size_t length) { + char *tmp = buffer; + for (int i=0; *filename != 0 && i<length-1; i++, filename++, buffer++) { + *buffer = *filename == '/' ? '_' : *filename; + } + *buffer = 0; + return tmp; +} /* util_set_file_content(const char *filename, const char *content) {{{*/ gboolean util_set_file_content(const char *filename, const char *content) { @@ -49,6 +49,7 @@ int util_web_settings_sort_first(WebSettings *, WebSettings *); // files char * util_expand_home(char *buffer, const char *filename, size_t length); +char * util_normalize_filename(char *buffer, const char *filename, size_t length); void util_get_directory_content(GString *, const char *, const char *extension); char * util_get_file_content(const char *); char ** util_get_lines(const char *); |