summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTing-Wei Lan <lantw44@gmail.com>2013-08-29 17:26:41 +0800
committerLAN-TW <lantw44@gmail.com>2013-08-29 17:26:41 +0800
commit6a3732447532036174879bd3f4e412dd6ddb94e6 (patch)
tree9fb71ce3d083a9e647e0d6f1045b7755535a123d
parent4fc121e57996e8243e9b18ca00b48c18d94bde84 (diff)
downloadgsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar
gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar.gz
gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar.bz2
gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar.lz
gsoc2013-libgnome-autoar-6a3732447532036174879bd3f4e412dd6ddb94e6.tar.xz
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.c12
-rw-r--r--gnome-autoar/autoar-common.h10
-rw-r--r--gnome-autoar/autoar-create.c12
-rw-r--r--gnome-autoar/autoar-create.h5
-rw-r--r--gnome-autoar/autoar-extract.c14
-rw-r--r--gnome-autoar/autoar-extract.h5
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,