static const char *output_file;
static int output_fd = -1;
static int error_ret;
+static int out_bytes;
static int open_output_file(const char *path, bool create)
{
int ret;
if (create)
- flags |= O_CREAT;
+ flags |= O_CREAT | O_EXCL;
if (output_file) {
if (!strcmp(output_file, "-"))
return STDOUT_FILENO;
+ if (!quiet)
+ fprintf(stderr, "Writing to stdout\n");
+
+ unlink(output_file);
return open(output_file, flags, 0644);
}
- /* Don't automatically overwrite files if the name is derived from the URL */
- if (create)
- flags |= O_EXCL;
-
filename = uclient_get_url_filename(path, "index.html");
+ if (!quiet)
+ fprintf(stderr, "Writing to '%s'\n", filename);
ret = open(filename, flags, 0644);
free(filename);
if (!len)
return;
+ out_bytes += len;
write(output_fd, buf, len);
}
}
static void init_request(struct uclient *cl)
{
+ out_bytes = 0;
uclient_connect(cl);
msg_connecting(cl);
uclient_http_set_request_type(cl, "GET");
static void eof_cb(struct uclient *cl)
{
+ if (!cl->data_eof) {
+ if (!quiet)
+ fprintf(stderr, "Connection reset prematurely\n");
+ error_ret = 4;
+ } else if (!quiet) {
+ fprintf(stderr, "Download completed (%d bytes)\n", out_bytes);
+ }
request_done(cl);
}