Clarify expectations with error codes like G_IO_ERROR_FAILED

If an error code enumeration is expected to be extended in the future,
people shouldn't compare explicitly against its generic "FAILED" value.

https://bugzilla.gnome.org/show_bug.cgi?id=726775
This commit is contained in:
Dan Winship
2014-03-20 09:25:19 -04:00
parent 9c19f6dfa1
commit c67d23aa2f
3 changed files with 35 additions and 6 deletions

View File

@@ -416,7 +416,8 @@ typedef enum {
*/
/**
* GIOErrorEnum:
* @G_IO_ERROR_FAILED: Generic error condition for when any operation fails.
* @G_IO_ERROR_FAILED: Generic error condition for when an operation fails
* and no more specific #GIOErrorEnum value is defined.
* @G_IO_ERROR_NOT_FOUND: File not found.
* @G_IO_ERROR_EXISTS: File already exists.
* @G_IO_ERROR_IS_DIRECTORY: File is a directory.
@@ -472,6 +473,19 @@ typedef enum {
*
* Error codes returned by GIO functions.
*
* Note that this domain may be extended in future GLib releases. In
* general, new error codes either only apply to new APIs, or else
* replace #G_IO_ERROR_FAILED in cases that were not explicitly
* distinguished before. You should therefore avoid writing code like
* |[<!-- language="C" -->
* if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED))
* {
* // Assume that this is EPRINTERONFIRE
* ...
* }
* ]|
* but should instead treat all unrecognized error codes the same as
* #G_IO_ERROR_FAILED.
**/
typedef enum {
G_IO_ERROR_FAILED,

View File

@@ -44,7 +44,10 @@ G_DEFINE_QUARK (g-io-error-quark, g_io_error)
* g_io_error_from_errno:
* @err_no: Error number as defined in errno.h.
*
* Converts errno.h error codes into GIO error codes.
* Converts errno.h error codes into GIO error codes. The fallback
* value %G_IO_ERROR_FAILED is returned for error codes not currently
* handled (but note that future GLib releases may return a more
* specific value instead).
*
* Returns: #GIOErrorEnum value for the given errno.h error number.
**/
@@ -229,9 +232,10 @@ g_io_error_from_errno (gint err_no)
* g_io_error_from_win32_error:
* @error_code: Windows error number.
*
* Converts some common error codes into GIO error codes. The
* fallback value G_IO_ERROR_FAILED is returned for error codes not
* handled.
* Converts some common error codes into GIO error codes. The fallback
* value %G_IO_ERROR_FAILED is returned for error codes not currently
* handled (but note that future GLib releases may return a more
* specific value instead).
*
* Returns: #GIOErrorEnum value for the given error number.
*