[file-roller] allow to specify different package names using a configuration file
- From: Paolo Bacchilega <paobac src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [file-roller] allow to specify different package names using a configuration file
- Date: Mon, 21 Dec 2009 22:22:08 +0000 (UTC)
commit 5e15ec065a0d79efe8cc1038c2d970b5a2b5b32b
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Dec 21 22:40:36 2009 +0100
allow to specify different package names using a configuration file
[bug #603757]
data/Makefile.am | 5 +++++
data/packages.match | 28 ++++++++++++++++++++++++++++
data/packages.match.in | 2 ++
data/update-packages-match | 2 ++
src/Makefile.am | 3 +++
src/dlg-package-installer.c | 35 +++++++++++++++++++++++++++++++++++
src/fr-command-7z.c | 6 +++---
src/fr-command-ace.c | 2 +-
src/fr-command-alz.c | 2 +-
src/fr-command-ar.c | 2 +-
src/fr-command-arj.c | 2 +-
src/fr-command-cfile.c | 16 ++++++++--------
src/fr-command-cpio.c | 2 +-
src/fr-command-iso.c | 2 +-
src/fr-command-jar.c | 2 +-
src/fr-command-lha.c | 2 +-
src/fr-command-rar.c | 2 +-
src/fr-command-rpm.c | 2 +-
src/fr-command-tar.c | 18 +++++++++---------
src/fr-command-unstuff.c | 2 +-
src/fr-command-zip.c | 2 +-
src/fr-command-zoo.c | 2 +-
src/fr-command.h | 2 ++
23 files changed, 110 insertions(+), 33 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 7ac1e69..289c22f 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -8,6 +8,9 @@ desktop_in_files = $(desktop_in_in_files:.desktop.in.in=.desktop.in)
desktopdir = $(datadir)/applications
desktop_DATA = $(desktop_in_files:.desktop.in=.desktop)
+matchdir = $(datadir)/file-roller
+match_DATA = packages.match
+
schemadir = @GCONF_SCHEMA_FILE_DIR@
schema_DATA = file-roller.schemas
@@ -34,6 +37,8 @@ EXTRA_DIST = \
$(desktop_in_in_files) \
$(desktop_in_files) \
$(desktop_DATA) \
+ packages.match.in \
+ packages.match \
$(schema_DATA)
diff --git a/data/packages.match b/data/packages.match
new file mode 100644
index 0000000..d5aac1c
--- /dev/null
+++ b/data/packages.match
@@ -0,0 +1,28 @@
+[Package Matches]
+arj=
+binutils=
+bzip2=
+cpio=
+genisoimage=
+gzip=
+lha=
+lzip=
+lzma=
+lzop=
+ncompress=
+p7zip=
+p7zip-full=
+p7zip-rar=
+rar=
+rpm=
+rzip=
+tar=
+unace=
+unalz=
+unrar=
+unstaff=
+unzip=
+xz=
+zip=
+zoo=
+
diff --git a/data/packages.match.in b/data/packages.match.in
new file mode 100644
index 0000000..2769432
--- /dev/null
+++ b/data/packages.match.in
@@ -0,0 +1,2 @@
+[Package Matches]
+ NAMES@
diff --git a/data/update-packages-match b/data/update-packages-match
new file mode 100644
index 0000000..4a1a8e3
--- /dev/null
+++ b/data/update-packages-match
@@ -0,0 +1,2 @@
+list=`find .. -iname "*.c" | xargs grep PACKAGES | sed -e 's/.*PACKAGES[ ]*[(]"\([^"]*\)"[)];/\1/g' -e 's/,/\n/g' | sort -u | sed -e 's/\(.*\)/\1=/g' | tr '\n' '|'`
+sed -e 's/@NAMES@/'"$list"'/g' < packages.match.in | tr '|' '\n' > packages.match
diff --git a/src/Makefile.am b/src/Makefile.am
index 6c8e767..402104f 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -15,10 +15,12 @@ DISABLE_DEPRECATED =
endif
if RUN_IN_PLACE
+privdatadir = $(top_srcdir)/data/
uidir = $(top_srcdir)/data/ui
privexecdir = $(abs_top_builddir)/src/commands/
shdir = $(top_srcdir)/src/sh/
else
+privdatadir = $(datadir)/file-roller/
uidir = $(datadir)/file-roller/ui
privexecdir = $(libexecdir)/file-roller/
shdir = $(libexecdir)/file-roller/
@@ -31,6 +33,7 @@ INCLUDES = \
-DFR_PREFIX=\"$(prefix)\" \
-DFR_SYSCONFDIR=\"$(sysconfdir)\" \
-DFR_DATADIR=\"$(datadir)\" \
+ -DPRIVDATADIR=\"$(privdatadir)\" \
-DUI_DIR=\"$(uidir)\" \
-DFR_LIBDIR=\"$(libdir)\" \
-DPKG_DATA_DIR=\"$(pkgdatadir)\" \
diff --git a/src/dlg-package-installer.c b/src/dlg-package-installer.c
index d7b2587..e9a7471 100644
--- a/src/dlg-package-installer.c
+++ b/src/dlg-package-installer.c
@@ -100,6 +100,38 @@ packagekit_install_package_call_notify_cb (DBusGProxy *proxy,
}
+static char **
+get_packages_real_names (char **names)
+{
+ char **real_names;
+ GKeyFile *key_file;
+ char *filename;
+ int i;
+
+ real_names = g_new0 (char *, g_strv_length (names));
+ key_file = g_key_file_new ();
+ filename = g_build_filename (PRIVDATADIR, "packages.match", NULL);
+ g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, NULL);
+
+ for (i = 0; names[i] != NULL; i++) {
+ char *real_name;
+
+ real_name = g_key_file_get_string (key_file, "Package Matches", names[i], NULL);
+ if (real_name != NULL)
+ real_name = g_strstrip (real_name);
+ if ((real_name == NULL) || (strncmp (real_name, "", 1) == 0))
+ real_names[i] = g_strdup (real_name);
+
+ g_free (real_name);
+ }
+
+ g_free (filename);
+ g_key_file_free (key_file);
+
+ return real_names;
+}
+
+
static void
install_packages (InstallerData *idata)
{
@@ -119,6 +151,7 @@ install_packages (InstallerData *idata)
GdkWindow *window;
guint xid;
char **names;
+ char **real_names;
DBusGProxyCall *call;
window = gtk_widget_get_window (GTK_WIDGET (idata->window));
@@ -130,6 +163,7 @@ install_packages (InstallerData *idata)
dbus_g_proxy_set_default_timeout (proxy, INT_MAX);
names = g_strsplit (idata->packages, ",", -1);
+ real_names = get_packages_real_names (names);
call = dbus_g_proxy_begin_call (proxy,
"InstallPackageNames",
(DBusGProxyCallNotify) packagekit_install_package_call_notify_cb,
@@ -141,6 +175,7 @@ install_packages (InstallerData *idata)
G_TYPE_INVALID);
success = (call != NULL);
+ g_strfreev (real_names);
g_strfreev (names);
}
}
diff --git a/src/fr-command-7z.c b/src/fr-command-7z.c
index 1990cd7..a5460d7 100644
--- a/src/fr-command-7z.c
+++ b/src/fr-command-7z.c
@@ -596,11 +596,11 @@ fr_command_7z_get_packages (FrCommand *comm,
const char *mime_type)
{
if (is_mime_type (mime_type, "application/x-rar"))
- return "p7zip,p7zip-rar";
+ return PACKAGES ("p7zip,p7zip-rar");
else if (is_mime_type (mime_type, "application/zip") || is_mime_type (mime_type, "application/vnd.ms-cab-compressed"))
- return "p7zip,p7zip-full";
+ return PACKAGES ("p7zip,p7zip-full");
else
- return "p7zip";
+ return PACKAGES ("p7zip");
}
diff --git a/src/fr-command-ace.c b/src/fr-command-ace.c
index dfdd7cc..c6e889e 100644
--- a/src/fr-command-ace.c
+++ b/src/fr-command-ace.c
@@ -264,7 +264,7 @@ static const char *
fr_command_ace_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "unace";
+ return PACKAGES ("unace");
}
diff --git a/src/fr-command-alz.c b/src/fr-command-alz.c
index d46d141..d800e6c 100644
--- a/src/fr-command-alz.c
+++ b/src/fr-command-alz.c
@@ -327,7 +327,7 @@ static const char *
fr_command_alz_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "unalz";
+ return PACKAGES ("unalz");
}
diff --git a/src/fr-command-ar.c b/src/fr-command-ar.c
index d4658a7..143687e 100644
--- a/src/fr-command-ar.c
+++ b/src/fr-command-ar.c
@@ -312,7 +312,7 @@ static const char *
fr_command_ar_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "binutils";
+ return PACKAGES ("binutils");
}
diff --git a/src/fr-command-arj.c b/src/fr-command-arj.c
index 6c9b700..0a8840c 100644
--- a/src/fr-command-arj.c
+++ b/src/fr-command-arj.c
@@ -345,7 +345,7 @@ static const char *
fr_command_arj_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "arj";
+ return PACKAGES ("arj");
}
diff --git a/src/fr-command-cfile.c b/src/fr-command-cfile.c
index 9685e39..d986575 100644
--- a/src/fr-command-cfile.c
+++ b/src/fr-command-cfile.c
@@ -537,21 +537,21 @@ fr_command_cfile_get_packages (FrCommand *comm,
const char *mime_type)
{
if (is_mime_type (mime_type, "application/x-gzip"))
- return "gzip";
+ return PACKAGES ("gzip");
else if (is_mime_type (mime_type, "application/x-bzip"))
- return "bzip2";
+ return PACKAGES ("bzip2");
else if (is_mime_type (mime_type, "application/x-compress"))
- return "ncompress";
+ return PACKAGES ("ncompress");
else if (is_mime_type (mime_type, "application/x-lzip"))
- return "lzip";
+ return PACKAGES ("lzip");
else if (is_mime_type (mime_type, "application/x-lzma"))
- return "lzma";
+ return PACKAGES ("lzma");
else if (is_mime_type (mime_type, "application/x-xz"))
- return "xz";
+ return PACKAGES ("xz");
else if (is_mime_type (mime_type, "application/x-lzop"))
- return "lzop";
+ return PACKAGES ("lzop");
else if (is_mime_type (mime_type, "application/x-rzip"))
- return "rzip";
+ return PACKAGES ("rzip");
return NULL;
}
diff --git a/src/fr-command-cpio.c b/src/fr-command-cpio.c
index 095b33d..0f5219b 100644
--- a/src/fr-command-cpio.c
+++ b/src/fr-command-cpio.c
@@ -245,7 +245,7 @@ static const char *
fr_command_cpio_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "cpio";
+ return PACKAGES ("cpio");
}
diff --git a/src/fr-command-iso.c b/src/fr-command-iso.c
index b275e53..011c734 100644
--- a/src/fr-command-iso.c
+++ b/src/fr-command-iso.c
@@ -230,7 +230,7 @@ static const char *
fr_command_iso_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "genisoimage";
+ return PACKAGES ("genisoimage");
}
diff --git a/src/fr-command-jar.c b/src/fr-command-jar.c
index e25c8c7..3edb2e9 100644
--- a/src/fr-command-jar.c
+++ b/src/fr-command-jar.c
@@ -176,7 +176,7 @@ static const char *
fr_command_jar_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "zip,unzip";
+ return PACKAGES ("zip,unzip");
}
diff --git a/src/fr-command-lha.c b/src/fr-command-lha.c
index a87c208..8fce58c 100644
--- a/src/fr-command-lha.c
+++ b/src/fr-command-lha.c
@@ -330,7 +330,7 @@ static const char *
fr_command_lha_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "lha";
+ return PACKAGES ("lha");
}
diff --git a/src/fr-command-rar.c b/src/fr-command-rar.c
index d1c27b9..482ab57 100644
--- a/src/fr-command-rar.c
+++ b/src/fr-command-rar.c
@@ -719,7 +719,7 @@ static const char *
fr_command_rar_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "rar,unrar";
+ return PACKAGES ("rar,unrar");
}
diff --git a/src/fr-command-rpm.c b/src/fr-command-rpm.c
index bdbc01a..73f5e39 100644
--- a/src/fr-command-rpm.c
+++ b/src/fr-command-rpm.c
@@ -244,7 +244,7 @@ static const char *
fr_command_rpm_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "cpio,rpm";
+ return PACKAGES ("cpio,rpm");
}
diff --git a/src/fr-command-tar.c b/src/fr-command-tar.c
index 7430c1e..7e364ab 100644
--- a/src/fr-command-tar.c
+++ b/src/fr-command-tar.c
@@ -1050,23 +1050,23 @@ fr_command_tar_get_packages (FrCommand *comm,
const char *mime_type)
{
if (is_mime_type (mime_type, "application/x-tar"))
- return "tar";
+ return PACKAGES ("tar");
else if (is_mime_type (mime_type, "application/x-compressed-tar"))
- return "tar,gzip";
+ return PACKAGES ("tar,gzip");
else if (is_mime_type (mime_type, "application/x-bzip-compressed-tar"))
- return "tar,bzip2";
+ return PACKAGES ("tar,bzip2");
else if (is_mime_type (mime_type, "application/x-tarz"))
- return "tar,gzip,ncompress";
+ return PACKAGES ("tar,gzip,ncompress");
else if (is_mime_type (mime_type, "application/x-lzip-compressed-tar"))
- return "tar,lzip";
+ return PACKAGES ("tar,lzip");
else if (is_mime_type (mime_type, "application/x-lzma-compressed-tar"))
- return "tar,lzma";
+ return PACKAGES ("tar,lzma");
else if (is_mime_type (mime_type, "application/x-xz-compressed-tar"))
- return "tar,xz";
+ return PACKAGES ("tar,xz");
else if (is_mime_type (mime_type, "application/x-lzop-compressed-tar"))
- return "tar,lzop";
+ return PACKAGES ("tar,lzop");
else if (is_mime_type (mime_type, "application/x-7z-compressed-tar"))
- return "tar,p7zip";
+ return PACKAGES ("tar,p7zip");
return NULL;
}
diff --git a/src/fr-command-unstuff.c b/src/fr-command-unstuff.c
index c2794ca..5bd5e36 100644
--- a/src/fr-command-unstuff.c
+++ b/src/fr-command-unstuff.c
@@ -305,7 +305,7 @@ static const char *
fr_command_unstaff_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "unstaff";
+ return PACKAGES ("unstaff");
}
diff --git a/src/fr-command-zip.c b/src/fr-command-zip.c
index 63c516a..3e651f7 100644
--- a/src/fr-command-zip.c
+++ b/src/fr-command-zip.c
@@ -411,7 +411,7 @@ static const char *
fr_command_zip_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "zip,unzip";
+ return PACKAGES ("zip,unzip");
}
diff --git a/src/fr-command-zoo.c b/src/fr-command-zoo.c
index 7429302..00b79de 100644
--- a/src/fr-command-zoo.c
+++ b/src/fr-command-zoo.c
@@ -349,7 +349,7 @@ static const char *
fr_command_zoo_get_packages (FrCommand *comm,
const char *mime_type)
{
- return "zoo";
+ return PACKAGES ("zoo");
}
diff --git a/src/fr-command.h b/src/fr-command.h
index dad77fb..39b18de 100644
--- a/src/fr-command.h
+++ b/src/fr-command.h
@@ -27,6 +27,8 @@
#include "file-data.h"
#include "fr-process.h"
+#define PACKAGES(x) (x)
+
#define FR_TYPE_COMMAND (fr_command_get_type ())
#define FR_COMMAND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), FR_TYPE_COMMAND, FrCommand))
#define FR_COMMAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), FR_TYPE_COMMAND, FrCommandClass))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]