diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/download.c | 3 | ||||
-rw-r--r-- | src/util.c | 9 | ||||
-rw-r--r-- | src/util.h | 1 |
3 files changed, 13 insertions, 0 deletions
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 *); |