mirror of
https://github.com/moparisthebest/curl
synced 2024-11-15 22:15:13 -05:00
src/tool_cb_wrt: separate fnc for output file creation
This commit is contained in:
parent
a9e46749b2
commit
f251417d85
@ -31,6 +31,43 @@
|
|||||||
|
|
||||||
#include "memdebug.h" /* keep this as LAST include */
|
#include "memdebug.h" /* keep this as LAST include */
|
||||||
|
|
||||||
|
/* create a local file for writing, return TRUE on success */
|
||||||
|
bool tool_create_output_file(struct OutStruct *outs)
|
||||||
|
{
|
||||||
|
struct GlobalConfig *global = outs->config->global;
|
||||||
|
FILE *file;
|
||||||
|
|
||||||
|
if(!outs->filename || !*outs->filename) {
|
||||||
|
warnf(global, "Remote filename has no length!\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(outs->is_cd_filename) {
|
||||||
|
/* don't overwrite existing files */
|
||||||
|
file = fopen(outs->filename, "rb");
|
||||||
|
if(file) {
|
||||||
|
fclose(file);
|
||||||
|
warnf(global, "Refusing to overwrite %s: %s\n", outs->filename,
|
||||||
|
strerror(EEXIST));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* open file for writing */
|
||||||
|
file = fopen(outs->filename, "wb");
|
||||||
|
if(!file) {
|
||||||
|
warnf(global, "Failed to create the file %s: %s\n", outs->filename,
|
||||||
|
strerror(errno));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
outs->s_isreg = TRUE;
|
||||||
|
outs->fopened = TRUE;
|
||||||
|
outs->stream = file;
|
||||||
|
outs->bytes = 0;
|
||||||
|
outs->init = 0;
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** callback for CURLOPT_WRITEFUNCTION
|
** callback for CURLOPT_WRITEFUNCTION
|
||||||
*/
|
*/
|
||||||
@ -97,38 +134,8 @@ size_t tool_write_cb(void *buffer, size_t sz, size_t nmemb, void *userdata)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(!outs->stream) {
|
if(!outs->stream && !tool_create_output_file(outs))
|
||||||
FILE *file;
|
|
||||||
|
|
||||||
if(!outs->filename || !*outs->filename) {
|
|
||||||
warnf(config->global, "Remote filename has no length!\n");
|
|
||||||
return failure;
|
return failure;
|
||||||
}
|
|
||||||
|
|
||||||
if(outs->is_cd_filename) {
|
|
||||||
/* don't overwrite existing files */
|
|
||||||
file = fopen(outs->filename, "rb");
|
|
||||||
if(file) {
|
|
||||||
fclose(file);
|
|
||||||
warnf(config->global, "Refusing to overwrite %s: %s\n", outs->filename,
|
|
||||||
strerror(EEXIST));
|
|
||||||
return failure;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* open file for writing */
|
|
||||||
file = fopen(outs->filename, "wb");
|
|
||||||
if(!file) {
|
|
||||||
warnf(config->global, "Failed to create the file %s: %s\n",
|
|
||||||
outs->filename, strerror(errno));
|
|
||||||
return failure;
|
|
||||||
}
|
|
||||||
outs->s_isreg = TRUE;
|
|
||||||
outs->fopened = TRUE;
|
|
||||||
outs->stream = file;
|
|
||||||
outs->bytes = 0;
|
|
||||||
outs->init = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
rc = fwrite(buffer, sz, nmemb, outs->stream);
|
rc = fwrite(buffer, sz, nmemb, outs->stream);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user