digest_context *dctx;
int check_ok;
int fd;
- fprintf(error,
- "Metalink: Validating %s checksum (This may take some time)...\n",
- digest_def->hash_name);
+ fprintf(error, "Metalink: validating (%s)...\n", filename);
fd = open(filename, O_RDONLY);
if(fd == -1) {
- fprintf(error, "Metalink: Could not open file %s: %s\n", filename,
+ fprintf(error, "Metalink: validating (%s) FAILED (%s)\n", filename,
strerror(errno));
return -1;
}
break;
}
else if(len == -1) {
- fprintf(error, "Metalink: Could not read file %s: %s\n", filename,
+ fprintf(error, "Metalink: validating (%s) FAILED (%s)\n", filename,
strerror(errno));
Curl_digest_final(dctx, result);
close(fd);
digest_def->dparams->digest_resultlen) == 0;
/* sha*sum style verdict output */
if(check_ok)
- fprintf(error, "Metalink: %s: OK\n", filename);
+ fprintf(error, "Metalink: validating (%s) OK\n", filename);
else
- fprintf(error, "Metalink: %s: FAILED\n", filename);
+ fprintf(error, "Metalink: validating (%s) FAILED (digest mismatch)\n",
+ filename);
free(result);
close(fd);
return f;
}
-int parse_metalink(struct Configurable *config, struct OutStruct *outs)
+int parse_metalink(struct Configurable *config, struct OutStruct *outs,
+ const char *metalink_url)
{
metalink_error_t r;
metalink_t* metalink;
return -1;
}
if(metalink->files == NULL) {
- fprintf(config->errors,
- "\nMetalink: Metalink XML file does not contain any file.\n");
+ fprintf(config->errors, "\nMetalink: parsing (%s) WARNING "
+ "(missing or invalid file name)\n",
+ metalink_url);
metalink_delete(metalink);
return 0;
}
struct getout *url;
/* Skip an entry which has no resource. */
if(!(*files)->resources) {
- fprintf(config->errors,
- "\nMetalink: File %s does not have any resource.\n",
- (*files)->name);
+ fprintf(config->errors, "\nMetalink: parsing (%s) WARNING "
+ "(missing or invalid resource)\n",
+ metalink_url, (*files)->name);
continue;
}
if(config->url_get ||
if(rv == 0)
return sz * nmemb;
else {
- warnf(config, "Metalink: Failed to parse Metalink XML file\n");
+ fprintf(config->errors, "Metalink: parsing FAILED\n");
return failure;
}
}
int count_next_metalink_resource(metalinkfile *mlfile);
void clean_metalink(struct Configurable *config);
-int parse_metalink(struct Configurable *config, struct OutStruct *outs);
+int parse_metalink(struct Configurable *config, struct OutStruct *outs,
+ const char *metalink_url);
/*
* Callback function for CURLOPT_WRITEFUNCTION
res = CURLE_OUT_OF_MEMORY;
goto show_error;
}
+ fprintf(config->errors, "Metalink: parsing (%s) metalink/XML...\n",
+ this_url);
}
+ else if(metalink)
+ fprintf(config->errors, "Metalink: fetching (%s) from (%s)...\n",
+ mlfile->filename, this_url);
#endif /* USE_METALINK */
res = curl_easy_perform(curl);
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &response);
if(response != 200 && response != 206) {
metalink_next_res = 1;
+ fprintf(config->errors,
+ "Metalink: fetching (%s) from (%s) FAILED "
+ "(HTTP status code %d)\n",
+ mlfile->filename, this_url, response);
}
}
}
- else
+ else {
metalink_next_res = 1;
+ fprintf(config->errors,
+ "Metalink: fetching (%s) from (%s) FAILED (%s)\n",
+ mlfile->filename, this_url,
+ (errorbuffer[0]) ?
+ errorbuffer : curl_easy_strerror((CURLcode)res));
+ }
}
+ if(metalink && !metalink_next_res)
+ fprintf(config->errors, "Metalink: fetching (%s) from (%s) OK\n",
+ mlfile->filename, this_url);
/* In all ordinary cases, just break out of loop here */
break; /* curl_easy_perform loop */
#ifdef USE_METALINK
if(!metalink && config->use_metalink && res == CURLE_OK) {
- if(parse_metalink(config, &outs) == 0)
- fprintf(config->errors,
- "Metalink: Metalink XML file was parsed successfully\n");
+ if(parse_metalink(config, &outs, this_url) == 0)
+ fprintf(config->errors, "Metalink: parsing (%s) OK\n",
+ this_url);
else
- fprintf(config->errors,
- "Metalink: Could not parse Metalink XML file\n");
+ fprintf(config->errors, "Metalink: parsing (%s) FAILED\n",
+ this_url);
}
else if(metalink && res == CURLE_OK && !metalink_next_res) {
int rv = metalink_check_hash(config, mlfile, outs.filename);