aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/src/main.c b/src/main.c
index 4e6f8aed4..e5e6d540a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2657,19 +2657,28 @@ operate(struct Configurable *config, int argc, char *argv[])
else
filep = config->infile;
- urlbuffer=(char *)malloc(strlen(url) + strlen(filep) + 3);
- if(!urlbuffer) {
- helpf("out of memory\n");
- return CURLE_OUT_OF_MEMORY;
+ /* URL encode the file name */
+ filep = curl_escape(filep, 0 /* use strlen */);
+
+ if(filep) {
+
+ urlbuffer=(char *)malloc(strlen(url) + strlen(filep) + 3);
+ if(!urlbuffer) {
+ helpf("out of memory\n");
+ return CURLE_OUT_OF_MEMORY;
+ }
+ if(ptr)
+ /* there is a trailing slash on the URL */
+ sprintf(urlbuffer, "%s%s", url, filep);
+ else
+ /* thers is no trailing slash on the URL */
+ sprintf(urlbuffer, "%s/%s", url, filep);
+
+ curl_free(filep);
+
+ free(url);
+ url = urlbuffer; /* use our new URL instead! */
}
- if(ptr)
- /* there is a trailing slash on the URL */
- sprintf(urlbuffer, "%s%s", url, filep);
- else
- /* thers is no trailing slash on the URL */
- sprintf(urlbuffer, "%s/%s", url, filep);
-
- url = urlbuffer; /* use our new URL instead! */
}
/*VMS??-- Reading binary from files can be a problem... */
/*VMS?? Only FIXED, VAR etc WITHOUT implied CC will work */