aboutsummaryrefslogtreecommitdiffstats
path: root/autoarchive/test-extract.c
diff options
context:
space:
mode:
Diffstat (limited to 'autoarchive/test-extract.c')
-rw-r--r--autoarchive/test-extract.c77
1 files changed, 77 insertions, 0 deletions
diff --git a/autoarchive/test-extract.c b/autoarchive/test-extract.c
new file mode 100644
index 000000000..58e133222
--- /dev/null
+++ b/autoarchive/test-extract.c
@@ -0,0 +1,77 @@
+/* vim: set sw=2 ts=2 sts=2 et: */
+
+#include "autoar-extract.h"
+#include <stdlib.h>
+
+static void
+my_handler_scanned (AutoarExtract *arextract,
+ guint files,
+ gpointer data)
+{
+ g_print ("Scanning OK, %d files to be extracted.\n", files);
+}
+
+static void
+my_handler_decide_dest (AutoarExtract *arextract,
+ GFile *dest)
+{
+ char *path, *uri;
+ path = g_file_get_path (dest);
+ uri = g_file_get_uri (dest);
+ g_print ("Destination Path: %s\n", path);
+ g_print ("Destination URI: %s\n", uri);
+ g_free (path);
+ g_free (uri);
+}
+
+static void
+my_handler_progress (AutoarExtract *arextract,
+ gdouble fraction_size,
+ gdouble fraction_files,
+ gpointer data)
+{
+ g_print ("Progress: Archive Size %.2lf %%, Files %.2lf %%\n",
+ fraction_size * 100,
+ fraction_files * 100);
+}
+
+static void
+my_handler_error (AutoarExtract *arextract,
+ GError *error,
+ gpointer data)
+{
+ g_printerr ("Error: %s\n", error->message);
+ g_error_free (error);
+ exit (1);
+}
+
+static void
+my_handler_completed (AutoarExtract *arextract,
+ gpointer data)
+{
+ g_print ("Completed!\n");
+ exit (0);
+}
+
+int
+main (int argc,
+ char *argv[])
+{
+ AutoarExtract *arextract;
+
+ if (argc < 3) {
+ g_printerr ("Usage: %s archive_file output_dir\n", argv[0]);
+ return 255;
+ }
+
+ arextract = autoar_extract_new (argv[1], argv[2]);
+ g_signal_connect (arextract, "scanned", G_CALLBACK (my_handler_scanned), NULL);
+ g_signal_connect (arextract, "decide-dest", G_CALLBACK (my_handler_decide_dest), NULL);
+ g_signal_connect (arextract, "progress", G_CALLBACK (my_handler_progress), NULL);
+ g_signal_connect (arextract, "error", G_CALLBACK (my_handler_error), NULL);
+ g_signal_connect (arextract, "completed", G_CALLBACK (my_handler_completed), NULL);
+
+ autoar_extract_start (arextract);
+
+ return 0;
+}