static bool proxy = true;
static bool default_certs = false;
static bool no_output;
-static const char *output_file;
+static const char *opt_output_file;
static int output_fd = -1;
static int error_ret;
static off_t out_offset;
static int open_output_file(const char *path, uint64_t resume_offset)
{
+ const char *output_file = opt_output_file;
char *filename = NULL;
int flags;
int ret;
static void read_data_cb(struct uclient *cl)
{
char buf[256];
+ ssize_t n;
int len;
if (!no_output && output_fd < 0)
while (1) {
len = uclient_read(cl, buf, sizeof(buf));
- if (!len)
+ if (len <= 0)
return;
out_bytes += len;
- if (!no_output)
- write(output_fd, buf, len);
+ if (!no_output) {
+ n = write(output_fd, buf, len);
+ if (n < 0)
+ return;
+ }
}
}
return;
}
- if (output_fd >= 0 && !output_file) {
+ if (output_fd >= 0 && !opt_output_file) {
close(output_fd);
output_fd = -1;
}
static int no_ssl(const char *progname)
{
- fprintf(stderr, "%s: SSL support not available, please install ustream-ssl\n", progname);
+ fprintf(stderr,
+ "%s: SSL support not available, please install one of the "
+ "libustream-.*[ssl|tls] packages as well as the ca-bundle and "
+ "ca-certificates packages.\n",
+ progname);
+
return 1;
}
user_agent = optarg;
break;
case 'O':
- output_file = optarg;
+ opt_output_file = optarg;
break;
case 'P':
if (chdir(optarg)) {
uloop_init();
if (username) {
- if (password)
- asprintf(&auth_str, "%s:%s", username, password);
- else
+ if (password) {
+ rc = asprintf(&auth_str, "%s:%s", username, password);
+ if (rc < 0)
+ return rc;
+ } else
auth_str = username;
}