Author: stephan
Date: 2006-07-17 12:22:35 +0000 (Mon, 17 Jul 2006)
New Revision: 22468
Modified:
xarchiver/branches/xarchiver-psybsd/AUTHORS
xarchiver/branches/xarchiver-psybsd/TODO
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-bzip2.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-gzip.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.h
xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
xarchiver/branches/xarchiver-psybsd/src/main.c
Log:
Fixed 'add-to' and 'extract-to' for tar(.bz2/.gz)
Modified: xarchiver/branches/xarchiver-psybsd/AUTHORS
===================================================================
--- xarchiver/branches/xarchiver-psybsd/AUTHORS 2006-07-17 05:52:29 UTC (rev
22467)
+++ xarchiver/branches/xarchiver-psybsd/AUTHORS 2006-07-17 12:22:35 UTC (rev
22468)
@@ -1,2 +1 @@
Stephan Arts - psyBSD - [EMAIL PROTECTED]
-Giuseppe Torelli - Colossus - [EMAIL PROTECTED]
Modified: xarchiver/branches/xarchiver-psybsd/TODO
===================================================================
--- xarchiver/branches/xarchiver-psybsd/TODO 2006-07-17 05:52:29 UTC (rev
22467)
+++ xarchiver/branches/xarchiver-psybsd/TODO 2006-07-17 12:22:35 UTC (rev
22468)
@@ -3,12 +3,13 @@
... a lot
Long Version:
+
Implement archive-type verification and 'open' support
for existing archives
Write view support for gnu-tar support object.
- Let support objects check if the program in question exists upon object
creation.
+ Let support objects check if the program in question exists upon object
creation.
Implement transaction-options for archive-support objects
Implement transaction-options for compression-support objects
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support.c
2006-07-17 05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive-support.c
2006-07-17 12:22:35 UTC (rev 22468)
@@ -141,6 +141,13 @@
/*
* Extract and check the tmp-file
*/
+ if(g_file_test(archive->tmp_file, G_FILE_TEST_EXISTS))
+ {
+ fp = fopen(archive->tmp_file, "r");
+ if(!fp)
+ return FALSE;
+ } else
+ return FALSE;
}
else
{
@@ -162,8 +169,11 @@
/* check extension */
else
{
-
}
}
}
+ if(archive->type == LXA_ARCHIVETYPE_UNKNOWN)
+ archive->type == LXA_ARCHIVETYPE_NONE;
+ lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_IDLE);
+ return TRUE;
}
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-07-17
05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.c 2006-07-17
12:22:35 UTC (rev 22468)
@@ -37,7 +37,7 @@
lxa_archive_finalize(GObject *object);
-static guint lxa_archive_signals[1];
+static guint lxa_archive_signals[3];
GType
lxa_archive_get_type ()
@@ -83,6 +83,28 @@
1,
G_TYPE_POINTER,
NULL);
+
+ lxa_archive_signals[1] = g_signal_new("lxa_init_complete",
+ G_TYPE_FROM_CLASS(archive_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE,
+ 0,
+ NULL);
+ lxa_archive_signals[2] = g_signal_new("lxa_operation_failure",
+ G_TYPE_FROM_CLASS(archive_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__POINTER,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_POINTER,
+ NULL);
}
static void
@@ -99,7 +121,7 @@
}
LXAArchive *
-lxa_archive_new(gchar *path, LXAArchiveType type, LXACompressionType
compression)
+lxa_archive_new(gchar *path, LXAArchiveType type, LXACompressionType
compression, GCallback initialized_func)
{
LXAArchive *archive;
@@ -109,6 +131,9 @@
else
archive->path = NULL;
+ g_signal_connect(G_OBJECT(archive), "lxa_init_complete",
initialized_func, NULL);
+ lxa_archive_set_status(archive, LXA_ARCHIVESTATUS_INIT);
+
if(compression == LXA_COMPRESSIONTYPE_UNKNOWN)
{
/*Discover compression-type*/
@@ -118,9 +143,8 @@
g_debug("COMPRESSION TYPE NOT FOUND");
compression = archive->compression;
}
- if(compression != LXA_COMPRESSIONTYPE_UNKNOWN)
+ if(archive->compression == LXA_COMPRESSIONTYPE_NONE)
{
- archive->compression = compression;
if(type == LXA_ARCHIVETYPE_UNKNOWN)
{
/*Discover archive-type*/
@@ -128,10 +152,8 @@
g_debug("ARCHIVE TYPE FOUND");
else
g_debug("ARCHIVE TYPE NOT FOUND");
-
+ archive->type = type;
}
- else
- archive->type = type;
}
return archive;
}
@@ -141,6 +163,8 @@
{
archive->oldstatus = archive->status;
archive->status = status;
+ if(archive->oldstatus == LXA_ARCHIVESTATUS_INIT && archive->status ==
LXA_ARCHIVESTATUS_IDLE)
+ g_signal_emit(G_OBJECT(archive), lxa_archive_signals[1], 0,
archive);
g_signal_emit(G_OBJECT(archive), lxa_archive_signals[0], 0, archive);
}
@@ -155,20 +179,21 @@
if(find_result)
{
compression_support = find_result->data;
- if(archive->tmp_file)
+ if(!archive->tmp_file)
{
- g_free(archive->tmp_file);
- archive->tmp_file = NULL;
+ archive->tmp_file = g_strconcat(lxa_tmp_dir,
"/xarchiver-XXXXXX" , NULL);
+ g_mkstemp(archive->tmp_file);
}
- archive->tmp_file = g_strconcat(lxa_tmp_dir,
"/xarchiver-XXXXXX" , NULL);
- g_mkstemp(archive->tmp_file);
/* since we only need the filename: we unlink it */
- g_unlink(archive->tmp_file);
lxa_tmp_files_list =
g_slist_prepend(lxa_tmp_files_list, archive->tmp_file);
/* Check if the archive already exists */
if(g_file_test(archive->path, G_FILE_TEST_EXISTS))
+ {
+ if(g_file_test(archive->tmp_file,
G_FILE_TEST_EXISTS))
+ g_unlink(archive->tmp_file);
compression_support->decompress(archive);
+ }
else
return 1;
}
@@ -179,12 +204,6 @@
}
gint
-lxa_archive_compress(LXAArchive *archive)
-{
- return 0;
-}
-
-gint
lxa_archive_add(LXAArchive *archive, GSList *files)
{
GSList *find_result;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-07-17
05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/archive.h 2006-07-17
12:22:35 UTC (rev 22468)
@@ -33,9 +33,7 @@
} LXAArchiveType;
typedef enum
-{
- LXA_COMPRESSIONTYPE_NONE,
- LXA_COMPRESSIONTYPE_UNKNOWN,
+{ LXA_COMPRESSIONTYPE_NONE, LXA_COMPRESSIONTYPE_UNKNOWN,
LXA_COMPRESSIONTYPE_BZIP2,
LXA_COMPRESSIONTYPE_GZIP
} LXACompressionType;
@@ -43,6 +41,7 @@
typedef enum
{
LXA_ARCHIVESTATUS_IDLE,
+ LXA_ARCHIVESTATUS_INIT,
LXA_ARCHIVESTATUS_ADD,
LXA_ARCHIVESTATUS_EXTRACT,
LXA_ARCHIVESTATUS_REMOVE,
@@ -97,11 +96,10 @@
};
GType lxa_archive_get_type(void);
-LXAArchive *lxa_archive_new(gchar *, LXAArchiveType, LXACompressionType);
+LXAArchive *lxa_archive_new(gchar *, LXAArchiveType, LXACompressionType,
GCallback);
void lxa_archive_set_status(LXAArchive *archive, LXAArchiveStatus status);
-gint lxa_archive_compress(LXAArchive *archive);
gint lxa_archive_decompress(LXAArchive *archive);
gint lxa_archive_add(LXAArchive *archive, GSList *files);
Modified:
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-bzip2.c
===================================================================
---
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-bzip2.c
2006-07-17 05:52:29 UTC (rev 22467)
+++
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-bzip2.c
2006-07-17 12:22:35 UTC (rev 22468)
@@ -142,7 +142,7 @@
lxa_compression_support_bzip2_parse_output_decompress(GIOChannel *ioc,
GIOCondition cond, gpointer data)
{
GSList *find_result;
- LXAArchiveSupport *archive_support;
+ LXAArchiveSupport *archive_support = NULL;
FILE *out_file = NULL;
LXAArchive *archive = data;
gchar *buf = g_new0(gchar, 1024);
@@ -179,31 +179,39 @@
if(find_result)
{
archive_support = find_result->data;
- switch(archive->status)
- {
- case LXA_ARCHIVESTATUS_ADD:
+ }
+ switch(archive->status)
+ {
+ case LXA_ARCHIVESTATUS_ADD:
+ if(archive_support)
archive_support->add(archive);
- break;
- case LXA_ARCHIVESTATUS_EXTRACT:
+ break;
+ case LXA_ARCHIVESTATUS_EXTRACT:
+ if(archive_support)
archive_support->extract(archive);
- break;
- case LXA_ARCHIVESTATUS_REMOVE:
+ break;
+ case LXA_ARCHIVESTATUS_REMOVE:
+ if(archive_support)
archive_support->remove(archive);
- break;
- case LXA_ARCHIVESTATUS_VIEW:
+ break;
+ case LXA_ARCHIVESTATUS_VIEW:
+ if(archive_support)
archive_support->view(archive);
- break;
- case LXA_ARCHIVESTATUS_USERBREAK: /*
abort */
- g_unlink(archive->tmp_file);
- lxa_archive_set_status(archive,
LXA_ARCHIVESTATUS_IDLE);
- break;
- case LXA_ARCHIVESTATUS_IDLE:
- case LXA_ARCHIVESTATUS_ERROR:
- break;
- }
+ break;
+ case LXA_ARCHIVESTATUS_INIT:
+ lxa_archive_discover_type(archive);
+ break;
+ case LXA_ARCHIVESTATUS_USERBREAK: /* abort */
+ g_unlink(archive->tmp_file);
+ lxa_archive_set_status(archive,
LXA_ARCHIVESTATUS_IDLE);
+ break;
+ case LXA_ARCHIVESTATUS_IDLE:
+ case LXA_ARCHIVESTATUS_ERROR:
+ break;
}
}
- return FALSE; }
+ return FALSE;
+ }
return TRUE;
}
Modified:
xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-gzip.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-gzip.c
2006-07-17 05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support-gzip.c
2006-07-17 12:22:35 UTC (rev 22468)
@@ -175,28 +175,35 @@
if(find_result)
{
archive_support = find_result->data;
- switch(archive->status)
- {
- case LXA_ARCHIVESTATUS_ADD:
+ }
+ switch(archive->status)
+ {
+ case LXA_ARCHIVESTATUS_ADD:
+ if(archive_support)
archive_support->add(archive);
- break;
- case LXA_ARCHIVESTATUS_EXTRACT:
+ break;
+ case LXA_ARCHIVESTATUS_EXTRACT:
+ if(archive_support)
archive_support->extract(archive);
- break;
- case LXA_ARCHIVESTATUS_REMOVE:
+ break;
+ case LXA_ARCHIVESTATUS_REMOVE:
+ if(archive_support)
archive_support->remove(archive);
- break;
- case LXA_ARCHIVESTATUS_VIEW:
+ break;
+ case LXA_ARCHIVESTATUS_VIEW:
+ if(archive_support)
archive_support->view(archive);
- break;
- case LXA_ARCHIVESTATUS_USERBREAK: /*
abort */
- g_unlink(archive->tmp_file);
- lxa_archive_set_status(archive,
LXA_ARCHIVESTATUS_IDLE);
- break;
- case LXA_ARCHIVESTATUS_IDLE:
- case LXA_ARCHIVESTATUS_ERROR:
- break;
- }
+ break;
+ case LXA_ARCHIVESTATUS_INIT:
+ lxa_archive_discover_type(archive);
+ break;
+ case LXA_ARCHIVESTATUS_USERBREAK: /* abort */
+ g_unlink(archive->tmp_file);
+ lxa_archive_set_status(archive,
LXA_ARCHIVESTATUS_IDLE);
+ break;
+ case LXA_ARCHIVESTATUS_IDLE:
+ case LXA_ARCHIVESTATUS_ERROR:
+ break;
}
}
return FALSE;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support.c
2006-07-17 05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/compression-support.c
2006-07-17 12:22:35 UTC (rev 22468)
@@ -148,6 +148,7 @@
{
archive->compression = LXA_COMPRESSIONTYPE_GZIP;
fclose(fp);
+ lxa_archive_decompress(archive);
return TRUE;
}
@@ -156,6 +157,7 @@
{
archive->compression = LXA_COMPRESSIONTYPE_BZIP2;
fclose(fp);
+ lxa_archive_decompress(archive);
return TRUE;
}
archive->compression = LXA_COMPRESSIONTYPE_NONE;
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.h
2006-07-17 05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/internals.h
2006-07-17 12:22:35 UTC (rev 22468)
@@ -27,6 +27,12 @@
gint
lookup_compression_support( gconstpointer support , gconstpointer type);
+/*
+ * gint
+ * lxa_execute(gchar *command)
+ *
+ * general function for executing child-apps
+ */
gint lxa_execute(
gchar *command,
LXAArchive *archive,
@@ -34,3 +40,4 @@
GIOFunc f_in,
GIOFunc f_out,
GIOFunc f_err);
+
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
2006-07-17 05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.c
2006-07-17 12:22:35 UTC (rev 22468)
@@ -46,13 +46,12 @@
#endif
}
-int
+void
lxa_destroy()
{
g_slist_foreach(lxa_tmp_files_list,(void *)g_unlink, NULL);
g_slist_foreach(lxa_tmp_files_list,(void *)g_free, NULL);
g_slist_free(lxa_tmp_files_list);
- return 0;
}
/*
@@ -71,7 +70,7 @@
return 1;
}
- LXAArchive *archive = lxa_archive_new(path, type, compression);
+ LXAArchive *archive = lxa_archive_new(path, type, compression, NULL);
(*lp_archive) = archive;
return 0;
}
@@ -82,7 +81,7 @@
*
*/
gint
-lxa_open_archive(gchar *path, LXAArchive **lp_archive)
+lxa_open_archive(gchar *path, LXAArchive **lp_archive, GCallback
initialized_func)
{
if(!g_file_test(path, G_FILE_TEST_EXISTS))
{
@@ -90,7 +89,7 @@
return 1;
}
- LXAArchive *archive = lxa_archive_new(path, LXA_ARCHIVETYPE_UNKNOWN,
LXA_COMPRESSIONTYPE_UNKNOWN);
+ LXAArchive *archive = lxa_archive_new(path, LXA_ARCHIVETYPE_UNKNOWN,
LXA_COMPRESSIONTYPE_UNKNOWN, initialized_func);
(*lp_archive) = archive;
return 0;
}
Modified: xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
===================================================================
--- xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
2006-07-17 05:52:29 UTC (rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/libxarchiver/libxarchiver.h
2006-07-17 12:22:35 UTC (rev 22468)
@@ -22,34 +22,57 @@
G_BEGIN_DECLS
+/*
+ * void
+ * lxa_init()
+ */
void lxa_init();
-int lxa_destroy();
+/*
+ * void
+ * lxa_destroy()
+ */
+void lxa_destroy();
/*
- * XAArchive*
- * lxa_new_archive(gchar *path, LXAArchiveType type, gboolean overwrite)
+ * gint
+ * lxa_new_archive(gchar *path,
+ * LXAArchiveType type,
+ * gboolean overwrite,
+ * LXAArchive &&lp_archive)
*
+ * returns:
+ * 0 -- success
*/
gint
-lxa_new_archive(gchar *path, LXAArchiveType, LXACompressionType, gboolean
overwrite, LXAArchive **lp_archive);
+lxa_new_archive( gchar *path,
+ LXAArchiveType,
+ LXACompressionType,
+ gboolean overwrite,
+ LXAArchive **lp_archive );
/*
+ * gint
+ * lxa_open_archive(gchar *path,
+ * LXAArchive **lp_archive)
*
- * XAArchive*
- * lxa_open_archive(gchar *path)
- * path: path to archive to open
- *
* returns:
- * archive object when archive exists.
- * NULL when archive does not exist.
- *
+ * 0 -- success
*/
gint
-lxa_open_archive(gchar *path, LXAArchive **lp_archive);
+lxa_open_archive( gchar *path,
+ LXAArchive **lp_archive,
+
GCallback initialized_func);
-void lxa_close_archive(LXAArchive *archive);
+/*
+ * void
+ * lxa_close_archive( LXAArchive **lp_archive )
+ *
+ */
+void
+lxa_close_archive( LXAArchive *archive );
+
G_END_DECLS
#endif /* __LIBXARCHIVER_H__ */
Modified: xarchiver/branches/xarchiver-psybsd/src/main.c
===================================================================
--- xarchiver/branches/xarchiver-psybsd/src/main.c 2006-07-17 05:52:29 UTC
(rev 22467)
+++ xarchiver/branches/xarchiver-psybsd/src/main.c 2006-07-17 12:22:35 UTC
(rev 22468)
@@ -36,6 +36,11 @@
gboolean add_archive = FALSE;
gchar *add_archive_path = NULL;
+gchar **_argv;
+gint _argc;
+
+gpointer command;
+
gint opened_archives = 0;
/*
@@ -58,12 +63,15 @@
switch(archive->status)
{
case(LXA_ARCHIVESTATUS_IDLE):
- msg_string = _("Operation complete");
- dialog = gtk_message_dialog_new
(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,msg_string,
archive->path);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog),
GTK_RESPONSE_YES);
- gtk_dialog_run (GTK_DIALOG (dialog) );
- gtk_widget_destroy (GTK_WIDGET (dialog) );
- opened_archives--;
+ if(archive->oldstatus != LXA_ARCHIVESTATUS_INIT)
+ {
+ msg_string = _("Operation complete");
+ dialog = gtk_message_dialog_new
(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_INFO,GTK_BUTTONS_OK,msg_string,
archive->path);
+ gtk_dialog_set_default_response (GTK_DIALOG
(dialog), GTK_RESPONSE_YES);
+ gtk_dialog_run (GTK_DIALOG (dialog) );
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ opened_archives--;
+ }
break;
case(LXA_ARCHIVESTATUS_ERROR):
switch(archive->oldstatus)
@@ -84,8 +92,9 @@
gtk_widget_destroy (GTK_WIDGET (dialog) );
opened_archives--;
break;
+ case(LXA_ARCHIVESTATUS_ADD):
+ break;
case(LXA_ARCHIVESTATUS_USERBREAK):
- case(LXA_ARCHIVESTATUS_ADD):
case(LXA_ARCHIVESTATUS_REMOVE):
case(LXA_ARCHIVESTATUS_EXTRACT):
case(LXA_ARCHIVESTATUS_VIEW):
@@ -97,6 +106,42 @@
}
}
+void
+archive_operation_failed(LXAArchive *archive, gpointer data)
+{
+
+
+}
+
+void
+archive_initialized(LXAArchive *archive, gpointer data)
+{
+ GtkWidget *dialog;
+ GSList *files = NULL;
+ gint i = 0;
+ if(add_archive_path)
+ {
+ for(i = 1; i < _argc; i++)
+ {
+ if(g_file_test(_argv[i], G_FILE_TEST_EXISTS))
+ files = g_slist_prepend(files, _argv[i]);
+ else
+ {
+ dialog = gtk_message_dialog_new
(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("File '%s' does not
exist: ABORTING"), _argv[i]);
+ gtk_dialog_set_default_response (GTK_DIALOG
(dialog), GTK_RESPONSE_YES);
+ gtk_dialog_run (GTK_DIALOG (dialog) );
+ gtk_widget_destroy (GTK_WIDGET (dialog) );
+ g_slist_free(files);
+ lxa_close_archive(archive);
+ gtk_main_quit();
+ }
+ }
+ lxa_archive_add(archive, files);
+ }
+ if(extract_archive_path)
+ lxa_archive_extract(archive, files, extract_archive_path);
+}
+
int main(int argc, char **argv)
{
GError *cli_error = NULL;
@@ -116,6 +161,8 @@
lxa_init();
+ _argc = argc;
+ _argv = argv;
if(extract_archive_path || extract_archive)
{
if(argc == 1)
@@ -130,10 +177,12 @@
}
for(i = 1; i < argc; i++)
{
- if(!lxa_open_archive(argv[i], &xa_archive))
+ if(!lxa_open_archive(argv[i], &xa_archive,
G_CALLBACK(archive_initialized)))
{
opened_archives++;
g_signal_connect(G_OBJECT(xa_archive),
"lxa_status_changed", G_CALLBACK(archive_status_changed), NULL);
+ g_signal_connect(G_OBJECT(xa_archive),
"lxa_init_complete", G_CALLBACK(archive_initialized), NULL);
+ g_signal_connect(G_OBJECT(xa_archive),
"lxa_operation_failure", G_CALLBACK(archive_operation_failed), NULL);
lxa_archive_extract(xa_archive, files,
extract_archive_path);
}
else
@@ -157,26 +206,12 @@
}
if(add_archive_path)
{
- if(!lxa_open_archive(add_archive_path, &xa_archive))
+ if(!lxa_open_archive(add_archive_path, &xa_archive,
G_CALLBACK(archive_initialized)))
{
+ g_signal_connect(G_OBJECT(xa_archive),
"lxa_status_changed", G_CALLBACK(archive_status_changed), NULL);
+ g_signal_connect(G_OBJECT(xa_archive),
"lxa_init_complete", G_CALLBACK(archive_initialized), NULL);
+ g_signal_connect(G_OBJECT(xa_archive),
"lxa_operation_failure", G_CALLBACK(archive_operation_failed), NULL);
opened_archives++;
- for(i = 1; i < argc; i++)
- {
- if(g_file_test(argv[i],
G_FILE_TEST_EXISTS))
- files = g_slist_prepend(files,
argv[i]);
- else
- {
- dialog = gtk_message_dialog_new
(NULL,GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("File '%s' does not
exist: ABORTING"), argv[i]);
- gtk_dialog_set_default_response
(GTK_DIALOG (dialog), GTK_RESPONSE_YES);
- gtk_dialog_run (GTK_DIALOG
(dialog) );
- gtk_widget_destroy (GTK_WIDGET
(dialog) );
- g_slist_free(files);
- lxa_close_archive(xa_archive);
- return 1;
- }
- }
- g_signal_connect(G_OBJECT(xa_archive),
"lxa_status_changed", G_CALLBACK(archive_status_changed), NULL);
- lxa_archive_add(xa_archive, files);
}
else
{
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits