diff options
author | Ting-Wei Lan <lantw44@gmail.com> | 2013-08-29 17:26:41 +0800 |
---|---|---|
committer | LAN-TW <lantw44@gmail.com> | 2013-08-29 17:26:41 +0800 |
commit | 6a3732447532036174879bd3f4e412dd6ddb94e6 (patch) | |
tree | 9fb71ce3d083a9e647e0d6f1045b7755535a123d | |
parent | 4fc121e57996e8243e9b18ca00b48c18d94bde84 (diff) | |
download | gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar.gz gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar.zst gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.zip |
Add new GQuark for libarchive-related error
G_DEFINE_QUARK is used to define GQuark. The old global variables are removed.
Error reported by libarchive use its own quark now. Quarks for autoar-extract
and autoar-create are only used for error occurred within gnome-autoar.
-rw-r--r-- | gnome-autoar/autoar-common.c | 12 | ||||
-rw-r--r-- | gnome-autoar/autoar-common.h | 10 | ||||
-rw-r--r-- | gnome-autoar/autoar-create.c | 12 | ||||
-rw-r--r-- | gnome-autoar/autoar-create.h | 5 | ||||
-rw-r--r-- | gnome-autoar/autoar-extract.c | 14 | ||||
-rw-r--r-- | gnome-autoar/autoar-extract.h | 5 |
6 files changed, 31 insertions, 27 deletions
diff --git a/gnome-autoar/autoar-common.c b/gnome-autoar/autoar-common.c index 39cc554..5feda50 100644 --- a/gnome-autoar/autoar-common.c +++ b/gnome-autoar/autoar-common.c @@ -42,6 +42,8 @@ struct _AutoarCommonSignalData GQuark detail; }; +G_DEFINE_QUARK (libarchive-quark, autoar_common_libarchive) + char* autoar_common_get_filename_extension (const char *filename) { @@ -164,12 +166,11 @@ autoar_common_g_signal_emit (gpointer instance, } GError* -autoar_common_g_error_new_a (GQuark quark, - struct archive *a, +autoar_common_g_error_new_a (struct archive *a, const char *pathname) { GError *newerror; - newerror = g_error_new (quark, + newerror = g_error_new (AUTOAR_LIBARCHIVE_ERROR, archive_errno (a), "%s%s%s%s", pathname != NULL ? "\'" : "", @@ -180,9 +181,8 @@ autoar_common_g_error_new_a (GQuark quark, } GError* -autoar_common_g_error_new_a_entry (GQuark quark, - struct archive *a, +autoar_common_g_error_new_a_entry (struct archive *a, struct archive_entry *entry) { - return autoar_common_g_error_new_a (quark, a, archive_entry_pathname (entry)); + return autoar_common_g_error_new_a (a, archive_entry_pathname (entry)); } diff --git a/gnome-autoar/autoar-common.h b/gnome-autoar/autoar-common.h index 3c6d8af..59518bf 100644 --- a/gnome-autoar/autoar-common.h +++ b/gnome-autoar/autoar-common.h @@ -37,6 +37,10 @@ G_BEGIN_DECLS +#define AUTOAR_LIBARCHIVE_ERROR autoar_common_libarchive_quark() + +GQuark autoar_common_libarchive_quark (void); + char* autoar_common_get_basename_remove_extension (const char *filename); char* autoar_common_get_filename_extension (const char *filename); @@ -46,11 +50,9 @@ void autoar_common_g_signal_emit (gpointer instance, GQuark detail, ...); -GError* autoar_common_g_error_new_a (GQuark quark, - struct archive *a, +GError* autoar_common_g_error_new_a (struct archive *a, const char *pathname); -GError* autoar_common_g_error_new_a_entry (GQuark quark, - struct archive *a, +GError* autoar_common_g_error_new_a_entry (struct archive *a, struct archive_entry *entry); G_END_DECLS diff --git a/gnome-autoar/autoar-create.c b/gnome-autoar/autoar-create.c index 8f72607..97c179f 100644 --- a/gnome-autoar/autoar-create.c +++ b/gnome-autoar/autoar-create.c @@ -39,6 +39,7 @@ #include <unistd.h> G_DEFINE_TYPE (AutoarCreate, autoar_create, G_TYPE_OBJECT) +G_DEFINE_QUARK (autoar-create, autoar_create) #define AUTOAR_CREATE_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), AUTOAR_TYPE_CREATE, AutoarCreatePrivate)) @@ -99,7 +100,6 @@ enum }; static guint autoar_create_signals[LAST_SIGNAL] = { 0 }; -GQuark autoar_create_quark; static void autoar_create_get_property (GObject *object, @@ -482,7 +482,7 @@ autoar_create_do_write_data (AutoarCreate *arcreate, while ((r = archive_write_header (priv->a, entry)) == ARCHIVE_RETRY); if (r == ARCHIVE_FATAL) { if (priv->error == NULL) - priv->error = autoar_common_g_error_new_a_entry (autoar_create_quark, priv->a, entry); + priv->error = autoar_common_g_error_new_a_entry (priv->a, entry); return; } @@ -536,7 +536,7 @@ autoar_create_do_write_data (AutoarCreate *arcreate, if (written_actual < 0 || written_try >= ARCHIVE_WRITE_RETRY_TIMES) { if (priv->error == NULL) - priv->error = autoar_common_g_error_new_a_entry (autoar_create_quark, priv->a, entry); + priv->error = autoar_common_g_error_new_a_entry (priv->a, entry); return; } g_debug ("autoar_create_do_write_data: write data OK"); @@ -805,8 +805,6 @@ autoar_create_class_init (AutoarCreateClass *klass) g_type_class_add_private (klass, sizeof (AutoarCreatePrivate)); - autoar_create_quark = g_quark_from_static_string ("autoar-create"); - object_class->get_property = autoar_create_get_property; object_class->set_property = autoar_create_set_property; object_class->dispose = autoar_create_dispose; @@ -1145,7 +1143,7 @@ autoar_create_run (AutoarCreate *arcreate) libarchive_write_close_cb); if (r != ARCHIVE_OK) { if (priv->error == NULL) - priv->error = autoar_common_g_error_new_a (autoar_create_quark, priv->a, NULL); + priv->error = autoar_common_g_error_new_a (priv->a, NULL); autoar_create_signal_error (arcreate); return; } @@ -1217,7 +1215,7 @@ autoar_create_run (AutoarCreate *arcreate) r = archive_write_close (priv->a); if (r != ARCHIVE_OK) { if (arcreate->priv->error == NULL) - priv->error = autoar_common_g_error_new_a (autoar_create_quark, priv->a, NULL); + priv->error = autoar_common_g_error_new_a (priv->a, NULL); return; } diff --git a/gnome-autoar/autoar-create.h b/gnome-autoar/autoar-create.h index 4f40fe7..0d64993 100644 --- a/gnome-autoar/autoar-create.h +++ b/gnome-autoar/autoar-create.h @@ -66,7 +66,10 @@ struct _AutoarCreateClass GError *error); }; -extern GQuark autoar_create_quark; +#define AUTOAR_CREATE_ERROR autoar_create_quark() + +GQuark autoar_create_quark (void); + GType autoar_create_get_type (void) G_GNUC_CONST; AutoarCreate* autoar_create_new (AutoarPref *arpref, diff --git a/gnome-autoar/autoar-extract.c b/gnome-autoar/autoar-extract.c index 03a14c0..507eb5c 100644 --- a/gnome-autoar/autoar-extract.c +++ b/gnome-autoar/autoar-extract.c @@ -54,6 +54,7 @@ G_DEFINE_TYPE (AutoarExtract, autoar_extract, G_TYPE_OBJECT) +G_DEFINE_QUARK (autoar-extract, autoar_extract) #define AUTOAR_EXTRACT_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), AUTOAR_TYPE_EXTRACT, AutoarExtractPrivate)) @@ -145,7 +146,6 @@ enum }; static guint autoar_extract_signals[LAST_SIGNAL] = { 0 }; -GQuark autoar_extract_quark; static void autoar_extract_get_property (GObject *object, @@ -1114,8 +1114,6 @@ autoar_extract_class_init (AutoarExtractClass *klass) g_type_class_add_private (klass, sizeof (AutoarExtractPrivate)); - autoar_extract_quark = g_quark_from_static_string ("autoar-extract"); - object_class->get_property = autoar_extract_get_property; object_class->set_property = autoar_extract_set_property; object_class->dispose = autoar_extract_dispose; @@ -1497,12 +1495,12 @@ autoar_extract_step_scan_toplevel (AutoarExtract *arextract) { r = libarchive_create_read_object (TRUE, arextract, &a); if (priv->error == NULL) { if (r != ARCHIVE_OK) { - priv->error = autoar_common_g_error_new_a (autoar_extract_quark, a, priv->source); + priv->error = autoar_common_g_error_new_a (a, priv->source); } else if (archive_filter_count (a) <= 1){ /* If we only use raw format and filter count is one, libarchive will * not do anything except for just copying the source file. We do not * want this thing to happen because it does unnecesssary copying. */ - priv->error = g_error_new (autoar_extract_quark, NOT_AN_ARCHIVE_ERRNO, + priv->error = g_error_new (AUTOAR_EXTRACT_ERROR, NOT_AN_ARCHIVE_ERRNO, "\'%s\': %s", priv->source, "not an archive"); } } @@ -1561,7 +1559,7 @@ autoar_extract_step_scan_toplevel (AutoarExtract *arextract) { if (r != ARCHIVE_EOF) { if (priv->error == NULL) { - priv->error = autoar_common_g_error_new_a (autoar_extract_quark, a, priv->source); + priv->error = autoar_common_g_error_new_a (a, priv->source); } g_free (pathname_prefix); archive_read_free (a); @@ -1666,7 +1664,7 @@ autoar_extract_step_extract (AutoarExtract *arextract) { r = libarchive_create_read_object (priv->use_raw_format, arextract, &a); if (r != ARCHIVE_OK) { if (priv->error == NULL) { - priv->error = autoar_common_g_error_new_a (autoar_extract_quark, a, priv->source); + priv->error = autoar_common_g_error_new_a (a, priv->source); } archive_read_free (a); return; @@ -1727,7 +1725,7 @@ autoar_extract_step_extract (AutoarExtract *arextract) { if (r != ARCHIVE_EOF) { if (priv->error == NULL) { - priv->error = autoar_common_g_error_new_a (autoar_extract_quark, a, priv->source); + priv->error = autoar_common_g_error_new_a (a, priv->source); } archive_read_free (a); return; diff --git a/gnome-autoar/autoar-extract.h b/gnome-autoar/autoar-extract.h index 5120154..31b8e84 100644 --- a/gnome-autoar/autoar-extract.h +++ b/gnome-autoar/autoar-extract.h @@ -68,7 +68,10 @@ struct _AutoarExtractClass GError *error); }; -extern GQuark autoar_extract_quark; +#define AUTOAR_EXTRACT_ERROR autoar_extract_quark() + +GQuark autoar_extract_quark (void); + GType autoar_extract_get_type (void) G_GNUC_CONST; AutoarExtract *autoar_extract_new (const char *source, |