Unfortunately, the "failed to create file" error message is printed for every mirror (that can be dozens of lines), which is ugly, but at least informative... Without modifying the download logic (for example, by introducing -2 return value for _alpm_download() to indicate giving up), this ugliness cannot be eliminated.
I'm all for modifying the download logic in this fashion.
OK. But not today :-). Then some other cases can also get retval -2, so we can eliminate some other pointless retries for every mirrors.
Not a huge fan of the phrasing of this message. In most cases, I'd rather the filename or variable part of the message be at the front or the end, not in the middle. Perhaps _("could not open file '%s': %s\n"), tempfile_name, strerror(errno))
OK, done in my working branch: http://repo.or.cz/w/pacman-ng.git/shortlog/refs/heads/working NG