Commit 74dc8e23 authored by Alex Dowad's avatar Alex Dowad Committed by Timo Teräs

print.c: provide more detailed error messages if retrieving a package fails

fetch_maperror() translates error codes returned by libfetch to our error
codes. Handle those in apk_error_str(), returning error messages which
advise the user of the most likely fix.

A custom error code, EAPKSTALEINDEX, has been added for cases where
retrieving a package fails due to a HTTP error 404 or similar.

[TimoT: add also EAPKBADURL, as well as organize a bit better where the
EAPKSTALEINDEX is generated]
parent be31eb24
......@@ -32,6 +32,8 @@
#define NULL 0L
#endif
#define EAPKSTALEINDEX 1024
static inline void *ERR_PTR(long error) { return (void*) error; }
static inline void *ERR_CAST(const void *ptr) { return (void*) ptr; }
static inline int PTR_ERR(const void *ptr) { return (int)(long) ptr; }
......
......@@ -133,7 +133,25 @@ const char *apk_error_str(int error)
case ENOMSG:
return "archive does not contain expected data";
case ENOPKG:
return "package not available";
return "could not find a repo which provides this package (check repositories file and run 'apk update')";
case ECONNABORTED:
return "network connection aborted";
case ECONNREFUSED:
return "could not connect to server (check repositories file)";
case ENETUNREACH:
return "network error (check Internet connection and firewall)";
case ENXIO:
return "DNS lookup error";
case EREMOTEIO:
return "error code returned by repo server (try 'apk update')";
case ETIMEDOUT:
return "operation timed out";
case EAGAIN:
return "temporary error (try again later)";
case EINVAL:
return "invalid URL (check your repositories file)";
case EAPKSTALEINDEX:
return "file not available from repo server (try 'apk update')";
default:
return strerror(error);
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment