- int err = 0;
-
- char *src_basec = strdup(src);
- char *src_base = basename(src_basec);
- char *tmp_file_location;
-
- opkg_message(conf,OPKG_NOTICE,"Downloading %s\n", src);
-
- if (str_starts_with(src, "file:")) {
- int ret;
- const char *file_src = src + 5;
- opkg_message(conf,OPKG_INFO,"Copying %s to %s...", file_src, dest_file_name);
- ret = file_copy(src + 5, dest_file_name);
- opkg_message(conf,OPKG_INFO,"Done\n");
- free(src_basec);
- return ret;
- }
-
- sprintf_alloc(&tmp_file_location, "%s/%s", conf->tmp_dir, src_base);
- err = unlink(tmp_file_location);
- if (err && errno != ENOENT) {
- opkg_message(conf,OPKG_ERROR, "%s: ERROR: failed to unlink %s: %s\n",
- __FUNCTION__, tmp_file_location, strerror(errno));
- free(tmp_file_location);
- free(src_basec);
- return errno;
- }
-
- if (conf->http_proxy) {
- opkg_message(conf,OPKG_DEBUG,"Setting environment variable: http_proxy = %s\n", conf->http_proxy);
- setenv("http_proxy", conf->http_proxy, 1);
- }
- if (conf->ftp_proxy) {
- opkg_message(conf,OPKG_DEBUG,"Setting environment variable: ftp_proxy = %s\n", conf->ftp_proxy);
- setenv("ftp_proxy", conf->ftp_proxy, 1);
- }
- if (conf->no_proxy) {
- opkg_message(conf,OPKG_DEBUG,"Setting environment variable: no_proxy = %s\n", conf->no_proxy);
- setenv("no_proxy", conf->no_proxy, 1);
- }
-
- CURL *curl;
- CURLcode res;
- FILE * file = fopen (tmp_file_location, "w");
-
- curl = curl_easy_init ();
- if (curl)
- {
- curl_easy_setopt (curl, CURLOPT_URL, src);
- curl_easy_setopt (curl, CURLOPT_WRITEDATA, file);
- curl_easy_setopt (curl, CURLOPT_NOPROGRESS, (cb == NULL));
- if (cb)
- {
- curl_easy_setopt (curl, CURLOPT_PROGRESSDATA, data);
- curl_easy_setopt (curl, CURLOPT_PROGRESSFUNCTION, cb);
+ return (strncmp(str, prefix, strlen(prefix)) == 0);
+}
+
+int
+opkg_download(const char *src, const char *dest_file_name,
+ curl_progress_func cb, void *data, const short hide_error)
+{
+ int err = 0;
+
+ char *src_basec = xstrdup(src);
+ char *src_base = basename(src_basec);
+ char *tmp_file_location;
+
+ opkg_msg(NOTICE, "Downloading %s\n", src);
+
+ if (str_starts_with(src, "file:")) {
+ const char *file_src = src + 5;
+ opkg_msg(INFO, "Copying %s to %s...", file_src, dest_file_name);
+ err = file_copy(file_src, dest_file_name);
+ opkg_msg(INFO, "Done.\n");
+ free(src_basec);
+ return err;