61 lines
2.3 KiB
Diff
61 lines
2.3 KiB
Diff
|
This makes Engrampa use bsdtar to extract .RPM packages instead of using cpio.
|
||
|
It is useful on systems that do not have cpio or RPM/YUM
|
||
|
This patch was created for Arch Linux, however should work on any system that has bsdtar capable of handling cpio archives.
|
||
|
|
||
|
------------------+
|
||
|
rpm2cpio.c | 2 +-
|
||
|
fr-command-rpm.c | 8 ++++----
|
||
|
2 files changed, 5 insertions(+), 5 deletions(-)
|
||
|
|
||
|
Index: src/commands/rpm2cpio.c
|
||
|
================================
|
||
|
--- mate-file-archiver-1.6.0/src/commands/rpm2cpio.c 2013-03-31
|
||
|
+++ mate-file-archiver-1.6.0/src/commands/rpm2cpio.c 2013-07-26
|
||
|
@@ -128,7 +128,7 @@
|
||
|
archive_command = "bzip2 -dc";
|
||
|
fclose (stream);
|
||
|
|
||
|
- command = g_strdup_printf ("sh -c \"dd if=%s ibs=%u skip=1 2>/dev/null | %s | cpio %s\"", g_shell_quote (filename), offset, archive_command, cpio_args->str);
|
||
|
+ command = g_strdup_printf ("sh -c \"dd if=%s ibs=%u skip=1 2>/dev/null | %s | bsdtar %s\"", g_shell_quote (filename), offset, archive_command, cpio_args->str);
|
||
|
|
||
|
return system (command);
|
||
|
}
|
||
|
Index: src/fr-command-rpm.c
|
||
|
================================
|
||
|
--- mate-file-archiver-1.6.0/src/fr-command-rpm.c 2013-03-31
|
||
|
+++ mate-file-archiver-1.6.0/src/fr-command-rpm.c 2013-07-26
|
||
|
@@ -175,7 +175,7 @@
|
||
|
|
||
|
fr_process_begin_command (comm->process, "sh");
|
||
|
fr_process_add_arg (comm->process, "-c");
|
||
|
- fr_process_add_arg_concat (comm->process, PRIVEXECDIR "rpm2cpio ", comm->e_filename, " -itv", NULL);
|
||
|
+ fr_process_add_arg_concat (comm->process, PRIVEXECDIR "rpm2cpio ", comm->e_filename, " -tvf -", NULL);
|
||
|
fr_process_end_command (comm->process);
|
||
|
fr_process_start (comm->process);
|
||
|
}
|
||
|
@@ -200,7 +200,7 @@
|
||
|
|
||
|
cmd = g_string_new (PRIVEXECDIR "rpm2cpio ");
|
||
|
g_string_append (cmd, comm->e_filename);
|
||
|
- g_string_append (cmd, " -idu ");
|
||
|
+ g_string_append (cmd, " -xf - ");
|
||
|
for (scan = file_list; scan; scan = scan->next) {
|
||
|
char *filename = g_shell_quote (scan->data);
|
||
|
g_string_append (cmd, filename);
|
||
|
@@ -233,7 +233,7 @@
|
||
|
FrCommandCap capabilities;
|
||
|
|
||
|
capabilities = FR_COMMAND_CAN_ARCHIVE_MANY_FILES;
|
||
|
- if (is_program_available ("cpio", check_command))
|
||
|
+ if (is_program_available ("bsdtar", check_command))
|
||
|
capabilities |= FR_COMMAND_CAN_READ;
|
||
|
|
||
|
return capabilities;
|
||
|
@@ -244,7 +244,7 @@
|
||
|
fr_command_rpm_get_packages (FrCommand *comm,
|
||
|
const char *mime_type)
|
||
|
{
|
||
|
- return PACKAGES ("cpio,rpm");
|
||
|
+ return PACKAGES ("bsdtar,rpm");
|
||
|
}
|