diff --git a/src/source.c b/src/source.c index addb9bd..06c1600 100644 --- a/src/source.c +++ b/src/source.c @@ -602,8 +602,13 @@ int slapt_src_fetch_slackbuild (slapt_src_config *config, slapt_src_slackbuild * for (i = 0; i < download_parts->count; i++) { int curl_rv = 0; + int curl_alt_rv = 0; char *md5sum = md5sum_parts->items[i]; char *filename = filename_from_url (download_parts->items[i]); + char sbosrc[39] = "http://slackware.uk/sbosrcarch/by-name"; + char *alt_url = NULL; + int r = 0; + int alt_url_len = strlen (sb->location) + strlen (filename) + 41; FILE *f = NULL; char md5sum_to_prove[SLAPT_MD5_STR_LEN]; struct stat file_stat; @@ -630,8 +635,20 @@ int slapt_src_fetch_slackbuild (slapt_src_config *config, slapt_src_slackbuild * if (curl_rv == 0) { printf (gettext ("Done\n")); } else { - printf (gettext ("Failed\n")); - exit (EXIT_FAILURE); + printf ("#..."); + alt_url = slapt_malloc (alt_url_len); + r = snprintf(alt_url, alt_url_len, "%s/%s/%s", sbosrc, sb->location, filename); + if (r+1 != alt_url_len) { + printf (gettext("Failed to construct URL string\n")); + exit (EXIT_FAILURE); + } + curl_alt_rv = slapt_download_data (f, alt_url, file_size, NULL, slapt_config); + if (curl_alt_rv == 0) { + printf (gettext ("Done\n")); + } else { + printf (gettext ("Failed\n")); + exit (EXIT_FAILURE); + } } /* verify checksum of downloaded file */ @@ -645,6 +662,7 @@ int slapt_src_fetch_slackbuild (slapt_src_config *config, slapt_src_slackbuild * fclose (f); free (filename); + free (alt_url); } if (download_parts != NULL)