milis/talimatname/genel/e/engrampa/fr-rpm-bsdtar.patch

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");
}