[gcab] Do not return translated errors from libraries



commit 85ef2a366b22d93f6108a23087496ec8287de63a
Author: Richard Hughes <richard hughsie com>
Date:   Thu Dec 14 20:08:03 2017 +0000

    Do not return translated errors from libraries
    
    Instead, use a unique error code to handle the error.

 libgcab/cabinet.c      |   11 +++++------
 libgcab/gcab-cabinet.c |    6 +++---
 libgcab/gcab-cabinet.h |    8 ++++++--
 tests/gcab-self-test.c |    4 ++--
 4 files changed, 16 insertions(+), 13 deletions(-)
---
diff --git a/libgcab/cabinet.c b/libgcab/cabinet.c
index eca63b0..d008b32 100644
--- a/libgcab/cabinet.c
+++ b/libgcab/cabinet.c
@@ -22,7 +22,6 @@
 #include "config.h"
 
 #include "gcab-priv.h"
-#include <glib/gi18n-lib.h>
 
 static voidpf
 zalloc (voidpf opaque, uInt items, uInt size)
@@ -39,7 +38,7 @@ static gboolean
 cdata_set (cdata_t *cd, int type, guint8 *data, size_t size)
 {
     if (type > GCAB_COMPRESSION_MSZIP) {
-        g_critical (_("unsupported compression method %d"), type);
+        g_critical ("unsupported compression method %d", type);
         return FALSE;
     }
 
@@ -542,8 +541,8 @@ cdata_read (cdata_t *cd, guint8 res_data, gint comptype,
 
     if (compression > GCAB_COMPRESSION_MSZIP &&
         compression != GCAB_COMPRESSION_LZX) {
-        g_set_error (error, GCAB_ERROR, GCAB_ERROR_FAILED,
-                     _("unsupported compression method %d"), compression);
+        g_set_error (error, GCAB_ERROR, GCAB_ERROR_NOT_SUPPORTED,
+                     "unsupported compression method %d", compression);
         return FALSE;
     }
 
@@ -560,8 +559,8 @@ cdata_read (cdata_t *cd, guint8 res_data, gint comptype,
     nbytes_le = GUINT16_TO_LE (cd->nubytes);
     memcpy (&sizecsum[2], &nbytes_le, 2);
     if (_enforce_checksum () && cd->checksum != compute_checksum (sizecsum, sizeof(sizecsum), datacsum)) {
-        g_set_error_literal (error, GCAB_ERROR, GCAB_ERROR_FAILED,
-                             _("incorrect checksum detected"));
+        g_set_error_literal (error, GCAB_ERROR, GCAB_ERROR_INVALID_DATA,
+                             "incorrect checksum detected");
         return FALSE;
     }
 
diff --git a/libgcab/gcab-cabinet.c b/libgcab/gcab-cabinet.c
index d877399..9960184 100644
--- a/libgcab/gcab-cabinet.c
+++ b/libgcab/gcab-cabinet.c
@@ -245,7 +245,7 @@ gcab_cabinet_write (GCabCabinet *self,
 
     /* unsupported */
     if (self->folders->len > 1) {
-        g_set_error_literal (error, GCAB_ERROR, GCAB_ERROR_FAILED,
+        g_set_error_literal (error, GCAB_ERROR, GCAB_ERROR_NOT_SUPPORTED,
                              "Cabinet has more than one added folder");
         return FALSE;
     }
@@ -589,7 +589,7 @@ gcab_cabinet_get_signature (GCabCabinet *self,
         return self->signature;
 
     if (!G_IS_SEEKABLE (self->stream)) {
-        g_set_error (error, GCAB_ERROR, GCAB_ERROR_FAILED,
+        g_set_error (error, GCAB_ERROR, GCAB_ERROR_NOT_SUPPORTED,
                      "Cabinet stream is not seekable");
         return NULL;
     }
@@ -616,7 +616,7 @@ gcab_cabinet_get_signature (GCabCabinet *self,
     g_byte_array_set_size (self->signature, size);
 
     if (!g_seekable_seek (G_SEEKABLE (self->stream), offset, G_SEEK_SET, cancellable, error)) {
-        g_set_error (error, GCAB_ERROR, GCAB_ERROR_FAILED,
+        g_set_error (error, GCAB_ERROR, GCAB_ERROR_INVALID_DATA,
                      "Cannot seek to reserved area");
         return NULL;
     }
diff --git a/libgcab/gcab-cabinet.h b/libgcab/gcab-cabinet.h
index a880aa0..57893ee 100644
--- a/libgcab/gcab-cabinet.h
+++ b/libgcab/gcab-cabinet.h
@@ -48,8 +48,10 @@ GQuark gcab_error_quark (void);
 
 /**
  * GCabError:
- * @GCAB_ERROR_FORMAT: The given file is not of Cabinet format.
- * @GCAB_ERROR_FAILED: General function failure.
+ * @GCAB_ERROR_FORMAT:          The given file is not of Cabinet format.
+ * @GCAB_ERROR_FAILED:          General function failure.
+ * @GCAB_ERROR_NOT_SUPPORTED:   Action or format is not supported
+ * @GCAB_ERROR_INVALID_DATA:    Data stream was invalid
  *
  * The various errors triggered by the GCab functions.
  **/
@@ -57,6 +59,8 @@ typedef enum GCabError
 {
     GCAB_ERROR_FORMAT,
     GCAB_ERROR_FAILED,
+    GCAB_ERROR_NOT_SUPPORTED,   /* Since: 1.0 */
+    GCAB_ERROR_INVALID_DATA,    /* Since: 1.0 */
 } GCabError;
 
 GCabCabinet *      gcab_cabinet_new           (void);
diff --git a/tests/gcab-self-test.c b/tests/gcab-self-test.c
index dce0aae..b44a800 100644
--- a/tests/gcab-self-test.c
+++ b/tests/gcab-self-test.c
@@ -229,7 +229,7 @@ gcab_test_cabinet_error_not_seekable_func (void)
     /* verify it has no signature */
     cabinet = gcab_cabinet_new ();
     signature = gcab_cabinet_get_signature (cabinet, NULL, &error);
-    g_assert_error (error, GCAB_ERROR, GCAB_ERROR_FAILED);
+    g_assert_error (error, GCAB_ERROR, GCAB_ERROR_NOT_SUPPORTED);
     g_assert (signature == NULL);
 }
 
@@ -348,7 +348,7 @@ gcab_test_cabinet_error_cves_func (void)
         g_assert (ret);
         file_tmpdir = g_file_new_for_path ("/tmp");
         ret = gcab_cabinet_extract_simple (cabinet, file_tmpdir, NULL, NULL, NULL, &error);
-        g_assert_error (error, GCAB_ERROR, GCAB_ERROR_FAILED);
+        g_assert (error != NULL);
         g_assert (!ret);
     }
     g_unsetenv ("GCAB_SKIP_CHECKSUM");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]