summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2014-05-12 16:32:55 -0300
committerNicolás Reynolds <fauno@endefensadelsl.org>2014-05-12 16:32:55 -0300
commite3acfdf0b0b71c3180b756bdc7ff4a8090bb5e00 (patch)
treeda2f71ca3469aea362df4b9885b01bcc068bfc91
parent6abc75d5f0c4d5c8302715a7da59cc02d22fbe36 (diff)
parent8d0f4ac4cbf56fc5c5cadb5ba09c35e3674a886b (diff)
Merge branch 'master' of vparabola:abslibre
Conflicts: pcr/tomb/PKGBUILD
-rw-r--r--kernels/linux-libre-lts-knock/PKGBUILD12
-rw-r--r--kernels/linux-libre-pae/0011-kernfs-fix-removed-error-check.patch13
-rw-r--r--kernels/linux-libre-pae/0012-fix-saa7134.patch37
-rw-r--r--kernels/linux-libre-pae/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch13
-rw-r--r--kernels/linux-libre-pae/0015-fix-xsdt-validation.patch42
-rw-r--r--kernels/linux-libre-pae/PKGBUILD66
-rw-r--r--kernels/linux-libre-pae/config9
-rw-r--r--kernels/linux-libre-xen/0011-kernfs-fix-removed-error-check.patch13
-rw-r--r--kernels/linux-libre-xen/0012-fix-saa7134.patch37
-rw-r--r--kernels/linux-libre-xen/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch13
-rw-r--r--kernels/linux-libre-xen/0015-fix-xsdt-validation.patch42
-rw-r--r--kernels/linux-libre-xen/PKGBUILD66
-rw-r--r--kernels/linux-libre-xen/config9
-rw-r--r--libre-multilib/lib32-mesa-libcl/PKGBUILD4
-rw-r--r--libre/abs/PKGBUILD16
-rw-r--r--libre/apache-ant/PKGBUILD6
-rw-r--r--libre/atool-libre/PKGBUILD19
-rw-r--r--libre/atool-libre/libre.patch309
-rw-r--r--libre/atool-libre/rePKGBUILD27
-rw-r--r--libre/atril-libre/PKGBUILD11
-rw-r--r--libre/atril-libre/libarchive.patch91
-rw-r--r--libre/audacious-plugins-libre/PKGBUILD13
-rw-r--r--libre/calibre-libre/PKGBUILD34
-rw-r--r--libre/calibre-libre/libre.patch761
-rw-r--r--libre/clementine-libre/PKGBUILD30
-rw-r--r--libre/clementine-libre/clementine-unistd.patch11
-rw-r--r--libre/cups-filters-libre/PKGBUILD8
-rw-r--r--libre/doublecmd-libre/PKGBUILD44
-rw-r--r--libre/doublecmd-libre/help-libre.patch153
-rw-r--r--libre/doublecmd-libre/libre.patch407
-rw-r--r--libre/engrampa-libre/PKGBUILD7
-rw-r--r--libre/evince-libre/PKGBUILD51
-rw-r--r--libre/evince-libre/evince.install (renamed from pcr/gnome-boxes-libre/gnome-boxes.install)12
-rw-r--r--libre/evince-libre/libarchive.patch91
-rw-r--r--libre/gnome-boxes-libre/PKGBUILD48
-rw-r--r--libre/gnome-boxes-libre/gnome-boxes.install12
-rw-r--r--libre/gnome-boxes-libre/libre.patch69
-rw-r--r--libre/grub/PKGBUILD20
-rw-r--r--libre/grub/grub-10_linux-detect-parabola-initramfs.patch54
-rw-r--r--libre/grub/grub-10_linux-rebrand-free-distros.patch (renamed from libre/grub/10_linux.in.patch)0
-rw-r--r--libre/gst-plugins-bad-libre/PKGBUILD8
-rw-r--r--libre/icecat-adblock-plus/PKGBUILD8
-rw-r--r--libre/icecat-firebug/PKGBUILD8
-rw-r--r--libre/icecat-noscript/PKGBUILD6
-rw-r--r--libre/icedove-l10n/PKGBUILD114
-rw-r--r--libre/icedove-libre/PKGBUILD8
-rw-r--r--libre/iceweasel-adblock-plus/PKGBUILD8
-rw-r--r--libre/iceweasel-firebug/PKGBUILD8
-rw-r--r--libre/iceweasel-l10n/PKGBUILD168
-rw-r--r--libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch4
-rw-r--r--libre/iceweasel-libre/PKGBUILD39
-rw-r--r--libre/iceweasel-libre/iceweasel-install-dir.patch30
-rw-r--r--libre/iceweasel-libre/mozconfig1
-rw-r--r--libre/iceweasel-libre/vendor.js3
-rw-r--r--libre/iceweasel-noscript/PKGBUILD6
-rw-r--r--libre/lesspipe-libre/PKGBUILD53
-rw-r--r--libre/lesspipe-libre/lesspipe.sh1
-rw-r--r--libre/lesspipe-libre/libarchive.patch100
-rw-r--r--libre/libosinfo-libre/PKGBUILD62
-rw-r--r--libre/libosinfo-libre/libre.patch272
-rw-r--r--libre/libretools/PKGBUILD23
-rw-r--r--libre/liferea-libre/PKGBUILD6
-rw-r--r--libre/linux-libre-api-headers/PKGBUILD24
-rw-r--r--libre/linux-libre-api-headers/linux-3.14-xattr_header.patch76
-rw-r--r--libre/linux-libre-grsec/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch110
-rw-r--r--libre/linux-libre-grsec/0008-futex-avoid-race-between-requeue-and-wake.patch94
-rw-r--r--libre/linux-libre-grsec/0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch125
-rw-r--r--libre/linux-libre-grsec/0011-kernfs-fix-removed-error-check.patch13
-rw-r--r--libre/linux-libre-grsec/0012-fix-saa7134.patch37
-rw-r--r--libre/linux-libre-grsec/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch13
-rw-r--r--libre/linux-libre-grsec/0015-fix-xsdt-validation.patch42
-rw-r--r--libre/linux-libre-grsec/PKGBUILD88
-rw-r--r--libre/linux-libre-grsec/config.i6869
-rw-r--r--libre/linux-libre-grsec/config.x86_6413
-rw-r--r--libre/linux-libre-lts/PKGBUILD10
-rw-r--r--libre/linux-libre/0011-kernfs-fix-removed-error-check.patch13
-rw-r--r--libre/linux-libre/0012-fix-saa7134.patch37
-rw-r--r--libre/linux-libre/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch13
-rw-r--r--libre/linux-libre/0015-fix-xsdt-validation.patch42
-rw-r--r--libre/linux-libre/PKGBUILD76
-rw-r--r--libre/linux-libre/config.i6869
-rw-r--r--libre/linux-libre/config.x86_649
-rw-r--r--libre/mc-libre/PKGBUILD20
-rw-r--r--libre/mc-libre/libre.patch319
-rw-r--r--libre/mcomix-libre/PKGBUILD19
-rw-r--r--libre/mcomix-libre/libre.patch421
-rw-r--r--libre/mesa-libcl/PKGBUILD4
-rw-r--r--libre/netsurf-libre/PKGBUILD45
-rw-r--r--libre/netsurf-libre/netsurf.sh4
-rw-r--r--libre/nss/PKGBUILD10
-rw-r--r--libre/ogre-libre/PKGBUILD2
-rw-r--r--libre/openimageio/PKGBUILD6
-rw-r--r--libre/p7zip-libre/9.04-makefile.patch19
-rw-r--r--libre/p7zip-libre/PKGBUILD38
-rw-r--r--libre/p7zip-libre/libre.patch170
-rw-r--r--libre/p7zip-libre/p7zip-libre.patch6540
-rw-r--r--libre/p7zip-libre/parent-folder-icon.patch33
-rw-r--r--libre/pacman/PKGBUILD41
-rw-r--r--libre/parabola-artwork/PKGBUILD (renamed from ~drtan/parabola-artwork/PKGBUILD)8
-rw-r--r--libre/parabola-gnome/PKGBUILD31
-rw-r--r--libre/parabola-gnome/parabola-gnome.install (renamed from ~drtan/parabola-gnome/parabola-gnome.install)0
-rw-r--r--libre/python-reportlab-libre/PKGBUILD14
-rw-r--r--libre/sdl-libre/PKGBUILD11
-rw-r--r--libre/sdl-libre/X11_KeyToUnicode.patch52
-rw-r--r--libre/spectrwm-libre/PKGBUILD10
-rw-r--r--libre/texlive-bin-libre/PKGBUILD15
-rw-r--r--libre/texlive-bin-libre/poppler-0.26.patch104
-rw-r--r--libre/vim-runtime/PKGBUILD6
-rw-r--r--libre/xarchiver-libre/PKGBUILD20
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch18
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch545
-rw-r--r--libre/xarchiver-libre/xarchiver-0.5.3-remove-nonfree-unrar-support.patch525
-rw-r--r--libre/xbmc-libre-lts/PKGBUILD138
-rw-r--r--libre/xbmc-libre-lts/polkit.rules12
-rw-r--r--libre/xbmc-libre-lts/xbmc.install19
-rw-r--r--libre/xbmc-libre-lts/xbmc.service16
-rw-r--r--libre/xbmc-libre/ChangeLog69
-rw-r--r--libre/xbmc-libre/PKGBUILD83
-rw-r--r--libre/xbmc-libre/enable-external-ffmpeg.patch100
-rw-r--r--libre/xbmc-pvr-addons-lts/PKGBUILD30
-rw-r--r--nonprism/claws-mail-nonprism/PKGBUILD23
-rw-r--r--nonprism/claws-mail-nonprism/claws-ssl-1.patch494
-rw-r--r--nonprism/claws-mail-nonprism/claws-ssl-2.patch139
-rw-r--r--nonprism/claws-mail-nonprism/claws-ssl-3.patch241
-rw-r--r--nonprism/darktable-nonprism/PKGBUILD6
-rw-r--r--nonprism/duplicity-nonprism/PKGBUILD28
-rw-r--r--nonprism/icedove-libre-nonprism/PKGBUILD8
-rw-r--r--pcr/font-manager/0001-nonexistent_cache.patch71
-rw-r--r--pcr/font-manager/1001-gcc47.patch18
-rw-r--r--pcr/font-manager/2001-paths.patch25
-rw-r--r--pcr/font-manager/2002-local-fontconfig-path.patch11
-rw-r--r--pcr/font-manager/2003-file-roller-syntax-fix.patch22
-rw-r--r--pcr/font-manager/PKGBUILD58
-rw-r--r--pcr/git-remote-mediawiki/PKGBUILD29
-rw-r--r--pcr/git-send-email/PKGBUILD12
-rw-r--r--pcr/gnash/PKGBUILD59
-rw-r--r--pcr/gnash/gnash-gtk.install22
-rw-r--r--pcr/gnash/nodebug.patch48
-rw-r--r--pcr/gnome-boxes-libre/PKGBUILD44
-rw-r--r--pcr/gnome-boxes-libre/free-distros.patch11
-rw-r--r--pcr/gnome-boxes-libre/logos.patch39
-rw-r--r--pcr/libosinfo-libre/PKGBUILD63
-rw-r--r--pcr/libosinfo-libre/data.patch137
-rw-r--r--pcr/libosinfo-libre/free-distros.patch123
-rw-r--r--pcr/libosinfo-libre/po.patch34
-rw-r--r--pcr/libosinfo-libre/test.patch87
-rw-r--r--pcr/lostfiles/PKGBUILD5
-rwxr-xr-xpcr/md5deep/PKGBUILD26
-rw-r--r--pcr/multipath-tools-git/PKGBUILD44
-rw-r--r--pcr/multipath-tools/PKGBUILD56
-rw-r--r--pcr/multipath-tools/blacklist-cciss-devices.patch30
-rw-r--r--pcr/multipath-tools/buffer-overflows.patch13
-rw-r--r--pcr/multipath-tools/multipath-tools.install9
-rw-r--r--pcr/python2-polib/PKGBUILD25
-rw-r--r--pcr/retroshare/PKGBUILD25
-rw-r--r--pcr/ryzom-hg/PKGBUILD14
-rw-r--r--pcr/tomb/PKGBUILD17
-rw-r--r--pcr/twinkle/PKGBUILD4
-rw-r--r--pcr/youtube-dl-current/PKGBUILD4
-rw-r--r--~drtan/parabola-gnome/PKGBUILD24
160 files changed, 7216 insertions, 8918 deletions
diff --git a/kernels/linux-libre-lts-knock/PKGBUILD b/kernels/linux-libre-lts-knock/PKGBUILD
index 524e28cc6..221f808eb 100644
--- a/kernels/linux-libre-lts-knock/PKGBUILD
+++ b/kernels/linux-libre-lts-knock/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 210405 2014-04-14 20:05:28Z andyrtr $
+# $Id: PKGBUILD 212087 2014-05-06 15:55:48Z bpiotrowski $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
@@ -10,13 +10,13 @@
pkgbase=linux-libre-lts-knock # Build stock -LIBRE-LTS-KNOCK kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.10
-_sublevel=37
+_sublevel=39
_knockpatchver=${_basekernel}
pkgver=${_basekernel}.${_sublevel}
pkgrel=1
-_lxopkgver=${_basekernel}.36 # nearly always the same as pkgver
+_lxopkgver=${_basekernel}.38 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
-url="http://linux-libre.fsfla.org/"
+url="https://gnunet.org/knock"
license=('GPL2')
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
options=('!strip')
@@ -34,7 +34,7 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'criu-no-expert.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.xz")
md5sums=('d562fd52580a3b6b18b6eeb5921d1d5c'
- '2a1d5d0eef6b18029f3e4f472bd9e76f'
+ '0663686c1e5495b999a175aa7809ea92'
'26380d6f05471ef8e065a77d87588009'
'f22e0a6a7634902f5a00eb25ad677c65'
'6550ba0e23b7729cd9db2475bde8fac2'
@@ -44,7 +44,7 @@ md5sums=('d562fd52580a3b6b18b6eeb5921d1d5c'
'04b21c79df0a952c22d681dd4f4562df'
'f3def2cefdcbb954c21d8505d23cc83c'
'd50c1ac47394e9aec637002ef3392bd1'
- '110cc22534f63853ddb84f01e63c129a')
+ 'e5ae030129ed128c61fe29b926476a19')
if [ "$CARCH" != "mips64el" ]; then
# don't use the Loongson-specific patches on non-mips64el arches.
unset source[${#source[@]}-1]
diff --git a/kernels/linux-libre-pae/0011-kernfs-fix-removed-error-check.patch b/kernels/linux-libre-pae/0011-kernfs-fix-removed-error-check.patch
new file mode 100644
index 000000000..b597595c6
--- /dev/null
+++ b/kernels/linux-libre-pae/0011-kernfs-fix-removed-error-check.patch
@@ -0,0 +1,13 @@
+diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
+index 8034706..e01ea4a 100644
+--- a/fs/kernfs/file.c
++++ b/fs/kernfs/file.c
+@@ -484,6 +484,8 @@ static int kernfs_fop_mmap(struct file *file, struct vm_area_struct *vma)
+
+ ops = kernfs_ops(of->kn);
+ rc = ops->mmap(of, vma);
++ if (rc)
++ goto out_put;
+
+ /*
+ * PowerPC's pci_mmap of legacy_mem uses shmem_zero_setup()
diff --git a/kernels/linux-libre-pae/0012-fix-saa7134.patch b/kernels/linux-libre-pae/0012-fix-saa7134.patch
new file mode 100644
index 000000000..070fbc8eb
--- /dev/null
+++ b/kernels/linux-libre-pae/0012-fix-saa7134.patch
@@ -0,0 +1,37 @@
+--- a/drivers/media/pci/saa7134/saa7134-video.c
++++ a/drivers/media/pci/saa7134/saa7134-video.c
+@@ -1243,6 +1243,7 @@ static int video_release(struct file *file)
+ videobuf_streamoff(&dev->cap);
+ res_free(dev, fh, RESOURCE_VIDEO);
+ videobuf_mmap_free(&dev->cap);
++ INIT_LIST_HEAD(&dev->cap.stream);
+ }
+ if (dev->cap.read_buf) {
+ buffer_release(&dev->cap, dev->cap.read_buf);
+@@ -1254,6 +1255,7 @@ static int video_release(struct file *file)
+ videobuf_stop(&dev->vbi);
+ res_free(dev, fh, RESOURCE_VBI);
+ videobuf_mmap_free(&dev->vbi);
++ INIT_LIST_HEAD(&dev->vbi.stream);
+ }
+
+ /* ts-capture will not work in planar mode, so turn it off Hac: 04.05*/
+@@ -1987,17 +1989,12 @@ int saa7134_streamoff(struct file *file, void *priv,
+ enum v4l2_buf_type type)
+ {
+ struct saa7134_dev *dev = video_drvdata(file);
+- int err;
+ int res = saa7134_resource(file);
+
+ if (res != RESOURCE_EMPRESS)
+ pm_qos_remove_request(&dev->qos_request);
+
+- err = videobuf_streamoff(saa7134_queue(file));
+- if (err < 0)
+- return err;
+- res_free(dev, priv, res);
+- return 0;
++ return videobuf_streamoff(saa7134_queue(file));
+ }
+ EXPORT_SYMBOL_GPL(saa7134_streamoff);
+
diff --git a/kernels/linux-libre-pae/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch b/kernels/linux-libre-pae/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
new file mode 100644
index 000000000..2840f190c
--- /dev/null
+++ b/kernels/linux-libre-pae/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
@@ -0,0 +1,13 @@
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 45fa2f1..6088927 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2289,7 +2289,7 @@ EXPORT_SYMBOL(skb_checksum_help);
+ __be16 skb_network_protocol(struct sk_buff *skb, int *depth)
+ {
+ __be16 type = skb->protocol;
+- int vlan_depth = ETH_HLEN;
++ int vlan_depth = skb->mac_len;
+
+ /* Tunnel gso handlers can set protocol to ethernet. */
+ if (type == htons(ETH_P_TEB)) {
diff --git a/kernels/linux-libre-pae/0015-fix-xsdt-validation.patch b/kernels/linux-libre-pae/0015-fix-xsdt-validation.patch
new file mode 100644
index 000000000..82dd2be25
--- /dev/null
+++ b/kernels/linux-libre-pae/0015-fix-xsdt-validation.patch
@@ -0,0 +1,42 @@
+@@ -, +, @@
+ acpi_tb_parse_root_table().
+ Commit: 671cc68dc61f029d44b43a681356078e02d8dab8
+ Subject: ACPICA: Back port and refine validation of the XSDT root table.
+---
+ drivers/acpi/acpica/tbutils.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+--- a/drivers/acpi/acpica/tbutils.c
++++ a/drivers/acpi/acpica/tbutils.c
+@@ -461,6 +461,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ u32 table_count;
+ struct acpi_table_header *table;
+ acpi_physical_address address;
++ acpi_physical_address rsdt_address;
+ u32 length;
+ u8 *table_entry;
+ acpi_status status;
+@@ -488,11 +489,13 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ * as per the ACPI specification.
+ */
+ address = (acpi_physical_address) rsdp->xsdt_physical_address;
++ rsdt_address = (acpi_physical_address) rsdp->rsdt_physical_address;
+ table_entry_size = ACPI_XSDT_ENTRY_SIZE;
+ } else {
+ /* Root table is an RSDT (32-bit physical addresses) */
+
+ address = (acpi_physical_address) rsdp->rsdt_physical_address;
++ rsdt_address = address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+
+@@ -515,8 +518,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+
+ /* Fall back to the RSDT */
+
+- address =
+- (acpi_physical_address) rsdp->rsdt_physical_address;
++ address = rsdt_address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+ }
+
diff --git a/kernels/linux-libre-pae/PKGBUILD b/kernels/linux-libre-pae/PKGBUILD
index f71de8489..327e3da2e 100644
--- a/kernels/linux-libre-pae/PKGBUILD
+++ b/kernels/linux-libre-pae/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 210383 2014-04-14 19:13:09Z tpowa $
+# $Id: PKGBUILD 212093 2014-05-06 20:49:41Z tpowa $
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
@@ -6,7 +6,7 @@
pkgbase=linux-libre-pae # Build stock -LIBRE-PAE kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.14
-pkgver=${_basekernel}.1
+pkgver=${_basekernel}.3
pkgrel=1
arch=('i686')
url="http://linux-libre.fsfla.org/"
@@ -27,22 +27,28 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'0004-fs-Don-t-return-0-from-get_anon_bdev.patch'
'0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch'
'0006-genksyms-fix-typeof-handling.patch'
- '0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch'
- '0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch')
-md5sums=('c108ec52eeb2a9b9ddbb8d12496ff25f'
- '2b4862b3c76011e66e536f18fbf0fb27'
- '44c66dccb03369dd7288540efad706b0'
- 'f302c931bd85309da9d9792b4cc96467'
- '44260d2cb1a8b51c119d2ce1f83e457a'
- '98beb36f9b8cf16e58de2483ea9985e3'
- '6839ddec74a5300beff1709a81b0e4f3'
- '706549e8a05f33f7fc697f28c0ca71d2'
- 'd23fc66be93ebce698bd7da844789de1'
- 'b240cc8ebb4b5d74e94b4c72d033f726'
- 'a89d593774ccb955eb8368d3bc87ce26'
- '16a161979f846b049e90daea907c35dd'
- '00727251b0d337a25d3ca392218afdf4'
- '353b553d69da810ef954618aca60e1e2')
+ '0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch'
+ '0011-kernfs-fix-removed-error-check.patch'
+ '0012-fix-saa7134.patch'
+ '0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch'
+ '0015-fix-xsdt-validation.patch')
+sha256sums=('477555c709b9407fe37dbd70d3331ff9dde1f9d874aba2741f138d07ae6f281b'
+ 'fcd8398a41a7e55e44123857342fd9041ae1bdacbcf8c5099a53293c96e6fba6'
+ 'fa4a0141d51dd76d6b57980278a95614d53c51af1cdf983789ed546a47302e2c'
+ '292d5c553f87246c8dc2d57cadfd2db92a3750173b4588d53c2919743171eca5'
+ '8303b426b1a6dce456b2350003558ae312d21cab0ae6c1f0d7b9d21395f4e177'
+ 'faced4eb4c47c4eb1a9ee8a5bf8a7c4b49d6b4d78efbe426e410730e6267d182'
+ '6d72e14552df59e6310f16c176806c408355951724cd5b48a47bf01591b8be02'
+ '52dec83a8805a8642d74d764494acda863e0aa23e3d249e80d4b457e20a3fd29'
+ '65d58f63215ee3c5f9c4fc6bce36fc5311a6c7dbdbe1ad29de40647b47ff9c0d'
+ '1e1ae0f31f722e80da083ecada1f1be57f9ddad133941820c4483b0240e494c1'
+ '3fffb01cf97a5a7ab9601cb277d2468c0fb1e1cceba4225915f3ffae3a5694ec'
+ 'cf2e7a2d00787f754028e7459688c2755a406e632ce48b60952fa4ff7ed6f4b7'
+ 'c0af4622f75c89fef62183e18b7d49998228d4eaa906c6accaf4aa4ff0134f85'
+ '04f44bf5c181d6dc31905937c1bdccb0f5aecaad3a579e99b302502b9cbe0f7a'
+ '79359454c9d8446eb55add2b1cdbf8332bd67dafb01fefb5b1ca090225f64d18'
+ 'f2a5e22c1ba6e9b8a32a7bd4a5327ee95538aa10edcee3cd12578f8ff49bf6be'
+ '384dd13fd4248fd6809da8c6ae29ced55d4a5cacc33ac2ae7522093ec0fb26d4')
_kernelname=${pkgbase#linux-libre}
_localversionname=-LIBRE-PAE
@@ -85,14 +91,28 @@ prepare() {
# http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dc53324060f324e8af6867f57bf4891c13c6ef18
patch -p1 -i "${srcdir}/0006-genksyms-fix-typeof-handling.patch"
- # Fix the use of code32_start in the EFI boot stub
- # http://permalink.gmane.org/gmane.linux.kernel/1679881
- # https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=urgent&id=7e8213c1f3acc064aef37813a39f13cbfe7c3ce7
- patch -p1 -i "${srcdir}/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch"
-
# https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/commit/?id=12f853a89e29f50b17698e17e73c328a35f1498d
# FS#39815
patch -p1 -i "${srcdir}/0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch"
+
+ # fix Xorg crash with i810 chipset due to wrong removed error check
+ # References: http://lkml.kernel.org/g/533D01BD.1010200@googlemail.com
+ patch -Np1 -i "${srcdir}/0011-kernfs-fix-removed-error-check.patch"
+
+ # fix saa7134 video
+ # https://bugs.archlinux.org/task/39904
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73361
+ patch -Np1 -i "${srcdir}/0012-fix-saa7134.patch"
+
+ # fix tun/openvpn performance
+ # https://bugs.archlinux.org/task/40089
+ # https://bugzilla.kernel.org/show_bug.cgi?id=74051
+ patch -Np1 -i "${srcdir}/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch"
+
+ # fix xsdt validation bug
+ # https://bugs.archlinux.org/task/39811
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73911
+ patch -Np1 -i "${srcdir}/0015-fix-xsdt-validation.patch"
cat "${srcdir}/config" > ./.config # simpler
diff --git a/kernels/linux-libre-pae/config b/kernels/linux-libre-pae/config
index 5e645c853..67838aca7 100644
--- a/kernels/linux-libre-pae/config
+++ b/kernels/linux-libre-pae/config
@@ -252,8 +252,8 @@ CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
@@ -1501,7 +1501,8 @@ CONFIG_DMA_SHARED_BUFFER=y
#
# Bus devices
#
-CONFIG_CONNECTOR=m
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
@@ -1677,7 +1678,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
diff --git a/kernels/linux-libre-xen/0011-kernfs-fix-removed-error-check.patch b/kernels/linux-libre-xen/0011-kernfs-fix-removed-error-check.patch
new file mode 100644
index 000000000..b597595c6
--- /dev/null
+++ b/kernels/linux-libre-xen/0011-kernfs-fix-removed-error-check.patch
@@ -0,0 +1,13 @@
+diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
+index 8034706..e01ea4a 100644
+--- a/fs/kernfs/file.c
++++ b/fs/kernfs/file.c
+@@ -484,6 +484,8 @@ static int kernfs_fop_mmap(struct file *file, struct vm_area_struct *vma)
+
+ ops = kernfs_ops(of->kn);
+ rc = ops->mmap(of, vma);
++ if (rc)
++ goto out_put;
+
+ /*
+ * PowerPC's pci_mmap of legacy_mem uses shmem_zero_setup()
diff --git a/kernels/linux-libre-xen/0012-fix-saa7134.patch b/kernels/linux-libre-xen/0012-fix-saa7134.patch
new file mode 100644
index 000000000..070fbc8eb
--- /dev/null
+++ b/kernels/linux-libre-xen/0012-fix-saa7134.patch
@@ -0,0 +1,37 @@
+--- a/drivers/media/pci/saa7134/saa7134-video.c
++++ a/drivers/media/pci/saa7134/saa7134-video.c
+@@ -1243,6 +1243,7 @@ static int video_release(struct file *file)
+ videobuf_streamoff(&dev->cap);
+ res_free(dev, fh, RESOURCE_VIDEO);
+ videobuf_mmap_free(&dev->cap);
++ INIT_LIST_HEAD(&dev->cap.stream);
+ }
+ if (dev->cap.read_buf) {
+ buffer_release(&dev->cap, dev->cap.read_buf);
+@@ -1254,6 +1255,7 @@ static int video_release(struct file *file)
+ videobuf_stop(&dev->vbi);
+ res_free(dev, fh, RESOURCE_VBI);
+ videobuf_mmap_free(&dev->vbi);
++ INIT_LIST_HEAD(&dev->vbi.stream);
+ }
+
+ /* ts-capture will not work in planar mode, so turn it off Hac: 04.05*/
+@@ -1987,17 +1989,12 @@ int saa7134_streamoff(struct file *file, void *priv,
+ enum v4l2_buf_type type)
+ {
+ struct saa7134_dev *dev = video_drvdata(file);
+- int err;
+ int res = saa7134_resource(file);
+
+ if (res != RESOURCE_EMPRESS)
+ pm_qos_remove_request(&dev->qos_request);
+
+- err = videobuf_streamoff(saa7134_queue(file));
+- if (err < 0)
+- return err;
+- res_free(dev, priv, res);
+- return 0;
++ return videobuf_streamoff(saa7134_queue(file));
+ }
+ EXPORT_SYMBOL_GPL(saa7134_streamoff);
+
diff --git a/kernels/linux-libre-xen/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch b/kernels/linux-libre-xen/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
new file mode 100644
index 000000000..2840f190c
--- /dev/null
+++ b/kernels/linux-libre-xen/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
@@ -0,0 +1,13 @@
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 45fa2f1..6088927 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2289,7 +2289,7 @@ EXPORT_SYMBOL(skb_checksum_help);
+ __be16 skb_network_protocol(struct sk_buff *skb, int *depth)
+ {
+ __be16 type = skb->protocol;
+- int vlan_depth = ETH_HLEN;
++ int vlan_depth = skb->mac_len;
+
+ /* Tunnel gso handlers can set protocol to ethernet. */
+ if (type == htons(ETH_P_TEB)) {
diff --git a/kernels/linux-libre-xen/0015-fix-xsdt-validation.patch b/kernels/linux-libre-xen/0015-fix-xsdt-validation.patch
new file mode 100644
index 000000000..82dd2be25
--- /dev/null
+++ b/kernels/linux-libre-xen/0015-fix-xsdt-validation.patch
@@ -0,0 +1,42 @@
+@@ -, +, @@
+ acpi_tb_parse_root_table().
+ Commit: 671cc68dc61f029d44b43a681356078e02d8dab8
+ Subject: ACPICA: Back port and refine validation of the XSDT root table.
+---
+ drivers/acpi/acpica/tbutils.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+--- a/drivers/acpi/acpica/tbutils.c
++++ a/drivers/acpi/acpica/tbutils.c
+@@ -461,6 +461,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ u32 table_count;
+ struct acpi_table_header *table;
+ acpi_physical_address address;
++ acpi_physical_address rsdt_address;
+ u32 length;
+ u8 *table_entry;
+ acpi_status status;
+@@ -488,11 +489,13 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ * as per the ACPI specification.
+ */
+ address = (acpi_physical_address) rsdp->xsdt_physical_address;
++ rsdt_address = (acpi_physical_address) rsdp->rsdt_physical_address;
+ table_entry_size = ACPI_XSDT_ENTRY_SIZE;
+ } else {
+ /* Root table is an RSDT (32-bit physical addresses) */
+
+ address = (acpi_physical_address) rsdp->rsdt_physical_address;
++ rsdt_address = address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+
+@@ -515,8 +518,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+
+ /* Fall back to the RSDT */
+
+- address =
+- (acpi_physical_address) rsdp->rsdt_physical_address;
++ address = rsdt_address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+ }
+
diff --git a/kernels/linux-libre-xen/PKGBUILD b/kernels/linux-libre-xen/PKGBUILD
index 0d908bea2..3bfe1dc4a 100644
--- a/kernels/linux-libre-xen/PKGBUILD
+++ b/kernels/linux-libre-xen/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 210383 2014-04-14 19:13:09Z tpowa $
+# $Id: PKGBUILD 212093 2014-05-06 20:49:41Z tpowa $
# Contributor: Tobias Powalowski <tpowa@archlinux.org>
# Contributor: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
@@ -6,7 +6,7 @@
pkgbase=linux-libre-xen # Build stock -LIBRE-XEN kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.14
-pkgver=${_basekernel}.1
+pkgver=${_basekernel}.3
pkgrel=1
arch=('i686')
url="http://linux-libre.fsfla.org/"
@@ -27,22 +27,28 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'0004-fs-Don-t-return-0-from-get_anon_bdev.patch'
'0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch'
'0006-genksyms-fix-typeof-handling.patch'
- '0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch'
- '0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch')
-md5sums=('c108ec52eeb2a9b9ddbb8d12496ff25f'
- '2b4862b3c76011e66e536f18fbf0fb27'
- 'b6e58c41ad19afbcef408f8becb8a967'
- 'b7c2805bb287a644c0a303bf7721e534'
- '44260d2cb1a8b51c119d2ce1f83e457a'
- '98beb36f9b8cf16e58de2483ea9985e3'
- '6839ddec74a5300beff1709a81b0e4f3'
- '706549e8a05f33f7fc697f28c0ca71d2'
- 'd23fc66be93ebce698bd7da844789de1'
- 'b240cc8ebb4b5d74e94b4c72d033f726'
- 'a89d593774ccb955eb8368d3bc87ce26'
- '16a161979f846b049e90daea907c35dd'
- '00727251b0d337a25d3ca392218afdf4'
- '353b553d69da810ef954618aca60e1e2')
+ '0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch'
+ '0011-kernfs-fix-removed-error-check.patch'
+ '0012-fix-saa7134.patch'
+ '0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch'
+ '0015-fix-xsdt-validation.patch')
+sha256sums=('477555c709b9407fe37dbd70d3331ff9dde1f9d874aba2741f138d07ae6f281b'
+ 'fcd8398a41a7e55e44123857342fd9041ae1bdacbcf8c5099a53293c96e6fba6'
+ '44d0749d9d2d7f8eec93b260ab5d601433c43d8bf16b6685c3811cf43ba0ed91'
+ '7a475ada892857397cf80d2de777825ae94758dc2d9dfa3754ae3d670f4a2f02'
+ '8303b426b1a6dce456b2350003558ae312d21cab0ae6c1f0d7b9d21395f4e177'
+ 'faced4eb4c47c4eb1a9ee8a5bf8a7c4b49d6b4d78efbe426e410730e6267d182'
+ '6d72e14552df59e6310f16c176806c408355951724cd5b48a47bf01591b8be02'
+ '52dec83a8805a8642d74d764494acda863e0aa23e3d249e80d4b457e20a3fd29'
+ '65d58f63215ee3c5f9c4fc6bce36fc5311a6c7dbdbe1ad29de40647b47ff9c0d'
+ '1e1ae0f31f722e80da083ecada1f1be57f9ddad133941820c4483b0240e494c1'
+ '3fffb01cf97a5a7ab9601cb277d2468c0fb1e1cceba4225915f3ffae3a5694ec'
+ 'cf2e7a2d00787f754028e7459688c2755a406e632ce48b60952fa4ff7ed6f4b7'
+ 'c0af4622f75c89fef62183e18b7d49998228d4eaa906c6accaf4aa4ff0134f85'
+ '04f44bf5c181d6dc31905937c1bdccb0f5aecaad3a579e99b302502b9cbe0f7a'
+ '79359454c9d8446eb55add2b1cdbf8332bd67dafb01fefb5b1ca090225f64d18'
+ 'f2a5e22c1ba6e9b8a32a7bd4a5327ee95538aa10edcee3cd12578f8ff49bf6be'
+ '384dd13fd4248fd6809da8c6ae29ced55d4a5cacc33ac2ae7522093ec0fb26d4')
_kernelname=${pkgbase#linux-libre}
_localversionname=-LIBRE-XEN
@@ -85,14 +91,28 @@ prepare() {
# http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dc53324060f324e8af6867f57bf4891c13c6ef18
patch -p1 -i "${srcdir}/0006-genksyms-fix-typeof-handling.patch"
- # Fix the use of code32_start in the EFI boot stub
- # http://permalink.gmane.org/gmane.linux.kernel/1679881
- # https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=urgent&id=7e8213c1f3acc064aef37813a39f13cbfe7c3ce7
- patch -p1 -i "${srcdir}/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch"
-
# https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/commit/?id=12f853a89e29f50b17698e17e73c328a35f1498d
# FS#39815
patch -p1 -i "${srcdir}/0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch"
+
+ # fix Xorg crash with i810 chipset due to wrong removed error check
+ # References: http://lkml.kernel.org/g/533D01BD.1010200@googlemail.com
+ patch -Np1 -i "${srcdir}/0011-kernfs-fix-removed-error-check.patch"
+
+ # fix saa7134 video
+ # https://bugs.archlinux.org/task/39904
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73361
+ patch -Np1 -i "${srcdir}/0012-fix-saa7134.patch"
+
+ # fix tun/openvpn performance
+ # https://bugs.archlinux.org/task/40089
+ # https://bugzilla.kernel.org/show_bug.cgi?id=74051
+ patch -Np1 -i "${srcdir}/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch"
+
+ # fix xsdt validation bug
+ # https://bugs.archlinux.org/task/39811
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73911
+ patch -Np1 -i "${srcdir}/0015-fix-xsdt-validation.patch"
cat "${srcdir}/config" > ./.config # simpler
diff --git a/kernels/linux-libre-xen/config b/kernels/linux-libre-xen/config
index 76eab6864..7d83b8db4 100644
--- a/kernels/linux-libre-xen/config
+++ b/kernels/linux-libre-xen/config
@@ -252,8 +252,8 @@ CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
@@ -1509,7 +1509,8 @@ CONFIG_DMA_SHARED_BUFFER=y
#
# Bus devices
#
-CONFIG_CONNECTOR=m
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
@@ -1685,7 +1686,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
diff --git a/libre-multilib/lib32-mesa-libcl/PKGBUILD b/libre-multilib/lib32-mesa-libcl/PKGBUILD
index f4f45efda..c8ba9aa3b 100644
--- a/libre-multilib/lib32-mesa-libcl/PKGBUILD
+++ b/libre-multilib/lib32-mesa-libcl/PKGBUILD
@@ -5,7 +5,7 @@ pkgbase=mesa
_pkgname=libcl
pkgname=lib32-$pkgbase-$_pkgname
_pkgflag=libre
-pkgver=10.1.1
+pkgver=10.1.3
pkgrel=1
pkgdesc='Mesa 3-D OpenCL library (32-bit)'
url=http://${pkgbase}3d.sourceforge.net
@@ -32,7 +32,7 @@ provides=(lib32-$_pkgname-$_pkgflag lib32-$_pkgname lib32-opencl-nvidia lib32-op
conflicts=(lib32-$_pkgname-$_pkgflag lib32-$_pkgname lib32-opencl-nvidia lib32-opencl-nvidia-304xx)
replaces=(lib32-$_pkgname-$_pkgflag lib32-$_pkgname lib32-opencl-nvidia lib32-opencl-nvidia-304xx)
source=ftp://ftp.freedesktop.org/pub/$pkgbase/${pkgver%.0}/${pkgbase^}Lib-$pkgver.tar.bz2
-sha512sums=f136d25f6da47bb9f582eafa2f89804b1eae9f0b834a1513cf9f940ef5bd8f438b72600d992d4d9436d2899e0a91d48f4eaabb24bd149c71d3192af5e386dec7
+sha512sums=3c15b3c26db4d104450155c9b48264b6abd9fbe5b1bbe812299c9ce993cde54f8e0c1ffb2b25b9d46c818e870a514c41cac9b88fc1826d735bdf26fad498ce45
build() {
cd $srcdir/${pkgbase^}-$pkgver
diff --git a/libre/abs/PKGBUILD b/libre/abs/PKGBUILD
index f7e85d0ef..657677114 100644
--- a/libre/abs/PKGBUILD
+++ b/libre/abs/PKGBUILD
@@ -1,16 +1,15 @@
-# $Id$
+# $Id: PKGBUILD 166402 2012-09-07 16:49:13Z dreisner $
# Maintainer: Allan McRae <allan@archlinux.org>
-replaces=('abs-libre')
-conflicts=('abs-libre')
-
pkgname=abs
pkgver=2.4.4
-pkgrel=1.1
-pkgdesc="Utilities to download and work with the Arch Build System (ABS)"
+pkgrel=1.2
+pkgdesc="Utilities to download and work with the Arch Build System (ABS), with Parabola repos support"
arch=('i686' 'x86_64' 'mips64el')
url="http://projects.archlinux.org/abs.git/"
license=('GPL')
+replaces=('abs-libre')
+conflicts=('abs-libre')
depends=('bash' 'rsync')
backup=(etc/abs.conf)
source=(ftp://ftp.archlinux.org/other/abs/${pkgname}-${pkgver}.tar.gz{,.sig})
@@ -33,10 +32,15 @@ package() {
install -Dm644 README "${pkgdir}"/var/abs/README
# make adjustments to abs.conf
+ sed -i -e 's|i686 or x86_64|i686, x86_64 or mips64el|' "${pkgdir}"/etc/abs.conf
sed -i -e 's|rsync.archlinux.org|parabolagnulinux.org|' "${pkgdir}"/etc/abs.conf
sed -i -e 's|(core|(libre !libre-testing core|' "${pkgdir}"/etc/abs.conf
+ sed -i -e 's|!staging !community-staging !gnome-unstable !kde-unstable|!pcr !nonprism !kernels !cross !java !java-ugly !~smv !~xihh !~brendan !~lukeshu !~emulatorman !~aurelien !~jorginho !~coadde !~drtan|' "${pkgdir}"/etc/abs.conf
if [[ $CARCH != "x86_64" ]]; then
sed -i -e 's| multilib||' -e 's| !multilib-testing||' "${pkgdir}"/etc/abs.conf
fi
+ if [[ $CARCH = "x86_64" ]]; then
+ sed -i -e 's|community|community libre-multilib|' -e 's|!community-testing|!community-testing !libre-multilib-testing|' "${pkgdir}"/etc/abs.conf
+ fi
sed -i "s/ARCH=.*/ARCH=$CARCH/" "${pkgdir}"/etc/abs.conf
}
diff --git a/libre/apache-ant/PKGBUILD b/libre/apache-ant/PKGBUILD
index a635c6e90..a2f3ab732 100644
--- a/libre/apache-ant/PKGBUILD
+++ b/libre/apache-ant/PKGBUILD
@@ -3,7 +3,7 @@
# Contributor: Andrew Wright <andreww@photism.org>
pkgname=apache-ant
-pkgver=1.9.3
+pkgver=1.9.4
pkgdesc="A Java-based build tool"
license=('Apache' 'custom:BSD3')
url="http://ant.apache.org/"
@@ -12,7 +12,7 @@ provides=("apache-ant-libre=$pkgver")
replaces=("apache-ant-libre")
conflicts=("apache-ant-libre")
-pkgrel=2.2 # newer than Arch's 1.9.3-2
+pkgrel=1
arch=('any')
depends=('java-environment')
makedepends=('jh')
@@ -20,7 +20,7 @@ makedepends=('jh')
_mirror=http://archive.apache.org/dist
source=($_mirror/ant/source/${pkgname}-${pkgver}-src.tar.bz2
${pkgname}.sh ${pkgname}.csh)
-md5sums=('995f21618acdf35beacc465c84d79534'
+md5sums=('7a7253ec047195d755c5318a4de8a3a4'
'bd63c881be406f515fc4d22635e8326a'
'aaa615512cbe1ed7f3b62c1ff46802f8')
diff --git a/libre/atool-libre/PKGBUILD b/libre/atool-libre/PKGBUILD
index f7b13644c..a4f48a7a2 100644
--- a/libre/atool-libre/PKGBUILD
+++ b/libre/atool-libre/PKGBUILD
@@ -9,8 +9,8 @@
_pkgname=atool
pkgname=atool-libre
pkgver=0.39.0
-pkgrel=1.2
-pkgdesc="A script for managing file archives of various types, with unar support included and nonfree unace recommendation removed"
+pkgrel=1.3
+pkgdesc="A script for managing file archives of various types, without nonfree unace and unrar support"
arch=('any')
url="http://www.nongnu.org/atool/"
license=('GPL3')
@@ -26,18 +26,19 @@ optdepends=('bzip2: for using atool with bzip2 compressed archives'
'lzop: for using atool with lzop compressed archives'
'p7zip: for using atool with 7z archives'
'tar: for using atool with tar archives'
- 'unar: for using atool for unpacking rar archives'
'zip: for using atool for creating zip archives'
- 'unzip: for using atool for unpacking zip archives')
-
-source=(http://savannah.nongnu.org/download/$_pkgname/$_pkgname-$pkgver.tar.gz)
-sha256sums=('aaf60095884abb872e25f8e919a8a63d0dabaeca46faeba87d12812d6efc703b')
+ 'unzip: for using atool for unpacking archives')
+changelog=$_pkgname.changelog
+source=(http://savannah.nongnu.org/download/$_pkgname/$_pkgname-$pkgver.tar.gz
+ libre.patch)
+sha256sums=('aaf60095884abb872e25f8e919a8a63d0dabaeca46faeba87d12812d6efc703b'
+ 'c9aa3c72e4c979d236dd659f16cc1eb6841f0860e6ef4d2c90f021d6e5aca578')
prepare() {
cd ${srcdir}/${_pkgname}-${pkgver}
- # replace nonfree unrar to unar
- sed -i 's|unrar|unar|g' $(grep -rlI 'unrar')
+ # remove nonfree unace and unrar support
+ patch -Np1 -i ../libre.patch
}
build() {
diff --git a/libre/atool-libre/libre.patch b/libre/atool-libre/libre.patch
new file mode 100644
index 000000000..11f3b3cb8
--- /dev/null
+++ b/libre/atool-libre/libre.patch
@@ -0,0 +1,309 @@
+diff -Nur atool-0.39.0.orig/atool atool-0.39.0/atool
+--- atool-0.39.0.orig/atool 2012-04-02 15:09:10.000000000 -0300
++++ atool-0.39.0/atool 2014-05-06 04:33:46.263005816 -0300
+@@ -111,16 +111,13 @@
+ $::cfg_path_pbzip2 = 'pbzip2'; # pbzip2 program
+ $::cfg_path_pigz = 'pigz'; # pigz program
+ $::cfg_path_plzip = 'plzip'; # plzip program
+-$::cfg_path_rar = 'rar'; # rar program
+ $::cfg_path_rpm = 'rpm'; # rpm program
+ $::cfg_path_rpm2cpio = 'rpm2cpio'; # rpm2cpio program
+ $::cfg_path_rzip = 'rzip'; # rzip program
+ $::cfg_path_syscfg = File::Spec->catfile($::SYSCONFDIR, $::PROGRAM.'.conf'); # system-wide configuration file
+ $::cfg_path_tar = 'tar'; # tar program
+-$::cfg_path_unace = 'unace'; # unace program
+ $::cfg_path_unalz = 'unalz'; # unalz program
+ $::cfg_path_unarj = 'unarj'; # unarj program
+-$::cfg_path_unrar = 'unrar'; # unrar program
+ $::cfg_path_unzip = 'unzip'; # unzip program
+ $::cfg_path_usercfg = '.'.$::PROGRAM.'rc'; # user configuration file
+ $::cfg_path_xargs = 'xargs'; # xargs program
+@@ -141,7 +138,6 @@
+ $::cfg_use_pbzip2 = 0; # use pbzip2 instead of bzip2
+ $::cfg_use_pigz = 0; # use pigz instead of gzip
+ $::cfg_use_plzip = 0; # use plzip instead of lzip
+-$::cfg_use_rar_for_unpack = 0; # use rar to unpack rar files?
+ $::cfg_use_tar_bzip2_option = 1; # does tar support --bzip2?
+ $::cfg_use_tar_lzma_option = 1; # does tar support --lzma?
+ $::cfg_use_tar_lzip_option = 0; # does tar support --lzip?
+@@ -592,26 +588,6 @@
+ @cmd = handle_empty_add(@cmd) if ($mode eq 'add' && @args == 0);
+ return multiarchivecmd($archive, $outdir, $mode, 0, 0, \@args, @cmd);
+ }
+- elsif ($format eq 'rar') {
+- return undef if ($mode eq 'extract' && !defined ($outdir = makeoutdir()));
+- if ($mode eq 'add' || $::cfg_use_rar_for_unpack) {
+- push @cmd, $::cfg_path_rar;
+- } else {
+- push @cmd, $::cfg_path_unrar;
+- }
+- push @cmd, 'a' if $mode eq 'add';
+- push @cmd, 'vt' if $mode eq 'list' && $::opt_verbosity >= 3;
+- push @cmd, 'v' if $mode eq 'list' && $::opt_verbosity == 2;
+- push @cmd, 'l' if $mode eq 'list' && $::opt_verbosity <= 1;
+- push @cmd, 'x' if ($mode eq 'extract' || $mode eq 'extract-to');
+- push @cmd, '-ierr', 'p' if $mode eq 'cat';
+- push @cmd, '-r0' if ($mode eq 'add');
+- push @cmd, $archive, @args;
+- push @cmd, tailslash($outdir) if $mode eq 'extract';
+- push @cmd, tailslash($::opt_cmd_extract_to) if $mode eq 'extract-to';
+- @cmd = handle_empty_add(@cmd) if ($mode eq 'add' && @args == 0);
+- return multiarchivecmd($archive, $outdir, $mode, 0, 0, \@args, @cmd);
+- }
+ elsif ($format eq '7z') {
+ # 7z has the -so option for writing data to stdout, but it doesn't
+ # write data to terminal even if the file is designed to be
+@@ -673,23 +649,6 @@
+ @cmd = handle_empty_add(@cmd) if ($mode eq 'add' && @args == 0);
+ return multiarchivecmd($archive, $outdir, $mode, 0, 0, \@args, @cmd);
+ }
+- elsif ($format eq 'ace') {
+- return undef if ($mode eq 'extract' && !defined ($outdir = makeoutdir()));
+- push @cmd, $::cfg_path_unace;
+- if ($mode eq 'add' || $mode eq 'cat') {
+- warn "$::basename: ".quote($archive).": $mode command not supported for $format archives\n";
+- return undef;
+- }
+- push @cmd, 'v', '-c' if $mode eq 'list' && $::opt_verbosity >= 3;
+- push @cmd, 'v' if $mode eq 'list' && $::opt_verbosity == 2;
+- push @cmd, 'l' if $mode eq 'list' && $::opt_verbosity <= 1;
+- push @cmd, 'x' if ($mode eq 'extract' || $mode eq 'extract-to');
+- push @cmd, $archive, @args;
+- push @cmd, tailslash($outdir) if $mode eq 'extract';
+- push @cmd, tailslash($::opt_cmd_extract_to) if $mode eq 'extract-to';
+- @cmd = handle_empty_add(@cmd) if ($mode eq 'add' && @args == 0);
+- return multiarchivecmd($archive, $outdir, $mode, 0, 0, \@args, @cmd);
+- }
+ elsif ($format eq 'arj') {
+ return undef if ($mode eq 'extract' && !defined ($outdir = makeoutdir()));
+ if ($mode eq 'cat') {
+@@ -1321,9 +1280,7 @@
+ return $file if ($file =~ s/\.jar$//);
+ return $file if ($file =~ s/\.war$//);
+ return $file if ($file =~ s/\.Z$//);
+- return $file if ($file =~ s/\.rar$//);
+ return $file if ($file =~ s/\.(lha|lzh)$//);
+- return $file if ($file =~ s/\.ace$//);
+ return $file if ($file =~ s/\.arj$//);
+ return $file if ($file =~ s/\.a$//);
+ return $file if ($file =~ s/\.lzma$//);
+@@ -1363,8 +1320,6 @@
+ return '.zip' if $format eq 'zip';
+ return '.jar' if $format eq 'jar';
+ return '.Z' if $format eq 'compress';
+- return '.rar' if $format eq 'rar';
+- return '.ace' if $format eq 'ace';
+ return '.a' if $format eq 'ar';
+ return '.arj' if $format eq 'arj';
+ return '.lha' if $format eq 'lha';
+@@ -1411,7 +1366,6 @@
+ ['zip', qr/ \(Zip archive data[^)]*\)$/],
+ ['zip', qr/^Zip archive data(\W|$)/],
+ ['zip', qr/^MS-DOS executable (.*), ZIP self-extracting archive(\W|$)/],
+- ['rar', qr/^RAR archive data(\W|$)/],
+ ['lha', qr/^LHa \(2\.x\) archive data /],
+ ['lha', qr/^LHa 2\.x\? archive data /],
+ ['lha', qr/^LHarc 1\.x archive data /],
+@@ -1453,7 +1407,6 @@
+ ['tar+xz', qr/(\.tar\.xz|\.txz)$/],
+
+ ['7z', qr/\.7z$/],
+- ['ace', qr/\.ace$/],
+ ['alzip', qr/\.alz$/],
+ ['ar', qr/\.a$/],
+ ['arc', qr/\.arc$/],
+@@ -1471,7 +1424,6 @@
+ ['lzip', qr/\.lz$/],
+ ['lzma', qr/\.lzma$/],
+ ['lzop', qr/\.lzo$/],
+- ['rar', qr/\.rar$/],
+ ['rpm', qr/\.rpm$/],
+ ['rzip', qr/\.rz$/],
+ ['tar', qr/\.tar$/],
+@@ -1620,15 +1572,12 @@
+ 'path_pbzip2' => [ 'option', \$::cfg_path_pbzip2, qr/.*/ ],
+ 'path_pigz' => [ 'option', \$::cfg_path_pigz, qr/.*/ ],
+ 'path_plzip' => [ 'option', \$::cfg_path_plzip, qr/.*/ ],
+- 'path_rar' => [ 'option', \$::cfg_path_rar, qr/.*/ ],
+ 'path_rpm' => [ 'option', \$::cfg_path_rpm, qr/.*/ ],
+ 'path_rpm2cpio' => [ 'option', \$::cfg_path_rpm2cpio, qr/.*/ ],
+ 'path_rzip' => [ 'option', \$::cfg_path_rzip, qr/.*/ ],
+ 'path_tar' => [ 'option', \$::cfg_path_tar, qr/.*/ ],
+- 'path_unace' => [ 'option', \$::cfg_path_unace, qr/.*/ ],
+ 'path_unalz' => [ 'option', \$::cfg_path_unalz, qr/.*/ ],
+ 'path_unarj' => [ 'option', \$::cfg_path_unarj, qr/.*/ ],
+- 'path_unrar' => [ 'option', \$::cfg_path_unrar, qr/.*/ ],
+ 'path_unzip' => [ 'option', \$::cfg_path_unzip, qr/.*/ ],
+ 'path_usercfg' => [ 'option', \$::cfg_path_usercfg, qr/.*/ ],
+ 'path_xargs' => [ 'option', \$::cfg_path_xargs, qr/.*/ ],
+@@ -1649,8 +1598,6 @@
+ 'use_pbzip2' => [ 'option', \$::cfg_use_pbzip2, qr/^(0|1)$/ ],
+ 'use_pigz' => [ 'option', \$::cfg_use_pigz, qr/^(0|1)$/ ],
+ 'use_plzip' => [ 'option', \$::cfg_use_plzip, qr/^(0|1)$/ ],
+- 'use_rar_for_unpack' => [ 'option', \$::cfg_use_rar_for_unpack, qr/^(0|1)$/ ],
+- 'use_rar_for_unrar' => [ 'obsolete', 'use_rar_for_unpack' ],
+ 'use_tar_bzip2_option' => [ 'option', \$::cfg_use_tar_bzip2_option, qr/^(0|1)$/ ],
+ 'use_tar_lzma_option' => [ 'option', \$::cfg_use_tar_lzma_option, qr/^(0|1)$/ ],
+ 'use_tar_lzop_option' => [ 'option', \$::cfg_use_tar_lzop_option, qr/^(0|1)$/ ],
+diff -Nur atool-0.39.0.orig/atool.1 atool-0.39.0/atool.1
+--- atool-0.39.0.orig/atool.1 2012-03-15 04:31:41.000000000 -0300
++++ atool-0.39.0/atool.1 2014-05-06 04:34:36.830099616 -0300
+@@ -146,7 +146,7 @@
+ When extracting from files, allow overwriting of local files.
+ When creating an archive, allow the archive file to be overwritten
+ if it already exists. Note that it is possible to add files to
+-existing RAR and Zip archives (this is not possible for many
++existing Zip archives (this is not possible for many
+ other formats).
+ .TP
+ .B \-D, \-\-subdir
+@@ -262,9 +262,6 @@
+ List, extract, and add commands are supported.
+ Cat is supported if use_jar_program is disabled.
+ .TP
+-.RI \fBrar\fP " " ( .rar )
+-All commands are supported.
+-.TP
+ .RI \fBlha\fP " " ( .lha ", " .lzh )
+ All commands are supported.
+ .TP
+@@ -274,9 +271,6 @@
+ .RI \fBalzip\fP " " ( .alz )
+ Extract command is supported.
+ .TP
+-.RI \fBace\fP " " ( .ace )
+-Extract and list commands are supported.
+-.TP
+ .RI \fBar\fP " " ( .a )
+ All commands are supported.
+ .TP
+@@ -406,11 +400,6 @@
+ Enable this if you want to use gzip instead of uncompress when
+ decompressing compress'ed files (`.Z' files).
+ .TP
+-.B use_rar_for_unpack \fR(default: 0)\fR
+-Enable this if you want to always use rar instead of unrar
+-when possible. This makes atool use the rar command
+-(path_rar) even when listing and extracting RAR files.
+-.TP
+ .B use_arc_for_unpack \fR(default: 0)\fR
+ Enable this if you want to always use arc instead of nomarch
+ when possible. This makes atool use the arc command
+@@ -530,10 +519,6 @@
+ .TP
+ .B path_lzip \fR(default: lzip)\fR
+ .TP
+-.B path_rar \fR(default: rar)\fR
+-.TP
+-.B path_unrar \fR(default: unrar)\fR
+-.TP
+ .B path_lbzip2 \fR(default: lbzip2)\fR
+ .TP
+ .B path_pigz \fR(default: pigz)\fR
+@@ -546,8 +531,6 @@
+ .TP
+ .B path_lha \fR(default: lha)\fR
+ .TP
+-.B path_unace \fR(default: unace)\fR
+-.TP
+ .B path_ar \fR(default: ar)\fR
+ .TP
+ .B path_arj \fR(default: arj)\fR
+@@ -661,10 +644,6 @@
+ .br
+ \fBacat \-p myarchive.zip baz\fP
+ .PP
+-To list contents of the rar archive `stuff.rar':
+-.br
+- \fBals stuff.rar\fP
+-.PP
+ To create three archives, `dir1.tar.gz', `dir2.tar.gz' and `dir3.tar.gz',
+ so that the first one contains all files in dir1, the second all
+ in dir2 and the third all dir3:
+diff -Nur atool-0.39.0.orig/atool.1.in atool-0.39.0/atool.1.in
+--- atool-0.39.0.orig/atool.1.in 2012-03-15 04:31:39.000000000 -0300
++++ atool-0.39.0/atool.1.in 2014-05-06 04:35:30.100547318 -0300
+@@ -146,7 +146,7 @@
+ When extracting from files, allow overwriting of local files.
+ When creating an archive, allow the archive file to be overwritten
+ if it already exists. Note that it is possible to add files to
+-existing RAR and Zip archives (this is not possible for many
++existing Zip archives (this is not possible for many
+ other formats).
+ .TP
+ .B \-D, \-\-subdir
+@@ -262,9 +262,6 @@
+ List, extract, and add commands are supported.
+ Cat is supported if use_jar_program is disabled.
+ .TP
+-.RI \fBrar\fP " " ( .rar )
+-All commands are supported.
+-.TP
+ .RI \fBlha\fP " " ( .lha ", " .lzh )
+ All commands are supported.
+ .TP
+@@ -274,9 +271,6 @@
+ .RI \fBalzip\fP " " ( .alz )
+ Extract command is supported.
+ .TP
+-.RI \fBace\fP " " ( .ace )
+-Extract and list commands are supported.
+-.TP
+ .RI \fBar\fP " " ( .a )
+ All commands are supported.
+ .TP
+@@ -406,11 +400,6 @@
+ Enable this if you want to use gzip instead of uncompress when
+ decompressing compress'ed files (`.Z' files).
+ .TP
+-.B use_rar_for_unpack \fR(default: 0)\fR
+-Enable this if you want to always use rar instead of unrar
+-when possible. This makes atool use the rar command
+-(path_rar) even when listing and extracting RAR files.
+-.TP
+ .B use_arc_for_unpack \fR(default: 0)\fR
+ Enable this if you want to always use arc instead of nomarch
+ when possible. This makes atool use the arc command
+@@ -530,10 +519,6 @@
+ .TP
+ .B path_lzip \fR(default: lzip)\fR
+ .TP
+-.B path_rar \fR(default: rar)\fR
+-.TP
+-.B path_unrar \fR(default: unrar)\fR
+-.TP
+ .B path_lbzip2 \fR(default: lbzip2)\fR
+ .TP
+ .B path_pigz \fR(default: pigz)\fR
+@@ -546,8 +531,6 @@
+ .TP
+ .B path_lha \fR(default: lha)\fR
+ .TP
+-.B path_unace \fR(default: unace)\fR
+-.TP
+ .B path_ar \fR(default: ar)\fR
+ .TP
+ .B path_arj \fR(default: arj)\fR
+@@ -661,10 +644,6 @@
+ .br
+ \fBacat \-p myarchive.zip baz\fP
+ .PP
+-To list contents of the rar archive `stuff.rar':
+-.br
+- \fBals stuff.rar\fP
+-.PP
+ To create three archives, `dir1.tar.gz', `dir2.tar.gz' and `dir3.tar.gz',
+ so that the first one contains all files in dir1, the second all
+ in dir2 and the third all dir3:
+diff -Nur atool-0.39.0.orig/extra/bash-completion-atool_0.1-1 atool-0.39.0/extra/bash-completion-atool_0.1-1
+--- atool-0.39.0.orig/extra/bash-completion-atool_0.1-1 2007-12-10 20:01:38.000000000 -0200
++++ atool-0.39.0/extra/bash-completion-atool_0.1-1 2014-05-06 04:36:01.504143499 -0300
+@@ -15,7 +15,7 @@
+ --quiet --verbose --page --null --explain --simulate --config=' -- $cur ) )
+ ;;
+ *)
+- _filedir '@(rar|RAR|zip|ZIP|tar.gz|tgz|tar.bz|tbz|tar.Z|tZ|tar.lzo|tzo|tar.7z|t7z|tar|jar|JAR|war|lha|lzh|7z|ace|ACE|arj|ARJ|a|arc|ARC|rpm|deb|gz|bz|bz2|Z|lzo|cpio)'
++ _filedir '@(zip|ZIP|tar.gz|tgz|tar.bz|tbz|tar.Z|tZ|tar.lzo|tzo|tar.7z|t7z|tar|jar|JAR|war|lha|lzh|7z|arj|ARJ|a|arc|ARC|rpm|deb|gz|bz|bz2|Z|lzo|cpio)'
+ ;;
+ esac
+
diff --git a/libre/atool-libre/rePKGBUILD b/libre/atool-libre/rePKGBUILD
deleted file mode 100644
index e684320d0..000000000
--- a/libre/atool-libre/rePKGBUILD
+++ /dev/null
@@ -1,27 +0,0 @@
-# Maintainer: Nicolás Reynolds <fauno@kiwwwi.com.ar>
-source PKGBUILD
-unset build package md5sums source
-CARCH=any
-PKGEXT=.pkg.tar.gz
-_repo=community # Put the repo here
-_mirror=http://mirrors.kernel.org/archlinux # Put mirror here
-source=(PKGBUILD
- "${_mirror}/${_repo}/os/i686/${pkgname%-libre}-$pkgver-$pkgrel-$CARCH$PKGEXT"
- # files for pkg modifications below this line
- )
-options=(!strip)
-
-build() {
- cd "${srcdir}/"
- rm .{INSTALL,PKGINFO} || true
- # put actions for package modifications below this line
-
-}
-
-package() {
- find ${srcdir} -maxdepth 1 -type l -delete
- cp -a ${srcdir}/* ${pkgdir}
-}
-
-
-# vim:set ts=2 sw=2 et:
diff --git a/libre/atril-libre/PKGBUILD b/libre/atril-libre/PKGBUILD
index d4b98a231..2688a84c7 100644
--- a/libre/atril-libre/PKGBUILD
+++ b/libre/atril-libre/PKGBUILD
@@ -5,8 +5,8 @@
_pkgname=atril
pkgname=atril-libre
pkgver=1.8.0
-pkgrel=1
-pkgdesc="Simply a document viewer, with libarchive recommendation"
+pkgrel=1.1
+pkgdesc="Simply a document viewer, with libarchive support"
url="http://mate-desktop.org"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
@@ -26,13 +26,16 @@ provides=('mate-document-viewer' "$_pkgname=$pkgver")
conflicts=('mate-document-viewer' "$_pkgname")
options=('!emptydirs')
groups=('mate-extra')
-source=("http://pub.mate-desktop.org/releases/1.8/${_pkgname}-${pkgver}.tar.xz")
-sha1sums=('8327437ba12df61326b83342cea746d1764727d0')
+source=("http://pub.mate-desktop.org/releases/1.8/${_pkgname}-${pkgver}.tar.xz"
+ 'libarchive.patch')
+sha1sums=('8327437ba12df61326b83342cea746d1764727d0'
+ 'e88168d61b18ce8e340ef3db9c6df6bb66c65d14')
install=${_pkgname}.install
prepare() {
cd "${srcdir}/${_pkgname}-${pkgver}"
NOCONFIGURE=1 ./autogen.sh
+ patch -Np1 -i ../libarchive.patch
}
build() {
diff --git a/libre/atril-libre/libarchive.patch b/libre/atril-libre/libarchive.patch
new file mode 100644
index 000000000..f86908267
--- /dev/null
+++ b/libre/atril-libre/libarchive.patch
@@ -0,0 +1,91 @@
+diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c
+index a135a74..380cb54 100644
+--- a/backend/comics/comics-document.c
++++ b/backend/comics/comics-document.c
+@@ -54,8 +54,7 @@
+
+ typedef enum
+ {
+- RARLABS,
+- GNAUNRAR,
++ LIBARCHIVE,
+ UNZIP,
+ P7ZIP,
+ TAR
+@@ -107,11 +106,8 @@ typedef struct {
+ } ComicBookDecompressCommand;
+
+ static const ComicBookDecompressCommand command_usage_def[] = {
+- /* RARLABS unrar */
+- {"%s p -c- -ierr --", "%s vb -c- -- %s", NULL , FALSE, NO_OFFSET},
+-
+- /* GNA! unrar */
+- {NULL , "%s t %s" , "%s -xf %s %s" , FALSE, NO_OFFSET},
++ /* libarchive */
++ {NULL , "%s tf %s" , "%s xf %s %s" , FALSE, NO_OFFSET},
+
+ /* unzip */
+ {"%s -p -C --" , "%s %s" , NULL , TRUE , OFFSET_ZIP},
+@@ -282,7 +278,7 @@ comics_generate_command_lines (ComicsDocument *comics_document,
+ if (comics_document->dir == NULL)
+ return FALSE;
+
+- /* unrar-free can't create directories, but ev_mkdtemp already created the dir */
++ /* libarchive can't create directories on rar support, but ev_mkdtemp already created the dir */
+
+ comics_document->decompress_tmp =
+ g_strdup_printf (command_usage_def[type].decompress_tmp,
+@@ -321,51 +317,10 @@ comics_check_decompress_command (gchar *mime_type,
+
+ if (!strcmp (mime_type, "application/x-cbr") ||
+ !strcmp (mime_type, "application/x-rar")) {
+- /* The RARLAB provides a no-charge proprietary (freeware)
+- * decompress-only client for Linux called unrar. Another
+- * option is a GPLv2-licensed command-line tool developed by
+- * the Gna! project. Confusingly enough, the free software RAR
+- * decoder is also named unrar. For this reason we need to add
+- * some lines for disambiguation. Sorry for the added the
+- * complexity but it's life :)
+- * Finally, some distributions, like Debian, rename this free
+- * option as unrar-free.
+- * */
+- comics_document->selected_command =
+- g_find_program_in_path ("unrar");
+- if (comics_document->selected_command) {
+- /* We only use std_err to avoid printing useless error
+- * messages on the terminal */
+- success =
+- g_spawn_command_line_sync (
+- comics_document->selected_command,
+- &std_out, &std_err,
+- &retval, &err);
+- if (!success) {
+- g_propagate_error (error, err);
+- g_error_free (err);
+- return FALSE;
+- /* I don't check retval status because RARLAB unrar
+- * doesn't have a way to return 0 without involving an
+- * operation with a file*/
+- } else if (WIFEXITED (retval)) {
+- if (g_strrstr (std_out,"freeware") != NULL)
+- /* The RARLAB freeware client */
+- comics_document->command_usage = RARLABS;
+- else
+- /* The Gna! free software client */
+- comics_document->command_usage = GNAUNRAR;
+-
+- g_free (std_out);
+- g_free (std_err);
+- return TRUE;
+- }
+- }
+- /* The Gna! free software client with Debian naming convention */
+ comics_document->selected_command =
+- g_find_program_in_path ("unrar-free");
++ g_find_program_in_path ("bsdtar");
+ if (comics_document->selected_command) {
+- comics_document->command_usage = GNAUNRAR;
++ comics_document->command_usage = LIBARCHIVE;
+ return TRUE;
+ }
+
diff --git a/libre/audacious-plugins-libre/PKGBUILD b/libre/audacious-plugins-libre/PKGBUILD
index 8c631469b..15d0b2aa5 100644
--- a/libre/audacious-plugins-libre/PKGBUILD
+++ b/libre/audacious-plugins-libre/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 204037 2014-01-14 11:53:55Z jgc $
+# $Id: PKGBUILD 211911 2014-04-29 17:16:51Z bisson $
# Maintainer: Gaetan Bisson <bisson@archlinux.org>
# Contributor: Alexander Fehr <pizzapunk gmail com>
# Contributor: William Rea <sillywilly@gmail.com>
# Maintainer: Gaetan Bisson <bisson@archlinux.org>
# Maintainer (Parabola): Brendan Tildesley
-# Contributor (Parabola): Jorge Lopez <jorginho@lavabit.com>
+# Contributor (Parabola): Jorge Lopez <jorginho@parabola.nu>
_pkgname=audacious-plugins
pkgname=audacious-plugins-libre
-pkgver=3.4.3
-pkgrel=2.1
+pkgver=3.5
+pkgrel=2
pkgdesc='Plugins for Audacious, without nonfree plugins'
url='http://audacious-media-player.org/'
license=('GPL' 'GPL3' 'LGPL' 'custom:BSD')
@@ -32,7 +32,7 @@ makedepends=("audacious>=${pkgver}"
'glib2' 'python2' # for gdbus-codegen
'alsa-lib' 'pulseaudio' 'jack2' 'lame' 'libvorbis' 'flac'
'mpg123' 'faad2' 'ffmpeg' 'libmodplug' 'fluidsynth' 'libcdio-paranoia' 'libsidplayfp' 'wavpack'
- 'libnotify' 'lirc-utils' 'curl' 'libmtp'
+ 'dbus-glib' 'libnotify' 'lirc-utils' 'curl' 'libmtp'
'neon' 'libmms' 'libcue')
optdepends=('alsa-lib: Advanced Linux Sound Arch. output'
@@ -51,6 +51,7 @@ optdepends=('alsa-lib: Advanced Linux Sound Arch. output'
'libsidplayfp: Commodore 64 audio input'
'wavpack: WavPack input'
+ 'dbus-glib: Gnome Shortcuts Plugin'
'libnotify: libnotify OSD'
'lirc-utils: LIRC'
'curl: AudioScrobbler Client'
@@ -61,7 +62,7 @@ optdepends=('alsa-lib: Advanced Linux Sound Arch. output'
'libcue: CUE playlist format')
source=("http://distfiles.audacious-media-player.org/${_pkgname}-${pkgver}.tar.bz2")
-sha1sums=('bcccd4304692a62d1b7963322f64059a0fb9532a')
+sha1sums=('b4fe19010eecb0a62c24fe31a2d84e2954c40c8a')
prepare() {
cd "${srcdir}/${_pkgname}-${pkgver}"
diff --git a/libre/calibre-libre/PKGBUILD b/libre/calibre-libre/PKGBUILD
index 57adf177c..8ea1541ec 100644
--- a/libre/calibre-libre/PKGBUILD
+++ b/libre/calibre-libre/PKGBUILD
@@ -1,5 +1,5 @@
-# $Id: PKGBUILD 109846 2014-04-19 07:55:26Z jelle $
-# Maintainer: jelle van der Waa <jelle@vdwaa.nl>
+# $Id: PKGBUILD 110925 2014-05-09 19:15:05Z jelle $
+# Maintainer: Jelle van der Waa <jelle@vdwaa.nl>
# Maintainer: Daniel Wallace <danielwallace at gtmanfred dot com>
# Contributor: Giovanni Scafora <giovanni@archlinux.org>
# Contributor: Petrov Roman <nwhisper@gmail.com>
@@ -9,8 +9,8 @@
_pkgname=calibre
pkgname=calibre-libre
-pkgver=1.33.0
-pkgrel=2
+pkgver=1.36.0
+pkgrel=1
pkgdesc="Ebook management application, without nonfree libunrar support"
arch=('i686' 'x86_64' 'mips64el')
url="http://calibre-ebook.com/"
@@ -27,15 +27,33 @@ replaces=$_pkgname
conflicts=$_pkgname
provides=$_pkgname=$pkgver
install=calibre.install
-source=("http://download.calibre-ebook.com/${pkgver}/calibre-${pkgver}.tar.xz"
+mksource=("http://download.calibre-ebook.com/${pkgver}/calibre-${pkgver}.tar.xz")
+source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz"
'desktop_integration.patch'
- 'calibre-mount-helper')
-md5sums=('df51094fe6d5f2e1f10bc070b3d65a68'
+ 'calibre-mount-helper'
+ 'libre.patch')
+mkmd5sums=('713a5a3e526201ca779cc72d93d6eaa5')
+md5sums=('7f6ccc483cb2e1fe57fbd5d471b0805b'
'ece36dfd737fa4a346f0a0e59395e949'
- '675cd87d41342119827ef706055491e7')
+ '675cd87d41342119827ef706055491e7'
+ '64b6798f526165146084e447cc3d9e1a')
+
+mksource(){
+ cd "${srcdir}/${_pkgname}"
+
+ # Remove nonfree unRAR utility files from the source
+ rm -rv src/unrar
+}
prepare(){
cd "${srcdir}/${_pkgname}"
+
+ # Remove nonfree libunrar/cbr support and references
+ rm -v src/calibre/{ebooks/metadata/rar.py,utils/unrar.{cpp,py}}
+ rm -v resources/images/mimetypes/{cbr,rar}.png
+ rm -v imgsrc/mimetypes/rar.svg
+ patch -Np1 -i "${srcdir}/libre.patch"
+
#rm -rf src/{cherrypy,pyPdf}
rm -rf src/cherrypy
rm -rf resources/${pkgname}-portable.*
diff --git a/libre/calibre-libre/libre.patch b/libre/calibre-libre/libre.patch
new file mode 100644
index 000000000..cff783d15
--- /dev/null
+++ b/libre/calibre-libre/libre.patch
@@ -0,0 +1,761 @@
+diff --git a/resources/images.qrc b/resources/images.qrc
+index 4daf069..f7569d1 100644
+--- a/resources/images.qrc
++++ b/resources/images.qrc
+@@ -159,7 +159,6 @@
+ <file>images/textures/grey_wash_wall.png</file>
+ <file>images/mimetypes/djvu.png</file>
+ <file>images/mimetypes/rtf.png</file>
+-<file>images/mimetypes/cbr.png</file>
+ <file>images/mimetypes/lrf.png</file>
+ <file>images/mimetypes/jpeg.png</file>
+ <file>images/mimetypes/pdf.png</file>
+@@ -181,7 +180,6 @@
+ <file>images/mimetypes/txt.png</file>
+ <file>images/mimetypes/snb.png</file>
+ <file>images/mimetypes/odt.png</file>
+-<file>images/mimetypes/rar.png</file>
+ <file>images/mimetypes/azw2.png</file>
+ <file>images/mimetypes/zip.png</file>
+ <file>images/mimetypes/dir.png</file>
+@@ -212,4 +210,4 @@
+ <file>images/devices/tablet.png</file>
+ <file>images/devices/folder.png</file>
+ </qresource>
+-</RCC>
+\ No newline at end of file
++</RCC>
+diff --git a/resources/mime.types b/resources/mime.types
+index b7c33e9..055ea61 100644
+--- a/resources/mime.types
++++ b/resources/mime.types
+@@ -137,7 +137,6 @@ application/prs.cww cww
+ application/prs.nprend
+ application/prs.plucker
+ application/qsig
+-application/rar rar
+ application/rdf+xml rdf
+ application/reginfo+xml rif
+ application/relax-ng-compact-syntax rnc
+@@ -849,7 +848,6 @@ application/x-pkcs7-certreqresp p7r
+ application/x-pkcs7-crl crl
+ application/x-python-code pyc pyo
+ application/x-quicktimeplayer qtl
+-application/x-rar-compressed rar
+ application/x-redhat-package-manager rpm
+ application/x-sh sh
+ application/x-shar shar
+@@ -1372,7 +1370,6 @@ application/x-mobipocket-subscription pobi
+ application/x-kindle-application azw2
+ application/x-mobi8-ebook azw3
+ application/x-cbz cbz
+-application/x-cbr cbr
+ application/x-cb7 cb7
+ application/x-koboreader-ebook kobo
+ image/wmf wmf
+diff --git a/session.vim b/session.vim
+index 67502c2..b7f24d3 100644
+--- a/session.vim
++++ b/session.vim
+@@ -11,7 +11,6 @@ let g:syntastic_cpp_include_dirs = [
+ \'/usr/include/freetype2',
+ \'/usr/include/fontconfig',
+ \'src/qtcurve/common', 'src/qtcurve',
+- \'src/unrar',
+ \'src/qt-harfbuzz/src',
+ \'/usr/include/ImageMagick',
+ \]
+diff --git a/setup/extensions.py b/setup/extensions.py
+index b9d92f6..2ac13a9 100644
+--- a/setup/extensions.py
++++ b/setup/extensions.py
+@@ -224,24 +224,6 @@ extensions = [
+ sip_files=['calibre/ebooks/pdf/render/qt_hack.sip']
+ ),
+
+- Extension('unrar',
+- ['unrar/%s.cpp'%(x.partition('.')[0]) for x in '''
+- rar.o strlist.o strfn.o pathfn.o savepos.o smallfn.o global.o file.o
+- filefn.o filcreat.o archive.o arcread.o unicode.o system.o
+- isnt.o crypt.o crc.o rawread.o encname.o resource.o match.o
+- timefn.o rdwrfn.o consio.o options.o ulinks.o errhnd.o rarvm.o
+- secpassword.o rijndael.o getbits.o sha1.o extinfo.o extract.o
+- volume.o list.o find.o unpack.o cmddata.o filestr.o scantree.o
+- '''.split()] + ['calibre/utils/unrar.cpp'],
+- inc_dirs=['unrar'],
+- cflags=[('/' if iswindows else '-') + x for x in (
+- 'DSILENT', 'DRARDLL', 'DUNRAR')] + (
+- [] if iswindows else ['-D_FILE_OFFSET_BITS=64',
+- '-D_LARGEFILE_SOURCE']),
+- optimize_level=2,
+- libraries=['User32', 'Advapi32', 'kernel32', 'Shell32'] if iswindows else []
+- ),
+-
+ ]
+
+
+diff --git a/setup/installer/windows/freeze.py b/setup/installer/windows/freeze.py
+index 08aa91f..7ee523b 100644
+--- a/setup/installer/windows/freeze.py
++++ b/setup/installer/windows/freeze.py
+@@ -635,7 +635,7 @@ class Win32Freeze(Command, WixMixIn):
+ # Because of https://github.com/fancycode/MemoryModule/issues/4
+ # any extensions that use C++ exceptions must be loaded
+ # from files
+- 'unrar.pyd', 'wpd.pyd', 'podofo.pyd',
++ 'wpd.pyd', 'podofo.pyd',
+ 'progress_indicator.pyd', 'hunspell.pyd',
+ # As per this https://bugs.launchpad.net/bugs/1087816
+ # on some systems magick.pyd fails to load from memory
+diff --git a/setup/resources.py b/setup/resources.py
+index 1bcc288..7d6c72f 100644
+--- a/setup/resources.py
++++ b/setup/resources.py
+@@ -282,7 +282,7 @@ class Resources(Command): # {{{
+ log = Log()
+ #log.outputs = []
+ for inf in supported_input_formats():
+- if inf in ('zip', 'rar', 'oebzip'):
++ if inf in ('zip', 'oebzip'):
+ continue
+ for ouf in available_output_formats():
+ of = ouf if ouf == 'oeb' else 'dummy.'+ouf
+diff --git a/src/calibre/__init__.py b/src/calibre/__init__.py
+index fcb627c..3289865 100644
+--- a/src/calibre/__init__.py
++++ b/src/calibre/__init__.py
+@@ -271,10 +271,7 @@ def extract(path, dir):
+ # First use the file header to identify its type
+ with open(path, 'rb') as f:
+ id_ = f.read(3)
+- if id_ == b'Rar':
+- from calibre.utils.unrar import extract as rarextract
+- extractor = rarextract
+- elif id_.startswith(b'PK'):
++ if id_.startswith(b'PK'):
+ from calibre.libunzip import extract as zipextract
+ extractor = zipextract
+ if extractor is None:
+@@ -283,9 +280,6 @@ def extract(path, dir):
+ if ext in ['zip', 'cbz', 'epub', 'oebzip']:
+ from calibre.libunzip import extract as zipextract
+ extractor = zipextract
+- elif ext in ['cbr', 'rar']:
+- from calibre.utils.unrar import extract as rarextract
+- extractor = rarextract
+ if extractor is None:
+ raise Exception('Unknown archive type')
+ extractor(path, dir)
+diff --git a/src/calibre/constants.py b/src/calibre/constants.py
+index a250521..5d891b8 100644
+--- a/src/calibre/constants.py
++++ b/src/calibre/constants.py
+@@ -137,7 +137,6 @@ class Plugins(collections.Mapping):
+ 'speedup',
+ 'freetype',
+ 'woff',
+- 'unrar',
+ 'qt_hack',
+ '_regex',
+ 'hunspell',
+diff --git a/src/calibre/customize/builtins.py b/src/calibre/customize/builtins.py
+index a74951c..a91abb6 100644
+--- a/src/calibre/customize/builtins.py
++++ b/src/calibre/customize/builtins.py
+@@ -127,7 +127,7 @@ plugins += [HTML2ZIP, PML2PMLZ, TXT2TXTZ, ArchiveExtract,]
+ class ComicMetadataReader(MetadataReaderPlugin):
+
+ name = 'Read comic metadata'
+- file_types = set(['cbr', 'cbz'])
++ file_types = set(['cbz'])
+ description = _('Extract cover from comic files')
+
+ def customization_help(self, gui=False):
+@@ -138,14 +138,8 @@ class ComicMetadataReader(MetadataReaderPlugin):
+ pos = stream.tell()
+ id_ = stream.read(3)
+ stream.seek(pos)
+- if id_ == b'Rar':
+- ftype = 'cbr'
+- elif id_.startswith(b'PK'):
++ if id_.startswith(b'PK'):
+ ftype = 'cbz'
+- if ftype == 'cbr':
+- from calibre.utils.unrar import extract_first_alphabetically as extract_first
+- extract_first
+- else:
+ from calibre.libunzip import extract_member
+ extract_first = functools.partial(extract_member,
+ sort_alphabetically=True)
+@@ -153,7 +147,7 @@ class ComicMetadataReader(MetadataReaderPlugin):
+ ret = extract_first(stream)
+ mi = MetaInformation(None, None)
+ stream.seek(0)
+- if ftype in {'cbr', 'cbz'}:
++ if ftype in {'cbz'}:
+ series_index = self.site_customization
+ if series_index not in {'volume', 'issue'}:
+ series_index = 'volume'
+@@ -336,16 +330,6 @@ class PMLMetadataReader(MetadataReaderPlugin):
+ from calibre.ebooks.metadata.pml import get_metadata
+ return get_metadata(stream)
+
+-class RARMetadataReader(MetadataReaderPlugin):
+-
+- name = 'Read RAR metadata'
+- file_types = set(['rar'])
+- description = _('Read metadata from ebooks in RAR archives')
+-
+- def get_metadata(self, stream, ftype):
+- from calibre.ebooks.metadata.rar import get_metadata
+- return get_metadata(stream)
+-
+ class RBMetadataReader(MetadataReaderPlugin):
+
+ name = 'Read RB metadata'
+diff --git a/src/calibre/customize/ui.py b/src/calibre/customize/ui.py
+index 2e1cc23..c9a3701 100644
+--- a/src/calibre/customize/ui.py
++++ b/src/calibre/customize/ui.py
+@@ -436,7 +436,7 @@ def available_input_formats():
+ if not is_disabled(plugin):
+ for format in plugin.file_types:
+ formats.add(format)
+- formats.add('zip'), formats.add('rar')
++ formats.add('zip')
+ return formats
+
+
+diff --git a/src/calibre/devices/kobo/driver.py b/src/calibre/devices/kobo/driver.py
+index aca5e86..1c2064f 100644
+--- a/src/calibre/devices/kobo/driver.py
++++ b/src/calibre/devices/kobo/driver.py
+@@ -77,7 +77,7 @@ class KOBO(USBMS):
+ book_class = Book
+
+ # Ordered list of supported formats
+- FORMATS = ['kepub', 'epub', 'pdf', 'txt', 'cbz', 'cbr']
++ FORMATS = ['kepub', 'epub', 'pdf', 'txt', 'cbz']
+ CAN_SET_METADATA = ['collections']
+
+ VENDOR_ID = [0x2237]
+diff --git a/src/calibre/devices/mtp/filesystem_cache.py b/src/calibre/devices/mtp/filesystem_cache.py
+index 3acb026..f3626ab 100644
+--- a/src/calibre/devices/mtp/filesystem_cache.py
++++ b/src/calibre/devices/mtp/filesystem_cache.py
+@@ -18,7 +18,7 @@ from calibre.utils.date import local_tz, as_utc
+ from calibre.utils.icu import sort_key, lower
+ from calibre.ebooks import BOOK_EXTENSIONS
+
+-bexts = frozenset(BOOK_EXTENSIONS) - {'mbp', 'tan', 'rar', 'zip', 'xml'}
++bexts = frozenset(BOOK_EXTENSIONS) - {'mbp', 'tan', 'zip', 'xml'}
+
+ class FileOrFolder(object):
+
+diff --git a/src/calibre/ebooks/__init__.py b/src/calibre/ebooks/__init__.py
+index 3d01f84..8818bcb 100644
+--- a/src/calibre/ebooks/__init__.py
++++ b/src/calibre/ebooks/__init__.py
+@@ -26,9 +26,9 @@ class DRMError(ValueError):
+ class ParserError(ValueError):
+ pass
+
+-BOOK_EXTENSIONS = ['lrf', 'rar', 'zip', 'rtf', 'lit', 'txt', 'txtz', 'text', 'htm', 'xhtm',
++BOOK_EXTENSIONS = ['lrf', 'zip', 'rtf', 'lit', 'txt', 'txtz', 'text', 'htm', 'xhtm',
+ 'html', 'htmlz', 'xhtml', 'pdf', 'pdb', 'updb', 'pdr', 'prc', 'mobi', 'azw', 'doc',
+- 'epub', 'fb2', 'djv', 'djvu', 'lrx', 'cbr', 'cbz', 'cbc', 'oebzip',
++ 'epub', 'fb2', 'djv', 'djvu', 'lrx', 'cbz', 'cbc', 'oebzip',
+ 'rb', 'imp', 'odt', 'chm', 'tpz', 'azw1', 'pml', 'pmlz', 'mbp', 'tan', 'snb',
+ 'xps', 'oxps', 'azw4', 'book', 'zbf', 'pobi', 'docx', 'docm', 'md',
+ 'textile', 'markdown', 'ibook', 'iba', 'azw3', 'ps']
+diff --git a/src/calibre/ebooks/conversion/plugins/comic_input.py b/src/calibre/ebooks/conversion/plugins/comic_input.py
+index e66ca49..3caa2db 100644
+--- a/src/calibre/ebooks/conversion/plugins/comic_input.py
++++ b/src/calibre/ebooks/conversion/plugins/comic_input.py
+@@ -17,8 +17,8 @@ class ComicInput(InputFormatPlugin):
+
+ name = 'Comic Input'
+ author = 'Kovid Goyal'
+- description = 'Optimize comic files (.cbz, .cbr, .cbc) for viewing on portable devices'
+- file_types = set(['cbz', 'cbr', 'cbc'])
++ description = 'Optimize comic files (.cbz, .cbc) for viewing on portable devices'
++ file_types = set(['cbz', 'cbc'])
+ is_image_collection = True
+ core_usage = -1
+
+diff --git a/src/calibre/ebooks/conversion/plumber.py b/src/calibre/ebooks/conversion/plumber.py
+index cb49801..689c5aa 100644
+--- a/src/calibre/ebooks/conversion/plumber.py
++++ b/src/calibre/ebooks/conversion/plumber.py
+@@ -42,7 +42,7 @@ various stages of conversion. The stages are:
+
+ def supported_input_formats():
+ fmts = available_input_formats()
+- for x in ('zip', 'rar', 'oebzip'):
++ for x in ('zip', 'oebzip'):
+ fmts.add(x)
+ return fmts
+
+@@ -60,7 +60,7 @@ class CompositeProgressReporter(object):
+ (self.global_max - self.global_min)
+ self.global_reporter(global_frac, msg)
+
+-ARCHIVE_FMTS = ('zip', 'rar', 'oebzip')
++ARCHIVE_FMTS = ('zip', 'oebzip')
+
+ class Plumber(object):
+ '''
+diff --git a/src/calibre/ebooks/metadata/archive.py b/src/calibre/ebooks/metadata/archive.py
+index 7b8ecd2..f5c31ac 100644
+--- a/src/calibre/ebooks/metadata/archive.py
++++ b/src/calibre/ebooks/metadata/archive.py
+@@ -27,8 +27,6 @@ def archive_type(stream):
+ ans = None
+ if id_ == stringFileHeader:
+ ans = 'zip'
+- elif id_.startswith('Rar'):
+- ans = 'rar'
+ try:
+ stream.seek(pos)
+ except:
+@@ -40,29 +38,20 @@ class ArchiveExtract(FileTypePlugin):
+ name = 'Archive Extract'
+ author = 'Kovid Goyal'
+ description = _('Extract common e-book formats from archives '
+- '(zip/rar) files. Also try to autodetect if they are actually '
+- 'cbz/cbr files.')
+- file_types = set(['zip', 'rar'])
++ 'zip files. Also try to autodetect if they are actually '
++ 'cbz files.')
++ file_types = set(['zip'])
+ supported_platforms = ['windows', 'osx', 'linux']
+ on_import = True
+
+ def run(self, archive):
+ from calibre.utils.zipfile import ZipFile
+- is_rar = archive.lower().endswith('.rar')
+- if is_rar:
+- from calibre.utils.unrar import extract_member, names
+- else:
+- zf = ZipFile(archive, 'r')
+-
+- if is_rar:
+- with open(archive, 'rb') as rf:
+- fnames = list(names(rf))
+- else:
+- fnames = zf.namelist()
++ zf = ZipFile(archive, 'r')
++ fnames = zf.namelist()
+
+ fnames = [x for x in fnames if '.' in x and x.lower().rpartition('/')[-1] != 'thumbs.db']
+ if is_comic(fnames):
+- ext = '.cbr' if is_rar else '.cbz'
++ ext = '.cbz'
+ of = self.temporary_file('_archive_extract'+ext)
+ with open(archive, 'rb') as f:
+ of.write(f.read())
+@@ -78,12 +67,7 @@ class ArchiveExtract(FileTypePlugin):
+
+ of = self.temporary_file('_archive_extract.'+ext)
+ with closing(of):
+- if is_rar:
+- with open(archive, 'rb') as f:
+- data = extract_member(f, match=None, name=fname)[1]
+- of.write(data)
+- else:
+- of.write(zf.read(fname))
++ of.write(zf.read(fname))
+ return of.name
+
+ def get_comic_book_info(d, mi, series_index='volume'):
+@@ -141,10 +125,6 @@ def get_comic_metadata(stream, stream_type, series_index='volume'):
+ from calibre.utils.zipfile import ZipFile
+ zf = ZipFile(stream)
+ comment = zf.comment
+- elif stream_type == 'cbr':
+- from calibre.utils.unrar import RARFile
+- f = RARFile(stream, get_comment=True)
+- comment = f.comment
+
+ if comment:
+ import json
+diff --git a/src/calibre/ebooks/oeb/iterator/book.py b/src/calibre/ebooks/oeb/iterator/book.py
+index 8868e7c..4662f67 100644
+--- a/src/calibre/ebooks/oeb/iterator/book.py
++++ b/src/calibre/ebooks/oeb/iterator/book.py
+@@ -127,7 +127,7 @@ class EbookIterator(BookmarksMixin):
+ self.spine = []
+ Spiny = partial(SpineItem, read_anchor_map=read_anchor_map,
+ run_char_count=run_char_count, from_epub=self.book_format == 'EPUB')
+- is_comic = plumber.input_fmt.lower() in {'cbc', 'cbz', 'cbr', 'cb7'}
++ is_comic = plumber.input_fmt.lower() in {'cbc', 'cbz', 'cb7'}
+ for i in ordered:
+ spath = i.path
+ mt = None
+diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
+index e419685..ee83d7b 100644
+--- a/src/calibre/gui2/__init__.py
++++ b/src/calibre/gui2/__init__.py
+@@ -488,7 +488,6 @@ class FileIconProvider(QFileIconProvider):
+ 'png' : 'png',
+ 'bmp' : 'bmp',
+ 'cbz' : 'cbz',
+- 'cbr' : 'cbr',
+ 'svg' : 'svg',
+ 'html' : 'html',
+ 'htmlz' : 'html',
+@@ -500,7 +499,6 @@ class FileIconProvider(QFileIconProvider):
+ 'lrx' : 'lrx',
+ 'pdf' : 'pdf',
+ 'pdr' : 'zero',
+- 'rar' : 'rar',
+ 'zip' : 'zip',
+ 'txt' : 'txt',
+ 'text' : 'txt',
+diff --git a/src/calibre/gui2/actions/add.py b/src/calibre/gui2/actions/add.py
+index 3e3c48b..a605ff5 100644
+--- a/src/calibre/gui2/actions/add.py
++++ b/src/calibre/gui2/actions/add.py
+@@ -38,8 +38,8 @@ def get_filters():
+ (_('Text books'), ['txt', 'text', 'rtf']),
+ (_('PDF Books'), ['pdf', 'azw4']),
+ (_('SNB Books'), ['snb']),
+- (_('Comics'), ['cbz', 'cbr', 'cbc']),
+- (_('Archives'), ['zip', 'rar']),
++ (_('Comics'), ['cbz', 'cbc']),
++ (_('Archives'), ['zip']),
+ (_('Wordprocessor files'), ['odt', 'doc', 'docx']),
+ ]
+
+@@ -66,7 +66,7 @@ class AddAction(InterfaceAction):
+ 'sub directories (Multiple books per directory, assumes every '
+ 'ebook file is a different book)')).triggered.connect(
+ self.add_recursive_multiple)
+- arm = self.add_archive_menu = self.add_menu.addMenu(_('Add multiple books from archive (ZIP/RAR)'))
++ arm = self.add_archive_menu = self.add_menu.addMenu(_('Add multiple books from archive (ZIP)'))
+ self.create_menu_action(arm, 'recursive-single-archive', _(
+ 'One book per directory in the archive')).triggered.connect(partial(self.add_archive, True))
+ self.create_menu_action(arm, 'recursive-multiple-archive', _(
+@@ -144,7 +144,7 @@ class AddAction(InterfaceAction):
+ def add_archive(self, single):
+ paths = choose_files(
+ self.gui, 'recursive-archive-add', _('Choose archive file'),
+- filters=[(_('Archives'), ('zip', 'rar'))], all_files=False, select_only_single_file=True)
++ filters=[(_('Archives'), ('zip'))], all_files=False, select_only_single_file=True)
+ if paths:
+ self.do_add_recursive(paths[0], single)
+
+diff --git a/src/calibre/gui2/add.py b/src/calibre/gui2/add.py
+index d849846..50aa6d9 100644
+--- a/src/calibre/gui2/add.py
++++ b/src/calibre/gui2/add.py
+@@ -84,11 +84,8 @@ class RecursiveFind(QThread): # {{{
+ prints('Corrupt ZIP file, trying to use local headers')
+ from calibre.utils.localunzip import extractall
+ extractall(self.path, self.tdir)
+- elif self.path.lower().endswith('.rar'):
+- from calibre.utils.unrar import extract
+- extract(self.path, self.tdir)
+ else:
+- raise ValueError('Can only process ZIP or RAR archives')
++ raise ValueError('Can only process ZIP archives')
+
+ def run(self):
+ if self.tdir is not None:
+@@ -292,7 +289,7 @@ class Adder(QObject): # {{{
+ self.pd.canceled_signal.connect(self.canceled)
+
+ def add_recursive(self, root, single=True):
+- if os.path.exists(root) and os.path.isfile(root) and root.lower().rpartition('.')[-1] in {'zip', 'rar'}:
++ if os.path.exists(root) and os.path.isfile(root) and root.lower().rpartition('.')[-1] in {'zip'}:
+ self.path = tdir = PersistentTemporaryDirectory('_arcv_')
+ else:
+ self.path = root
+diff --git a/src/calibre/library/server/opds.py b/src/calibre/library/server/opds.py
+index 5e9ca44..f5d230d 100644
+--- a/src/calibre/library/server/opds.py
++++ b/src/calibre/library/server/opds.py
+@@ -29,7 +29,7 @@ BASE_HREFS = {
+ 1 : '/opds',
+ }
+
+-STANZA_FORMATS = frozenset(['epub', 'pdb', 'pdf', 'cbr', 'cbz', 'djvu'])
++STANZA_FORMATS = frozenset(['epub', 'pdb', 'pdf', 'cbz', 'djvu'])
+
+ def url_for(name, version, **kwargs):
+ if not name.endswith('_'):
+diff --git a/src/calibre/linux.py b/src/calibre/linux.py
+index c746606..d6b2c6c 100644
+--- a/src/calibre/linux.py
++++ b/src/calibre/linux.py
+@@ -314,7 +314,7 @@ class ZshCompleter(object): # {{{
+ ):
+ for fmt in fmts:
+ is_input = group_title == input_group
+- if is_input and fmt in {'rar', 'zip', 'oebzip'}:
++ if is_input and fmt in {'zip', 'oebzip'}:
+ continue
+ p = (get_parser(input_fmt=fmt) if is_input
+ else get_parser(output_fmt=fmt))
+diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py
+index fd9a36d..130d08d 100644
+--- a/src/calibre/test_build.py
++++ b/src/calibre/test_build.py
+@@ -102,11 +102,6 @@ def test_imaging():
+ raise RuntimeError('PIL choked!')
+ print ('PIL OK!')
+
+-def test_unrar():
+- from calibre.utils.unrar import test_basic
+- test_basic()
+- print ('Unrar OK!')
+-
+ def test_ssl():
+ import ssl
+ ssl
+@@ -146,7 +141,6 @@ def test():
+ test_ssl()
+ test_sqlite()
+ test_imaging()
+- test_unrar()
+ test_icu()
+ test_woff()
+ test_qt()
+diff --git a/src/calibre/translations/calibre.pot b/src/calibre/translations/calibre.pot
+index 1775b71..65cf8c4 100644
+--- a/src/calibre/translations/calibre.pot
++++ b/src/calibre/translations/calibre.pot
+@@ -3870,7 +3870,7 @@ msgid "Set book ID"
+ msgstr ""
+
+ #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/archive.py:42
+-msgid "Extract common e-book formats from archives (zip/rar) files. Also try to autodetect if they are actually cbz/cbr files."
++msgid "Extract common e-book formats from archives (zip) files. Also try to autodetect if they are actually cbz files."
+ msgstr ""
+
+ #: /home/kovid/work/calibre/src/calibre/ebooks/metadata/book/base.py:644
+@@ -10866,7 +10866,7 @@ msgid "You can also customise the plugin locations using <b>Preferences -> Custo
+ msgstr ""
+
+ #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:33
+-msgid "Set defaults for conversion of comics (CBR/CBZ files)"
++msgid "Set defaults for conversion of comics (CBZ files)"
+ msgstr ""
+
+ #: /home/kovid/work/calibre/src/calibre/gui2/dialogs/comicconf.py:48
+diff --git a/src/calibre/utils/search_query_parser.py b/src/calibre/utils/search_query_parser.py
+index d395057..4804b28 100644
+--- a/src/calibre/utils/search_query_parser.py
++++ b/src/calibre/utils/search_query_parser.py
+@@ -445,16 +445,16 @@ class Tester(SearchQueryParser):
+ u'Tor Books',
+ u'lrf'],
+ 8: [u'Stalky and Co.', u'Rudyard Kipling', u'manybooks.net', u'lrf'],
+- 9: [u'A Game of Thrones', u'George R. R. Martin', None, u'lrf,rar'],
+- 10: [u'A Clash of Kings', u'George R. R. Martin', None, u'lrf,rar'],
+- 11: [u'A Storm of Swords', u'George R. R. Martin', None, u'lrf,rar'],
++ 9: [u'A Game of Thrones', u'George R. R. Martin', None, u'lrf'],
++ 10: [u'A Clash of Kings', u'George R. R. Martin', None, u'lrf'],
++ 11: [u'A Storm of Swords', u'George R. R. Martin', None, u'lrf'],
+ 12: [u'Biggles - Pioneer Air Fighter', u'W. E. Johns', None, u'lrf,rtf'],
+ 13: [u'Biggles of the Camel Squadron',
+ u'W. E. Johns',
+ u'London:Thames, (1977)',
+ u'lrf,rtf'],
+- 14: [u'A Feast for Crows', u'George R. R. Martin', None, u'lrf,rar'],
+- 15: [u'Cryptonomicon', u'Neal Stephenson', None, u'lrf,rar'],
++ 14: [u'A Feast for Crows', u'George R. R. Martin', None, u'lrf'],
++ 15: [u'Cryptonomicon', u'Neal Stephenson', None, u'lrf'],
+ 16: [u'Quicksilver', u'Neal Stephenson', None, u'lrf,zip'],
+ 17: [u'The Comedies of William Shakespeare',
+ u'William Shakespeare',
+@@ -469,15 +469,15 @@ class Tester(SearchQueryParser):
+ None,
+ u'lrf'],
+ 20: [u'An Ideal Husband', u'Oscar Wilde', u'manybooks.net', u'lrf'],
+- 21: [u'Flight of the Nighthawks', u'Raymond E. Feist', None, u'lrf,rar'],
+- 22: [u'Into a Dark Realm', u'Raymond E. Feist', None, u'lrf,rar'],
+- 23: [u'The Sundering', u'Walter Jon Williams', None, u'lrf,rar'],
+- 24: [u'The Praxis', u'Walter Jon Williams', None, u'lrf,rar'],
+- 25: [u'Conventions of War', u'Walter Jon Williams', None, u'lrf,rar'],
+- 26: [u'Banewreaker', u'Jacqueline Carey', None, u'lrf,rar'],
+- 27: [u'Godslayer', u'Jacqueline Carey', None, u'lrf,rar'],
+- 28: [u"Kushiel's Scion", u'Jacqueline Carey', None, u'lrf,rar'],
+- 29: [u'Underworld', u'Don DeLillo', None, u'lrf,rar'],
++ 21: [u'Flight of the Nighthawks', u'Raymond E. Feist', None, u'lrf'],
++ 22: [u'Into a Dark Realm', u'Raymond E. Feist', None, u'lrf'],
++ 23: [u'The Sundering', u'Walter Jon Williams', None, u'lrf'],
++ 24: [u'The Praxis', u'Walter Jon Williams', None, u'lrf'],
++ 25: [u'Conventions of War', u'Walter Jon Williams', None, u'lrf'],
++ 26: [u'Banewreaker', u'Jacqueline Carey', None, u'lrf'],
++ 27: [u'Godslayer', u'Jacqueline Carey', None, u'lrf'],
++ 28: [u"Kushiel's Scion", u'Jacqueline Carey', None, u'lrf'],
++ 29: [u'Underworld', u'Don DeLillo', None, u'lrf'],
+ 30: [u'Genghis Khan and The Making of the Modern World',
+ u'Jack Weatherford Orc',
+ u'Three Rivers Press',
+@@ -488,9 +488,9 @@ class Tester(SearchQueryParser):
+ u'lrf,zip'],
+ 32: [u'The Killer Angels', u'Michael Shaara', None, u'html,lrf'],
+ 33: [u'Band Of Brothers', u'Stephen E Ambrose', None, u'lrf,txt'],
+- 34: [u'The Gates of Rome', u'Conn Iggulden', None, u'lrf,rar'],
++ 34: [u'The Gates of Rome', u'Conn Iggulden', None, u'lrf'],
+ 35: [u'The Death of Kings', u'Conn Iggulden', u'Bantam Dell', u'lit,lrf'],
+- 36: [u'The Field of Swords', u'Conn Iggulden', None, u'lrf,rar'],
++ 36: [u'The Field of Swords', u'Conn Iggulden', None, u'lrf'],
+ 37: [u'Masterman Ready', u'Marryat, Captain Frederick', None, u'lrf'],
+ 38: [u'With the Lightnings',
+ u'David Drake',
+@@ -503,16 +503,16 @@ class Tester(SearchQueryParser):
+ 40: [u'The Far Side of The Stars',
+ u'David Drake',
+ u'Baen Publishing Enterprises',
+- u'lrf,rar'],
++ u'lrf'],
+ 41: [u'The Way to Glory',
+ u'David Drake',
+ u'Baen Publishing Enterprises',
+- u'lrf,rar'],
+- 42: [u'Some Golden Harbor', u'David Drake', u'Baen Books', u'lrf,rar'],
++ u'lrf'],
++ 42: [u'Some Golden Harbor', u'David Drake', u'Baen Books', u'lrf'],
+ 43: [u'Harry Potter And The Half-Blood Prince',
+ u'J. K. Rowling',
+ None,
+- u'lrf,rar'],
++ u'lrf'],
+ 44: [u'Harry Potter and the Order of the Phoenix',
+ u'J. K. Rowling',
+ None,
+@@ -521,12 +521,12 @@ class Tester(SearchQueryParser):
+ 46: [u'The Stars at War II',
+ u'Steve White',
+ u'Baen Publishing Enterprises',
+- u'lrf,rar'],
+- 47: [u'Exodus', u'Steve White,Shirley Meier', u'Baen Books', u'lrf,rar'],
++ u'lrf'],
++ 47: [u'Exodus', u'Steve White,Shirley Meier', u'Baen Books', u'lrf'],
+ 48: [u'Harry Potter and the Goblet of Fire',
+ u'J. K. Rowling',
+ None,
+- u'lrf,rar'],
++ u'lrf'],
+ 49: [u'Harry Potter and the Prisoner of Azkaban',
+ u'J. K. Rowling',
+ None,
+@@ -539,20 +539,20 @@ class Tester(SearchQueryParser):
+ u'J.K. Rowling',
+ None,
+ u'lit,lrf,pdf'],
+- 52: [u"His Majesty's Dragon", u'Naomi Novik', None, u'lrf,rar'],
++ 52: [u"His Majesty's Dragon", u'Naomi Novik', None, u'lrf'],
+ 53: [u'Throne of Jade', u'Naomi Novik', u'Del Rey', u'lit,lrf'],
+- 54: [u'Black Powder War', u'Naomi Novik', u'Del Rey', u'lrf,rar'],
++ 54: [u'Black Powder War', u'Naomi Novik', u'Del Rey', u'lrf'],
+ 55: [u'War and Peace', u'Leo Tolstoy', u'gutenberg.org', u'lrf,txt'],
+ 56: [u'Anna Karenina', u'Leo Tolstoy', u'gutenberg.org', u'lrf,txt'],
+ 57: [u'A Shorter History of Rome',
+ u'Eugene Lawrence,Sir William Smith',
+ u'gutenberg.org',
+ u'lrf,zip'],
+- 58: [u'The Name of the Rose', u'Umberto Eco', None, u'lrf,rar'],
++ 58: [u'The Name of the Rose', u'Umberto Eco', None, u'lrf'],
+ 71: [u"Wind Rider's Oath", u'David Weber', u'Baen', u'lrf'],
+ 74: [u'Rally Cry', u'William R Forstchen', None, u'htm,lrf'],
+- 86: [u'Empire of Ivory', u'Naomi Novik', None, u'lrf,rar'],
+- 87: [u"Renegade's Magic", u'Robin Hobb', None, u'lrf,rar'],
++ 86: [u'Empire of Ivory', u'Naomi Novik', None, u'lrf'],
++ 87: [u"Renegade's Magic", u'Robin Hobb', None, u'lrf'],
+ 89: [u'Master and commander',
+ u"Patrick O'Brian",
+ u'Fontana,\n1971',
+@@ -560,7 +560,7 @@ class Tester(SearchQueryParser):
+ 91: [u'A Companion to Wolves',
+ u'Sarah Monette,Elizabeth Beär',
+ None,
+- u'lrf,rar'],
++ u'lrf'],
+ 92: [u'The Lions of al-Rassan', u'Guy Gavriel Kay', u'Eos', u'lit,lrf'],
+ 93: [u'Gardens of the Moon', u'Steven Erikson', u'Tor Fantasy', u'lit,lrf'],
+ 95: [u'The Master and Margarita',
+@@ -584,7 +584,7 @@ class Tester(SearchQueryParser):
+ 144: [u'Atonement',
+ u'Ian McEwan',
+ u'New York : Nan A. Talese/Doubleday, 2002.',
+- u'lrf,rar'],
++ u'lrf'],
+ 146: [u'1632', u'Eric Flint', u'Baen Books', u'lit,lrf'],
+ 147: [u'1633', u'David Weber,Eric Flint,Dru Blair', u'Baen', u'lit,lrf'],
+ 148: [u'1634: The Baltic War',
+@@ -637,7 +637,7 @@ class Tester(SearchQueryParser):
+ 253: [u"Hunter's Run",
+ u'George R. R. Martin,Gardner Dozois,Daniel Abraham',
+ u'Eos',
+- u'lrf,rar'],
++ u'lrf'],
+ 257: [u'Knife of Dreams', u'Robert Jordan', None, u'lit,lrf'],
+ 258: [u'Saturday',
+ u'Ian McEwan',
+@@ -657,7 +657,7 @@ class Tester(SearchQueryParser):
+ u'New York : Random House, 2005.',
+ u'lit,lrf'],
+ 269: [u'Reap the Whirlwind', u'David Mack', u'Star Trek', u'lit,lrf'],
+- 272: [u'Mistborn', u'Brandon Sanderson', u'Tor Fantasy', u'lrf,rar'],
++ 272: [u'Mistborn', u'Brandon Sanderson', u'Tor Fantasy', u'lrf'],
+ 273: [u'The Thousandfold Thought',
+ u'R. Scott Bakker',
+ u'Overlook TP',
+@@ -665,17 +665,17 @@ class Tester(SearchQueryParser):
+ 276: [u'Elantris',
+ u'Brandon Sanderson',
+ u'New York : Tor, 2005.',
+- u'lrf,rar'],
++ u'lrf'],
+ 291: [u'Sundiver',
+ u'David Brin',
+ u'New York : Bantam Books, 1995.',
+ u'lit,lrf'],
+- 299: [u'Imperium', u'Robert Harris', u'Arrow', u'lrf,rar'],
++ 299: [u'Imperium', u'Robert Harris', u'Arrow', u'lrf'],
+ 300: [u'Startide Rising', u'David Brin', u'Bantam', u'htm,lrf'],
+ 301: [u'The Uplift War', u'David Brin', u'Spectra', u'lit,lrf'],
+- 304: [u'Brightness Reef', u'David Brin', u'Orbit', u'lrf,rar'],
++ 304: [u'Brightness Reef', u'David Brin', u'Orbit', u'lrf'],
+ 305: [u"Infinity's Shore", u'David Brin', u'Spectra', u'txt'],
+- 306: [u"Heaven's Reach", u'David Brin', u'Spectra', u'lrf,rar'],
++ 306: [u"Heaven's Reach", u'David Brin', u'Spectra', u'lrf'],
+ 325: [u"Foundation's Triumph", u'David Brin', u'Easton Press', u'lit,lrf'],
+ 327: [u'I am Charlotte Simmons', u'Tom Wolfe', u'Vintage', u'htm,lrf'],
+ 335: [u'The Currents of Space', u'Isaac Asimov', None, u'lit,lrf'],
+@@ -705,15 +705,15 @@ class Tester(SearchQueryParser):
+ u'Aspect',
+ u'lit,lrf'],
+ 356: [u'The Naked God', u'Peter F. Hamilton', u'Aspect', u'lit,lrf'],
+- 421: [u'A Shadow in Summer', u'Daniel Abraham', u'Tor Fantasy', u'lrf,rar'],
++ 421: [u'A Shadow in Summer', u'Daniel Abraham', u'Tor Fantasy', u'lrf'],
+ 427: [u'Lonesome Dove', u'Larry M\\cMurtry', None, u'lit,lrf'],
+ 440: [u'Ghost', u'John Ringo', u'Baen', u'lit,lrf'],
+ 441: [u'Kildar', u'John Ringo', u'Baen', u'lit,lrf'],
+- 443: [u'Hidden Empire ', u'Kevin J. Anderson', u'Aspect', u'lrf,rar'],
++ 443: [u'Hidden Empire ', u'Kevin J. Anderson', u'Aspect', u'lrf'],
+ 444: [u'The Gun Seller',
+ u'Hugh Laurie',
+ u'Washington Square Press',
+- u'lrf,rar']
++ u'lrf']
+ }
+
+ tests = {
+diff --git a/src/calibre/web/feeds/feedparser.py b/src/calibre/web/feeds/feedparser.py
+index 16085cf..420efaa 100755
+--- a/src/calibre/web/feeds/feedparser.py
++++ b/src/calibre/web/feeds/feedparser.py
+@@ -2081,7 +2081,7 @@ class _MicroformatsParser:
+ EMAIL = 5
+
+ known_xfn_relationships = set(['contact', 'acquaintance', 'friend', 'met', 'co-worker', 'coworker', 'colleague', 'co-resident', 'coresident', 'neighbor', 'child', 'parent', 'sibling', 'brother', 'sister', 'spouse', 'wife', 'husband', 'kin', 'relative', 'muse', 'crush', 'date', 'sweetheart', 'me'])
+- known_binary_extensions = set(['zip','rar','exe','gz','tar','tgz','tbz2','bz2','z','7z','dmg','img','sit','sitx','hqx','deb','rpm','bz2','jar','rar','iso','bin','msi','mp2','mp3','ogg','ogm','mp4','m4v','m4a','avi','wma','wmv'])
++ known_binary_extensions = set(['zip','exe','gz','tar','tgz','tbz2','bz2','z','7z','dmg','img','sit','sitx','hqx','deb','rpm','bz2','jar','iso','bin','msi','mp2','mp3','ogg','ogm','mp4','m4v','m4a','avi','wma','wmv'])
+
+ def __init__(self, data, baseuri, encoding):
+ self.document = BeautifulSoup.BeautifulSoup(data)
diff --git a/libre/clementine-libre/PKGBUILD b/libre/clementine-libre/PKGBUILD
index 7ec75cd14..1a693a6d5 100644
--- a/libre/clementine-libre/PKGBUILD
+++ b/libre/clementine-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 106122 2014-02-23 15:32:14Z alucryd $
+# $Id: PKGBUILD 110102 2014-04-24 07:51:18Z alucryd $
# Maintainer: Maxime Gauduin <alucryd@gmail.com>
# Contributor: Stéphane Gaudreault <stephane@archlinux.org>
# Contributor: BlackEagle <ike.devolder@gmail.com>
@@ -9,12 +9,15 @@
_pkgname=clementine
pkgname=clementine-libre
-pkgver=1.2.2
+pkgver=1.2.3
pkgrel=1
-pkgdesc="A music player and library organizer, without nonfree artwork and spotify support"
-url="http://www.clementine-player.org/"
+pkgdesc='A modern music player and library organizer, without nonfree artwork and Spotify support'
+url='http://www.clementine-player.org/'
license=('GPL')
arch=('i686' 'x86_64')
+replaces=('clementine')
+conflicts=('clementine')
+provides=("clementine=$pkgver")
depends=('chromaprint' 'glew' 'gstreamer0.10-base' 'libcdio' 'libgpod' 'liblastfm' 'libmtp' 'libmygpo-qt' 'protobuf' 'qca-ossl' 'taglib')
makedepends=('cmake' 'boost' 'mesa' 'sparsehash')
optdepends=('gstreamer0.10-base-plugins: "Base" plugin libraries'
@@ -22,20 +25,15 @@ optdepends=('gstreamer0.10-base-plugins: "Base" plugin libraries'
'gstreamer0.10-bad-plugins: "Bad" plugin libraries'
'gstreamer0.10-ugly-plugins: "Ugly" plugin libraries'
'gvfs: Various devices support')
-replaces=('clementine')
-conflicts=('clementine')
-provides=("clementine=$pkgver")
-install=clementine.install
+install="${_pkgname}.install"
mksource=("${_pkgname}-${pkgver}.tar.gz::https://github.com/clementine-player/Clementine/archive/${pkgver}.tar.gz"
'remove-nonfree-artwork-and-spotify.patch'
'moognu.png')
-source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz"
- "${_pkgname}-unistd.patch")
-mksha256sums=('1f674c42f05c476baf74f1dd37b1aa357ff9199e4493173052c856a53e5f0a96'
+source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz")
+mksha256sums=('7df5650445a005c09f5f0e1a1b0d077037c37ecbe4ee77baf9d45f121308a1bf'
'48bfbf42c84ac1891021638627c10780194fcc59eda1c69e157be3aebe8ee10b'
'c6918617769152f3617c61f721819e69d03f671b85760b11cfe45abd53955bc4')
-sha256sums=('02d799056435f244a319eea110672c404c8804a2418677253d5cdd4ea01a340f'
- 'bb02f82c3bcdad542396fc0788010321d618fc0545d34d00fee63bed987a0bbf')
+sha256sums=('c68275373b839b5b256b813b5bed85d501f94e12bef3dd8ed69e90094af3f769')
mksource() {
cd Clementine-${pkgver}
@@ -63,12 +61,6 @@ mksource() {
touch data/schema/schema-30.sql
}
-prepare() {
- cd Clementine-${pkgver}
-
- patch -Np1 -i ../${_pkgname}-unistd.patch
-}
-
build() {
cd Clementine-${pkgver}
diff --git a/libre/clementine-libre/clementine-unistd.patch b/libre/clementine-libre/clementine-unistd.patch
deleted file mode 100644
index 9bd053b60..000000000
--- a/libre/clementine-libre/clementine-unistd.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -rupN Clementine-1.2.2.orig/src/core/utilities.cpp Clementine-1.2.2/src/core/utilities.cpp
---- Clementine-1.2.2.orig/src/core/utilities.cpp 2014-02-23 16:14:06.919406700 +0100
-+++ Clementine-1.2.2/src/core/utilities.cpp 2014-02-23 16:16:12.107064900 +0100
-@@ -50,6 +50,7 @@
- #endif
-
- #ifdef Q_OS_LINUX
-+# include <unistd.h>
- # include <sys/syscall.h>
- #endif
- #ifdef Q_OS_DARWIN
diff --git a/libre/cups-filters-libre/PKGBUILD b/libre/cups-filters-libre/PKGBUILD
index 7b231aa6d..f41ab02e0 100644
--- a/libre/cups-filters-libre/PKGBUILD
+++ b/libre/cups-filters-libre/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 209918 2014-04-08 15:37:24Z andyrtr $
+# $Id: PKGBUILD 211789 2014-04-26 10:47:56Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
pkgname=cups-filters-libre
_pkgname=cups-filters
-pkgver=1.0.52
-pkgrel=1
+pkgver=1.0.53
+pkgrel=2
pkgdesc="OpenPrinting CUPS Filters, without foomatic-db-nonfree recommendation"
arch=('i686' 'x86_64')
url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting"
@@ -20,7 +20,7 @@ source=(http://www.openprinting.org/download/cups-filters/$_pkgname-$pkgver.tar.
provides=("${_pkgname}=${pkgver}" 'foomatic-filters')
replaces=("${_pkgname}" 'foomatic-filters')
conflicts=("${_pkgname}" 'foomatic-filters')
-md5sums=('64825cb330c2ef6dcb29215158e701bb')
+md5sums=('f9df275dd161eb0364f40c6f00d755a4')
build() {
cd $_pkgname-$pkgver
diff --git a/libre/doublecmd-libre/PKGBUILD b/libre/doublecmd-libre/PKGBUILD
index 1e14d5588..17b1aef3f 100644
--- a/libre/doublecmd-libre/PKGBUILD
+++ b/libre/doublecmd-libre/PKGBUILD
@@ -1,5 +1,5 @@
# vim:set ft=sh:
-# $Id: PKGBUILD 108140 2014-03-23 19:43:34Z idevolder $
+# $Id: PKGBUILD 110952 2014-05-10 14:08:05Z idevolder $
# Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com>
# Contributor: (sirocco AT ngs.ru)
@@ -8,7 +8,7 @@ pkgbase=doublecmd-libre
pkgname=('doublecmd-libre-gtk2' 'doublecmd-libre-qt')
pkgver=0.5.9
_helpver=0.5.5
-pkgrel=1.1
+pkgrel=2
url="http://doublecmd.sourceforge.net/"
arch=('i686' 'x86_64')
license=('GPL')
@@ -19,12 +19,39 @@ optdepends=(
'lua51: scripting'
'p7zip: support for 7zip archives'
)
-source=(
+mksource=(
"http://downloads.sourceforge.net/project/$_pkgbase/Double%20Commander%20Source/$_pkgbase-$pkgver-src.tar.gz"
+)
+source=(
+ "https://repo.parabolagnulinux.org/other/$pkgname/$pkgbase-$pkgver-src.tar.gz"
"http://downloads.sourceforge.net/project/$_pkgbase/Double%20Commander%20Source/$_pkgbase-help-$_helpver-src.tar.gz"
"http://www.herecura.be/files/lazarus-20140321-2.tar.gz"
+ 'libre.patch'
+ 'help-libre.patch'
)
+mksource() {
+ cd "$srcdir/$_pkgbase-$pkgver"
+
+ msg2 'remove nonfree unRAR utility files from the source'
+ rm -rv install/linux/deb/libunrar
+}
+
+prepare() {
+ cd "$srcdir/$_pkgbase-$pkgver"
+
+ msg2 'remove nonfree libunrar, unace, unarj support and references'
+ rm -rv plugins/wcx/unrar
+ rm -v install/linux/rpm/libunrar.spec
+ rm -v install/darwin/make-unrar.sh
+ patch -Np1 -i ../libre.patch
+
+ cd "$srcdir/$_pkgbase-help-$_helpver"
+
+ msg2 'remove nonfree libunrar, unace, unarj support and references on the help'
+ patch -Np1 -i ../help-libre.patch
+}
+
build() {
cp -a $_pkgbase-$pkgver $_pkgbase-gtk
cp -a $_pkgbase-$pkgver $_pkgbase-qt
@@ -48,7 +75,7 @@ build() {
}
package_doublecmd-libre-gtk2() {
- pkgdesc="twin-panel (commander-style) file manager (GTK), without nonfree libunrar recommendation"
+ pkgdesc="twin-panel (commander-style) file manager (GTK), without nonfree libunrar, unace and unarj support"
depends=('gtk2')
conflicts=('doublecmd-libre-qt' 'doublecmd-gtk2' 'doublecmd-gtk2-libre')
replaces=('doublecmd-gtk2' 'doublecmd-gtk2-libre')
@@ -62,7 +89,7 @@ package_doublecmd-libre-gtk2() {
}
package_doublecmd-libre-qt() {
- pkgdesc="twin-panel (commander-style) file manager (QT), without nonfree libunrar recommendation"
+ pkgdesc="twin-panel (commander-style) file manager (QT), without nonfree libunrar, unace and unarj support"
depends=('qt4pas')
conflicts=('doublecmd-libre-gtk2' 'doublecmd-qt' 'doublecmd-qt-libre')
replaces=('doublecmd-qt' 'doublecmd-qt-libre')
@@ -75,6 +102,9 @@ package_doublecmd-libre-qt() {
cp -a * "$pkgdir/usr/share/$_pkgbase/doc/"
}
-sha256sums=('d5b3c93b3029f4b0a45b7c9912d34f753445e031c93bc0268d4cb4c313d06ba4'
+mksha256sums=('d5b3c93b3029f4b0a45b7c9912d34f753445e031c93bc0268d4cb4c313d06ba4')
+sha256sums=('d72f0e52f99fadcd5ebcc7cf6184394c124da57dda6b6af05774a1f5e767254e'
'5c5d00187df811df0734bf751a581bce7e1bdd4cf4639b2a1101f1da8743daaf'
- '16560ad7403ffbee1800384768828e1fad924d03068c6248b68a78c393fc4e20')
+ '16560ad7403ffbee1800384768828e1fad924d03068c6248b68a78c393fc4e20'
+ '79853d83a2fa7cdb54ab79586c2c3d123de90f849dd52d1a712b1e4a1eeaefcd'
+ '3f0de0b4a35ec3c8a172864f3e6fd2ad11d3c32c3eee05d08b51d06002d05f7f')
diff --git a/libre/doublecmd-libre/help-libre.patch b/libre/doublecmd-libre/help-libre.patch
new file mode 100644
index 000000000..c1d859d8b
--- /dev/null
+++ b/libre/doublecmd-libre/help-libre.patch
@@ -0,0 +1,153 @@
+diff --git a/en/about.html b/en/about.html
+index 7a1b2d0..6ab90ab 100644
+--- a/en/about.html
++++ b/en/about.html
+@@ -20,7 +20,7 @@
+ <li><p>customizable columns</p></li>
+ <li><p>built-in file viewer (F3) to view files of ANY SIZE in hexadecimal, binary or text format</p></li>
+ <li><p>built-in text editor (F4) with syntax highlighting</p></li>
+- <li><p>archives are handled like subdirectories. You can easily copy files to and from the archive. Supports following types: ZIP, TAR GZ, TGZ, BZ2, RPM, CPIO, DEB, RAR</p></li>
++ <li><p>archives are handled like subdirectories. You can easily copy files to and from the archive. Supports following types: ZIP, TAR GZ, TGZ, BZ2, RPM, CPIO, DEB</p></li>
+ <li><p>extended search function with full text search in any files</p></li>
+ <li><p>supports WCX, WLX, WDX and WFX plugins from Total Commander (also supports own DSX plugin format)</p></li>
+ <li><p>operations log</p></li>
+diff --git a/en/help.html b/en/help.html
+index a53a867..a473c9f 100644
+--- a/en/help.html
++++ b/en/help.html
+@@ -53,7 +53,7 @@
+ <p>Double Commander is a cross-platform (both GNU/Linux and Windows) file manager, supporting
+ WCX, WFX, WDX, WLX and DSX plugin types. The last type (DSX) is DC's own search plugin type.
+ The Windows version of Double Commander is compatible with many plugins from Total Commander (TC), which is more than half of those which I tried.
+- The Linux version has no such programs at all. DC comes installed with some WCX (archiver) plugins to work with cpio, deb, rpm, bz2, rar, zip, tar, gz, tgz archives as
++ The Linux version has no such programs at all. DC comes installed with some WCX (archiver) plugins to work with cpio, deb, rpm, bz2, zip, tar, gz, tgz archives as
+ directories (VFS), also a search plugin (DSX) and a lister videoplayer plugin for Linux (WLX). Other plugins can be installed manually.</p>
+ <p class="FIGURE"><img title="Double Commander" alt="Double Commander" src="images/imgDC/pic05.png" width="730" height="458"/></p>
+
+@@ -190,7 +190,7 @@
+ file renaming.
+
+ <p>By selecting item <a name="08_upakovat"><span class="bold">Pack files</span></a> (internal command
+- <tt><a name="cm_PackFiles">cm_PackFiles</a></tt>) we call a standard dialog to pack files to the zip, tar.gz, tgz and, possibly, rar archive formats.</p>
++ <tt><a name="cm_PackFiles">cm_PackFiles</a></tt>) we call a standard dialog to pack files to the zip, tar.gz, tgz.</p>
+ <p class="FIGURE"><img alt="Pack" title="Pack" src="images/imgDC/pic14-5.png" width="368" height="183"/></p>
+
+ <p>Also we can unpack files via <a name="09_raspakovat">
+diff --git a/en/multiarc.html b/en/multiarc.html
+index d1cbc7d..c2284ad 100644
+--- a/en/multiarc.html
++++ b/en/multiarc.html
+@@ -280,8 +280,6 @@ p,ul,ol /* Paragraph Style */
+ <p class=rvps2><span class=rvts18>Command = String representing a command</span></p>
+ <p class=rvps2><span class=rvts18>Flag = 0 or 1 depending on state of this flag</span></p>
+ <p class=rvps3><span class=rvts20>TypeName</span><span class=rvts21> is a short name for archive type. It is required and must be unique.</span></p>
+-<p class=rvps3><span class=rvts22>Example:</span></p>
+-<p class=rvps3><span class=rvts21>[ARJ] </span></p>
+ <p class=rvps3><span class=rvts23>Parameters</span></p>
+ <p class=rvps3><span class=rvts20>Archiver</span><span class=rvts21> Path to archiver utilit. Pach can contain enviropment variable such as %WINDIR% or %COMMANDER_PATH%.</span></p>
+ <p class=rvps3><span class=rvts20>ID</span><span class=rvts21> (optional) archive ID (2-digit hex numbers delimited with spaces). </span></p>
+diff --git a/ru/about.html b/ru/about.html
+index 99d1c43..5e177d8 100644
+--- a/ru/about.html
++++ b/ru/about.html
+@@ -26,7 +26,7 @@
+ двоичном или текстовом формате</p></li>
+ <li><p>встроенный текстовый редактор (F4) c подсветкой синтаксиса</p></li>
+ <li><p>работа с архивами так же, как с подкаталогами. Вы можете легко копировать файлы в архив
+- и из него. Поддерживаются следующие типы архивов ZIP, TAR GZ, TGZ, а также BZ2, RPM, CPIO, DEB, RAR</p></li>
++ и из него. Поддерживаются следующие типы архивов ZIP, TAR GZ, TGZ, а также BZ2, RPM, CPIO, DEB</p></li>
+ <li><p>расширенный поиск файлов, включая поиск текста в любых файлах</p></li>
+ <li><p>поддержка WCX, WDX и WFX плагинов от Total Commander</p></li>
+ <li><p>протоколирование файловых операций</p></li>
+@@ -45,4 +45,4 @@
+ </div>
+ </body>
+
+-</html>
+\ No newline at end of file
++</html>
+diff --git a/ru/help.html b/ru/help.html
+index a2ccba9..a138ef2 100644
+--- a/ru/help.html
++++ b/ru/help.html
+@@ -56,7 +56,7 @@
+ работают многие плагины от Total Commander (TC), а это более половины из тех, которыми я
+ пользовался). А Linux версия, вообще не имеет аналогов подобного типа. После установки в
+ составе DC уже имеются WCX (архиваторные) плагины и можно работать с архивами cpio, deb, rpm,
+- bz2, rar, zip, tar, gz, tgz как с каталогами, так же поисковый плагин (DSX) и плагин для
++ bz2, zip, tar, gz, tgz как с каталогами, так же поисковый плагин (DSX) и плагин для
+ просмотра видео с помощью Mplayer в Linux (WLX), остальные можно установить самостоятельно.</p>
+ <p class="FIGURE"><img title="Double Commander" alt="Double Commander" src="images/imgDC/ris05.png" width="651" height="440"/></p>
+
+@@ -213,8 +213,7 @@
+ расположение лог-файла.</p>
+
+ <p>Выбрав пункт <a name="08_upakovat"><span class="bold">Упаковать</span></a> (команда
+- <tt><a name="cm_PackFiles">cm_PackFiles</a></tt>) мы вызовем стандартный диалог упаковки файлов в архивы zip, tar.gz, tgz,
+- может быть и rar, если в системе установлен соответствующий архиватор.</p>
++ <tt><a name="cm_PackFiles">cm_PackFiles</a></tt>) мы вызовем стандартный диалог упаковки файлов в архивы zip, tar.gz, tgz.</p>
+ <p class="FIGURE"><img alt="Упаковать" title="Упаковать" src="images/imgDC/ris14-5.png" width="368" height="183"/></p>
+
+ <p>Обратное действие можно выполнить, воспользовавшись пунктом <a name="09_raspakovat">
+diff --git a/ru/multiarc.html b/ru/multiarc.html
+index 882f5eb..00cb39d 100644
+--- a/ru/multiarc.html
++++ b/ru/multiarc.html
+@@ -272,8 +272,6 @@ p,ul,ol /* Paragraph Style */
+ <p class=rvps3><span class=rvts18>Команда= строка команды</span></p>
+ <p class=rvps3><span class=rvts18>Флаг = 0 или 1 в зависимости от состояния флага.</span></p>
+ <p class=rvps4><span class=rvts20>Имя_типа</span><span class=rvts21> краткое имя типа архиватора. Обязательно, и должно быть уникальным. Должно быть набрано символами английского алфавита.</span></p>
+-<p class=rvps4><span class=rvts22>Пример:</span></p>
+-<p class=rvps4><span class=rvts21>[ARJ] </span></p>
+ <p class=rvps4><span class=rvts23>Параметры</span></p>
+ <p class=rvps4><span class=rvts20>Archiver</span><span class=rvts21> Путь к архиватору. Путь может содержать переменные окружения, например %WINDIR% или %COMMANDER_PATH%.</span></p>
+ <p class=rvps4><span class=rvts20>ID</span><span class=rvts21> (необязательный) -- сигнатура (ID) архиватора, используется для определения является ли данный файл архивом этого типа. Записывается группами по 2 шестнадцатеричных символа, разделенные пробелами. Если архиватор может обрабатывать несколько версий архивов с разными сигнатурами, они разделяются запятыми.</span></p>
+diff --git a/uk_UA/about.html b/uk_UA/about.html
+index 757fc73..a53de54 100644
+--- a/uk_UA/about.html
++++ b/uk_UA/about.html
+@@ -26,7 +26,7 @@
+ двійковому або текстовому форматі</p></li>
+ <li><p>вбудований текстовий редактор (F4) c підсвіткою синтаксису</p></li>
+ <li><p>робота з архівами так як і з підкаталогами. Ви можете легко копіювати файли в архів
+- і з нього. Підтримуються наступні типи архівів ZIP, TAR GZ, TGZ, а також BZ2, RPM, CPIO, DEB, RAR</p></li>
++ і з нього. Підтримуються наступні типи архівів ZIP, TAR GZ, TGZ, а також BZ2, RPM, CPIO, DEB</p></li>
+ <li><p>розширений пошук файлів, включаючи пошук тексту в будь-яких файлах</p></li>
+ <li><p>підтримка WCX, WDX і WFX плагінів від Total Commander</p></li>
+ <li><p>протоколювання файлових операцій</p></li>
+diff --git a/uk_UA/help.html b/uk_UA/help.html
+index 5420b30..29b3411 100644
+--- a/uk_UA/help.html
++++ b/uk_UA/help.html
+@@ -56,7 +56,7 @@
+ працює багато плагінів від Total Commander (TC), а це більше половини з тих, якими я
+ користувався). А Linux версія, взагалі не має аналогів подібногу типу. Після встановлення у
+ складі DC вже є WCX (архіваторні) плагіни і можна працювати з архівами cpio, deb, rpm,
+- bz2, rar, zip, tar, gz, tgz як з каталогами, пошуковий плагін (DSX) і плагін для
++ bz2, zip, tar, gz, tgz як з каталогами, пошуковий плагін (DSX) і плагін для
+ перегляду відео з допомогою Mplayer в Linux (WLX), інші можна встановити власноруч.</p>
+ <p class="FIGURE"><img title="Double Commander" alt="Double Commander" src="images/imgDC/ris05.png" width="651" height="440"/></p>
+
+@@ -214,8 +214,7 @@
+ місцезнаходження лог-файлу.</p>
+
+ <p>Вибравши пункт <a name="08_upakovat"><span class="bold">Упакувати</span></a> (команда
+- <tt><a name="cm_PackFiles">cm_PackFiles</a></tt>) ми викличемо стандартний діалог упакування файлів в архіви zip, tar.gz, tgz,
+- може бути і rar, якщо в системі встановлено відповідний архіватор.</p>
++ <tt><a name="cm_PackFiles">cm_PackFiles</a></tt>) ми викличемо стандартний діалог упакування файлів в архіви zip, tar.gz, tgz.</p>
+ <p class="FIGURE"><img alt="Упакувати" title="Упакувати" src="images/imgDC/ris14-5.png" width="368" height="183"/></p>
+
+ <p>Звортню дію можна виконати, скориставшися пунктом <a name="09_raspakovat">
+diff --git a/uk_UA/multiarc.html b/uk_UA/multiarc.html
+index bb0a81f..9d9ee80 100644
+--- a/uk_UA/multiarc.html
++++ b/uk_UA/multiarc.html
+@@ -272,8 +272,6 @@ p,ul,ol /* Paragraph Style */
+ <p class=rvps3><span class=rvts18>Команда= рядок команди</span></p>
+ <p class=rvps3><span class=rvts18>Прапорець = 0 чи 1 в залежності від стану прапорця.</span></p>
+ <p class=rvps4><span class=rvts20>Ім’я_типу</span><span class=rvts21> коротке ім’я типу архіватора. Обов’язково повинно бути унікальним і бути набраним символами англійського алфавіту.</span></p>
+-<p class=rvps4><span class=rvts22>Наприклад:</span></p>
+-<p class=rvps4><span class=rvts21>[ARJ] </span></p>
+ <p class=rvps4><span class=rvts23>Параметри</span></p>
+ <p class=rvps4><span class=rvts20>Archiver</span><span class=rvts21> Шлях до архіватора. Шлях може містити змінні оточення, наприклад %WINDIR% або %COMMANDER_PATH%.</span></p>
+ <p class=rvps4><span class=rvts20>ID</span><span class=rvts21> (необовязковий) -- сигнатура (ID) архіватора, використовується для визначення чи являється данний файл архівом цього типу. Записується групами по 2 шістнадцяткових символа, разділених пробілами. Якщо архіватор може оброблювати кілька версій архівів з різними сигнатурами, вони розділяються комами.</span></p>
diff --git a/libre/doublecmd-libre/libre.patch b/libre/doublecmd-libre/libre.patch
new file mode 100644
index 000000000..83c017125
--- /dev/null
+++ b/libre/doublecmd-libre/libre.patch
@@ -0,0 +1,407 @@
+diff --git a/clean.bat b/clean.bat
+index 910f591..0989998 100644
+--- a/clean.bat
++++ b/clean.bat
+@@ -22,7 +22,6 @@
+ @del /Q /S plugins\wcx\lzma\lib\*.*
+ @del /Q /S plugins\wcx\rpm\lib\*.*
+ @del /Q /S plugins\wcx\unbz2\lib\*.*
+-@del /Q /S plugins\wcx\unrar\lib\*.*
+ @del /Q /S plugins\wcx\zip\lib\*.*
+
+ @del /Q /S plugins\wdx\deb_wdx\lib\*.*
+@@ -45,7 +44,6 @@
+ @del /Q plugins\wcx\lzma\src\*.bak
+ @del /Q plugins\wcx\zip\src\*.bak
+ @del /Q plugins\wcx\unbz2\src\*.bak
+-@del /Q plugins\wcx\unrar\src\*.bak
+
+ @del /Q plugins\wcx\cpio\src\*.*~
+ @del /Q plugins\wcx\rpm\src\*.*~
+@@ -53,7 +51,6 @@
+ @del /Q plugins\wcx\lzma\src\*.*~
+ @del /Q plugins\wcx\zip\src\*.*~
+ @del /Q plugins\wcx\unbz2\src\*.*~
+-@del /Q plugins\wcx\unrar\src\*.*~
+
+ @echo Clean up components output directories
+
+@@ -66,4 +63,4 @@
+ @del /Q /S components\viewer\lib\*.*
+ @del /Q /S components\ZVDateTimeCtrls\lib\*.*
+
+-@echo Done.
+\ No newline at end of file
++@echo Done.
+diff --git a/doublecmd.ext.example b/doublecmd.ext.example
+index 24f4f9b..4e4307d 100644
+--- a/doublecmd.ext.example
++++ b/doublecmd.ext.example
+@@ -236,13 +236,6 @@ View={!VIEWER} <?lharc l %f?>
+ Extract={!SHELL} lharc x %f '*'
+ #Extract (with flags)=I=%{Enter any LHarc flags:}; if test -n "$I"; then lharc x $I %f; fi
+
+-# arj
+-[arj]
+-Open={!VFS}
+-View={!VIEWER} <?unarj l %p?>
+-Extract={!SHELL} unarj x %f '*'
+-#Extract (with flags)=I=%{Enter any Unarj flags:}; if test -n "$I"; then unarj x $I %f; fi
+-
+ # ha
+ [ha]
+ Open={!VFS}
+@@ -250,13 +243,6 @@ View={!VIEWER} <?ha lf %p?>
+ Extract={!SHELL} ha xy %f '*'
+ # Extract (with flags)=I=%{Enter any HA flags:}; if test -n "$I"; then ha xy $I %f; fi
+
+-# rar
+-[rar|r00|r02|r02|r03|r04|r05|r06|r07|r08|r09]
+-Open={!VFS}
+-View={!VIEWER} <?rar v -c- %p?>
+-Extract={!SHELL} rar x -c- %f '*'
+-# Extract (with flags)=I=%{Enter any RAR flags:}; if test -n "$I";then rar x $I %f; fi
+-
+ #compress
+ [Z]
+ Open={!VFS}
+@@ -287,11 +273,6 @@ Open={!VFS}
+ View={!VIEWER} <?bzip -dc %f 2>/dev/null?>
+ Uncompress={!SHELL} bunzip %f
+
+-# ace
+-[ace]
+-Open={!VFS}
+-Uncompress={!SHELL} unace e %p
+-
+ # Source RPMs (SuSE uses *.spm, others use *.src.rpm)
+ [spm|srcm]
+ Open={!VFS}
+diff --git a/install/darwin/doublecmd.xml b/install/darwin/doublecmd.xml
+index 3fffe77..4c2b8a4 100644
+--- a/install/darwin/doublecmd.xml
++++ b/install/darwin/doublecmd.xml
+@@ -92,11 +92,6 @@
+ <Path>%commander_path%/plugins/wcx/rpm/rpm.wcx</Path>
+ <Flags>4</Flags>
+ </WcxPlugin>
+- <WcxPlugin Enabled="True">
+- <ArchiveExt>rar</ArchiveExt>
+- <Path>%commander_path%/plugins/wcx/unrar/unrar.wcx</Path>
+- <Flags>68</Flags>
+- </WcxPlugin>
+ </WcxPlugins>
+ <WdxPlugins>
+ <WdxPlugin>
+diff --git a/install/darwin/install.sh b/install/darwin/install.sh
+index 48ca896..db3093c 100755
+--- a/install/darwin/install.sh
++++ b/install/darwin/install.sh
+@@ -18,7 +18,6 @@ mkdir -p $DC_INSTALL_DIR/plugins/wcx/cpio
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/deb
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/lzma
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/rpm
+-mkdir -p $DC_INSTALL_DIR/plugins/wcx/unrar
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/zip
+ # WDX plugins directories
+ mkdir -p $DC_INSTALL_DIR/plugins/wdx
+@@ -45,7 +44,6 @@ install -m 644 plugins/wcx/cpio/lib/cpio.wcx $DC_INSTALL_DIR/plugins/wcx/
+ install -m 644 plugins/wcx/deb/lib/deb.wcx $DC_INSTALL_DIR/plugins/wcx/deb/
+ install -m 644 plugins/wcx/lzma/lib/lzma.wcx $DC_INSTALL_DIR/plugins/wcx/lzma/
+ install -m 644 plugins/wcx/rpm/lib/rpm.wcx $DC_INSTALL_DIR/plugins/wcx/rpm/
+-install -m 644 plugins/wcx/unrar/lib/unrar.wcx $DC_INSTALL_DIR/plugins/wcx/unrar/
+ install -m 644 plugins/wcx/zip/lib/zip.wcx $DC_INSTALL_DIR/plugins/wcx/zip/
+ # WDX
+ install -m 644 plugins/wdx/rpm_wdx/lib/rpm_wdx.wdx $DC_INSTALL_DIR/plugins/wdx/rpm_wdx/
+diff --git a/install/darwin/lib/readme.txt b/install/darwin/lib/readme.txt
+index 5b81e6e..830ba48 100644
+--- a/install/darwin/lib/readme.txt
++++ b/install/darwin/lib/readme.txt
+@@ -1,2 +1 @@
+ Before create packages (before run create_packages.mac) copy in this directory third-party libraries:
+-- libunrar.dylib - needed for unrar plugin
+\ No newline at end of file
+diff --git a/install/linux/doublecmd.xml b/install/linux/doublecmd.xml
+index 8822d35..43a0e39 100644
+--- a/install/linux/doublecmd.xml
++++ b/install/linux/doublecmd.xml
+@@ -84,11 +84,6 @@
+ <Path>%commander_path%/plugins/wcx/rpm/rpm.wcx</Path>
+ <Flags>4</Flags>
+ </WcxPlugin>
+- <WcxPlugin Enabled="True">
+- <ArchiveExt>rar</ArchiveExt>
+- <Path>%commander_path%/plugins/wcx/unrar/unrar.wcx</Path>
+- <Flags>68</Flags>
+- </WcxPlugin>
+ </WcxPlugins>
+ <WdxPlugins>
+ <WdxPlugin>
+diff --git a/install/linux/install.sh b/install/linux/install.sh
+index a759335..2b19802 100755
+--- a/install/linux/install.sh
++++ b/install/linux/install.sh
+@@ -48,7 +48,6 @@ mkdir -p $DC_INSTALL_DIR/plugins/wcx/cpio
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/deb
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/lzma
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/rpm
+-mkdir -p $DC_INSTALL_DIR/plugins/wcx/unrar
+ mkdir -p $DC_INSTALL_DIR/plugins/wcx/zip
+ # WDX plugins directories
+ mkdir -p $DC_INSTALL_DIR/plugins/wdx
+@@ -80,7 +79,6 @@ install -m 644 plugins/wcx/cpio/lib/cpio.wcx $DC_INSTALL_DIR/plugins/wcx/
+ install -m 644 plugins/wcx/deb/lib/deb.wcx $DC_INSTALL_DIR/plugins/wcx/deb/
+ install -m 644 plugins/wcx/lzma/lib/lzma.wcx $DC_INSTALL_DIR/plugins/wcx/lzma/
+ install -m 644 plugins/wcx/rpm/lib/rpm.wcx $DC_INSTALL_DIR/plugins/wcx/rpm/
+-install -m 644 plugins/wcx/unrar/lib/unrar.wcx $DC_INSTALL_DIR/plugins/wcx/unrar/
+ install -m 644 plugins/wcx/zip/lib/zip.wcx $DC_INSTALL_DIR/plugins/wcx/zip/
+ # WDX
+ install -m 644 plugins/wdx/rpm_wdx/lib/rpm_wdx.wdx $DC_INSTALL_DIR/plugins/wdx/rpm_wdx/
+diff --git a/install/linux/lib/readme.txt b/install/linux/lib/readme.txt
+index 901d6b4..54df3a8 100644
+--- a/install/linux/lib/readme.txt
++++ b/install/linux/lib/readme.txt
+@@ -1,3 +1,2 @@
+ Before create packages (before run create_packages.sh) copy in this directory third-party libraries:
+-- libunrar.so - needed for unrar plugin
+-- libqt4intf.so - needed for qt4 version of Double Commander
+\ No newline at end of file
++- libqt4intf.so - needed for qt4 version of Double Commander
+diff --git a/install/windows/doublecmd.xml b/install/windows/doublecmd.xml
+index ad9b8c3..8105eef 100644
+--- a/install/windows/doublecmd.xml
++++ b/install/windows/doublecmd.xml
+@@ -72,11 +72,6 @@
+ <Path>%commander_path%\plugins\wcx\rpm\rpm.wcx</Path>
+ <Flags>4</Flags>
+ </WcxPlugin>
+- <WcxPlugin Enabled="True">
+- <ArchiveExt>rar</ArchiveExt>
+- <Path>%commander_path%\plugins\wcx\unrar\unrar.wcx</Path>
+- <Flags>68</Flags>
+- </WcxPlugin>
+ </WcxPlugins>
+ <WdxPlugins>
+ <WdxPlugin>
+diff --git a/install/windows/install.bat b/install/windows/install.bat
+index 5d55c99..ed32bf2 100644
+--- a/install/windows/install.bat
++++ b/install/windows/install.bat
+@@ -13,7 +13,6 @@ mkdir %DC_INSTALL_DIR%\plugins\wcx\cpio
+ mkdir %DC_INSTALL_DIR%\plugins\wcx\deb
+ mkdir %DC_INSTALL_DIR%\plugins\wcx\lzma
+ mkdir %DC_INSTALL_DIR%\plugins\wcx\rpm
+-mkdir %DC_INSTALL_DIR%\plugins\wcx\unrar
+ mkdir %DC_INSTALL_DIR%\plugins\wcx\zip
+ rem WDX plugins directories
+ mkdir %DC_INSTALL_DIR%\plugins\wdx
+@@ -45,7 +44,6 @@ copy plugins\wcx\cpio\lib\cpio.wcx %DC_INSTALL_DIR%\plugins\wcx\cpio\
+ copy plugins\wcx\deb\lib\deb.wcx %DC_INSTALL_DIR%\plugins\wcx\deb\
+ copy plugins\wcx\lzma\lib\lzma.wcx %DC_INSTALL_DIR%\plugins\wcx\lzma\
+ copy plugins\wcx\rpm\lib\rpm.wcx %DC_INSTALL_DIR%\plugins\wcx\rpm\
+-copy plugins\wcx\unrar\lib\unrar.wcx %DC_INSTALL_DIR%\plugins\wcx\unrar\
+ copy plugins\wcx\zip\lib\zip.wcx %DC_INSTALL_DIR%\plugins\wcx\zip\
+ rem WDX
+ copy plugins\wdx\rpm_wdx\lib\rpm_wdx.wdx %DC_INSTALL_DIR%\plugins\wdx\rpm_wdx\
+diff --git a/install/windows/lib/readme.txt b/install/windows/lib/readme.txt
+index 3aa11d8..5223b9d 100644
+--- a/install/windows/lib/readme.txt
++++ b/install/windows/lib/readme.txt
+@@ -1,2 +1 @@
+ Before create packages (before run create_packages.bat) copy in this directory third-party libraries:
+-- unrar.dll - needed for unrar plugin
+\ No newline at end of file
+diff --git a/multiarc.ini b/multiarc.ini
+index 7cad464..a837e36 100644
+--- a/multiarc.ini
++++ b/multiarc.ini
+@@ -37,89 +37,6 @@ Enabled=0
+ Output=0
+ Debug=0
+
+-[ACE]
+-Archiver=ace
+-Description=ACE v2.0.4
+-Extension=ace
+-Start=^Date
+-End=^listed:
+-Format0=dd.tt.yy hh:mm ppppppppppp zzzzzzzzz nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
+-List=%P v -y %AQA
+-Extract=%P x -y {-p%W} {%S} %AQA @%LQA
+-ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQA
+-Test=%P t -y %AQA
+-Delete=%P d -y %AQA @%LQA
+-Add=%P a -y {-p%W} {-v%V} {%S} %AQA @%LQA
+-AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQA @%LQA
+-Enabled=0
+-Output=0
+-Debug=0
+-
+-[ARJ]
+-Description=ARJ 3.15 by ARJ Software, Inc.
+-Archiver=arj
+-ID=60 EA
+-IDPos=0
+-Extension=arj
+-Start=^------------
+-End=^------------
+-Format0=* nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
+-Format1=???????????? zzzzzzzzzz pppppppppp yy-tt-dd hh:mm:ss aaaaaa
+-Format2=?
+-Format3=?
+-List=%P v %AQA
+-Extract=%P x -y {-g%W} {%S} %AQA !%LQA
+-ExtractWithoutPath=%P e -y {-g%W} {%S} %AQA !%LQA
+-Test=%P t -y {%S} %AQA
+-Delete=%P d -y {%S} %AQA !%LQA
+-Add=%P a -y {-g%W} {-v%V} {%S} %AQA !%LQA
+-Enabled=0
+-Output=0
+-Debug=0
+-
+-[RAR]
+-Description=RAR 4.00 - http://www.rarlab.com
+-Extension=rar
+-Archiver=rar
+-Start=^------------
+-End=^------------
+-Format0=?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
+-Format1=zzzzzzzzzzzzzzzzzzzzzz pppppppp dd-tt-yy hh:mm aaaaaaa
+-List=%P v %AQA
+-Extract=%P x -y {-p%W} {%S} %AQA @%LQ
+-ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQ
+-Test=%P t -y {%S} %AQA
+-Delete=%P d -y {%S} %AQA @%LQ
+-Add=%P a -y {-p%W} {-v%V} {%S} %AQA @%LQ
+-AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQA @%LQ
+-PasswordQuery=Enter password
+-Enabled=0
+-Output=0
+-Debug=0
+-
+-[RAR (5)]
+-Archiver=rar
+-Description=RAR 5.x - http://www.rarlab.com
+-ID=52 61 72 21
+-IDPos=<SeekID>
+-IDSeekRange=
+-Extension=rar
+-Start=^-----------
+-End=^-----------
+-Format0=aaaaaaaaaaa zzzzzzzzz dd-tt-yy hh:mm nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn
+-List=%P l %AQA
+-Extract=%P x -y {-p%W} {%S} %AQA @%LQA
+-ExtractWithoutPath=%P e -y {-p%W} {%S} %AQA @%LQA
+-Test=%P t -y {%S} %AQA
+-Delete=%P d -y {%S} %AQA @%LQA
+-Add=%P a -y {-p%W} {-v%V} {%S} %AQA @%LQA
+-AddSelfExtract=%P a -y -sfx {-p%W} {-v%V} {%S} %AQA @%LQA
+-PasswordQuery=Enter password
+-FormMode=0
+-Enabled=0
+-Output=0
+-Debug=0
+-
+ [TXZ]
+ Archiver=tar
+ Description=Compressed tar file (tar.xz)
+diff --git a/plugins/build.bat b/plugins/build.bat
+index bc52bb4..44688ad 100644
+--- a/plugins/build.bat
++++ b/plugins/build.bat
+@@ -14,7 +14,6 @@ lazbuild wcx\cpio\src\cpio.lpi %DC_ARCH%
+ lazbuild wcx\deb\src\deb.lpi %DC_ARCH%
+ lazbuild wcx\lzma\src\lzma.lpi %DC_ARCH%
+ lazbuild wcx\rpm\src\rpm.lpi %DC_ARCH%
+-lazbuild wcx\unrar\src\unrar.lpi %DC_ARCH%
+ lazbuild wcx\zip\src\zip.lpi %DC_ARCH%
+
+ rem WDX plugins
+@@ -43,10 +42,6 @@ pushd wcx\rpm\lib\
+ strip --strip-all rpm.wcx
+ popd
+
+-pushd wcx\unrar\lib\
+-strip --strip-all unrar.wcx
+-popd
+-
+ pushd wcx\zip\lib\
+ strip --strip-all zip.wcx
+ popd
+diff --git a/plugins/build.sh b/plugins/build.sh
+index a9c34ba..fc34b91 100755
+--- a/plugins/build.sh
++++ b/plugins/build.sh
+@@ -14,7 +14,6 @@ $lazbuild wcx/cpio/src/cpio.lpi $DC_ARCH
+ $lazbuild wcx/deb/src/deb.lpi $DC_ARCH
+ $lazbuild wcx/lzma/src/lzma.lpi $DC_ARCH
+ $lazbuild wcx/rpm/src/rpm.lpi $DC_ARCH
+-$lazbuild wcx/unrar/src/unrar.lpi $DC_ARCH
+ $lazbuild wcx/zip/src/Zip.lpi $DC_ARCH
+
+ # WDX plugins
+@@ -50,10 +49,6 @@ cd wcx/rpm/lib/
+ strip --strip-all rpm.wcx
+ cd $pluginsdir
+
+-cd wcx/unrar/lib/
+-strip --strip-all unrar.wcx
+-cd $pluginsdir
+-
+ cd wcx/zip/lib/
+ strip --strip-all zip.wcx
+ cd $pluginsdir
+diff --git a/plugins/wcx/lzma/LZMA/Methods.txt b/plugins/wcx/lzma/LZMA/Methods.txt
+index 393e1b0..9426718 100644
+--- a/plugins/wcx/lzma/LZMA/Methods.txt
++++ b/plugins/wcx/lzma/LZMA/Methods.txt
+@@ -73,13 +73,6 @@ List of defined IDs
+ 12 - BZip2 (not used). Use {04 02 02} instead
+ 02 - BZip
+ 02 - BZip2
+- 03 - Rar
+- 01 - Rar15
+- 02 - Rar20
+- 03 - Rar29
+- 04 - Arj
+- 01 - Arj (1,2,3)
+- 02 - Arj 4
+ 05 - Z
+ 06 - Lzh
+ 07 - Reserved for 7z
+@@ -109,9 +102,6 @@ List of defined IDs
+ F1 - Misc Ciphers (Combine)
+ 01 - Zip
+ 01 - Main Zip crypto algo
+- 03 - RAR
+- 02 -
+- 03 - Rar29 AES-128 + (modified SHA-1)
+ 07 - 7z
+ 01 - AES-256 + SHA-256
+
+@@ -126,8 +116,6 @@ List of defined IDs
+ F0 - Misc Hash
+
+ F1 - Misc
+- 03 - RAR
+- 03 - Rar29 Password Hashing (modified SHA1)
+ 07 - 7z
+ 01 - SHA-256 Password Hashing
+
+diff --git a/src/platform/udefaultplugins.pas b/src/platform/udefaultplugins.pas
+index 7dfa48a..5045f03 100644
+--- a/src/platform/udefaultplugins.pas
++++ b/src/platform/udefaultplugins.pas
+@@ -149,12 +149,6 @@ begin
+ else
+ gWCXPlugins.Flags[I]:= 4;
+
+- I:= gWCXPlugins.IndexOfName('rar');
+- if I < 0 then
+- gWCXPlugins.Add('rar', 68, Folder + 'unrar' + PathDelim + 'unrar.wcx')
+- else
+- gWCXPlugins.Flags[I]:= 68;
+-
+ // Wfx plugins
+ Folder:= '%commander_path%' + PathDelim + 'plugins' + PathDelim + 'wfx' + PathDelim;
+
diff --git a/libre/engrampa-libre/PKGBUILD b/libre/engrampa-libre/PKGBUILD
index a109e8839..a9b18d1bf 100644
--- a/libre/engrampa-libre/PKGBUILD
+++ b/libre/engrampa-libre/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 106530 2014-03-05 20:15:56Z flexiondotorg $
+# $Id: PKGBUILD 107641 2014-03-18 11:10:40Z flexiondotorg $
# Maintainer : Martin Wimpress <code@flexion.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
_pkgname=engrampa
pkgname=engrampa-libre
pkgver=1.8.0
-pkgrel=1
+pkgrel=1.1
pkgdesc="Archive manipulator for MATE, with unar recommendation included and nonfree unace recommendation removed"
url="http://mate-desktop.org"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL')
-depends=('bzip2' 'caja' 'desktop-file-utils' 'gtk2' 'gzip' 'libarchive' 'tar')
+depends=('bzip2' 'caja' 'desktop-file-utils' 'gtk2' 'gzip' 'libarchive' 'tar' 'json-glib')
makedepends=('mate-common' 'perl-xml-parser' 'yelp-tools')
optdepends=('unar: for RAR uncompression'
'zip: for ZIP archives' 'unzip: for ZIP archives'
@@ -19,7 +19,6 @@ optdepends=('unar: for RAR uncompression'
replaces=('mate-file-archiver' "$_pkgname")
provides=('mate-file-archiver' "$_pkgname=$pkgver")
conflicts=('mate-file-archiver' "$_pkgname")
-options=( '!emptydirs')
groups=('mate-extra')
source=("http://pub.mate-desktop.org/releases/1.8/${_pkgname}-${pkgver}.tar.xz"
fr-rpm-bsdtar.patch)
diff --git a/libre/evince-libre/PKGBUILD b/libre/evince-libre/PKGBUILD
new file mode 100644
index 000000000..ab6b40d82
--- /dev/null
+++ b/libre/evince-libre/PKGBUILD
@@ -0,0 +1,51 @@
+# $Id: PKGBUILD 210357 2014-04-14 17:00:49Z jgc $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
+
+_pkgname=evince
+pkgname=evince-libre
+pkgver=3.12.1
+pkgrel=1
+pkgdesc="Document viewer (PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt)), with libarchive support"
+url="https://wiki.gnome.org/Apps/Evince"
+arch=(i686 x86_64 mips64el)
+license=(GPL)
+replaces=$_pkgname
+conflicts=$_pkgname
+provides=$_pkgname=$pkgver
+depends=(gtk3 libgxps libspectre gsfonts poppler-glib djvulibre gnome-icon-theme t1lib libsecret desktop-file-utils dconf gsettings-desktop-schemas)
+makedepends=(itstool libnautilus-extension texlive-bin intltool gobject-introspection docbook-xsl python)
+optdepends=('texlive-bin: DVI support'
+ 'gvfs: bookmark support and session saving'
+ 'p7zip: cbz and cb7 compressed comic books'
+ 'tar: cbt compressed comic books'
+ 'libarchive: cbr compressed comic books')
+groups=(gnome)
+install=evince.install
+options=('!emptydirs')
+source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:4}/$_pkgname-$pkgver.tar.xz
+ libarchive.patch)
+sha256sums=('ef22cc29a7cbe70d2e7ce8c0b5b7ee774187ea69f3ae49a64c6d4a91559ef137'
+ '023f01f40c5efb8bf245d97067b3ef1da74f96a0bc53e53eb3d990d6c29b9e5e')
+prepare() {
+ cd $_pkgname-$pkgver
+ patch -Np1 -i ../libarchive.patch
+}
+
+build() {
+ cd $_pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc \
+ --localstatedir=/var --libexecdir=/usr/lib/evince \
+ --disable-static --enable-nautilus \
+ --enable-pdf --enable-tiff \
+ --enable-djvu --enable-dvi \
+ --enable-t1lib --enable-comics \
+ --disable-scrollkeeper --disable-schemas-compile \
+ --enable-introspection
+ make
+}
+
+package() {
+ cd $_pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
diff --git a/pcr/gnome-boxes-libre/gnome-boxes.install b/libre/evince-libre/evince.install
index 2ceb2ac08..1571179ca 100644
--- a/pcr/gnome-boxes-libre/gnome-boxes.install
+++ b/libre/evince-libre/evince.install
@@ -1,17 +1,13 @@
-update() {
+post_install() {
glib-compile-schemas /usr/share/glib-2.0/schemas
update-desktop-database -q
- gtk-update-icon-cache -f -q -t /usr/share/icons/hicolor
-}
-
-post_install() {
- update
+ gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor
}
post_upgrade() {
- update
+ post_install
}
post_remove() {
- update
+ post_install
}
diff --git a/libre/evince-libre/libarchive.patch b/libre/evince-libre/libarchive.patch
new file mode 100644
index 000000000..f86908267
--- /dev/null
+++ b/libre/evince-libre/libarchive.patch
@@ -0,0 +1,91 @@
+diff --git a/backend/comics/comics-document.c b/backend/comics/comics-document.c
+index a135a74..380cb54 100644
+--- a/backend/comics/comics-document.c
++++ b/backend/comics/comics-document.c
+@@ -54,8 +54,7 @@
+
+ typedef enum
+ {
+- RARLABS,
+- GNAUNRAR,
++ LIBARCHIVE,
+ UNZIP,
+ P7ZIP,
+ TAR
+@@ -107,11 +106,8 @@ typedef struct {
+ } ComicBookDecompressCommand;
+
+ static const ComicBookDecompressCommand command_usage_def[] = {
+- /* RARLABS unrar */
+- {"%s p -c- -ierr --", "%s vb -c- -- %s", NULL , FALSE, NO_OFFSET},
+-
+- /* GNA! unrar */
+- {NULL , "%s t %s" , "%s -xf %s %s" , FALSE, NO_OFFSET},
++ /* libarchive */
++ {NULL , "%s tf %s" , "%s xf %s %s" , FALSE, NO_OFFSET},
+
+ /* unzip */
+ {"%s -p -C --" , "%s %s" , NULL , TRUE , OFFSET_ZIP},
+@@ -282,7 +278,7 @@ comics_generate_command_lines (ComicsDocument *comics_document,
+ if (comics_document->dir == NULL)
+ return FALSE;
+
+- /* unrar-free can't create directories, but ev_mkdtemp already created the dir */
++ /* libarchive can't create directories on rar support, but ev_mkdtemp already created the dir */
+
+ comics_document->decompress_tmp =
+ g_strdup_printf (command_usage_def[type].decompress_tmp,
+@@ -321,51 +317,10 @@ comics_check_decompress_command (gchar *mime_type,
+
+ if (!strcmp (mime_type, "application/x-cbr") ||
+ !strcmp (mime_type, "application/x-rar")) {
+- /* The RARLAB provides a no-charge proprietary (freeware)
+- * decompress-only client for Linux called unrar. Another
+- * option is a GPLv2-licensed command-line tool developed by
+- * the Gna! project. Confusingly enough, the free software RAR
+- * decoder is also named unrar. For this reason we need to add
+- * some lines for disambiguation. Sorry for the added the
+- * complexity but it's life :)
+- * Finally, some distributions, like Debian, rename this free
+- * option as unrar-free.
+- * */
+- comics_document->selected_command =
+- g_find_program_in_path ("unrar");
+- if (comics_document->selected_command) {
+- /* We only use std_err to avoid printing useless error
+- * messages on the terminal */
+- success =
+- g_spawn_command_line_sync (
+- comics_document->selected_command,
+- &std_out, &std_err,
+- &retval, &err);
+- if (!success) {
+- g_propagate_error (error, err);
+- g_error_free (err);
+- return FALSE;
+- /* I don't check retval status because RARLAB unrar
+- * doesn't have a way to return 0 without involving an
+- * operation with a file*/
+- } else if (WIFEXITED (retval)) {
+- if (g_strrstr (std_out,"freeware") != NULL)
+- /* The RARLAB freeware client */
+- comics_document->command_usage = RARLABS;
+- else
+- /* The Gna! free software client */
+- comics_document->command_usage = GNAUNRAR;
+-
+- g_free (std_out);
+- g_free (std_err);
+- return TRUE;
+- }
+- }
+- /* The Gna! free software client with Debian naming convention */
+ comics_document->selected_command =
+- g_find_program_in_path ("unrar-free");
++ g_find_program_in_path ("bsdtar");
+ if (comics_document->selected_command) {
+- comics_document->command_usage = GNAUNRAR;
++ comics_document->command_usage = LIBARCHIVE;
+ return TRUE;
+ }
+
diff --git a/libre/gnome-boxes-libre/PKGBUILD b/libre/gnome-boxes-libre/PKGBUILD
new file mode 100644
index 000000000..a78d464e7
--- /dev/null
+++ b/libre/gnome-boxes-libre/PKGBUILD
@@ -0,0 +1,48 @@
+# $Id: PKGBUILD 109557 2014-04-15 23:23:01Z bgyorgy $
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Stefano Facchini <stefano.facchini@gmail.com>
+# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
+# Contributor (Parabola): Daniel Milewski <niitotantei@gmail.com>
+
+_pkgname=gnome-boxes
+pkgname=gnome-boxes-libre
+pkgver=3.12.1
+pkgrel=1
+pkgdesc="Simple GNOME 3 application to access remote or virtual systems, without nonfree system logos"
+arch=('i686' 'x86_64')
+url="https://wiki.gnome.org/Apps/Boxes"
+license=('LGPL')
+provides=$_pkgname=$pkgver
+conflicts=$_pkgname
+replaces=$_pkgname
+depends=('clutter-gtk' 'gtk-vnc' 'libosinfo' 'libsoup' 'libvirt-glib' 'spice-gtk3'
+ 'libtracker-sparql' 'qemu' 'cdrkit' 'libcdio' 'mtools' 'dconf'
+ 'gnome-icon-theme' 'gnome-themes-standard')
+makedepends=('gobject-introspection' 'intltool' 'itstool' 'spice-protocol' 'vala')
+install=$_pkgname.install
+source=(http://ftp.gnome.org/pub/GNOME/sources/$_pkgname/${pkgver%.*}/$_pkgname-$pkgver.tar.xz
+ libre.patch)
+sha256sums=('b5e27756a9c485ce2dea3f8eae867b6c7be70862b16cc44f9b55d86dd633bb83'
+ '2a93935ba94b9f327645a92f11d1a3d23cbeab8e5c800e414c6762181f51d4c0')
+
+prepare() {
+ cd $_pkgname-$pkgver
+
+ patch -Np1 -i "$srcdir/libre.patch"
+
+ cd help/es
+ intltool-update es.po
+ msgattrib --no-obsolete -o es.po es.po
+}
+
+build() {
+ cd $_pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/$_pkgname \
+ --disable-static --disable-schemas-compile --enable-smartcard
+ make
+}
+
+package() {
+ cd $_pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
diff --git a/libre/gnome-boxes-libre/gnome-boxes.install b/libre/gnome-boxes-libre/gnome-boxes.install
new file mode 100644
index 000000000..c0ed9a0d7
--- /dev/null
+++ b/libre/gnome-boxes-libre/gnome-boxes.install
@@ -0,0 +1,12 @@
+post_install() {
+ glib-compile-schemas usr/share/glib-2.0/schemas
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/libre/gnome-boxes-libre/libre.patch b/libre/gnome-boxes-libre/libre.patch
new file mode 100644
index 000000000..0caf82691
--- /dev/null
+++ b/libre/gnome-boxes-libre/libre.patch
@@ -0,0 +1,69 @@
+diff -Nur gnome-boxes-3.12.1.orig/data/gnome-boxes-logos-db.xml gnome-boxes-3.12.1/data/gnome-boxes-logos-db.xml
+--- gnome-boxes-3.12.1.orig/data/gnome-boxes-logos-db.xml 2014-03-18 14:33:22.000000000 +0100
++++ gnome-boxes-3.12.1/data/gnome-boxes-logos-db.xml 2014-04-27 22:40:15.543230347 +0200
+@@ -2,40 +2,4 @@
+
+ <!-- Please read README.logos for any questions about usage of product logos in Boxes. !-->
+
+- <os id="http://debian.org/debian/1.0">
+- <logo>http://www.debian.org/logos/openlogo-nd.svg</logo>
+- </os>
+-
+- <os id="http://fedoraproject.org/fedora/1">
+- <logo>http://people.gnome.org/~zeeshanak/logos/fedora.svg</logo>
+- </os>
+-
+- <os id="http://opensuse.org/opensuse/10.2">
+- <logo>http://people.gnome.org/~zeeshanak/logos/opensuse.svg</logo>
+- </os>
+-
+- <os id="http://ubuntu.com/ubuntu/4.10">
+- <logo>http://people.gnome.org/~zeeshanak/logos/ubuntu.svg</logo>
+- </os>
+-
+- <os id="http://gnome.org/3.6">
+- <logo>http://people.gnome.org/~zeeshanak/logos/gnome-logo.svg</logo>
+- </os>
+-
+- <os id="http://redhat.com/rhel/4.0">
+- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
+- </os>
+-
+- <os id="http://redhat.com/rhel/5.0">
+- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
+- </os>
+-
+- <os id="http://redhat.com/rhel/6.0">
+- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
+- </os>
+-
+- <os id="http://redhat.com/rhel/7.0">
+- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
+- </os>
+-
+ </libosinfo>
+diff -Nur gnome-boxes-3.12.1.orig/help/C/why-do-i-need-virtual-machine.page gnome-boxes-3.12.1/help/C/why-do-i-need-virtual-machine.page
+--- gnome-boxes-3.12.1.orig/help/C/why-do-i-need-virtual-machine.page 2014-03-25 12:30:55.000000000 -0300
++++ gnome-boxes-3.12.1/help/C/why-do-i-need-virtual-machine.page 2014-05-08 03:25:21.826398198 -0300
+@@ -27,8 +27,7 @@
+ <title>Why do I need a virtual machine?</title>
+
+ <p>A virtual machine can be useful when you need to run applications that will
+- only run on another operating system, on Microsoft Windows™ for instance. A
+- virtual machine can also be used during software development, to test in a
+- pristine environment.</p>
++ only run on another operating system. A virtual machine can also be used during
++ software development, to test in a pristine environment.</p>
+
+ </page>
+diff -Nur gnome-boxes-3.12.1.orig/help/es/why-do-i-need-virtual-machine.page gnome-boxes-3.12.1/help/es/why-do-i-need-virtual-machine.page
+--- gnome-boxes-3.12.1.orig/help/es/why-do-i-need-virtual-machine.page 2014-04-15 13:04:58.000000000 -0300
++++ gnome-boxes-3.12.1/help/es/why-do-i-need-virtual-machine.page 2014-05-08 03:26:15.686908834 -0300
+@@ -30,6 +30,6 @@
+
+ <title>¿Para qué necesito una máquina virtual?</title>
+
+- <p>Una máquina virtual puede ser útil cuando necesita ejecutar aplicaciones que sólo funcionan en otro sistema operativo, por ejemplo en Microsoft Windows™. También puede usar una máquina virtual durante el desarrollo de un software, para probarlo en un entorno limpio.</p>
++ <p>Una máquina virtual puede ser útil cuando necesita ejecutar aplicaciones que sólo funcionan en otro sistema operativo. También puede usar una máquina virtual durante el desarrollo de un software, para probarlo en un entorno limpio.</p>
+
+ </page>
diff --git a/libre/grub/PKGBUILD b/libre/grub/PKGBUILD
index ecf9bade2..b7b7b80bd 100644
--- a/libre/grub/PKGBUILD
+++ b/libre/grub/PKGBUILD
@@ -15,7 +15,7 @@ _UNIFONT_VER="6.3.20131217"
pkgname="grub"
pkgdesc="GNU GRand Unified Bootloader (2), (Parabola rebranded)"
pkgver=2.02.beta2
-pkgrel=2.1
+pkgrel=3
epoch="1"
url="https://www.gnu.org/software/grub/"
arch=('x86_64' 'i686')
@@ -43,22 +43,23 @@ source=("grub-${_pkgver}::git+git://git.sv.gnu.org/grub.git#tag=${_GRUB_GIT_TAG}
"grub-extras::git+git://git.sv.gnu.org/grub-extras.git#branch=master"
"http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz"
"http://ftp.gnu.org/gnu/unifont/unifont-${_UNIFONT_VER}/unifont-${_UNIFONT_VER}.bdf.gz.sig"
+ 'grub-10_linux-detect-parabola-initramfs.patch'
'grub-add-GRUB_COLOR_variables.patch'
- '09_parabola'
'60_memtest86+'
'grub.default'
- '10_linux.in.patch')
+ 'grub-10_linux-rebrand-free-distros.patch')
+
md5sums=('SKIP'
'SKIP'
'728b7439ac733a7c0d56049adec364c7'
'SKIP'
+ '945527e0de8d384166a4cf23439ae9ee'
'e506ae4a9f9f7d1b765febfa84e10d48'
- '9f67330f2979a153acb32af706e0c094'
'be55eabc102f2c60b38ed35c203686d6'
'52d374e0194e3f2e39ff7c92ecd58a6c'
'b23a144b7001c88734b79ed3bec491c4')
-pkgver() {
+_pkgver() {
cd "${srcdir}/grub-${_pkgver}/"
echo "$(git describe --tags)" | sed -e 's|grub.||g' -e 's|-|\.|g'
}
@@ -67,6 +68,10 @@ prepare() {
cd "${srcdir}/grub-${_pkgver}/"
+ msg "Patch to detect of Parabola GNU/Linux-libre initramfs images by grub-mkconfig"
+ patch -Np1 -i "${srcdir}/grub-10_linux-detect-parabola-initramfs.patch"
+ echo
+
msg "Patch to enable GRUB_COLOR_* variables in grub-mkconfig"
## Based on http://lists.gnu.org/archive/html/grub-devel/2012-02/msg00021.html
patch -Np1 -i "${srcdir}/grub-add-GRUB_COLOR_variables.patch"
@@ -76,7 +81,7 @@ prepare() {
sed 's|/usr/share/fonts/dejavu|/usr/share/fonts/dejavu /usr/share/fonts/TTF|g' -i "${srcdir}/grub-${_pkgver}/configure.ac"
msg "Rebranding for some free distros"
- patch -Np1 -i "${srcdir}/10_linux.in.patch"
+ patch -Np1 -i "${srcdir}/grub-10_linux-rebrand-free-distros.patch"
echo
msg "Fix mkinitcpio 'rw' FS#36275"
@@ -237,9 +242,6 @@ _package_grub-common_and_bios() {
rm -f "${pkgdir}/usr/lib/grub/i386-pc"/*.image || true
rm -f "${pkgdir}/usr/lib/grub/i386-pc"/{kernel.exec,gdb_grub,gmodule.pl} || true
- msg "Install 09_parabola helper script for grub-mkconfig"
- install -D -m0755 "${srcdir}/09_parabola" "${pkgdir}/etc/grub.d/09_parabola"
-
msg "Install extra /etc/grub.d/ files"
install -D -m0755 "${srcdir}/60_memtest86+" "${pkgdir}/etc/grub.d/60_memtest86+"
diff --git a/libre/grub/grub-10_linux-detect-parabola-initramfs.patch b/libre/grub/grub-10_linux-detect-parabola-initramfs.patch
new file mode 100644
index 000000000..18d9d520c
--- /dev/null
+++ b/libre/grub/grub-10_linux-detect-parabola-initramfs.patch
@@ -0,0 +1,54 @@
+From b470ffd22e43acc7c11231180187a720efd88de1 Mon Sep 17 00:00:00 2001
+From: Keshav Amburay <the.ridikulus.rat@gmail.com>
+Date: Sat, 5 Apr 2014 20:40:51 -0400
+Subject: [PATCH] 10_linux: Detect Arch Linux main and fallback initramfs
+ images
+
+---
+ util/grub.d/10_linux.in | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+diff --git a/util/grub.d/10_linux.in b/util/grub.d/10_linux.in
+index 00d1931..7d4086b 100644
+--- a/util/grub.d/10_linux.in
++++ b/util/grub.d/10_linux.in
+@@ -81,6 +81,8 @@ linux_entry ()
+ case $type in
+ recovery)
+ title="$(gettext_printf "%s, with Linux %s (recovery mode)" "${os}" "${version}")" ;;
++ fallback)
++ title="$(gettext_printf "%s, with Linux %s (fallback initramfs)" "${os}" "${version}")" ;;
+ *)
+ title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
+ esac
+@@ -180,7 +182,7 @@ while [ "x$list" != "x" ] ; do
+ basename=`basename $linux`
+ dirname=`dirname $linux`
+ rel_dirname=`make_system_path_relative_to_its_root $dirname`
+- version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
++ version=`echo $basename | sed -e "s,vmlinuz-,,g"`
+ alt_version=`echo $version | sed -e "s,\.old$,,g"`
+ linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"
+
+@@ -236,6 +238,18 @@ while [ "x$list" != "x" ] ; do
+
+ linux_entry "${OS}" "${version}" advanced \
+ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
++
++ if test -e "${dirname}/initramfs-${version}-fallback.img" ; then
++ initrd="initramfs-${version}-fallback.img"
++
++ if test -n "${initrd}" ; then
++ gettext_printf "Found fallback initramfs image: %s\n" "${dirname}/${initrd}" >&2
++ fi
++
++ linux_entry "${OS}" "${version}" fallback \
++ "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
++ fi
++
+ if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
+ linux_entry "${OS}" "${version}" recovery \
+ "single ${GRUB_CMDLINE_LINUX}"
+--
+1.9.1
+
diff --git a/libre/grub/10_linux.in.patch b/libre/grub/grub-10_linux-rebrand-free-distros.patch
index c9285e699..c9285e699 100644
--- a/libre/grub/10_linux.in.patch
+++ b/libre/grub/grub-10_linux-rebrand-free-distros.patch
diff --git a/libre/gst-plugins-bad-libre/PKGBUILD b/libre/gst-plugins-bad-libre/PKGBUILD
index eb682c7a1..359e1e79b 100644
--- a/libre/gst-plugins-bad-libre/PKGBUILD
+++ b/libre/gst-plugins-bad-libre/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 207667 2014-03-12 23:35:44Z foutrelis $
+# $Id: PKGBUILD 211613 2014-04-21 16:52:40Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer (Parabola): Márcio Silva <coadde@parabola.nu>
_pkgname=gst-plugins-bad
pkgname=$_pkgname-libre
-pkgver=1.2.3
-pkgrel=2
+pkgver=1.2.4
+pkgrel=1
pkgdesc="GStreamer Multimedia Framework Bad Plugins, without nonfree faac support"
arch=('i686' 'x86_64' 'mips64el')
license=('LGPL')
@@ -18,7 +18,7 @@ conflicts=$_pkgname
replaces=$_pkgname
options=(!emptydirs)
source=(${url}/src/$_pkgname/$_pkgname-$pkgver.tar.xz)
-sha256sums=('595d7911a9e6207dea37200587724bdbf841b81a5eb0730118be36976684278c')
+sha256sums=('984c133ec9d5d705e313d9e2bbd1472b93c6567460602a9a316578925ffe2eca')
build() {
cd $_pkgname-$pkgver
diff --git a/libre/icecat-adblock-plus/PKGBUILD b/libre/icecat-adblock-plus/PKGBUILD
index 412535caf..183c83019 100644
--- a/libre/icecat-adblock-plus/PKGBUILD
+++ b/libre/icecat-adblock-plus/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 106267 2014-02-26 10:45:17Z spupykin $
+# $Id: PKGBUILD 110697 2014-05-05 09:47:45Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=icecat-adblock-plus
-pkgver=2.5.1
-_addons_file=244872
+pkgver=2.6
+_addons_file=254870
pkgrel=1
pkgdesc="plugin for icecat which block ads and banners"
arch=('any')
@@ -14,7 +14,7 @@ makedepends=('unzip')
provides=(firefox-adblock-plus=$pkgver)
noextract=("adblock_plus-$pkgver-fx+tb+fn+sm.xpi")
source=(https://addons.mozilla.org/firefox/downloads/file/${_addons_file}/adblock_plus-$pkgver-fx+tb+fn+sm.xpi)
-md5sums=('7e1c072961be0d108c81ab91bd89d687')
+md5sums=('fa3ccbbd5f9ea6718fbb8cfbb321e556')
package() {
# _ffver=`pacman -Q firefox | cut -f2 -d\ | cut -f1-2 -d.`
diff --git a/libre/icecat-firebug/PKGBUILD b/libre/icecat-firebug/PKGBUILD
index a6ae920fd..838440097 100644
--- a/libre/icecat-firebug/PKGBUILD
+++ b/libre/icecat-firebug/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 108086 2014-03-22 15:16:00Z speps $
+# $Id: PKGBUILD 111003 2014-05-11 21:13:52Z speps $
# Maintainer: speps <speps at aur dot archlinux dot org>
pkgname=icecat-firebug
-pkgver=1.12.7
+pkgver=1.12.8
pkgrel=1
pkgdesc="IceCat plugin with tools for web development."
arch=(any)
@@ -12,11 +12,9 @@ groups=('icecat-addons')
depends=('icecat')
provides=('firebug' firefox-firebug=$pkgver)
source=("${url}releases/firebug/${pkgver%.*}/firebug-$pkgver.xpi")
-md5sums=('4d1580a5f6cee3c24c7deedd14a60862')
+md5sums=('b93528ff22c76f6c3f63f81fe5e49496')
package() {
- cd "$srcdir"
-
# extension
_dest="$pkgdir/usr/lib/icecat/browser/extensions/firebug@software.joehewitt.com"
find . -type d -exec install -d {} $_dest/{} \;
diff --git a/libre/icecat-noscript/PKGBUILD b/libre/icecat-noscript/PKGBUILD
index 67865faeb..016df6109 100644
--- a/libre/icecat-noscript/PKGBUILD
+++ b/libre/icecat-noscript/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 108368 2014-03-27 09:25:40Z spupykin $
+# $Id: PKGBUILD 110713 2014-05-05 11:29:07Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
_pkgname=firefox-noscript
pkgname=icecat-noscript
-pkgver=2.6.8.19
+pkgver=2.6.8.23
pkgrel=1
pkgdesc="plugin for icecat which disables script"
arch=('any')
@@ -14,7 +14,7 @@ depends=()
provides=$_pkgname=$pkgver
makedepends=('unzip')
source=(https://secure.informaction.com/download/releases/noscript-$pkgver.xpi)
-md5sums=('9d1e6ff5f01b4758e84465f5d3ca976d')
+md5sums=('873b4ceded027a890adb8aacd7f02ad8')
package() {
# _ffver=`pacman -Q icecat | cut -f2 -d\ | cut -f1 -d-`
diff --git a/libre/icedove-l10n/PKGBUILD b/libre/icedove-l10n/PKGBUILD
index 3f7cd97ec..ea320b005 100644
--- a/libre/icedove-l10n/PKGBUILD
+++ b/libre/icedove-l10n/PKGBUILD
@@ -10,8 +10,8 @@ pkgname=(
done)
)
epoch=1
-_pkgver=24.4.0
-pkgver=24.4.0.deb1
+_pkgver=24.5.0
+pkgver=24.5.0.deb1
pkgrel=1
pkgdesc="Language packs for Debian Icedove."
@@ -58,58 +58,58 @@ done
md5sums=('d5b2567a8cc8f64591f313a6efdaaffc'
'f3719964e893c1002b7a923e8f95f923'
- 'c93121b73fdf2d39afccd1d7fd60caeb'
- '57fca5d7db9a2a37e7a0d201af2a60b3'
- '6d03ecb778960fc2c6566b8446b62464'
- 'b70885875e7782a83aff337b5902e21d'
- '7d701ee758ee54f9d88244699c7138e3'
- 'fee5fe03c66ae9cda9f3059a70fc83c9'
- '6376a5852220121283ea313b0b39e130'
- '6c75e768ca2f68082afa26760f0b4ead'
- '3d308869a1a30c0833ec4c33c1767520'
- '37e8dfd5b1221d4f72195a06497fad72'
- 'd719de92a69b45bd484aabf4306ba381'
- 'c2070ce6b1f73a2f06551af1cf82cff6'
- 'fc373863e6840544efe4299000dccbe4'
- 'b6bab7f30edb369a0ba4626d3ec6ce93'
- 'f009615785602b3ca245049da9639150'
- '710a86030ec210c6c445ddcc2d28ab1d'
- 'e68b6bb74550bedddfcfeba881389728'
- '6c082285c132cb0142060193c75705a1'
- '8dc1f11fb8245fd4a204843bf8594523'
- '1de07a0a23c12c4ca64d88555b520c4a'
- 'd9c0e3ada62ed9c054e7cebfcc36bc68'
- '0daf1191b0030635c9308245f68f257e'
- '279f6b97ac045ba3e4480a9c9bd71744'
- 'ba0a5b5a036cb697b36111836f5861b5'
- 'a48efe83aaaa2a7f8329065731ee8a35'
- '839cea908690c20dc8614827337a9c99'
- 'a96f075ea17f05c5ad8e87a42faa4a1a'
- '97d7c494bcfe7d11a6b6343dd0e4a4ad'
- '6b115ff2a5ea92a230f3ec1016779384'
- 'c4ea285c1beed7c5284744380b9ffcae'
- 'a610bf078d35617eea8629d05c5bafbd'
- '1e1fec3a3d3e41672af1493c506cf5c8'
- '196f87e18f671043eacb427018b1673a'
- 'fa0f146d7a490be0b9d3f19efbe55508'
- 'b9b42d45be5e1a22fb1f9a8991215b86'
- 'fc318ea8b805bf14c92d4fb66e20fe84'
- '8d469a4689d390db43f4410361847c09'
- '26440002e34ef51b920d0382e46faa37'
- '49765ce7a015a477313e22eb8d771e8c'
- '29f3b1273e896b563d1f14d9ccc9a066'
- '92e12e47e8f774c9d2bbdbc0ac94b4a9'
- '884f2346fcf1ac6fa1a1b695ab40f1fd'
- '25eb46d720d366297461f594710fa3bd'
- '2a8418e9d4a9a87b1376827bfafdc21b'
- 'b4403e9140f8a6689303540ba0f7202c'
- '82eda2c5ab8ebaaf468084f4c3b06198'
- '30ac79a8878c1a1ab38dff17ba946ae0'
- '13ae166d1ef84de79b6f745e9858824b'
- 'a6add04eacdcad4d02a9aac8abdcebba'
- 'e411c419e6661ca676a7673dca2c4258'
- '630a49e221fc6338ac6b4ac24d51a6b3'
- 'f771ba594831dde641f321886de24fe9'
- '27c64d8de7a261091def28986b41009d'
- 'd42570097f0dd843789519c7104d387a'
- '8889a460ebec9c2d88651ce3a9e46892')
+ 'c2b8e92209dee18a05b94e09495f1385'
+ 'f6cac4c6774a7d51d0e3a22a03e61c03'
+ 'da248970bf31af33021397bb13b1d750'
+ 'a457ad88eddc7ada60fc04b8ef6336a6'
+ '930b436e34a7766fa192ef6813716a0d'
+ 'caff4414033312e1a2ff725eabfdbca2'
+ 'b73b185ed157581bc86dbad70140f781'
+ '66c0d28927983ae37589a41b62acbda0'
+ '26bb279c4ae7d5987fd2dc834e265609'
+ '2cd9b504b4c4d52cb0f6f7a09b12897b'
+ 'f2d9ab2811ddfe4dec979aae63aadc63'
+ '68bb674911996827fb985ab4e0d7f081'
+ '5c7304dad3182be7d1a1a0b5b6b517f8'
+ '1e6ef27a0f757e1bf3bd48dfcff988c4'
+ 'bd6530a1f5c3a06d2f974f440b6d8d00'
+ '68225d967e08411f1b825bc6d5e4c17c'
+ 'e507d0dd7391ebe61ea6dae549db79bf'
+ '11dbf8261b1cafa849f25d9349e85805'
+ 'a4dead940907cda0bfa633ce7d641028'
+ '165952170f601ab004c148d5fa1c5068'
+ '73e2a9b97d1b837acbda9bae9e54adab'
+ 'ec738fc347191482dd771270891a9554'
+ 'b61b62c115850b57a9b9d20550da4475'
+ '921e5a2f5884e63be3b6d048b3050836'
+ 'dfbdeafbb865244131c3909c5ea8dcb4'
+ '4866218c8e0d95028dba65c571b32444'
+ '005ea48a3f6b0ed0c49ef0fe8df056e6'
+ '5e2380bd5cf3f060bdf89119c78711c6'
+ '722629d32b0378356fb4aae9f9231f61'
+ '177fb699efbb8b30cd64971b6d0f6e75'
+ '790e2882c8084e995503d1f8f8b79b02'
+ '16f4e54fcaa46f44fd8fad365b30c335'
+ 'b17a85308b26e06e1d97e252469a4317'
+ 'dda3a2db757797e1fa0178b71b5cd962'
+ '297211f4484ae43cbe2efdcfbd4ee1c1'
+ '070c2bad3853f2045025a07b3025ed79'
+ '6a537cde801fc16caefd7bf7c84dde97'
+ 'aa0976c319f0363d2c64edd2f104c0f4'
+ '85c978c58c59227516e195fd946859d4'
+ '221d467d340b5e8d5bfee54b0c78995f'
+ '8fc6fc5c4902800a030a45dfdd0e2f66'
+ '6dd39f9c8598f3da3397ac304c604042'
+ '53b97beda7d2f610c41d97e39eef2c4e'
+ '8256a23a300fc2da822f7ba60604d1a2'
+ 'd8bc9e2baeff937a4d67e2f339a3cee9'
+ '9bafb577debd20b9ef3b4e2f583c66ce'
+ '18dc25d9341b70464809690bf2df4dd3'
+ '22bdcfbb2ba9fe31378c4421b19dac68'
+ 'e715a23c6f4c5f5830f02c13aefc04c2'
+ 'df57a059f59ede99d67d54ce28c09cef'
+ '73a0368e45b6f7dd46457903e710e96b'
+ '794888d55fad6a8ecc24ad68791add17'
+ '71b4452650ee04a3051572340f66557c'
+ 'fe35bcccdafb436a4ce36a3679071c78'
+ '744d692118ac876260d47247d79590bc')
diff --git a/libre/icedove-libre/PKGBUILD b/libre/icedove-libre/PKGBUILD
index 8ec9f26fd..61fb92709 100644
--- a/libre/icedove-libre/PKGBUILD
+++ b/libre/icedove-libre/PKGBUILD
@@ -3,8 +3,8 @@
# We're getting this from Debian Sid
_debname=icedove
-_debver=24.4.0
-_debrel=deb1
+_debver=24.5.0
+_debrel=deb2
_debrepo=http://ftp.debian.org/debian/pool/main/
debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
@@ -30,8 +30,8 @@ source=("${_debrepo}/`debfile ${_debname}`_${_debver}.orig.tar.xz"
vendor.js
${_pkgname}.desktop)
options=(!emptydirs)
-md5sums=('bfe7e2d0d7bf13070745849a98cf1ef0'
- 'bfb4b90eba2586b890c9735a91c3ab1f'
+md5sums=('f5fdb857b1da3e7419acbd5922b4966d'
+ '051ee07e7ca1f28b114e60524a7f72d2'
'c46cf2a671c8fdefcabd4c87e38f3d40'
'5a53179d14ae9631b7afe5e4d0fc0b25'
'e785e0c267f4435ae1a9aa0b03bcacfb')
diff --git a/libre/iceweasel-adblock-plus/PKGBUILD b/libre/iceweasel-adblock-plus/PKGBUILD
index 5d30cd52c..b965a4ea1 100644
--- a/libre/iceweasel-adblock-plus/PKGBUILD
+++ b/libre/iceweasel-adblock-plus/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 106267 2014-02-26 10:45:17Z spupykin $
+# $Id: PKGBUILD 110697 2014-05-05 09:47:45Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
pkgname=iceweasel-adblock-plus
-pkgver=2.5.1
-_addons_file=244872
+pkgver=2.6
+_addons_file=254870
pkgrel=1
pkgdesc="plugin for iceweasel which block ads and banners"
arch=('any')
@@ -14,7 +14,7 @@ makedepends=('unzip')
provides=(firefox-adblock-plus=$pkgver)
noextract=("adblock_plus-$pkgver-fx+tb+fn+sm.xpi")
source=(https://addons.mozilla.org/firefox/downloads/file/${_addons_file}/adblock_plus-$pkgver-fx+tb+fn+sm.xpi)
-md5sums=('7e1c072961be0d108c81ab91bd89d687')
+md5sums=('fa3ccbbd5f9ea6718fbb8cfbb321e556')
package() {
# _ffver=`pacman -Q firefox | cut -f2 -d\ | cut -f1-2 -d.`
diff --git a/libre/iceweasel-firebug/PKGBUILD b/libre/iceweasel-firebug/PKGBUILD
index f57abe28d..73eb462d4 100644
--- a/libre/iceweasel-firebug/PKGBUILD
+++ b/libre/iceweasel-firebug/PKGBUILD
@@ -1,8 +1,8 @@
-# $Id: PKGBUILD 108086 2014-03-22 15:16:00Z speps $
+# $Id: PKGBUILD 111003 2014-05-11 21:13:52Z speps $
# Maintainer: speps <speps at aur dot archlinux dot org>
pkgname=iceweasel-firebug
-pkgver=1.12.7
+pkgver=1.12.8
pkgrel=1
pkgdesc="Iceweasel plugin with tools for web development."
arch=(any)
@@ -12,11 +12,9 @@ groups=('iceweasel-addons')
depends=('iceweasel-libre')
provides=('firebug' firefox-firebug=$pkgver)
source=("${url}releases/firebug/${pkgver%.*}/firebug-$pkgver.xpi")
-md5sums=('4d1580a5f6cee3c24c7deedd14a60862')
+md5sums=('b93528ff22c76f6c3f63f81fe5e49496')
package() {
- cd "$srcdir"
-
# extension
_dest="$pkgdir/usr/lib/iceweasel/browser/extensions/firebug@software.joehewitt.com"
find . -type d -exec install -d {} $_dest/{} \;
diff --git a/libre/iceweasel-l10n/PKGBUILD b/libre/iceweasel-l10n/PKGBUILD
index dcb615fb2..0a1c38593 100644
--- a/libre/iceweasel-l10n/PKGBUILD
+++ b/libre/iceweasel-l10n/PKGBUILD
@@ -6,8 +6,8 @@
# Based on icecat-l10n package, which is in turn based on firefox-i18n
_debname=iceweasel
-_debver=28.0
-_debrel=deb1
+_debver=29.0
+_debrel=deb2
_debrepo=http://ftp.debian.org/debian/pool/main/
debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
@@ -71,85 +71,85 @@ for lang in ${_langpacks[@]}; do
done
md5sums=('a4593936bf1c7a9ec9368ff249f9cc56'
- '4c98d0c477318f1c3d2cc2298ee29f0b'
- '3a692f452edb66dc38be3df7032815c6'
- 'f7d80f448e6b74b778d1f53d15946944'
- 'da99de99e5c5a91d7881a7ff0d72fc0e'
- '52b083ef3be1874b3df8a9aacd7ddc48'
- '8ceb0b1bcbcbbb8857c047af7d6c9bf2'
- 'c7506a5d650f8a231f1cc31f513bfa97'
- '37bdd39f4697322b53f65894dcf954bd'
- '5cc06b98d6b17120cfb128f9658a1985'
- '32af1c5b14aec2da6f37604e4227bc6c'
- '8e164bbc01867718896f749d06697707'
- '6d1d18a1a14ac48f3d5a17af82256757'
- 'afa3fa9e08db03317f47b76c56385dc0'
- '8d891fa6b8cf6c48d5841c10edbe1784'
- 'a8563dc2766ca0b2ec022c25383cd956'
- 'f1be6d7b737c78553c3dfe24788700d5'
- 'd635359e60f7c11ef295eff187b6c7e5'
- 'b9ce01cd82b843d755dbd31f6864fb80'
- 'c382040b8c7d485dfff1ef44ce29e8d1'
- 'b707a1e7a7ae4b29e5984133a26638b1'
- '88aafa96e3ed5fac54449b4515bce8e5'
- '66b7abd745673b129256e0bb41396342'
- 'ae89a7c603cfb7fb1d03991dc799b7c4'
- '7d0d7fec327e5d5c4e56fc73b62c715d'
- '70de24a0fd0cf0d3bb5679adc896722e'
- '600af32eeffada27344155887fa58bd2'
- '2e0b277babeca678fd5fc0c03886216b'
- 'ad365b5c45431993732c8a022e2999d0'
- '85536c9ad2c7621e8551c3df26977260'
- 'c91061552a0d6cb5750edb619e500d5a'
- '4972188b511436ac90d486f41fb52957'
- 'daec7d9c806390067dffafb8e006f8e1'
- '2a00e2ac93826f96907ba8e18e419cb9'
- '51f3cae225b53cff038c722f5d0abb0d'
- '7596d5532f8dd063686b26a25063c41c'
- '5e03ef819ae45637da38618b47a7f343'
- '0766f9d9dd2caae775b9b29bb1539fb8'
- 'ae68e82f361cfbeb433c311a9ea664ea'
- 'e1965b478743b2d97cfba144a5d10230'
- 'a3ba5d86319e6e6b1a26b8979e81622a'
- '4b331746e061033fd2339c8e66803f90'
- 'dffe05b06576ee5bc01cf41f802f09f4'
- 'f2278f1773f2a783b2a50351b90a5614'
- 'ead52c5bb81a8a8484f253b1b43a5684'
- '257b69e5f65ac485c13338f742b63fea'
- '6a58bf9b1c82c1f612792fd848e8bacf'
- 'b7621c5afa18e6326b8b01428f051303'
- '27140ee773b68e8afa296bb1b4d8ee1d'
- '0be494a05e6e86b9a40a574752d11e1b'
- '6381be5a72067a1ecbb1f0653bd58518'
- '75bcd12bb4cd2f0df6607c90c950067a'
- 'ce331890e803fa47fde373f0b875c9be'
- 'a30ae7f1f0c35609740edfd5809645f0'
- 'c7fe87be2f24d49607e5e15825ce71ca'
- 'ea81a726f80feb11bcadcc23aa150d6b'
- '41a3f8c774ce81152f19bb527ad4feb5'
- 'ef930f8d20b10bddbd3930642a0882cd'
- '794042c6e59bad954c5167c13db2d320'
- '9a007643c4b3da83291b44e09dc38e66'
- 'af69db8d39d3881e667e012a6d50b05a'
- '9e22c68f1a0b1cafc05de19340d99f69'
- 'fa65e8b98c5fb14703a2659851561a55'
- 'b926283d546b36328d3e6f92e5a0c8ec'
- '4b40dc3418a8f533cd05f06abcef5fa5'
- '9b874eff827033170a50bce75fd6d03a'
- '0d128c33f2ccd125063119937c38143b'
- '8c0219d8e1d4d1b94c2388a85a3c0042'
- '8e5472f5faafd5e51d27f27d1742034f'
- 'fe406de17b7d599d85d23dd177de4320'
- '40df0996f9962c39fc1d0a32c34f2871'
- '3864cdbdda46a667a15597d88bec65bc'
- '0a5dd0fc74ea84f8e231c1a54071786f'
- 'bd5300e7d7bc47f5cd42ec6e365ec1dd'
- '69f34da54d0a69377d4c863109982933'
- 'a461fd71bf08d3e253b81f02b4607971'
- 'e970e09f404f513ae07c5694be75b500'
- 'f80da0d906b61caab5f334262672140e'
- '577ca0f3454f585a5a02e572e7f86c0d'
- 'c59a3c185a1658c44e32fa7ee1947f21'
- '5c091f1a800a6ec2af85382448ce3909'
- 'edfac679acb397f454159b5121858e8d'
- '37982e0113af242ad492bc24acddbce6')
+ '2333be54b7855d7f0a02effbbf1e94b9'
+ '7716c49cecf2be5fab532678a5f82f9f'
+ 'f6c401e1fb488e2750bf2ab3a4eb0c5f'
+ '06446f32732850ad1520d1db40045312'
+ '886de465a3b483e54938555111971c4a'
+ '03d03d02e210f19ffa4bb62598349c2a'
+ '59498ec32f4742088dd08bb7d687e075'
+ '901406c38743ec30071ab742be5a6dc1'
+ '2552a263939da4d6b2cdc028ae70bdc8'
+ '5b239362ac2bb1ea17b217aee1d6f382'
+ 'd73b72a19eeb2cdc0b780f6dbd43095c'
+ '6dd067fd82dfb0fd41de7867220178f7'
+ 'd3f8227d70a72e99cee2b69469c5c857'
+ 'fe44306246e7ba14cea7258d3611d0df'
+ '035083d22efcfeecd20497bb13d040cd'
+ 'ab7da0a98ccf67513c571e378df8c3e2'
+ '346f50844d8fdda1f8b98b2076f61052'
+ 'e101d11b8d67b796f361e03e18a8ca9b'
+ 'fe8126448cc72862a6815e10243f45f5'
+ 'a22c2da5cdda9bc88c7827cf0d947fd9'
+ '3c65cab2a716685917da377169be6dfa'
+ '92933eaeb87e2ac53116c17d752e4fbe'
+ '8be1f7fa7dcdd0c8e9c8a5152a3cca4d'
+ '5caeca8db6883c5e082f89f2efc7fb31'
+ 'c14456b6dbed99bffe0fe58c76e6f7d7'
+ '73067b30e2e0779a27c3ff2bbdeb38d1'
+ '62e41396c80144f4fc425df992ecde90'
+ '44a823ad5b0cda9bfadec358b4914272'
+ 'efddd7dec96f4ab0ef53cc78fc206509'
+ '498d60d4d7cbee93bb9e9597e8ac30e8'
+ '43943cdde786e176f276e6ab2c0ab6aa'
+ '665325f9e202bcd1b9bd143cf3b66949'
+ '1c27f547399c5c4fa4cc095c119eaa0f'
+ '66d6e6b0ff1f708e05dd09fab84e262b'
+ '7eb6fe7f731fc6eabb6016cdd6810e4f'
+ '47ede2f3272459422f9669651d6484f7'
+ 'a4fa48db1c306a81ed3ff85eebe41dee'
+ 'bfb8ca2c45d54fe22441828f50d05832'
+ '6aea9401f11ad57c2cee775fa5a578a2'
+ '27cd9c8f16e5e4752dd7edfcae4ee9c7'
+ '042bd30dcb4d8229d0285d9effae8b7f'
+ 'b2f653d5199a71016c3308f23ccabbf1'
+ '2991d4da826b8848fd5c1dea8663d48d'
+ '2a19e6ff467a643fa22d75a428c124a0'
+ '1da6e593ef5d9638f403c85b2a5ebc3b'
+ 'fe5c99154a090905c1bff4c106fa0347'
+ '36981a2c9499e868c0a4aa9872664c7f'
+ 'f526b5251ad1f8dc6876f337ea46d2b5'
+ 'e9cc4e725336d25448b68c4799806203'
+ '308551179ebe1296e7cff3cefa524db1'
+ '99f9bf5708cc32febbc268bf0cfc1691'
+ 'a4a47ba179b8518e36447a98af640a80'
+ 'f5cceb502e95b78822139d1bff57daeb'
+ 'd38265850619af33ebdd943a20a4f20b'
+ 'bd2067498c8cb4bee3596a9b12f1d35c'
+ '804b4f5926f7b4529d29143627cfbc6e'
+ '05289c4c8945a987612ef4b93e8ffab6'
+ 'ff6630d4dc6cde26daf5c56abf70b981'
+ 'e56d7ee921ffc355db4301409aefa35e'
+ '0c2b6a9babe70ba160e03b05bc88b402'
+ '8b30781c96c4d4314f1eceeeac3f4ad3'
+ 'e4a71833f7c06802be03a5e10efda7b8'
+ '8119cf1506cd66a4f401f1c594c254c4'
+ '9f367c12780a024895bb577b093a986b'
+ '20a0ac51b86969cd43e34832b16aac56'
+ '303e1b04cecc4297a77bdd340b30fc15'
+ 'a05a2bc2bda06ce03f3166c6884054bf'
+ 'f3a8c1533664f27e9466bbf9c8b3ade7'
+ '5a8e6722e9d16d58869122b1f05edb69'
+ '0c96308cba65543c558a17c3936721fe'
+ '42c2e8e09a5f85d9b8166f99367fa175'
+ '6e47aae145c85f16ea45335161629785'
+ '735db64988581ab62e4d8ad831698e37'
+ '4ea1be1b6d40e8d8f198c2890482dc6f'
+ '236871158d9113255a07369df5e08f55'
+ 'bf9d3fa54a1da16c5a8686de25527ec4'
+ 'b876d0817c381785693140753cef2900'
+ '0676fce81f8aa72fb52eda5928bb340c'
+ '106770faa7cc3019f762815c42d5026c'
+ '490f27a2aadfd1064b0ded007ae017d2'
+ '1aafea466e4b288c0f899061ed25a189'
+ 'fb8389cb9c9ff58a95c487015e61233e')
diff --git a/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch b/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
index 8ce9f48cc..56de11354 100644
--- a/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
+++ b/libre/iceweasel-libre/Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
@@ -273,10 +273,10 @@ index f35c227..7062886 100644
%{C++
diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp
-index 90d6c51..c25a301 100644
+index fe66f3b..2ddcd3b 100644
--- a/toolkit/xre/nsAppRunner.cpp
+++ b/toolkit/xre/nsAppRunner.cpp
-@@ -3926,7 +3926,7 @@ XREMain::XRE_mainRun()
+@@ -3952,7 +3952,7 @@ XREMain::XRE_mainRun()
if (gDoProfileReset) {
// Automatically migrate from the current application if we just
// reset the profile.
diff --git a/libre/iceweasel-libre/PKGBUILD b/libre/iceweasel-libre/PKGBUILD
index 1fafebea5..e43ff609f 100644
--- a/libre/iceweasel-libre/PKGBUILD
+++ b/libre/iceweasel-libre/PKGBUILD
@@ -14,8 +14,8 @@ _pgo=true
# We're getting this from Debian Experimental
_debname=iceweasel
-_debver=28.0
-_debrel=deb1
+_debver=29.0
+_debrel=deb2
_debrepo=http://ftp.debian.org/debian/pool/main/
debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
@@ -28,7 +28,7 @@ pkgrel=1
pkgdesc="A libre version of Debian Iceweasel, the standalone web browser based on Mozilla Firefox."
arch=(i686 x86_64 mips64el)
license=(MPL GPL LGPL)
-depends=(alsa-lib dbus-glib desktop-file-utils gtk2 hicolor-icon-theme hunspell libevent libnotify libvpx libxt mime-types mozilla-common mozilla-searchplugins nss sqlite startup-notification)
+depends=(alsa-lib dbus-glib desktop-file-utils gtk2 hicolor-icon-theme hunspell icu libevent libnotify libvpx libxt mime-types mozilla-common mozilla-searchplugins nss sqlite startup-notification)
makedepends=(autoconf2.13 diffutils gstreamer0.10-base imagemagick imake inetutils libidl2 libpulse librsvg libxslt mesa pkg-config python2 quilt unzip zip)
[ "$CARCH" != "mips64el" ] && makedepends+=('yasm')
options=(!emptydirs !makeflags)
@@ -60,17 +60,17 @@ source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2"
iceweasel-20.0.1-fixed-loading-icon.png
Bug-756390-Make-the-Reset-Firefox-feature-more-gener.patch
Fixup-Reset-Firefox-after-bad-merge.patch)
-md5sums=('8b53f3d7c1eea0338408f743f619eec1'
- 'e5399fd8ea49c227b9a4c45997dc7111'
- '023120a970670dc85cea19393f0b94b6'
+md5sums=('2cc40f481ca7b8421925a1def5fe14a0'
+ 'f317494c8717298a1c1e965624f49aa4'
+ '92a08a18995b915d6a6d0dab93ec6c1d'
'df08eaa1ac3bc6c2356be4fbf8ec8932'
'5d22063ebea2472dd0b1163b32b2050b'
'b03a979a78484503ba8dddad4f2c96d1'
'7b9e5996dd9fe0b186a43a297db1c6b5'
- '6620e724ec9a1be74e65089d81d802f7'
- '816013881cfc9a1f4f0ede72b014f8b3'
+ '1c42509891cf6843660a5f3c69896e80'
+ '783a5927246f014855b96a3abb92566b'
'6e335a517c68488941340ee1c23f97b0'
- '032553b17a61a9a79c7a03c8967251b2'
+ '9d1cc7b80085a4438305e9e37d42745b'
'8e165ef85ddd72491f0b48f8954afca6')
prepare() {
@@ -105,6 +105,11 @@ prepare() {
sed -i 's|Adobe Flash|SWF Player|g;
' browser/base/content/pageinfo/permissions.js \
browser/base/content/browser-plugins.js
+ sed -i '\|["]displayName["][:] ["]Flash["]| s|Flash|SWF Player|
+ \|["]displayName["][:] ["]Shockwave["]| s|Shockwave|DCR Player|
+ \|["]displayName["][:] ["]QuickTime["]| s|QuickTime|MOV Player|
+ \|installLinux| s|true|false|
+ ' browser/base/content/browser-plugins.js
sed -i '\|URL of the GeoLocation backend|d;
\|geo[.]wifi[.]uri|d;
' browser/app/profile/firefox.js \
@@ -113,11 +118,12 @@ prepare() {
sed -i "\|abouthome/snippet|d" browser/base/jar.mn
# Replace common URLs
- sed -i '\|extensions[.]getAddons[.]get[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|http://directory.fsf.org/wiki/GNU_IceCat");|g;
- \|extensions[.]getAddons[.]search[.]browseURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|http://directory.fsf.org/wiki/GNU_IceCat");|g;
- \|extensions[.]getAddons[.]search[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|http://directory.fsf.org/wiki/GNU_IceCat");|g;
- \|extensions[.]webservice[.]discoverURL| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|http://directory.fsf.org/wiki/GNU_IceCat");|g;
- \|browser[.]search[.]searchEnginesURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|http://directory.fsf.org/wiki/GNU_IceCat");|g;
+ sed -i '\|extensions[.]getAddons[.]get[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
+ \|extensions[.]getAddons[.]search[.]browseURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
+ \|extensions[.]getAddons[.]search[.]url| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
+ \|extensions[.]webservice[.]discoverURL| s|https://services[.]addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
+ \|browser[.]search[.]searchEnginesURL| s|https://addons[.]mozilla[.]org.\+["][)][;]|https://trisquel.info/en/browser");|g;
+ \|plugins[.]update[.]url| s|https://www[.]mozilla[.]org/[%]LOCALE[%]/plugincheck/["][)][;]|https://trisquel.info/en/browser");|g;
' browser/app/profile/firefox.js
cp "$srcdir/mozconfig" .mozconfig # Load our build config, disable SafeSearch
@@ -206,7 +212,7 @@ package() {
export DEBIAN_BUILD="mozilla-release"
cd "$srcdir/$DEBIAN_BUILD"
- make -f client.mk DESTDIR="$pkgdir" install
+ make -f client.mk DESTDIR="$pkgdir" INSTALL_SDK= install
install -Dm644 ../vendor.js "$pkgdir/usr/lib/$_pkgname/browser/defaults/preferences/vendor.js"
@@ -231,9 +237,6 @@ package() {
ln -sf /usr/lib/mozilla/plugins "$pkgdir/usr/lib/$_pkgname/browser/plugins"
ln -sf /usr/lib/mozilla/searchplugins "$pkgdir/usr/lib/$_pkgname/browser/searchplugins"
- # We don't want the development stuff
- rm -rf "$pkgdir"/usr/{include,lib/$_pkgname-devel,share/idl}
-
# Workaround for now: https://bugzilla.mozilla.org/show_bug.cgi?id=658850
ln -sf $_pkgname "$pkgdir/usr/lib/$_pkgname/$_pkgname-bin"
}
diff --git a/libre/iceweasel-libre/iceweasel-install-dir.patch b/libre/iceweasel-libre/iceweasel-install-dir.patch
index 3938c0b3e..af113fa85 100644
--- a/libre/iceweasel-libre/iceweasel-install-dir.patch
+++ b/libre/iceweasel-libre/iceweasel-install-dir.patch
@@ -1,29 +1,13 @@
diff --git a/config/baseconfig.mk b/config/baseconfig.mk
-index 9c70e24..eff0fd2 100644
+index 7ca8e35..6e92846 100644
--- a/config/baseconfig.mk
+++ b/config/baseconfig.mk
-@@ -1,8 +1,8 @@
+@@ -5,7 +5,7 @@
MOZ_APP_BASE_VERSION = $(firstword $(subst ., ,$(MOZ_APP_VERSION))).$(word 2,$(subst ., ,$(MOZ_APP_VERSION)))
--includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
--idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
+ includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
+ idldir = $(datadir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
-installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_BASE_VERSION)
--sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_BASE_VERSION)
-+includedir := $(includedir)/$(MOZ_APP_NAME)
-+idldir = $(datadir)/idl/$(MOZ_APP_NAME)
+installdir = $(libdir)/$(MOZ_APP_NAME)
-+sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel
- DIST = $(DEPTH)/dist
-
- # We do magic with OBJ_SUFFIX in config.mk, the following ensures we don't
-diff --git a/js/src/config/baseconfig.mk b/js/src/config/baseconfig.mk
-index 1ff076c..5386569 100644
---- a/js/src/config/baseconfig.mk
-+++ b/js/src/config/baseconfig.mk
-@@ -1,5 +1,5 @@
--installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
--sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_VERSION)
-+installdir = $(libdir)/$(MOZ_APP_NAME)
-+sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel
-
- ifneq (,$(filter /%,$(TOP_DIST)))
- DIST = $(TOP_DIST)
+ sdkdir = $(libdir)/$(MOZ_APP_NAME)-devel-$(MOZ_APP_BASE_VERSION)
+ ifndef TOP_DIST
+ TOP_DIST = dist
diff --git a/libre/iceweasel-libre/mozconfig b/libre/iceweasel-libre/mozconfig
index 957ea0dbf..8b2b2a5e3 100644
--- a/libre/iceweasel-libre/mozconfig
+++ b/libre/iceweasel-libre/mozconfig
@@ -16,6 +16,7 @@ ac_add_options --with-system-bz2
ac_add_options --with-system-png
ac_add_options --with-system-libevent
ac_add_options --with-system-libvpx
+ac_add_options --with-system-icu
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
diff --git a/libre/iceweasel-libre/vendor.js b/libre/iceweasel-libre/vendor.js
index 6510944a7..da8118138 100644
--- a/libre/iceweasel-libre/vendor.js
+++ b/libre/iceweasel-libre/vendor.js
@@ -20,3 +20,6 @@ pref("dom.storage.enabled", false);
// Disable missing nonfree flash notification
pref("plugins.notifyMissingFlash", false);
+
+// Disable "alt" as a shortcut key to open full menu bar. Conflicts with "alt" as a modifier
+pref("ui.key.menuAccessKeyFocuses", false);
diff --git a/libre/iceweasel-noscript/PKGBUILD b/libre/iceweasel-noscript/PKGBUILD
index f39297529..11d7a4b8b 100644
--- a/libre/iceweasel-noscript/PKGBUILD
+++ b/libre/iceweasel-noscript/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 108368 2014-03-27 09:25:40Z spupykin $
+# $Id: PKGBUILD 110713 2014-05-05 11:29:07Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
_pkgname=firefox-noscript
pkgname=iceweasel-noscript
-pkgver=2.6.8.19
+pkgver=2.6.8.23
pkgrel=1
pkgdesc="plugin for iceweasel which disables script"
arch=('any')
@@ -14,7 +14,7 @@ depends=()
provides=$_pkgname=$pkgver
makedepends=('unzip')
source=(https://secure.informaction.com/download/releases/noscript-$pkgver.xpi)
-md5sums=('9d1e6ff5f01b4758e84465f5d3ca976d')
+md5sums=('873b4ceded027a890adb8aacd7f02ad8')
package() {
# _ffver=`pacman -Q iceweasel-libre | cut -f2 -d\ | cut -f1 -d-`
diff --git a/libre/lesspipe-libre/PKGBUILD b/libre/lesspipe-libre/PKGBUILD
new file mode 100644
index 000000000..c42a8e976
--- /dev/null
+++ b/libre/lesspipe-libre/PKGBUILD
@@ -0,0 +1,53 @@
+# $Id: PKGBUILD 83837 2013-02-05 15:58:20Z spupykin $
+# Maintainer: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
+# Contributor: solsTiCe d'Hiver <solstice.dhiver@gmail.com>
+# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
+
+_pkgname=lesspipe
+pkgname=lesspipe-libre
+pkgver=1.82
+pkgrel=1
+pkgdesc='an input filter for the pager less, with libarchive support'
+depends=('less')
+arch=('any')
+license=('GPL')
+replaces=$_pkgname
+conflicts=$_pkgname
+provides=$_pkgname=$pkgver
+optdepends=('perl'
+ 'rpmextract: support for rpm files'
+ 'fastjar: support for jar files'
+ 'unzip: support for zip files'
+ 'libarchive: support for rar files'
+ 'p7zip: support for 7za files'
+ 'cabextract: support for cab files'
+ 'cdrkit: support for iso files'
+ 'html2text: support for html files'
+ 'antiword: support for word file'
+ 'unrtf: support for rtf file'
+ 'imagemagick: support for some image file')
+url="http://www-zeuthen.desy.de/~friebel/unix/lesspipe.html"
+source=(http://downloads.sourceforge.net/project/lesspipe/lesspipe/$pkgver/lesspipe-$pkgver.tar.gz
+ lesspipe.sh
+ libarchive.patch)
+md5sums=('dd6f7bc9b9f9afaf04c9aa0cdbe9fe56'
+ '675b56f560c600f43108adfd98222251'
+ 'ec452ea980d5c1e254e9775fd424c18c')
+
+prepare() {
+ cd $srcdir/$_pkgname-$pkgver
+ patch -Np1 -i ../libarchive.patch
+}
+
+build() {
+ cd $srcdir/$_pkgname-$pkgver
+ ./configure --prefix=/usr --yes
+ make
+}
+
+package() {
+ cd $srcdir/$_pkgname-$pkgver
+ mkdir -p $pkgdir/usr/share/man/man1
+ make install PREFIX=$pkgdir/usr
+ install -D $srcdir/lesspipe.sh $pkgdir/etc/profile.d/lesspipe.sh
+}
diff --git a/libre/lesspipe-libre/lesspipe.sh b/libre/lesspipe-libre/lesspipe.sh
new file mode 100644
index 000000000..ae6076f6b
--- /dev/null
+++ b/libre/lesspipe-libre/lesspipe.sh
@@ -0,0 +1 @@
+export LESSOPEN='|/usr/bin/lesspipe.sh %s'
diff --git a/libre/lesspipe-libre/libarchive.patch b/libre/lesspipe-libre/libarchive.patch
new file mode 100644
index 000000000..b4fb48788
--- /dev/null
+++ b/libre/lesspipe-libre/libarchive.patch
@@ -0,0 +1,100 @@
+diff --git a/configure b/configure
+index cbd34af..5df4a31 100755
+--- a/configure
++++ b/configure
+@@ -405,8 +405,7 @@ LESS_ADVANCED_PREPROCESSOR N # always interpret textlike files (html, ...)
+ # compression programs
+ bzip2 Y # include bzip2 and unzip code, it is fairly essential
+ unzip Y
+-rar Y
+-unrar Y
++bsdtar Y # bsdtar is the best free as in freedom alternative for rar
+ lzip N # default for lzma, lzip, xz, 7za should probably be N
+ lzma Y
+ xz Y
+diff --git a/lesspipe.sh b/lesspipe.sh
+index c80c75b..262a47b 100755
+--- a/lesspipe.sh
++++ b/lesspipe.sh
+@@ -276,12 +276,8 @@ get_cmd () {
+ cmd=(isrpm "$2" "$file2")
+ elif [[ "$1" = *Zip* || "$1" = *ZIP* ]] && cmd_exist unzip; then
+ cmd=(istemp "unzip -avp" "$2" "$file2")
+- elif [[ "$1" = *RAR\ archive* ]]; then
+- if cmd_exist unrar; then
+- cmd=(istemp "unrar p -inul" "$2" "$file2")
+- elif cmd_exist rar; then
+- cmd=(istemp "rar p -inul" "$2" "$file2")
+- fi
++ elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
++ cmd=(bsdtar xOf "$2" "$file2")
+ elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
+ cmd=(istemp "7za e -so" "$2" "$file2")
+ elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7zr; then
+@@ -534,14 +530,9 @@ isfinal() {
+ elif [[ "$1" = *Zip* || "$1" = *ZIP* ]] && cmd_exist unzip; then
+ msg "use zip_file${sep}contained_file to view a file in the archive"
+ istemp "unzip -lv" "$2"
+- elif [[ "$1" = *RAR\ archive* ]]; then
+- if cmd_exist unrar; then
+- msg "use rar_file${sep}contained_file to view a file in the archive"
+- istemp "unrar v" "$2"
+- elif cmd_exist rar; then
+- msg "use rar_file${sep}contained_file to view a file in the archive"
+- istemp "rar v" "$2"
+- fi
++ elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
++ msg "use rar_file${sep}contained_file to view a file in the archive"
++ bsdtar tf "$2"
+ elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
+ typeset res
+ res=$(istemp "7za l" "$2")
+diff --git a/lesspipe.sh.in b/lesspipe.sh.in
+index 407bc7d..753f3c5 100755
+--- a/lesspipe.sh.in
++++ b/lesspipe.sh.in
+@@ -323,17 +323,10 @@ get_cmd () {
+ elif [[ "$1" = *Zip* || "$1" = *ZIP* ]] && cmd_exist unzip; then
+ set -A cmd istemp "unzip -avp" "$2" "$file2"
+ #endif
+-#ifdef unrar
+- elif [[ "$1" = *RAR\ archive* ]]; then
+- if cmd_exist unrar; then
+- set -A cmd istemp "unrar p -inul" "$2" "$file2"
+- elif cmd_exist rar; then
+- set -A cmd istemp "rar p -inul" "$2" "$file2"
+- fi
+-#elif rar
+- elif [[ "$1" = *RAR\ archive* ]] && cmd_exist rar; then
+- set -A cmd istemp "rar p -inul" "$2" "$file2"
+-#endif
++#ifdef bsdtar
++ elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
++ set -A cmd bsdtar xOf "$2" "$file2"
++#endif
+ #ifdef 7za
+ elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
+ set -A cmd istemp "7za e -so" "$2" "$file2"
+@@ -705,19 +698,10 @@ isfinal() {
+ msg "use zip_file${sep}contained_file to view a file in the archive"
+ istemp "unzip -lv" "$2"
+ #endif
+-#ifdef unrar
+- elif [[ "$1" = *RAR\ archive* ]]; then
+- if cmd_exist unrar; then
+- msg "use rar_file${sep}contained_file to view a file in the archive"
+- istemp "unrar v" "$2"
+- elif cmd_exist rar; then
+- msg "use rar_file${sep}contained_file to view a file in the archive"
+- istemp "rar v" "$2"
+- fi
+-#elif rar
+- elif [[ "$1" = *RAR\ archive* ]] && cmd_exist rar; then
++#ifdef bsdtar
++ elif [[ "$1" = *RAR\ archive* ]] && cmd_exist bsdtar; then
+ msg "use rar_file${sep}contained_file to view a file in the archive"
+- istemp "rar v" "$2"
++ bsdtar tf "$2"
+ #endif
+ #ifdef 7za
+ elif [[ "$1" = *7-zip\ archive* || "$1" = *7z\ archive* ]] && cmd_exist 7za; then
diff --git a/libre/libosinfo-libre/PKGBUILD b/libre/libosinfo-libre/PKGBUILD
new file mode 100644
index 000000000..d78c9d595
--- /dev/null
+++ b/libre/libosinfo-libre/PKGBUILD
@@ -0,0 +1,62 @@
+# $Id: PKGBUILD 109557 2014-04-15 23:23:01Z bgyorgy $
+# Maintainer: Balló György <ballogyor+arch at gmail dot com>
+# Contributor: Stefano Facchini <stefano.facchini@gmail.com>
+# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
+# Contributor: Daniel Milewski <niitotantei@gmail.com>
+
+_pkgname=libosinfo
+pkgname=libosinfo-libre
+pkgver=0.2.10
+pkgrel=2
+pkgdesc="GObject based library API for managing information about operating systems, hypervisors and the (virtual) hardware devices they can support, without support for nonfree systems"
+arch=('i686' 'x86_64')
+url="http://libosinfo.org/"
+license=('GPL' 'LGPL')
+depends=('glib2' 'libxslt')
+makedepends=('check' 'gobject-introspection' 'intltool' 'libsoup' 'vala')
+provides=$_pkgname=$pkgver
+conflicts=$_pkgname
+replaces=$_pkgname
+options=('!libtool')
+source=(https://fedorahosted.org/releases/l/i/$_pkgname/$_pkgname-$pkgver.tar.gz
+ libre.patch)
+sha256sums=('564bd487a39dc09a10917c1d7a95f739ee7701d9cd0fbabcacea64f615e20a2d'
+ '46d1c192f3730b5b02a52140a8f1abbacd6d41968c29cec9205f0cec77336a17')
+
+prepare() {
+ cd $_pkgname-$pkgver
+
+ rm data/datamaps/windows-lang.xml \
+ data/hypervisors/rhel-xen.xml{,.in} \
+ data/install-scripts/*.xml \
+ data/oses/*.xml{,.in}
+ rm -r test/isodata/*
+
+ patch -Np1 -i ../libre.patch
+
+ cd po
+ for file in *.po; do
+ intltool-update ${file%.*}
+ msgattrib --no-obsolete -o $file $file
+ done
+}
+
+build() {
+ cd $_pkgname-$pkgver
+ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+ --disable-static --enable-udev \
+ --with-udev-rulesdir=/usr/lib/udev/rules.d \
+ --with-usb-ids-path=/usr/share/hwdata/usb.ids \
+ --with-pci-ids-path=/usr/share/hwdata/pci.ids
+ make
+}
+
+check() {
+ cd $_pkgname-$pkgver
+ make check
+}
+
+package() {
+ cd $_pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
diff --git a/libre/libosinfo-libre/libre.patch b/libre/libosinfo-libre/libre.patch
new file mode 100644
index 000000000..50213db8b
--- /dev/null
+++ b/libre/libosinfo-libre/libre.patch
@@ -0,0 +1,272 @@
+diff -ruN libosinfo-0.2.10/data/datamaps/Makefile.am libosinfo-0.2.10-libre/data/datamaps/Makefile.am
+--- libosinfo-0.2.10/data/datamaps/Makefile.am 2013-11-21 16:58:04.000000000 +0100
++++ libosinfo-0.2.10-libre/data/datamaps/Makefile.am 2014-04-27 16:45:16.440167522 +0200
+@@ -1,7 +1,6 @@
+
+ datamapdir = $(pkgdatadir)/db/datamaps/
+ datamap_DATA = \
+- windows-lang.xml \
+ x11-keyboard.xml \
+ $(NULL)
+
+diff -ruN libosinfo-0.2.10/data/datamaps/Makefile.in libosinfo-0.2.10-libre/data/datamaps/Makefile.in
+--- libosinfo-0.2.10/data/datamaps/Makefile.in 2014-03-20 18:52:11.000000000 +0100
++++ libosinfo-0.2.10-libre/data/datamaps/Makefile.in 2014-04-27 16:45:39.787204801 +0200
+@@ -331,7 +331,6 @@
+ top_srcdir = @top_srcdir@
+ datamapdir = $(pkgdatadir)/db/datamaps/
+ datamap_DATA = \
+- windows-lang.xml \
+ x11-keyboard.xml \
+ $(NULL)
+
+diff -ruN libosinfo-0.2.10/data/hypervisors/Makefile.am libosinfo-0.2.10-libre/data/hypervisors/Makefile.am
+--- libosinfo-0.2.10/data/hypervisors/Makefile.am 2013-11-21 16:58:04.000000000 +0100
++++ libosinfo-0.2.10-libre/data/hypervisors/Makefile.am 2014-04-27 16:51:11.999126605 +0200
+@@ -1,6 +1,6 @@
+
+ databasedir = $(pkgdatadir)/db/hypervisors/
+-database_in_files = kvm.xml.in qemu.xml.in rhel-xen.xml.in xen.xml.in
++database_in_files = kvm.xml.in qemu.xml.in xen.xml.in
+
+ database_DATA = $(database_in_files:.xml.in=.xml)
+
+diff -ruN libosinfo-0.2.10/data/hypervisors/Makefile.in libosinfo-0.2.10-libre/data/hypervisors/Makefile.in
+--- libosinfo-0.2.10/data/hypervisors/Makefile.in 2014-03-20 18:52:11.000000000 +0100
++++ libosinfo-0.2.10-libre/data/hypervisors/Makefile.in 2014-04-27 16:51:25.042665608 +0200
+@@ -330,7 +330,7 @@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ databasedir = $(pkgdatadir)/db/hypervisors/
+-database_in_files = kvm.xml.in qemu.xml.in rhel-xen.xml.in xen.xml.in
++database_in_files = kvm.xml.in qemu.xml.in xen.xml.in
+ database_DATA = $(database_in_files:.xml.in=.xml)
+ EXTRA_DIST = $(database_in_files) $(database_DATA)
+ all: all-am
+diff -ruN libosinfo-0.2.10/data/install-scripts/Makefile.am libosinfo-0.2.10-libre/data/install-scripts/Makefile.am
+--- libosinfo-0.2.10/data/install-scripts/Makefile.am 2014-03-06 22:42:00.000000000 +0100
++++ libosinfo-0.2.10-libre/data/install-scripts/Makefile.am 2014-04-27 16:57:22.658340718 +0200
+@@ -1,14 +1,6 @@
+
+ databasedir = $(pkgdatadir)/db/install-scripts/
+ database_DATA = \
+- debian.xml \
+- fedora.xml \
+- rhel.xml \
+- ubuntu.xml \
+- windows-sif.xml \
+- windows-cmd.xml \
+- windows-reg.xml \
+- windows-unattend.xml \
+ $(NULL)
+
+ EXTRA_DIST = $(database_DATA)
+diff -ruN libosinfo-0.2.10/data/install-scripts/Makefile.in libosinfo-0.2.10-libre/data/install-scripts/Makefile.in
+--- libosinfo-0.2.10/data/install-scripts/Makefile.in 2014-03-20 18:52:11.000000000 +0100
++++ libosinfo-0.2.10-libre/data/install-scripts/Makefile.in 2014-04-27 16:57:57.302215753 +0200
+@@ -331,14 +331,6 @@
+ top_srcdir = @top_srcdir@
+ databasedir = $(pkgdatadir)/db/install-scripts/
+ database_DATA = \
+- debian.xml \
+- fedora.xml \
+- rhel.xml \
+- ubuntu.xml \
+- windows-sif.xml \
+- windows-cmd.xml \
+- windows-reg.xml \
+- windows-unattend.xml \
+ $(NULL)
+
+ EXTRA_DIST = $(database_DATA)
+diff -ruN libosinfo-0.2.10/data/oses/Makefile.am libosinfo-0.2.10-libre/data/oses/Makefile.am
+--- libosinfo-0.2.10/data/oses/Makefile.am 2014-02-21 15:14:17.000000000 +0100
++++ libosinfo-0.2.10-libre/data/oses/Makefile.am 2014-04-27 17:04:12.968082285 +0200
+@@ -1,27 +1,6 @@
+
+ databasedir = $(pkgdatadir)/db/oses/
+ database_in_files = \
+- altlinux.xml.in \
+- centos.xml.in \
+- debian.xml.in \
+- dos.xml.in \
+- fedora.xml.in \
+- freebsd.xml.in \
+- gnome.xml.in \
+- mageia.xml.in \
+- mandriva.xml.in \
+- mandrake.xml.in \
+- netbsd.xml.in \
+- netware.xml.in \
+- macos.xml.in \
+- openbsd.xml.in \
+- opensuse.xml.in \
+- rhl.xml.in \
+- rhel.xml.in \
+- solaris.xml.in \
+- suse.xml.in \
+- ubuntu.xml.in \
+- windows.xml.in \
+ $(NULL)
+
+ database_DATA = $(database_in_files:.xml.in=.xml)
+diff -ruN libosinfo-0.2.10/data/oses/Makefile.in libosinfo-0.2.10-libre/data/oses/Makefile.in
+--- libosinfo-0.2.10/data/oses/Makefile.in 2014-03-20 18:52:11.000000000 +0100
++++ libosinfo-0.2.10-libre/data/oses/Makefile.in 2014-04-27 17:05:17.082415532 +0200
+@@ -331,27 +331,6 @@
+ top_srcdir = @top_srcdir@
+ databasedir = $(pkgdatadir)/db/oses/
+ database_in_files = \
+- altlinux.xml.in \
+- centos.xml.in \
+- debian.xml.in \
+- dos.xml.in \
+- fedora.xml.in \
+- freebsd.xml.in \
+- gnome.xml.in \
+- mageia.xml.in \
+- mandriva.xml.in \
+- mandrake.xml.in \
+- netbsd.xml.in \
+- netware.xml.in \
+- macos.xml.in \
+- openbsd.xml.in \
+- opensuse.xml.in \
+- rhl.xml.in \
+- rhel.xml.in \
+- solaris.xml.in \
+- suse.xml.in \
+- ubuntu.xml.in \
+- windows.xml.in \
+ $(NULL)
+
+ database_DATA = $(database_in_files:.xml.in=.xml)
+diff -ruN libosinfo-0.2.10/po/POTFILES.in libosinfo-0.2.10-libre/po/POTFILES.in
+--- libosinfo-0.2.10/po/POTFILES.in 2014-02-21 15:14:17.000000000 +0100
++++ libosinfo-0.2.10-libre/po/POTFILES.in 2014-04-27 17:09:40.876525788 +0200
+@@ -1,31 +1,9 @@
+-data/oses/netware.xml.in
+-data/oses/solaris.xml.in
+-data/oses/dos.xml.in
+-data/oses/mageia.xml.in
+-data/oses/mandrake.xml.in
+-data/oses/mandriva.xml.in
+-data/oses/suse.xml.in
+-data/oses/gnome.xml.in
+-data/oses/rhel.xml.in
+-data/oses/fedora.xml.in
+-data/oses/windows.xml.in
+-data/oses/opensuse.xml.in
+-data/oses/macos.xml.in
+-data/oses/debian.xml.in
+-data/oses/ubuntu.xml.in
+-data/oses/centos.xml.in
+-data/oses/openbsd.xml.in
+-data/oses/freebsd.xml.in
+-data/oses/rhl.xml.in
+-data/oses/netbsd.xml.in
+-data/oses/altlinux.xml.in
+ data/devices/qemu-ps2.xml.in
+ data/devices/qemu-pci.xml.in
+ data/devices/virtio-pci.xml.in
+ data/devices/qemu-usb.xml.in
+ data/hypervisors/kvm.xml.in
+ data/hypervisors/qemu.xml.in
+-data/hypervisors/rhel-xen.xml.in
+ data/hypervisors/xen.xml.in
+ osinfo/osinfo_avatar_format.c
+ osinfo/osinfo_deployment.c
+diff -ruN libosinfo-0.2.10/test/test-isodetect.c libosinfo-0.2.10-libre/test/test-isodetect.c
+--- libosinfo-0.2.10/test/test-isodetect.c 2014-02-21 15:14:17.000000000 +0100
++++ libosinfo-0.2.10-libre/test/test-isodetect.c 2014-04-27 16:27:40.353497937 +0200
+@@ -342,72 +342,6 @@
+ g_object_unref(loader);
+ }
+
+-START_TEST(test_fedora)
+-{
+- test_one("fedora");
+-}
+-END_TEST
+-
+-START_TEST(test_rhel)
+-{
+- test_one("rhel");
+-}
+-END_TEST
+-
+-START_TEST(test_ubuntu)
+-{
+- test_one("ubuntu");
+-}
+-END_TEST
+-
+-START_TEST(test_debian)
+-{
+- test_one("debian");
+-}
+-END_TEST
+-
+-START_TEST(test_windows)
+-{
+- test_one("windows");
+-}
+-END_TEST
+-
+-START_TEST(test_openbsd)
+-{
+- test_one("openbsd");
+-}
+-END_TEST
+-
+-START_TEST(test_opensuse)
+-{
+- test_one("opensuse");
+-}
+-END_TEST
+-
+-START_TEST(test_centos)
+-{
+- test_one("centos");
+-}
+-END_TEST
+-
+-START_TEST(test_gnome)
+-{
+- test_one("gnome");
+-}
+-END_TEST
+-
+-START_TEST(test_altlinux)
+-{
+- test_one("altlinux");
+-}
+-END_TEST
+-
+-START_TEST(test_mageia)
+-{
+- test_one("mageia");
+-}
+-END_TEST
+-
+ static Suite *
+ list_suite(void)
+ {
+@@ -415,17 +349,6 @@
+ TCase *tc = tcase_create("Core");
+ tcase_set_timeout(tc, 20);
+
+- tcase_add_test(tc, test_fedora);
+- tcase_add_test(tc, test_rhel);
+- tcase_add_test(tc, test_ubuntu);
+- tcase_add_test(tc, test_debian);
+- tcase_add_test(tc, test_windows);
+- tcase_add_test(tc, test_openbsd);
+- tcase_add_test(tc, test_opensuse);
+- tcase_add_test(tc, test_centos);
+- tcase_add_test(tc, test_gnome);
+- tcase_add_test(tc, test_altlinux);
+- tcase_add_test(tc, test_mageia);
+ suite_add_tcase(s, tc);
+ return s;
+ }
diff --git a/libre/libretools/PKGBUILD b/libre/libretools/PKGBUILD
index ef46c6954..12ca1640c 100644
--- a/libre/libretools/PKGBUILD
+++ b/libre/libretools/PKGBUILD
@@ -9,11 +9,11 @@ pkgdesc="Programs for Parabola development"
url="https://projects.parabolagnulinux.org/packages/libretools.git/"
license=('GPL3' 'GPL2')
-pkgver=20140322
-_libretools_commit=ff15727c30e5b9af5225869e38cbcfa2b08da6c2
-_devtools_commit=534d2015b45e013b37e1edbb997bd4df27d7b8fd
-md5sums=('36c7ef4d4f7e0b1fc6836babd40bb004'
- 'ec69dffa68829f063224de19bbd55fa9')
+pkgver=20140511
+_libretools_commit=9f1ef0bbdf1bc246c0c035a2dd6a4bcfa41664ef
+_devtools_commit=66f612510a5df14f4a017809e1eec671aee8cc26
+md5sums=('5bb8e455f86bdbe6a6757b9e34d69620'
+ 'dd8f9d7b0465ba855883e2fa99567967')
_packages_url=https://projects.parabolagnulinux.org/packages
source=($_packages_url/libretools.git/snapshot/libretools-$_libretools_commit.tar.bz2
@@ -38,9 +38,10 @@ check() {
}
package_librelib() {
- pkgdesc="Shell library portion of libretools"
+ pkgdesc="The shell library portion of libretools"
+ license=(GPL2)
depends=(
- wget # `aur` and `lib/blacklist.sh`
+ wget # `blacklist`
)
cd "$srcdir/$pkgbase-$_libretools_commit"
@@ -48,6 +49,8 @@ package_librelib() {
}
package_gitget() {
+ pkgdesc="A simple to use downloader for git URLs"
+ license=(GPL2)
depends=("librelib=$pkgver" git)
provides=("libregit=$pkgver")
@@ -62,17 +65,18 @@ package_libretools() {
backup=(etc/libretools.conf etc/libretools.d/chroot.conf etc/libretools.d/librefetch.conf)
install=libretools.install
replaces=(chroottools)
- conflicts=(devtools)
+ conflicts=(devtools chroottools)
depends=(
"librelib=$pkgver"
"gitget=$pkgver" # `createworkdir`
+ "systemd>=212" # force newer systemd
arch-install-scripts # `archroot` uses `pacstrap`
openssh # `librerelease`
rsync # `librerelease` and `makechrootpkg.sh`
subversion # `diff-unfree`
tokyocabinet # `treepkg`
- "systemd>208" # force newer systemd
+ wget # `aur`
)
optdepends=('namcap: to check package files')
@@ -82,6 +86,7 @@ package_libretools() {
package_libretools-mips64el() {
pkgdesc="Scripts for Parabola development (for mips64el architecture)"
+ license=(GPL3)
depends=("$pkgbase=$pkgver"
git # mips-add
)
diff --git a/libre/liferea-libre/PKGBUILD b/libre/liferea-libre/PKGBUILD
index 54d262de3..cfb211c1f 100644
--- a/libre/liferea-libre/PKGBUILD
+++ b/libre/liferea-libre/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 208122 2014-03-18 04:03:06Z eric $
+# $Id: PKGBUILD 211690 2014-04-23 14:07:47Z eric $
# Maintainer: Eric Bélanger <eric@archlinux.org>
# Contributor (Parabola): bitlord
# Contributor (Parabola): André Silva <emulatorman@parabola.nu>
_pkgname=liferea
pkgname=liferea-libre
-pkgver=1.10.7
+pkgver=1.10.9
pkgrel=1
pkgdesc="A desktop news aggregator for online news feeds and weblogs, without nonfree suggestions"
arch=('i686' 'x86_64')
@@ -26,7 +26,7 @@ options=('!emptydirs')
install=liferea.install
source=(https://github.com/lwindolf/liferea/releases/download/v${pkgver}/liferea-${pkgver}.tar.bz2
remove-non-free-suggestions.patch)
-sha1sums=('da0ae3457fc8525bb6e43fef01c3a52bea7e96cf'
+sha1sums=('04ff66e4f08ad2f46563a6784c656439cda1f223'
'855de60c91b5fee71c7ec88dd04b7d24a02dc0d1')
build() {
diff --git a/libre/linux-libre-api-headers/PKGBUILD b/libre/linux-libre-api-headers/PKGBUILD
index 087a0cae8..07cfe7988 100644
--- a/libre/linux-libre-api-headers/PKGBUILD
+++ b/libre/linux-libre-api-headers/PKGBUILD
@@ -1,12 +1,12 @@
-# $Id: PKGBUILD 205569 2014-02-07 22:36:57Z allan $
+# $Id: PKGBUILD 211667 2014-04-23 02:10:08Z allan $
# Maintainer: Allan McRae <allan@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
# toolchain build order: linux-libre-api-headers->glibc->binutils->gcc->binutils->glibc
pkgname=linux-libre-api-headers
-_basekernel=3.13
-_sublevel=2
+_basekernel=3.14
+_sublevel=1
pkgver=${_basekernel}.${_sublevel}
pkgrel=1
pkgdesc="Kernel headers sanitized for use in userspace"
@@ -17,17 +17,27 @@ provides=("linux-api-headers=${pkgver}")
conflicts=('linux-api-headers')
replaces=('linux-api-headers')
source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gnu/linux-libre-${_basekernel}-gnu.tar.xz"
- "http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz")
-md5sums=('98a8e803e0ed08557f3cdd4d56b0ddc1'
- '5594978ab8b62033274cf36305baf238')
+ "http://linux-libre.fsfla.org/pub/linux-libre/releases/${pkgver}-gnu/patch-${_basekernel}-gnu-${pkgver}-gnu.xz"
+ linux-3.14-xattr_header.patch)
+md5sums=('c108ec52eeb2a9b9ddbb8d12496ff25f'
+ '2b4862b3c76011e66e536f18fbf0fb27'
+ '22926521588b2e95f3c2a2cb428e7cf9')
-build() {
+prepare() {
cd ${srcdir}/linux-${_basekernel}
if [ "${_basekernel}" != "${pkgver}" ]; then
patch -p1 -i "${srcdir}/patch-${_basekernel}-gnu-${pkgver}-gnu"
fi
+ # fix xattr.h dual inclusion issues
+ # https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/patch/?id=ea1a8217
+ patch -p1 -i $srcdir/linux-3.14-xattr_header.patch
+}
+
+build() {
+ cd ${srcdir}/linux-${_basekernel}
+
make mrproper
make headers_check
}
diff --git a/libre/linux-libre-api-headers/linux-3.14-xattr_header.patch b/libre/linux-libre-api-headers/linux-3.14-xattr_header.patch
new file mode 100644
index 000000000..1ea583d86
--- /dev/null
+++ b/libre/linux-libre-api-headers/linux-3.14-xattr_header.patch
@@ -0,0 +1,76 @@
+From ea1a8217b06b41b31a2b60b0b83f75c77ef9c873 Mon Sep 17 00:00:00 2001
+From: Serge Hallyn <serge.hallyn@ubuntu.com>
+Date: Thu, 3 Apr 2014 14:48:33 -0700
+Subject: xattr: guard against simultaneous glibc header inclusion
+
+If the glibc xattr.h header is included after the uapi header,
+compilation fails due to an enum re-using a #define from the uapi
+header.
+
+Protect against this by guarding the define and enum inclusions against
+each other.
+
+(See https://lists.debian.org/debian-glibc/2014/03/msg00029.html
+and https://sourceware.org/glibc/wiki/Synchronizing_Headers
+for more information.)
+
+Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com>
+Cc: Andrew Morton <akpm@linux-foundation.org>
+Cc: Allan McRae <allan@archlinux.org>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+
+diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
+index 335e8a7..c140620 100644
+--- a/include/uapi/linux/libc-compat.h
++++ b/include/uapi/linux/libc-compat.h
+@@ -85,6 +85,12 @@
+
+ #endif /* _NETINET_IN_H */
+
++/* Definitions for xattr.h */
++#if defined(_SYS_XATTR_H)
++#define __UAPI_DEF_XATTR 0
++#else
++#define __UAPI_DEF_XATTR 1
++#endif
+
+ /* If we did not see any headers from any supported C libraries,
+ * or we are being included in the kernel, then define everything
+@@ -98,6 +104,9 @@
+ #define __UAPI_DEF_IPV6_MREQ 1
+ #define __UAPI_DEF_IPPROTO_V6 1
+
++/* Definitions for xattr.h */
++#define __UAPI_DEF_XATTR 1
++
+ #endif /* __GLIBC__ */
+
+ #endif /* _UAPI_LIBC_COMPAT_H */
+diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h
+index 40bbc04..c38355c 100644
+--- a/include/uapi/linux/xattr.h
++++ b/include/uapi/linux/xattr.h
+@@ -7,11 +7,18 @@
+ Copyright (c) 2001-2002 Silicon Graphics, Inc. All Rights Reserved.
+ Copyright (c) 2004 Red Hat, Inc., James Morris <jmorris@redhat.com>
+ */
++
++#include <linux/libc-compat.h>
++
+ #ifndef _UAPI_LINUX_XATTR_H
+ #define _UAPI_LINUX_XATTR_H
+
++#ifdef __UAPI_DEF_XATTR
++#define __USE_KERNEL_XATTR_DEFS
++
+ #define XATTR_CREATE 0x1 /* set value, fail if attr already exists */
+ #define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */
++#endif
+
+ /* Namespaces */
+ #define XATTR_OS2_PREFIX "os2."
+--
+cgit v0.10.1
+
diff --git a/libre/linux-libre-grsec/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch b/libre/linux-libre-grsec/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch
deleted file mode 100644
index 898ee1543..000000000
--- a/libre/linux-libre-grsec/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 720a9dbf61c88bd57d6f8198ed8ccb2bd4a6abd8 Mon Sep 17 00:00:00 2001
-From: Matt Fleming <matt@console-pimps.org>
-Date: Wed, 9 Apr 2014 10:33:49 +0200
-Subject: [PATCH 07/10] x86/efi: Correct EFI boot stub use of code32_start
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-code32_start should point at the start of the protected mode code, and
-*not* at the beginning of the bzImage. This is much easier to do in
-assembly so document that callers of make_boot_params() need to fill out
-code32_start.
-
-The fallout from this bug is that we would end up relocating the image
-but copying the image at some offset, resulting in what appeared to be
-memory corruption.
-
-Reported-by: Thomas Bächler <thomas@archlinux.org>
-Signed-off-by: Matt Fleming <matt.fleming@intel.com>
----
- arch/x86/boot/compressed/eboot.c | 5 +++--
- arch/x86/boot/compressed/head_32.S | 14 ++++++++------
- arch/x86/boot/compressed/head_64.S | 9 +++------
- 3 files changed, 14 insertions(+), 14 deletions(-)
-
-diff --git a/arch/x86/boot/compressed/eboot.c b/arch/x86/boot/compressed/eboot.c
-index a7677ba..78cbb2d 100644
---- a/arch/x86/boot/compressed/eboot.c
-+++ b/arch/x86/boot/compressed/eboot.c
-@@ -425,6 +425,9 @@ void setup_graphics(struct boot_params *boot_params)
- * Because the x86 boot code expects to be passed a boot_params we
- * need to create one ourselves (usually the bootloader would create
- * one for us).
-+ *
-+ * The caller is responsible for filling out ->code32_start in the
-+ * returned boot_params.
- */
- struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table)
- {
-@@ -483,8 +486,6 @@ struct boot_params *make_boot_params(void *handle, efi_system_table_t *_table)
- hdr->vid_mode = 0xffff;
- hdr->boot_flag = 0xAA55;
-
-- hdr->code32_start = (__u64)(unsigned long)image->image_base;
--
- hdr->type_of_loader = 0x21;
-
- /* Convert unicode cmdline to ascii */
-diff --git a/arch/x86/boot/compressed/head_32.S b/arch/x86/boot/compressed/head_32.S
-index 9116aac..f45ab7a 100644
---- a/arch/x86/boot/compressed/head_32.S
-+++ b/arch/x86/boot/compressed/head_32.S
-@@ -50,6 +50,13 @@ ENTRY(efi_pe_entry)
- pushl %eax
- pushl %esi
- pushl %ecx
-+
-+ call reloc
-+reloc:
-+ popl %ecx
-+ subl reloc, %ecx
-+ movl %ecx, BP_code32_start(%eax)
-+
- sub $0x4, %esp
-
- ENTRY(efi_stub_entry)
-@@ -63,12 +70,7 @@ ENTRY(efi_stub_entry)
- hlt
- jmp 1b
- 2:
-- call 3f
--3:
-- popl %eax
-- subl $3b, %eax
-- subl BP_pref_address(%esi), %eax
-- add BP_code32_start(%esi), %eax
-+ movl BP_code32_start(%esi), %eax
- leal preferred_addr(%eax), %eax
- jmp *%eax
-
-diff --git a/arch/x86/boot/compressed/head_64.S b/arch/x86/boot/compressed/head_64.S
-index c5c1ae0..b10fa66 100644
---- a/arch/x86/boot/compressed/head_64.S
-+++ b/arch/x86/boot/compressed/head_64.S
-@@ -217,6 +217,8 @@ ENTRY(efi_pe_entry)
- cmpq $0,%rax
- je 1f
- mov %rax, %rdx
-+ leaq startup_32(%rip), %rax
-+ movl %eax, BP_code32_start(%rdx)
- popq %rsi
- popq %rdi
-
-@@ -230,12 +232,7 @@ ENTRY(efi_stub_entry)
- hlt
- jmp 1b
- 2:
-- call 3f
--3:
-- popq %rax
-- subq $3b, %rax
-- subq BP_pref_address(%rsi), %rax
-- add BP_code32_start(%esi), %eax
-+ movl BP_code32_start(%esi), %eax
- leaq preferred_addr(%rax), %rax
- jmp *%rax
-
---
-1.9.2
-
diff --git a/libre/linux-libre-grsec/0008-futex-avoid-race-between-requeue-and-wake.patch b/libre/linux-libre-grsec/0008-futex-avoid-race-between-requeue-and-wake.patch
deleted file mode 100644
index 8685e1168..000000000
--- a/libre/linux-libre-grsec/0008-futex-avoid-race-between-requeue-and-wake.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From aafcd8f8692fb9e389608c1efad2e57c0bbb9362 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Tue, 8 Apr 2014 15:30:07 -0700
-Subject: [PATCH 08/10] futex: avoid race between requeue and wake
-
-commit 69cd9eba38867a493a043bb13eb9b33cad5f1a9a upstream.
-
-Jan Stancek reported:
- "pthread_cond_broadcast/4-1.c testcase from openposix testsuite (LTP)
- occasionally fails, because some threads fail to wake up.
-
- Testcase creates 5 threads, which are all waiting on same condition.
- Main thread then calls pthread_cond_broadcast() without holding mutex,
- which calls:
-
- futex(uaddr1, FUTEX_CMP_REQUEUE_PRIVATE, 1, 2147483647, uaddr2, ..)
-
- This immediately wakes up single thread A, which unlocks mutex and
- tries to wake up another thread:
-
- futex(uaddr2, FUTEX_WAKE_PRIVATE, 1)
-
- If thread A manages to call futex_wake() before any waiters are
- requeued for uaddr2, no other thread is woken up"
-
-The ordering constraints for the hash bucket waiter counting are that
-the waiter counts have to be incremented _before_ getting the spinlock
-(because the spinlock acts as part of the memory barrier), but the
-"requeue" operation didn't honor those rules, and nobody had even
-thought about that case.
-
-This fairly simple patch just increments the waiter count for the target
-hash bucket (hb2) when requeing a futex before taking the locks. It
-then decrements them again after releasing the lock - the code that
-actually moves the futex(es) between hash buckets will do the additional
-required waiter count housekeeping.
-
-Reported-and-tested-by: Jan Stancek <jstancek@redhat.com>
-Acked-by: Davidlohr Bueso <davidlohr@hp.com>
-Cc: Peter Zijlstra <peterz@infradead.org>
-Cc: Thomas Gleixner <tglx@linutronix.de>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- kernel/futex.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/kernel/futex.c b/kernel/futex.c
-index 08ec814..16b1f2c 100644
---- a/kernel/futex.c
-+++ b/kernel/futex.c
-@@ -1450,6 +1450,7 @@ retry:
- hb2 = hash_futex(&key2);
-
- retry_private:
-+ hb_waiters_inc(hb2);
- double_lock_hb(hb1, hb2);
-
- if (likely(cmpval != NULL)) {
-@@ -1459,6 +1460,7 @@ retry_private:
-
- if (unlikely(ret)) {
- double_unlock_hb(hb1, hb2);
-+ hb_waiters_dec(hb2);
-
- ret = get_user(curval, uaddr1);
- if (ret)
-@@ -1508,6 +1510,7 @@ retry_private:
- break;
- case -EFAULT:
- double_unlock_hb(hb1, hb2);
-+ hb_waiters_dec(hb2);
- put_futex_key(&key2);
- put_futex_key(&key1);
- ret = fault_in_user_writeable(uaddr2);
-@@ -1517,6 +1520,7 @@ retry_private:
- case -EAGAIN:
- /* The owner was exiting, try again. */
- double_unlock_hb(hb1, hb2);
-+ hb_waiters_dec(hb2);
- put_futex_key(&key2);
- put_futex_key(&key1);
- cond_resched();
-@@ -1592,6 +1596,7 @@ retry_private:
-
- out_unlock:
- double_unlock_hb(hb1, hb2);
-+ hb_waiters_dec(hb2);
-
- /*
- * drop_futex_key_refs() must be called outside the spinlocks. During
---
-1.9.2
-
diff --git a/libre/linux-libre-grsec/0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch b/libre/linux-libre-grsec/0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch
deleted file mode 100644
index 5acbf53dd..000000000
--- a/libre/linux-libre-grsec/0009-iwlwifi-mvm-rs-fix-search-cycle-rules.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 06af061dd673d749d5516bea41e2becb034e00b8 Mon Sep 17 00:00:00 2001
-From: Eyal Shapira <eyal@wizery.com>
-Date: Sun, 16 Mar 2014 05:23:21 +0200
-Subject: [PATCH 09/10] iwlwifi: mvm: rs: fix search cycle rules
-
-commit 8930b05090acd321b1fc7c642528c697cb105c42 upstream.
-
-We should explore all possible columns when searching to be
-as resilient as possible to changing conditions. This fixes
-for example a scenario where even after a sudden creation of
-rssi difference between the 2 antennas we would keep doing MIMO
-at a low rate instead of switching to SISO at a higher rate using
-the better antenna which was the optimal configuration.
-
-Signed-off-by: Eyal Shapira <eyalx.shapira@intel.com>
-Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/net/wireless/iwlwifi/mvm/rs.c | 36 +++++++++++++++++------------------
- 1 file changed, 18 insertions(+), 18 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c
-index 6abf74e..5bc8715 100644
---- a/drivers/net/wireless/iwlwifi/mvm/rs.c
-+++ b/drivers/net/wireless/iwlwifi/mvm/rs.c
-@@ -211,9 +211,9 @@ static const struct rs_tx_column rs_tx_columns[] = {
- .next_columns = {
- RS_COLUMN_LEGACY_ANT_B,
- RS_COLUMN_SISO_ANT_A,
-+ RS_COLUMN_SISO_ANT_B,
- RS_COLUMN_MIMO2,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-+ RS_COLUMN_MIMO2_SGI,
- },
- },
- [RS_COLUMN_LEGACY_ANT_B] = {
-@@ -221,10 +221,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
- .ant = ANT_B,
- .next_columns = {
- RS_COLUMN_LEGACY_ANT_A,
-+ RS_COLUMN_SISO_ANT_A,
- RS_COLUMN_SISO_ANT_B,
- RS_COLUMN_MIMO2,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-+ RS_COLUMN_MIMO2_SGI,
- },
- },
- [RS_COLUMN_SISO_ANT_A] = {
-@@ -234,8 +234,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
- RS_COLUMN_SISO_ANT_B,
- RS_COLUMN_MIMO2,
- RS_COLUMN_SISO_ANT_A_SGI,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-+ RS_COLUMN_SISO_ANT_B_SGI,
-+ RS_COLUMN_MIMO2_SGI,
- },
- .checks = {
- rs_siso_allow,
-@@ -248,8 +248,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
- RS_COLUMN_SISO_ANT_A,
- RS_COLUMN_MIMO2,
- RS_COLUMN_SISO_ANT_B_SGI,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-+ RS_COLUMN_SISO_ANT_A_SGI,
-+ RS_COLUMN_MIMO2_SGI,
- },
- .checks = {
- rs_siso_allow,
-@@ -263,8 +263,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
- RS_COLUMN_SISO_ANT_B_SGI,
- RS_COLUMN_MIMO2_SGI,
- RS_COLUMN_SISO_ANT_A,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-+ RS_COLUMN_SISO_ANT_B,
-+ RS_COLUMN_MIMO2,
- },
- .checks = {
- rs_siso_allow,
-@@ -279,8 +279,8 @@ static const struct rs_tx_column rs_tx_columns[] = {
- RS_COLUMN_SISO_ANT_A_SGI,
- RS_COLUMN_MIMO2_SGI,
- RS_COLUMN_SISO_ANT_B,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-+ RS_COLUMN_SISO_ANT_A,
-+ RS_COLUMN_MIMO2,
- },
- .checks = {
- rs_siso_allow,
-@@ -292,10 +292,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
- .ant = ANT_AB,
- .next_columns = {
- RS_COLUMN_SISO_ANT_A,
-+ RS_COLUMN_SISO_ANT_B,
-+ RS_COLUMN_SISO_ANT_A_SGI,
-+ RS_COLUMN_SISO_ANT_B_SGI,
- RS_COLUMN_MIMO2_SGI,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
- },
- .checks = {
- rs_mimo_allow,
-@@ -307,10 +307,10 @@ static const struct rs_tx_column rs_tx_columns[] = {
- .sgi = true,
- .next_columns = {
- RS_COLUMN_SISO_ANT_A_SGI,
-+ RS_COLUMN_SISO_ANT_B_SGI,
-+ RS_COLUMN_SISO_ANT_A,
-+ RS_COLUMN_SISO_ANT_B,
- RS_COLUMN_MIMO2,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
-- RS_COLUMN_INVALID,
- },
- .checks = {
- rs_mimo_allow,
---
-1.9.2
-
diff --git a/libre/linux-libre-grsec/0011-kernfs-fix-removed-error-check.patch b/libre/linux-libre-grsec/0011-kernfs-fix-removed-error-check.patch
new file mode 100644
index 000000000..b597595c6
--- /dev/null
+++ b/libre/linux-libre-grsec/0011-kernfs-fix-removed-error-check.patch
@@ -0,0 +1,13 @@
+diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
+index 8034706..e01ea4a 100644
+--- a/fs/kernfs/file.c
++++ b/fs/kernfs/file.c
+@@ -484,6 +484,8 @@ static int kernfs_fop_mmap(struct file *file, struct vm_area_struct *vma)
+
+ ops = kernfs_ops(of->kn);
+ rc = ops->mmap(of, vma);
++ if (rc)
++ goto out_put;
+
+ /*
+ * PowerPC's pci_mmap of legacy_mem uses shmem_zero_setup()
diff --git a/libre/linux-libre-grsec/0012-fix-saa7134.patch b/libre/linux-libre-grsec/0012-fix-saa7134.patch
new file mode 100644
index 000000000..070fbc8eb
--- /dev/null
+++ b/libre/linux-libre-grsec/0012-fix-saa7134.patch
@@ -0,0 +1,37 @@
+--- a/drivers/media/pci/saa7134/saa7134-video.c
++++ a/drivers/media/pci/saa7134/saa7134-video.c
+@@ -1243,6 +1243,7 @@ static int video_release(struct file *file)
+ videobuf_streamoff(&dev->cap);
+ res_free(dev, fh, RESOURCE_VIDEO);
+ videobuf_mmap_free(&dev->cap);
++ INIT_LIST_HEAD(&dev->cap.stream);
+ }
+ if (dev->cap.read_buf) {
+ buffer_release(&dev->cap, dev->cap.read_buf);
+@@ -1254,6 +1255,7 @@ static int video_release(struct file *file)
+ videobuf_stop(&dev->vbi);
+ res_free(dev, fh, RESOURCE_VBI);
+ videobuf_mmap_free(&dev->vbi);
++ INIT_LIST_HEAD(&dev->vbi.stream);
+ }
+
+ /* ts-capture will not work in planar mode, so turn it off Hac: 04.05*/
+@@ -1987,17 +1989,12 @@ int saa7134_streamoff(struct file *file, void *priv,
+ enum v4l2_buf_type type)
+ {
+ struct saa7134_dev *dev = video_drvdata(file);
+- int err;
+ int res = saa7134_resource(file);
+
+ if (res != RESOURCE_EMPRESS)
+ pm_qos_remove_request(&dev->qos_request);
+
+- err = videobuf_streamoff(saa7134_queue(file));
+- if (err < 0)
+- return err;
+- res_free(dev, priv, res);
+- return 0;
++ return videobuf_streamoff(saa7134_queue(file));
+ }
+ EXPORT_SYMBOL_GPL(saa7134_streamoff);
+
diff --git a/libre/linux-libre-grsec/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch b/libre/linux-libre-grsec/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
new file mode 100644
index 000000000..2840f190c
--- /dev/null
+++ b/libre/linux-libre-grsec/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
@@ -0,0 +1,13 @@
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 45fa2f1..6088927 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2289,7 +2289,7 @@ EXPORT_SYMBOL(skb_checksum_help);
+ __be16 skb_network_protocol(struct sk_buff *skb, int *depth)
+ {
+ __be16 type = skb->protocol;
+- int vlan_depth = ETH_HLEN;
++ int vlan_depth = skb->mac_len;
+
+ /* Tunnel gso handlers can set protocol to ethernet. */
+ if (type == htons(ETH_P_TEB)) {
diff --git a/libre/linux-libre-grsec/0015-fix-xsdt-validation.patch b/libre/linux-libre-grsec/0015-fix-xsdt-validation.patch
new file mode 100644
index 000000000..82dd2be25
--- /dev/null
+++ b/libre/linux-libre-grsec/0015-fix-xsdt-validation.patch
@@ -0,0 +1,42 @@
+@@ -, +, @@
+ acpi_tb_parse_root_table().
+ Commit: 671cc68dc61f029d44b43a681356078e02d8dab8
+ Subject: ACPICA: Back port and refine validation of the XSDT root table.
+---
+ drivers/acpi/acpica/tbutils.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+--- a/drivers/acpi/acpica/tbutils.c
++++ a/drivers/acpi/acpica/tbutils.c
+@@ -461,6 +461,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ u32 table_count;
+ struct acpi_table_header *table;
+ acpi_physical_address address;
++ acpi_physical_address rsdt_address;
+ u32 length;
+ u8 *table_entry;
+ acpi_status status;
+@@ -488,11 +489,13 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ * as per the ACPI specification.
+ */
+ address = (acpi_physical_address) rsdp->xsdt_physical_address;
++ rsdt_address = (acpi_physical_address) rsdp->rsdt_physical_address;
+ table_entry_size = ACPI_XSDT_ENTRY_SIZE;
+ } else {
+ /* Root table is an RSDT (32-bit physical addresses) */
+
+ address = (acpi_physical_address) rsdp->rsdt_physical_address;
++ rsdt_address = address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+
+@@ -515,8 +518,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+
+ /* Fall back to the RSDT */
+
+- address =
+- (acpi_physical_address) rsdp->rsdt_physical_address;
++ address = rsdt_address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+ }
+
diff --git a/libre/linux-libre-grsec/PKGBUILD b/libre/linux-libre-grsec/PKGBUILD
index 576441ea3..b685cf130 100644
--- a/libre/linux-libre-grsec/PKGBUILD
+++ b/libre/linux-libre-grsec/PKGBUILD
@@ -12,13 +12,13 @@
pkgbase=linux-libre-grsec # Build stock -LIBRE-GRSEC kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.14
-_sublevel=1
+_sublevel=3
_grsecver=3.0
-_timestamp=201404201132
+_timestamp=201405112005
_pkgver=${_basekernel}.${_sublevel}
pkgver=${_basekernel}.${_sublevel}.${_timestamp}
pkgrel=1
-_lxopkgver=${_basekernel}.0 # nearly always the same as pkgver
+_lxopkgver=${_basekernel}.3 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="https://grsecurity.net/"
license=('GPL2')
@@ -42,35 +42,41 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'0004-fs-Don-t-return-0-from-get_anon_bdev.patch'
'0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch'
'0006-genksyms-fix-typeof-handling.patch'
- '0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch'
'0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch'
+ '0011-kernfs-fix-removed-error-check.patch'
+ '0012-fix-saa7134.patch'
+ '0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch'
+ '0015-fix-xsdt-validation.patch'
'sysctl.conf'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.xz")
-md5sums=('c108ec52eeb2a9b9ddbb8d12496ff25f'
- '2b4862b3c76011e66e536f18fbf0fb27'
- 'db16c597af55a82da6fbe1059377c5cd'
- 'SKIP'
- '51ead958a4bb74ca5f5702b97740719b'
- '0822a5655cef86bb6f449692d8b3f3d2'
- '5f66bed97a5c37e48eb2f71b2d354b9a'
- '2967cecc3af9f954ccc822fd63dca6ff'
- '8267264d9a8966e57fdacd1fa1fc65c4'
- '14bb375a8a1d86d2875f72fcbaa03f3e'
- '98beb36f9b8cf16e58de2483ea9985e3'
- '6839ddec74a5300beff1709a81b0e4f3'
- '706549e8a05f33f7fc697f28c0ca71d2'
- 'd23fc66be93ebce698bd7da844789de1'
- 'b240cc8ebb4b5d74e94b4c72d033f726'
- 'a89d593774ccb955eb8368d3bc87ce26'
- '16a161979f846b049e90daea907c35dd'
- '00727251b0d337a25d3ca392218afdf4'
- '353b553d69da810ef954618aca60e1e2'
- '7a052645280da78a98bfe8cf805ddab5'
- '385f03abf27baa73731d27721eafd1c1')
+sha256sums=('477555c709b9407fe37dbd70d3331ff9dde1f9d874aba2741f138d07ae6f281b'
+ 'fcd8398a41a7e55e44123857342fd9041ae1bdacbcf8c5099a53293c96e6fba6'
+ 'e730d00bebb7312d3860eecbebff9026431780a3474b577accb32deb71c7c1d7'
+ 'SKIP'
+ '0b6dbdf4d1677a39b9a0d55e8d7c66fe644fa77d769e3b673064181222b17467'
+ '8207a533f4fbad05ad26061f924957a7a92436d44a5dd7ca10e61d730c5e0ef9'
+ '9d2f34f1a8c514a7117b9b017a1f7312fb351f4d0b079eed102f89361534d486'
+ 'c5451d5e1eafc4f8d28b1a2958ec3102c124433a414a86450fc32058e004156b'
+ '55bf07738a3286168a7929ae16dbca29defd14e77b9d24c487ae4c3d12bb9eb9'
+ 'f913384dd6dbafca476fcf4ccd35f0f497dda5f3074866022facdb92647771f6'
+ 'faced4eb4c47c4eb1a9ee8a5bf8a7c4b49d6b4d78efbe426e410730e6267d182'
+ '6d72e14552df59e6310f16c176806c408355951724cd5b48a47bf01591b8be02'
+ '52dec83a8805a8642d74d764494acda863e0aa23e3d249e80d4b457e20a3fd29'
+ '65d58f63215ee3c5f9c4fc6bce36fc5311a6c7dbdbe1ad29de40647b47ff9c0d'
+ '1e1ae0f31f722e80da083ecada1f1be57f9ddad133941820c4483b0240e494c1'
+ '3fffb01cf97a5a7ab9601cb277d2468c0fb1e1cceba4225915f3ffae3a5694ec'
+ 'cf2e7a2d00787f754028e7459688c2755a406e632ce48b60952fa4ff7ed6f4b7'
+ 'c0af4622f75c89fef62183e18b7d49998228d4eaa906c6accaf4aa4ff0134f85'
+ '04f44bf5c181d6dc31905937c1bdccb0f5aecaad3a579e99b302502b9cbe0f7a'
+ '79359454c9d8446eb55add2b1cdbf8332bd67dafb01fefb5b1ca090225f64d18'
+ 'f2a5e22c1ba6e9b8a32a7bd4a5327ee95538aa10edcee3cd12578f8ff49bf6be'
+ '384dd13fd4248fd6809da8c6ae29ced55d4a5cacc33ac2ae7522093ec0fb26d4'
+ 'a37823f0cdf3f318ec3f486f6e4035a7a8f887522d3a563d4dfe155f143ba24f'
+ '43d975e9c9c68de131005a87c3c755fadef1eaed6c551bcafd08f2746f9d71fd')
if [ "$CARCH" != "mips64el" ]; then
# don't use the Loongson-specific patches on non-mips64el arches.
unset source[${#source[@]}-1]
- unset md5sums[${#md5sums[@]}-1]
+ unset sha256sums[${#sha256sums[@]}-1]
fi
_kernelname=${pkgbase#linux-libre}
@@ -118,15 +124,29 @@ prepare() {
# http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dc53324060f324e8af6867f57bf4891c13c6ef18
patch -p1 -i "${srcdir}/0006-genksyms-fix-typeof-handling.patch"
- # Fix the use of code32_start in the EFI boot stub
- # http://permalink.gmane.org/gmane.linux.kernel/1679881
- # https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=urgent&id=7e8213c1f3acc064aef37813a39f13cbfe7c3ce7
- patch -p1 -i "${srcdir}/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch"
-
# https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/commit/?id=12f853a89e29f50b17698e17e73c328a35f1498d
# FS#39815
patch -p1 -i "${srcdir}/0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch"
+ # fix Xorg crash with i810 chipset due to wrong removed error check
+ # References: http://lkml.kernel.org/g/533D01BD.1010200@googlemail.com
+ patch -Np1 -i "${srcdir}/0011-kernfs-fix-removed-error-check.patch"
+
+ # fix saa7134 video
+ # https://bugs.archlinux.org/task/39904
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73361
+ patch -Np1 -i "${srcdir}/0012-fix-saa7134.patch"
+
+ # fix tun/openvpn performance
+ # https://bugs.archlinux.org/task/40089
+ # https://bugzilla.kernel.org/show_bug.cgi?id=74051
+ patch -Np1 -i "${srcdir}/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch"
+
+ # fix xsdt validation bug
+ # https://bugs.archlinux.org/task/39811
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73911
+ patch -Np1 -i "${srcdir}/0015-fix-xsdt-validation.patch"
+
if [ "$CARCH" == "mips64el" ]; then
sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre-grsec|" Makefile
sed -r "s|^( SUBLEVEL = ).*|\1$_sublevel|" \
@@ -272,6 +292,12 @@ _package() {
# add vmlinux
install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
+ # add grsecurity gcc plugins
+ mkdir -p "$pkgdir/usr/lib/modules/${_kernver}/build/tools/gcc"
+ cp -a tools/gcc/*.h "$pkgdir/usr/lib/modules/${_kernver}/build/tools/gcc/"
+ cp -a tools/gcc/Makefile "$pkgdir/usr/lib/modules/${_kernver}/build/tools/gcc/"
+ install -m644 tools/gcc/*.so "$pkgdir/usr/lib/modules/${_kernver}/build/tools/gcc/"
+
# install sysctl configuration for grsecurity switches
install -Dm600 "${srcdir}/sysctl.conf" "${pkgdir}/etc/sysctl.d/05-grsecurity.conf"
}
diff --git a/libre/linux-libre-grsec/config.i686 b/libre/linux-libre-grsec/config.i686
index 76ef4273e..845032842 100644
--- a/libre/linux-libre-grsec/config.i686
+++ b/libre/linux-libre-grsec/config.i686
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.1-1 Kernel Configuration
+# Linux/x86 3.14.3-1 Kernel Configuration
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -1487,7 +1487,8 @@ CONFIG_DMA_SHARED_BUFFER=y
#
# Bus devices
#
-CONFIG_CONNECTOR=m
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
@@ -1663,7 +1664,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -6220,7 +6221,7 @@ CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_PER_CPU_MAPS is not set
# CONFIG_DEBUG_HIGHMEM is not set
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
-# CONFIG_DEBUG_STACKOVERFLOW is not set
+CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_DEBUG_SHIRQ is not set
diff --git a/libre/linux-libre-grsec/config.x86_64 b/libre/linux-libre-grsec/config.x86_64
index 14c7909bc..e97911510 100644
--- a/libre/linux-libre-grsec/config.x86_64
+++ b/libre/linux-libre-grsec/config.x86_64
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/x86 3.14.1-1 Kernel Configuration
+# Linux/x86 3.14.3-1 Kernel Configuration
#
CONFIG_64BIT=y
CONFIG_X86_64=y
@@ -260,8 +260,8 @@ CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -1472,7 +1472,8 @@ CONFIG_DMA_SHARED_BUFFER=y
#
# Bus devices
#
-CONFIG_CONNECTOR=m
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
@@ -1628,7 +1629,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
@@ -6001,7 +6002,7 @@ CONFIG_HAVE_DEBUG_KMEMLEAK=y
CONFIG_DEBUG_MEMORY_INIT=y
# CONFIG_DEBUG_PER_CPU_MAPS is not set
CONFIG_HAVE_DEBUG_STACKOVERFLOW=y
-# CONFIG_DEBUG_STACKOVERFLOW is not set
+CONFIG_DEBUG_STACKOVERFLOW=y
CONFIG_HAVE_ARCH_KMEMCHECK=y
# CONFIG_DEBUG_SHIRQ is not set
diff --git a/libre/linux-libre-lts/PKGBUILD b/libre/linux-libre-lts/PKGBUILD
index 73eb56657..dc9477d16 100644
--- a/libre/linux-libre-lts/PKGBUILD
+++ b/libre/linux-libre-lts/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 210405 2014-04-14 20:05:28Z andyrtr $
+# $Id: PKGBUILD 212087 2014-05-06 15:55:48Z bpiotrowski $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
@@ -10,10 +10,10 @@
pkgbase=linux-libre-lts # Build stock -LIBRE-LTS kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.10
-_sublevel=37
+_sublevel=39
pkgver=${_basekernel}.${_sublevel}
pkgrel=1
-_lxopkgver=${_basekernel}.36 # nearly always the same as pkgver
+_lxopkgver=${_basekernel}.38 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -32,7 +32,7 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'criu-no-expert.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.xz")
md5sums=('d562fd52580a3b6b18b6eeb5921d1d5c'
- '2a1d5d0eef6b18029f3e4f472bd9e76f'
+ '0663686c1e5495b999a175aa7809ea92'
'85ce008eaacbb2fc54b81116d35cf946'
'16867e648e4b9f89bec949cb643888c2'
'c072b17032e80debc6a8626299245d46'
@@ -41,7 +41,7 @@ md5sums=('d562fd52580a3b6b18b6eeb5921d1d5c'
'04b21c79df0a952c22d681dd4f4562df'
'f3def2cefdcbb954c21d8505d23cc83c'
'd50c1ac47394e9aec637002ef3392bd1'
- '110cc22534f63853ddb84f01e63c129a')
+ 'e5ae030129ed128c61fe29b926476a19')
if [ "$CARCH" != "mips64el" ]; then
# don't use the Loongson-specific patches on non-mips64el arches.
unset source[${#source[@]}-1]
diff --git a/libre/linux-libre/0011-kernfs-fix-removed-error-check.patch b/libre/linux-libre/0011-kernfs-fix-removed-error-check.patch
new file mode 100644
index 000000000..b597595c6
--- /dev/null
+++ b/libre/linux-libre/0011-kernfs-fix-removed-error-check.patch
@@ -0,0 +1,13 @@
+diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c
+index 8034706..e01ea4a 100644
+--- a/fs/kernfs/file.c
++++ b/fs/kernfs/file.c
+@@ -484,6 +484,8 @@ static int kernfs_fop_mmap(struct file *file, struct vm_area_struct *vma)
+
+ ops = kernfs_ops(of->kn);
+ rc = ops->mmap(of, vma);
++ if (rc)
++ goto out_put;
+
+ /*
+ * PowerPC's pci_mmap of legacy_mem uses shmem_zero_setup()
diff --git a/libre/linux-libre/0012-fix-saa7134.patch b/libre/linux-libre/0012-fix-saa7134.patch
new file mode 100644
index 000000000..070fbc8eb
--- /dev/null
+++ b/libre/linux-libre/0012-fix-saa7134.patch
@@ -0,0 +1,37 @@
+--- a/drivers/media/pci/saa7134/saa7134-video.c
++++ a/drivers/media/pci/saa7134/saa7134-video.c
+@@ -1243,6 +1243,7 @@ static int video_release(struct file *file)
+ videobuf_streamoff(&dev->cap);
+ res_free(dev, fh, RESOURCE_VIDEO);
+ videobuf_mmap_free(&dev->cap);
++ INIT_LIST_HEAD(&dev->cap.stream);
+ }
+ if (dev->cap.read_buf) {
+ buffer_release(&dev->cap, dev->cap.read_buf);
+@@ -1254,6 +1255,7 @@ static int video_release(struct file *file)
+ videobuf_stop(&dev->vbi);
+ res_free(dev, fh, RESOURCE_VBI);
+ videobuf_mmap_free(&dev->vbi);
++ INIT_LIST_HEAD(&dev->vbi.stream);
+ }
+
+ /* ts-capture will not work in planar mode, so turn it off Hac: 04.05*/
+@@ -1987,17 +1989,12 @@ int saa7134_streamoff(struct file *file, void *priv,
+ enum v4l2_buf_type type)
+ {
+ struct saa7134_dev *dev = video_drvdata(file);
+- int err;
+ int res = saa7134_resource(file);
+
+ if (res != RESOURCE_EMPRESS)
+ pm_qos_remove_request(&dev->qos_request);
+
+- err = videobuf_streamoff(saa7134_queue(file));
+- if (err < 0)
+- return err;
+- res_free(dev, priv, res);
+- return 0;
++ return videobuf_streamoff(saa7134_queue(file));
+ }
+ EXPORT_SYMBOL_GPL(saa7134_streamoff);
+
diff --git a/libre/linux-libre/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch b/libre/linux-libre/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
new file mode 100644
index 000000000..2840f190c
--- /dev/null
+++ b/libre/linux-libre/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch
@@ -0,0 +1,13 @@
+diff --git a/net/core/dev.c b/net/core/dev.c
+index 45fa2f1..6088927 100644
+--- a/net/core/dev.c
++++ b/net/core/dev.c
+@@ -2289,7 +2289,7 @@ EXPORT_SYMBOL(skb_checksum_help);
+ __be16 skb_network_protocol(struct sk_buff *skb, int *depth)
+ {
+ __be16 type = skb->protocol;
+- int vlan_depth = ETH_HLEN;
++ int vlan_depth = skb->mac_len;
+
+ /* Tunnel gso handlers can set protocol to ethernet. */
+ if (type == htons(ETH_P_TEB)) {
diff --git a/libre/linux-libre/0015-fix-xsdt-validation.patch b/libre/linux-libre/0015-fix-xsdt-validation.patch
new file mode 100644
index 000000000..82dd2be25
--- /dev/null
+++ b/libre/linux-libre/0015-fix-xsdt-validation.patch
@@ -0,0 +1,42 @@
+@@ -, +, @@
+ acpi_tb_parse_root_table().
+ Commit: 671cc68dc61f029d44b43a681356078e02d8dab8
+ Subject: ACPICA: Back port and refine validation of the XSDT root table.
+---
+ drivers/acpi/acpica/tbutils.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+--- a/drivers/acpi/acpica/tbutils.c
++++ a/drivers/acpi/acpica/tbutils.c
+@@ -461,6 +461,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ u32 table_count;
+ struct acpi_table_header *table;
+ acpi_physical_address address;
++ acpi_physical_address rsdt_address;
+ u32 length;
+ u8 *table_entry;
+ acpi_status status;
+@@ -488,11 +489,13 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+ * as per the ACPI specification.
+ */
+ address = (acpi_physical_address) rsdp->xsdt_physical_address;
++ rsdt_address = (acpi_physical_address) rsdp->rsdt_physical_address;
+ table_entry_size = ACPI_XSDT_ENTRY_SIZE;
+ } else {
+ /* Root table is an RSDT (32-bit physical addresses) */
+
+ address = (acpi_physical_address) rsdp->rsdt_physical_address;
++ rsdt_address = address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+
+@@ -515,8 +518,7 @@ acpi_status __init acpi_tb_parse_root_table(acpi_physical_address rsdp_address)
+
+ /* Fall back to the RSDT */
+
+- address =
+- (acpi_physical_address) rsdp->rsdt_physical_address;
++ address = rsdt_address;
+ table_entry_size = ACPI_RSDT_ENTRY_SIZE;
+ }
+ }
+
diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD
index bfeda0206..db1d1c223 100644
--- a/libre/linux-libre/PKGBUILD
+++ b/libre/linux-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 210383 2014-04-14 19:13:09Z tpowa $
+# $Id: PKGBUILD 212093 2014-05-06 20:49:41Z tpowa $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
@@ -10,10 +10,10 @@
pkgbase=linux-libre # Build stock -LIBRE kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_basekernel=3.14
-_sublevel=1
+_sublevel=3
pkgver=${_basekernel}.${_sublevel}
pkgrel=1
-_lxopkgver=${_basekernel}.0 # nearly always the same as pkgver
+_lxopkgver=${_basekernel}.3 # nearly always the same as pkgver
arch=('i686' 'x86_64' 'mips64el')
url="http://linux-libre.fsfla.org/"
license=('GPL2')
@@ -35,31 +35,37 @@ source=("http://linux-libre.fsfla.org/pub/linux-libre/releases/${_basekernel}-gn
'0004-fs-Don-t-return-0-from-get_anon_bdev.patch'
'0005-Revert-Bluetooth-Enable-autosuspend-for-Intel-Blueto.patch'
'0006-genksyms-fix-typeof-handling.patch'
- '0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch'
'0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch'
+ '0011-kernfs-fix-removed-error-check.patch'
+ '0012-fix-saa7134.patch'
+ '0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch'
+ '0015-fix-xsdt-validation.patch'
"http://www.linux-libre.fsfla.org/pub/linux-libre/lemote/gnewsense/pool/debuginfo/linux-patches-${_lxopkgver}-gnu_0loongsonlibre_mipsel.tar.xz")
-md5sums=('c108ec52eeb2a9b9ddbb8d12496ff25f'
- '2b4862b3c76011e66e536f18fbf0fb27'
- '13ee684b40757b16beae1f0192fd6003'
- '43355af4f467ca93a0bc5f7209fc4810'
- 'e49ac236dfeef709f91a3d993ea7b62c'
- '2967cecc3af9f954ccc822fd63dca6ff'
- '8267264d9a8966e57fdacd1fa1fc65c4'
- '44260d2cb1a8b51c119d2ce1f83e457a'
- '98beb36f9b8cf16e58de2483ea9985e3'
- '6839ddec74a5300beff1709a81b0e4f3'
- '706549e8a05f33f7fc697f28c0ca71d2'
- 'd23fc66be93ebce698bd7da844789de1'
- 'b240cc8ebb4b5d74e94b4c72d033f726'
- 'a89d593774ccb955eb8368d3bc87ce26'
- '16a161979f846b049e90daea907c35dd'
- '00727251b0d337a25d3ca392218afdf4'
- '353b553d69da810ef954618aca60e1e2'
- '385f03abf27baa73731d27721eafd1c1')
+sha256sums=('477555c709b9407fe37dbd70d3331ff9dde1f9d874aba2741f138d07ae6f281b'
+ 'fcd8398a41a7e55e44123857342fd9041ae1bdacbcf8c5099a53293c96e6fba6'
+ '71891ae6903598f4686e86fdb0d371ff9e179e8dac1d2cf60ca16c5190916745'
+ 'fca0060bde385e2c292489087af0aa5f48da594221a6d162fc6f8ba2159571e8'
+ 'dfe01c93d83cdac9ca502715ceb6ac9502d327c939fec2e3052a5a58422dc176'
+ 'c5451d5e1eafc4f8d28b1a2958ec3102c124433a414a86450fc32058e004156b'
+ '55bf07738a3286168a7929ae16dbca29defd14e77b9d24c487ae4c3d12bb9eb9'
+ '8303b426b1a6dce456b2350003558ae312d21cab0ae6c1f0d7b9d21395f4e177'
+ 'faced4eb4c47c4eb1a9ee8a5bf8a7c4b49d6b4d78efbe426e410730e6267d182'
+ '6d72e14552df59e6310f16c176806c408355951724cd5b48a47bf01591b8be02'
+ '52dec83a8805a8642d74d764494acda863e0aa23e3d249e80d4b457e20a3fd29'
+ '65d58f63215ee3c5f9c4fc6bce36fc5311a6c7dbdbe1ad29de40647b47ff9c0d'
+ '1e1ae0f31f722e80da083ecada1f1be57f9ddad133941820c4483b0240e494c1'
+ '3fffb01cf97a5a7ab9601cb277d2468c0fb1e1cceba4225915f3ffae3a5694ec'
+ 'cf2e7a2d00787f754028e7459688c2755a406e632ce48b60952fa4ff7ed6f4b7'
+ 'c0af4622f75c89fef62183e18b7d49998228d4eaa906c6accaf4aa4ff0134f85'
+ '04f44bf5c181d6dc31905937c1bdccb0f5aecaad3a579e99b302502b9cbe0f7a'
+ '79359454c9d8446eb55add2b1cdbf8332bd67dafb01fefb5b1ca090225f64d18'
+ 'f2a5e22c1ba6e9b8a32a7bd4a5327ee95538aa10edcee3cd12578f8ff49bf6be'
+ '384dd13fd4248fd6809da8c6ae29ced55d4a5cacc33ac2ae7522093ec0fb26d4'
+ '43d975e9c9c68de131005a87c3c755fadef1eaed6c551bcafd08f2746f9d71fd')
if [ "$CARCH" != "mips64el" ]; then
# don't use the Loongson-specific patches on non-mips64el arches.
unset source[${#source[@]}-1]
- unset md5sums[${#md5sums[@]}-1]
+ unset sha256sums[${#sha256sums[@]}-1]
fi
_kernelname=${pkgbase#linux-libre}
@@ -103,14 +109,28 @@ prepare() {
# http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=dc53324060f324e8af6867f57bf4891c13c6ef18
patch -p1 -i "${srcdir}/0006-genksyms-fix-typeof-handling.patch"
- # Fix the use of code32_start in the EFI boot stub
- # http://permalink.gmane.org/gmane.linux.kernel/1679881
- # https://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=urgent&id=7e8213c1f3acc064aef37813a39f13cbfe7c3ce7
- patch -p1 -i "${srcdir}/0007-x86-efi-Correct-EFI-boot-stub-use-of-code32_start.patch"
-
# https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/iwlwifi-fixes.git/commit/?id=12f853a89e29f50b17698e17e73c328a35f1498d
# FS#39815
patch -p1 -i "${srcdir}/0010-iwlwifi-mvm-delay-enabling-smart-FIFO-until-after-be.patch"
+
+ # fix Xorg crash with i810 chipset due to wrong removed error check
+ # References: http://lkml.kernel.org/g/533D01BD.1010200@googlemail.com
+ patch -Np1 -i "${srcdir}/0011-kernfs-fix-removed-error-check.patch"
+
+ # fix saa7134 video
+ # https://bugs.archlinux.org/task/39904
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73361
+ patch -Np1 -i "${srcdir}/0012-fix-saa7134.patch"
+
+ # fix tun/openvpn performance
+ # https://bugs.archlinux.org/task/40089
+ # https://bugzilla.kernel.org/show_bug.cgi?id=74051
+ patch -Np1 -i "${srcdir}/0013-net-Start-with-correct-mac_len-in-skb_network_protocol.patch"
+
+ # fix xsdt validation bug
+ # https://bugs.archlinux.org/task/39811
+ # https://bugzilla.kernel.org/show_bug.cgi?id=73911
+ patch -Np1 -i "${srcdir}/0015-fix-xsdt-validation.patch"
if [ "$CARCH" == "mips64el" ]; then
sed -i "s|^EXTRAVERSION.*|EXTRAVERSION =-libre|" Makefile
diff --git a/libre/linux-libre/config.i686 b/libre/linux-libre/config.i686
index 91c9f7b8c..184db97b8 100644
--- a/libre/linux-libre/config.i686
+++ b/libre/linux-libre/config.i686
@@ -252,8 +252,8 @@ CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
CONFIG_HAVE_ARCH_SOFT_DIRTY=y
@@ -1500,7 +1500,8 @@ CONFIG_DMA_SHARED_BUFFER=y
#
# Bus devices
#
-CONFIG_CONNECTOR=m
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
@@ -1676,7 +1677,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
diff --git a/libre/linux-libre/config.x86_64 b/libre/linux-libre/config.x86_64
index f111c0b2d..1a32c7bf7 100644
--- a/libre/linux-libre/config.x86_64
+++ b/libre/linux-libre/config.x86_64
@@ -261,8 +261,8 @@ CONFIG_SECCOMP_FILTER=y
CONFIG_HAVE_CC_STACKPROTECTOR=y
CONFIG_CC_STACKPROTECTOR=y
# CONFIG_CC_STACKPROTECTOR_NONE is not set
-CONFIG_CC_STACKPROTECTOR_REGULAR=y
-# CONFIG_CC_STACKPROTECTOR_STRONG is not set
+# CONFIG_CC_STACKPROTECTOR_REGULAR is not set
+CONFIG_CC_STACKPROTECTOR_STRONG=y
CONFIG_HAVE_CONTEXT_TRACKING=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
@@ -1481,7 +1481,8 @@ CONFIG_DMA_SHARED_BUFFER=y
#
# Bus devices
#
-CONFIG_CONNECTOR=m
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
CONFIG_MTD=m
CONFIG_MTD_TESTS=m
CONFIG_MTD_REDBOOT_PARTS=m
@@ -1637,7 +1638,7 @@ CONFIG_BLK_DEV_DAC960=m
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
+CONFIG_BLK_DEV_LOOP_MIN_COUNT=0
CONFIG_BLK_DEV_CRYPTOLOOP=m
CONFIG_BLK_DEV_DRBD=m
# CONFIG_DRBD_FAULT_INJECTION is not set
diff --git a/libre/mc-libre/PKGBUILD b/libre/mc-libre/PKGBUILD
index c9f3d03dd..2da038816 100644
--- a/libre/mc-libre/PKGBUILD
+++ b/libre/mc-libre/PKGBUILD
@@ -7,9 +7,9 @@
_pkgname=mc
pkgname=mc-libre
pkgver=4.8.12
-pkgrel=1
-pkgdesc="Midnight Commander is a text based filemanager/shell that emulates Norton Commander, with arj recommendation included and nonfree unace and unrar recommendation removed"
-arch=('i686' 'x86_64')
+pkgrel=1.1
+pkgdesc="Midnight Commander is a text based filemanager/shell that emulates Norton Commander, with arj recommendation included and nonfree unace and unrar support removed"
+arch=('i686' 'x86_64' 'mips64el')
url="http://www.ibiblio.org/mc/"
license=('GPL')
depends=(
@@ -45,7 +45,16 @@ backup=('etc/mc/edit.indent.rc'
'etc/mc/mc.keymap'
'etc/mc/mc.menu'
'etc/mc/sfs.ini')
-source=("http://www.midnight-commander.org/downloads/${_pkgname}-${pkgver}.tar.bz2")
+source=("http://www.midnight-commander.org/downloads/${_pkgname}-${pkgver}.tar.bz2"
+ 'libre.patch')
+
+prepare() {
+ cd "${srcdir}/${_pkgname}-${pkgver}"
+
+ patch -Np1 -i ../libre.patch
+ rm -v src/vfs/extfs/helpers/u{ace,rar}.in
+}
+
build() {
cd "${srcdir}/${_pkgname}-${pkgver}"
@@ -69,4 +78,5 @@ package() {
-i "${pkgdir}/usr/lib/mc/extfs.d/s3+"
}
-md5sums=('a64c426364bfaee56b628f6c0738aade')
+md5sums=('a64c426364bfaee56b628f6c0738aade'
+ '008b3132beba7061578a6a59885f93f8')
diff --git a/libre/mc-libre/libre.patch b/libre/mc-libre/libre.patch
new file mode 100644
index 000000000..df88e6c9f
--- /dev/null
+++ b/libre/mc-libre/libre.patch
@@ -0,0 +1,319 @@
+diff --git a/configure b/configure
+index 01e8c83..710d411 100755
+--- a/configure
++++ b/configure
+@@ -27316,7 +27316,7 @@ _ACEOF
+ ac_config_files="$ac_config_files src/man2hlp/man2hlp"
+
+
+-ac_config_files="$ac_config_files Makefile contrib/Makefile contrib/dist/Makefile contrib/dist/gentoo/Makefile contrib/dist/redhat/Makefile contrib/dist/redhat/mc.spec contrib/dist/pkginfo contrib/dist/prototype misc/Makefile misc/skins/Makefile misc/ext.d/Makefile misc/ext.d/doc.sh misc/ext.d/misc.sh misc/ext.d/text.sh misc/ext.d/web.sh misc/macros.d/Makefile misc/mc.ext src/Makefile src/consaver/Makefile src/editor/Makefile src/man2hlp/Makefile src/viewer/Makefile src/diffviewer/Makefile src/filemanager/Makefile src/vfs/Makefile src/vfs/cpio/Makefile src/vfs/extfs/Makefile src/vfs/extfs/helpers/Makefile src/vfs/extfs/helpers/a+ src/vfs/extfs/helpers/apt+ src/vfs/extfs/helpers/audio src/vfs/extfs/helpers/deb src/vfs/extfs/helpers/deba src/vfs/extfs/helpers/debd src/vfs/extfs/helpers/dpkg+ src/vfs/extfs/helpers/iso9660 src/vfs/extfs/helpers/hp48+ src/vfs/extfs/helpers/lslR src/vfs/extfs/helpers/mailfs src/vfs/extfs/helpers/patchfs src/vfs/extfs/helpers/rpms+ src/vfs/extfs/helpers/s3+ src/vfs/extfs/helpers/uace src/vfs/extfs/helpers/ualz src/vfs/extfs/helpers/uar src/vfs/extfs/helpers/uarc src/vfs/extfs/helpers/uarj src/vfs/extfs/helpers/uc1541 src/vfs/extfs/helpers/ucab src/vfs/extfs/helpers/uha src/vfs/extfs/helpers/ulha src/vfs/extfs/helpers/ulib src/vfs/extfs/helpers/urar src/vfs/extfs/helpers/uzip src/vfs/extfs/helpers/uzoo src/vfs/fish/Makefile src/vfs/fish/helpers/Makefile src/vfs/ftpfs/Makefile src/vfs/sftpfs/Makefile src/vfs/local/Makefile src/vfs/sfs/Makefile src/vfs/smbfs/Makefile src/vfs/tar/Makefile src/vfs/undelfs/Makefile lib/Makefile lib/event/Makefile lib/filehighlight/Makefile lib/mcconfig/Makefile lib/search/Makefile lib/skin/Makefile lib/strutil/Makefile lib/tty/Makefile lib/vfs/Makefile lib/widget/Makefile misc/syntax/Makefile misc/syntax/Syntax doc/Makefile doc/hints/Makefile doc/hints/l10n/Makefile doc/man/Makefile doc/man/es/Makefile doc/man/hu/Makefile doc/man/it/Makefile doc/man/pl/Makefile doc/man/ru/Makefile doc/man/sr/Makefile doc/hlp/Makefile doc/hlp/es/Makefile doc/hlp/hu/Makefile doc/hlp/it/Makefile doc/hlp/pl/Makefile doc/hlp/ru/Makefile doc/hlp/sr/Makefile intl/Makefile po/Makefile.in"
++ac_config_files="$ac_config_files Makefile contrib/Makefile contrib/dist/Makefile contrib/dist/gentoo/Makefile contrib/dist/redhat/Makefile contrib/dist/redhat/mc.spec contrib/dist/pkginfo contrib/dist/prototype misc/Makefile misc/skins/Makefile misc/ext.d/Makefile misc/ext.d/doc.sh misc/ext.d/misc.sh misc/ext.d/text.sh misc/ext.d/web.sh misc/macros.d/Makefile misc/mc.ext src/Makefile src/consaver/Makefile src/editor/Makefile src/man2hlp/Makefile src/viewer/Makefile src/diffviewer/Makefile src/filemanager/Makefile src/vfs/Makefile src/vfs/cpio/Makefile src/vfs/extfs/Makefile src/vfs/extfs/helpers/Makefile src/vfs/extfs/helpers/a+ src/vfs/extfs/helpers/apt+ src/vfs/extfs/helpers/audio src/vfs/extfs/helpers/deb src/vfs/extfs/helpers/deba src/vfs/extfs/helpers/debd src/vfs/extfs/helpers/dpkg+ src/vfs/extfs/helpers/iso9660 src/vfs/extfs/helpers/hp48+ src/vfs/extfs/helpers/lslR src/vfs/extfs/helpers/mailfs src/vfs/extfs/helpers/patchfs src/vfs/extfs/helpers/rpms+ src/vfs/extfs/helpers/s3+ src/vfs/extfs/helpers/ualz src/vfs/extfs/helpers/uar src/vfs/extfs/helpers/uarc src/vfs/extfs/helpers/uarj src/vfs/extfs/helpers/uc1541 src/vfs/extfs/helpers/ucab src/vfs/extfs/helpers/uha src/vfs/extfs/helpers/ulha src/vfs/extfs/helpers/ulib src/vfs/extfs/helpers/uzip src/vfs/extfs/helpers/uzoo src/vfs/fish/Makefile src/vfs/fish/helpers/Makefile src/vfs/ftpfs/Makefile src/vfs/sftpfs/Makefile src/vfs/local/Makefile src/vfs/sfs/Makefile src/vfs/smbfs/Makefile src/vfs/tar/Makefile src/vfs/undelfs/Makefile lib/Makefile lib/event/Makefile lib/filehighlight/Makefile lib/mcconfig/Makefile lib/search/Makefile lib/skin/Makefile lib/strutil/Makefile lib/tty/Makefile lib/vfs/Makefile lib/widget/Makefile misc/syntax/Makefile misc/syntax/Syntax doc/Makefile doc/hints/Makefile doc/hints/l10n/Makefile doc/man/Makefile doc/man/es/Makefile doc/man/hu/Makefile doc/man/it/Makefile doc/man/pl/Makefile doc/man/ru/Makefile doc/man/sr/Makefile doc/hlp/Makefile doc/hlp/es/Makefile doc/hlp/hu/Makefile doc/hlp/it/Makefile doc/hlp/pl/Makefile doc/hlp/ru/Makefile doc/hlp/sr/Makefile intl/Makefile po/Makefile.in"
+
+
+ if test x$enable_tests != xno; then
+@@ -28576,7 +28576,6 @@ do
+ "src/vfs/extfs/helpers/patchfs") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/patchfs" ;;
+ "src/vfs/extfs/helpers/rpms+") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/rpms+" ;;
+ "src/vfs/extfs/helpers/s3+") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/s3+" ;;
+- "src/vfs/extfs/helpers/uace") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/uace" ;;
+ "src/vfs/extfs/helpers/ualz") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/ualz" ;;
+ "src/vfs/extfs/helpers/uar") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/uar" ;;
+ "src/vfs/extfs/helpers/uarc") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/uarc" ;;
+@@ -28586,7 +28585,6 @@ do
+ "src/vfs/extfs/helpers/uha") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/uha" ;;
+ "src/vfs/extfs/helpers/ulha") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/ulha" ;;
+ "src/vfs/extfs/helpers/ulib") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/ulib" ;;
+- "src/vfs/extfs/helpers/urar") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/urar" ;;
+ "src/vfs/extfs/helpers/uzip") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/uzip" ;;
+ "src/vfs/extfs/helpers/uzoo") CONFIG_FILES="$CONFIG_FILES src/vfs/extfs/helpers/uzoo" ;;
+ "src/vfs/fish/Makefile") CONFIG_FILES="$CONFIG_FILES src/vfs/fish/Makefile" ;;
+diff --git a/configure.ac b/configure.ac
+index 6591c53..8ac2163 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -547,7 +547,6 @@ src/vfs/extfs/helpers/mailfs
+ src/vfs/extfs/helpers/patchfs
+ src/vfs/extfs/helpers/rpms+
+ src/vfs/extfs/helpers/s3+
+-src/vfs/extfs/helpers/uace
+ src/vfs/extfs/helpers/ualz
+ src/vfs/extfs/helpers/uar
+ src/vfs/extfs/helpers/uarc
+@@ -557,7 +556,6 @@ src/vfs/extfs/helpers/ucab
+ src/vfs/extfs/helpers/uha
+ src/vfs/extfs/helpers/ulha
+ src/vfs/extfs/helpers/ulib
+-src/vfs/extfs/helpers/urar
+ src/vfs/extfs/helpers/uzip
+ src/vfs/extfs/helpers/uzoo
+
+diff --git a/misc/ext.d/archive.sh b/misc/ext.d/archive.sh
+index 2264b12..39885ae 100755
+--- a/misc/ext.d/archive.sh
++++ b/misc/ext.d/archive.sh
+@@ -61,8 +61,7 @@ do_view_action() {
+ lha l "${MC_EXT_FILENAME}"
+ ;;
+ arj)
+- arj l "${MC_EXT_FILENAME}" 2>/dev/null || \
+- unarj l "${MC_EXT_FILENAME}"
++ arj l "${MC_EXT_FILENAME}" 2>/dev/null
+ ;;
+ cab)
+ cabextract -l "${MC_EXT_FILENAME}"
+@@ -70,10 +69,6 @@ do_view_action() {
+ ha)
+ ha lf "${MC_EXT_FILENAME}"
+ ;;
+- rar)
+- rar v -c- "${MC_EXT_FILENAME}" 2>/dev/null || \
+- unrar v -c- "${MC_EXT_FILENAME}"
+- ;;
+ alz)
+ unalz -l "${MC_EXT_FILENAME}"
+ ;;
+@@ -93,9 +88,6 @@ do_view_action() {
+ 7z l "${MC_EXT_FILENAME}"
+
+ ;;
+- ace)
+- unace l "${MC_EXT_FILENAME}"
+- ;;
+ arc)
+ arc l "${MC_EXT_FILENAME}"
+ ;;
+diff --git a/misc/filehighlight.ini b/misc/filehighlight.ini
+index 8bc1722..430bebb 100644
+--- a/misc/filehighlight.ini
++++ b/misc/filehighlight.ini
+@@ -28,7 +28,7 @@
+ regexp=(^#.*|.*~$)
+
+ [archive]
+- extensions=gz;bz2;tar;tgz;rpm;Z;rar;zip;arj;cab;lzh;lha;zoo;arc;ark;xz;tbz;tbz2;7z;ace
++ extensions=gz;bz2;tar;tgz;rpm;Z;zip;arj;cab;lzh;lha;zoo;arc;ark;xz;tbz;tbz2;7z
+
+ [doc]
+ extensions=txt;doc;rtf;diz;ctl;me;ps;pdf;xml;xsd;xslt;dtd;html;shtml;htm;mail;msg;lsm;po;nroff;man;tex;sgml;css;text;letter;chm;docx;docm;xlsx;xlsm;pptx;pptm
+diff --git a/misc/mc.ext.in b/misc/mc.ext.in
+index 68c6819..aefb267 100644
+--- a/misc/mc.ext.in
++++ b/misc/mc.ext.in
+@@ -175,11 +175,6 @@ shell/i/.ha
+ Open=%cd %p/uha://
+ View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ha
+
+-# rar
+-regex/i/\.r(ar|[0-9][0-9])$
+- Open=%cd %p/urar://
+- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view rar
+-
+ # ALZip
+ shell/i/.alz
+ Open=%cd %p/ualz://
+@@ -667,12 +662,6 @@ shell/i/.torrent
+
+ ### Plain compressed files ###
+
+-# ace
+-shell/i/.ace
+- Open=%cd %p/uace://
+- View=%view{ascii} @EXTHELPERSDIR@/archive.sh view ace
+- Extract=unace x %f
+-
+ # arc
+ shell/i/.arc
+ Open=%cd %p/uarc://
+diff --git a/misc/syntax/php.syntax b/misc/syntax/php.syntax
+index ebefb7e..7a4ec29 100644
+--- a/misc/syntax/php.syntax
++++ b/misc/syntax/php.syntax
+@@ -2174,22 +2174,6 @@ context default
+ # Radius constants
+ keyword whole RADIUS\_\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_\] white
+
+-# Rar Functions
+- keyword whole rar_close yellow
+- keyword whole rar_entry_get yellow
+- keyword whole rar_list yellow
+- keyword whole rar_open yellow
+-
+-# Rar Functions Rar methods
+- keyword whole Rar yellow
+-
+-# Rar Functions constants
+- keyword whole RAR_HOST_BEOS white
+- keyword whole RAR_HOST_MSDOS white
+- keyword whole RAR_HOST_OS2 white
+- keyword whole RAR_HOST_UNIX white
+- keyword whole RAR_HOST_WIN32 white
+-
+ # GNU Readline
+ keyword whole readline\[0123456789_abcdefghijklmnopqrstuvwxyz\] yellow
+
+diff --git a/misc/syntax/sh.syntax b/misc/syntax/sh.syntax
+index f5537df..e3b3017 100644
+--- a/misc/syntax/sh.syntax
++++ b/misc/syntax/sh.syntax
+@@ -610,7 +610,6 @@ wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._
+ keyword whole pwunconv cyan
+ keyword whole ramsize cyan
+ keyword whole ranlib cyan
+- keyword whole rar cyan
+ keyword whole rarp cyan
+ keyword whole raw cyan
+ keyword whole rbash cyan
+@@ -782,7 +781,6 @@ wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._
+ keyword whole ul cyan
+ keyword whole umount cyan
+ keyword whole uname cyan
+- keyword whole unarj cyan
+ keyword whole uncompress cyan
+ keyword whole unexpand cyan
+ keyword whole unicode_start cyan
+@@ -1712,7 +1710,6 @@ wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._
+ keyword whole pwunconv cyan
+ keyword whole ramsize cyan
+ keyword whole ranlib cyan
+- keyword whole rar cyan
+ keyword whole rarp cyan
+ keyword whole raw cyan
+ keyword whole rbash cyan
+@@ -1884,7 +1881,6 @@ wholechars abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._
+ keyword whole ul cyan
+ keyword whole umount cyan
+ keyword whole uname cyan
+- keyword whole unarj cyan
+ keyword whole uncompress cyan
+ keyword whole unexpand cyan
+ keyword whole unicode_start cyan
+diff --git a/src/vfs/extfs/helpers/Makefile.am b/src/vfs/extfs/helpers/Makefile.am
+index 06ea789..099acf1 100644
+--- a/src/vfs/extfs/helpers/Makefile.am
++++ b/src/vfs/extfs/helpers/Makefile.am
+@@ -24,7 +24,6 @@ EXTFS_IN = \
+ patchfs.in \
+ rpms+.in \
+ s3+.in \
+- uace.in \
+ ualz.in \
+ uar.in \
+ uarc.in \
+@@ -34,7 +33,6 @@ EXTFS_IN = \
+ uha.in \
+ ulha.in \
+ ulib.in \
+- urar.in \
+ uzip.in \
+ uzoo.in
+
+@@ -54,7 +52,6 @@ EXTFS_OUT = \
+ patchfs \
+ rpms+ \
+ s3+ \
+- uace \
+ ualz \
+ uar \
+ uarc \
+@@ -64,7 +61,6 @@ EXTFS_OUT = \
+ uha \
+ ulha \
+ ulib \
+- urar \
+ uzip \
+ uzoo
+
+diff --git a/src/vfs/extfs/helpers/Makefile.in b/src/vfs/extfs/helpers/Makefile.in
+index b5f4864..d166e55 100644
+--- a/src/vfs/extfs/helpers/Makefile.in
++++ b/src/vfs/extfs/helpers/Makefile.in
+@@ -86,10 +86,10 @@ DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+ $(srcdir)/deba.in $(srcdir)/debd.in $(srcdir)/dpkg+.in \
+ $(srcdir)/iso9660.in $(srcdir)/hp48+.in $(srcdir)/lslR.in \
+ $(srcdir)/mailfs.in $(srcdir)/patchfs.in $(srcdir)/rpms+.in \
+- $(srcdir)/s3+.in $(srcdir)/uace.in $(srcdir)/ualz.in \
++ $(srcdir)/s3+.in $(srcdir)/ualz.in \
+ $(srcdir)/uar.in $(srcdir)/uarc.in $(srcdir)/uarj.in \
+ $(srcdir)/uc1541.in $(srcdir)/ucab.in $(srcdir)/uha.in \
+- $(srcdir)/ulha.in $(srcdir)/ulib.in $(srcdir)/urar.in \
++ $(srcdir)/ulha.in $(srcdir)/ulib.in \
+ $(srcdir)/uzip.in $(srcdir)/uzoo.in README
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
+@@ -149,8 +149,8 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES = a+ apt+ audio deb deba debd dpkg+ iso9660 hp48+ \
+- lslR mailfs patchfs rpms+ s3+ uace ualz uar uarc uarj uc1541 \
+- ucab uha ulha ulib urar uzip uzoo
++ lslR mailfs patchfs rpms+ s3+ ualz uar uarc uarj uc1541 \
++ ucab uha ulha ulib uzip uzoo
+ CONFIG_CLEAN_VPATH_FILES =
+ am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+ am__vpath_adj = case $$p in \
+@@ -439,7 +439,6 @@ EXTFS_IN = \
+ patchfs.in \
+ rpms+.in \
+ s3+.in \
+- uace.in \
+ ualz.in \
+ uar.in \
+ uarc.in \
+@@ -449,7 +448,6 @@ EXTFS_IN = \
+ uha.in \
+ ulha.in \
+ ulib.in \
+- urar.in \
+ uzip.in \
+ uzoo.in
+
+@@ -470,7 +468,6 @@ EXTFS_OUT = \
+ patchfs \
+ rpms+ \
+ s3+ \
+- uace \
+ ualz \
+ uar \
+ uarc \
+@@ -480,7 +477,6 @@ EXTFS_OUT = \
+ uha \
+ ulha \
+ ulib \
+- urar \
+ uzip \
+ uzoo
+
+@@ -550,8 +546,6 @@ rpms+: $(top_builddir)/config.status $(srcdir)/rpms+.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ s3+: $(top_builddir)/config.status $(srcdir)/s3+.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+-uace: $(top_builddir)/config.status $(srcdir)/uace.in
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ ualz: $(top_builddir)/config.status $(srcdir)/ualz.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ uar: $(top_builddir)/config.status $(srcdir)/uar.in
+@@ -570,8 +564,6 @@ ulha: $(top_builddir)/config.status $(srcdir)/ulha.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ ulib: $(top_builddir)/config.status $(srcdir)/ulib.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+-urar: $(top_builddir)/config.status $(srcdir)/urar.in
+- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ uzip: $(top_builddir)/config.status $(srcdir)/uzip.in
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
+ uzoo: $(top_builddir)/config.status $(srcdir)/uzoo.in
+diff --git a/src/vfs/extfs/helpers/uarj.in b/src/vfs/extfs/helpers/uarj.in
+index 15549a0..7dffc37 100644
+--- a/src/vfs/extfs/helpers/uarj.in
++++ b/src/vfs/extfs/helpers/uarj.in
+@@ -3,9 +3,8 @@
+ # Written by Viatcheslav Odintsov (2:5020/181)
+ # (C) 2002 ARJ Software Russia.
+ #
+-# This is an updated parser for ARJ archives in Midnight Commander. You need
+-# full ARJ rather than UNARJ. Open-source ARJ v 3.10 for Unix platforms can
+-# be obtained here:
++# This is an updated parser for ARJ archives in Midnight Commander.
++# Open-source ARJ v 3.10 for Unix platforms can be obtained here:
+ #
+ # - http://www.sourceforge.net/projects/arj/
+ # - http://arj.sourceforge.net/
diff --git a/libre/mcomix-libre/PKGBUILD b/libre/mcomix-libre/PKGBUILD
index 97c3bde0f..f28d7d2a3 100644
--- a/libre/mcomix-libre/PKGBUILD
+++ b/libre/mcomix-libre/PKGBUILD
@@ -6,8 +6,8 @@
_pkgname=mcomix
pkgname=mcomix-libre
pkgver=1.00
-pkgrel=6
-pkgdesc="A user-friendly, customizable image viewer specifically designed to handle comic books, without nonfree unrar recommendation"
+pkgrel=6.2
+pkgdesc="A user-friendly, customizable image viewer specifically designed to handle comic books, without nonfree unrar support"
arch=('any')
url="http://sourceforge.net/projects/mcomix/"
license=('GPL')
@@ -19,7 +19,17 @@ replaces=('mcomix' 'comix')
provides=("mcomix=${pkgver}")
install='mcomix.install'
source=("http://downloads.sourceforge.net/project/mcomix/MComix-${pkgver}/mcomix-${pkgver}.tar.bz2"
- 'zoom.patch')
+ 'zoom.patch'
+ 'libre.patch')
+
+prepare() {
+ cd ${srcdir}/${_pkgname}-${pkgver}
+
+ # Remove nonfree unRAR support
+ rm -v mcomix/archive/rar{,file}.py
+ rm -v mime/icons/*/application-x-cbr.png
+ patch -Np1 -i ${srcdir}/libre.patch
+}
build() {
cd ${srcdir}/${_pkgname}-${pkgver}
@@ -53,4 +63,5 @@ package() {
}
md5sums=('3a916dd9da17043ab59ccd17e26eb932'
- 'c80705bf6f132bfba20dcb84b79c9cb7')
+ 'c80705bf6f132bfba20dcb84b79c9cb7'
+ 'cbb3730d3bed153b88208163e83d60e2')
diff --git a/libre/mcomix-libre/libre.patch b/libre/mcomix-libre/libre.patch
new file mode 100644
index 000000000..e3f12f703
--- /dev/null
+++ b/libre/mcomix-libre/libre.patch
@@ -0,0 +1,421 @@
+diff --git a/mcomix/about_dialog.py b/mcomix/about_dialog.py
+index 9f956d5..10ff0be 100644
+--- a/mcomix/about_dialog.py
++++ b/mcomix/about_dialog.py
+@@ -27,7 +27,7 @@ class _AboutDialog(gtk.AboutDialog):
+ comment = \
+ _('%s is an image viewer specifically designed to handle comic books.') % \
+ constants.APPNAME + u' ' + \
+- _('It reads ZIP, RAR and tar archives, as well as plain image files.')
++ _('It reads ZIP and tar archives, as well as plain image files.')
+ self.set_comments(comment)
+
+ license = \
+diff --git a/mcomix/archive_extractor.py b/mcomix/archive_extractor.py
+index afed5c7..bc969bf 100644
+--- a/mcomix/archive_extractor.py
++++ b/mcomix/archive_extractor.py
+@@ -12,8 +12,8 @@ class Extractor:
+
+ """Extractor is a threaded class for extracting different archive formats.
+
+- The Extractor can be loaded with paths to archives (currently ZIP, tar,
+- or RAR archives) and a path to a destination directory. Once an archive
++ The Extractor can be loaded with paths to archives (currently ZIP or tar
++ archives) and a path to a destination directory. Once an archive
+ has been set it is possible to filter out the files to be extracted and
+ set the order in which they should be extracted. The extraction can
+ then be started in a new thread in which files are extracted one by one,
+diff --git a/mcomix/archive_tools.py b/mcomix/archive_tools.py
+index 66c3f14..151a904 100644
+--- a/mcomix/archive_tools.py
++++ b/mcomix/archive_tools.py
+@@ -8,7 +8,6 @@ import tarfile
+ from mcomix import constants
+ from mcomix import log
+ from mcomix.archive import zip
+-from mcomix.archive import rar
+ from mcomix.archive import tar
+ from mcomix.archive import sevenzip
+ from mcomix.archive import lha
+@@ -16,9 +15,6 @@ from mcomix.archive import lha
+ def szip_available():
+ return sevenzip.SevenZipArchive.is_available()
+
+-def rar_available():
+- return rar.RarArchive.is_available() or szip_available()
+-
+ def lha_available():
+ return lha.LhaArchive.is_available() or szip_available()
+
+@@ -31,9 +27,6 @@ def get_supported_archive_regex():
+ if szip_available():
+ formats.extend(constants.SZIP_FORMATS[1])
+
+- if rar_available():
+- formats.extend(constants.RAR_FORMATS[1])
+-
+ if lha_available():
+ formats.extend(constants.LHA_FORMATS[1])
+
+@@ -71,10 +64,7 @@ def archive_mime_type(path):
+ else:
+ return constants.TAR
+
+- if magic == 'Rar!':
+- return constants.RAR
+-
+- elif magic == '7z\xBC\xAF':
++ if magic == '7z\xBC\xAF':
+ return constants.SEVENZIP
+
+ elif magic[2:] == '-l':
+@@ -124,11 +114,6 @@ def get_archive_handler(path):
+ return zip.ZipArchive(path)
+ elif mime in (constants.TAR, constants.GZIP, constants.BZIP2):
+ return tar.TarArchive(path)
+- elif mime == constants.RAR and rar.RarArchive.is_available():
+- return rar.RarArchive(path)
+- elif mime == constants.RAR and sevenzip.SevenZipArchive.is_available():
+- log.info('Using Sevenzip for RAR archives.')
+- return sevenzip.SevenZipArchive(path)
+ elif mime == constants.SEVENZIP and sevenzip.SevenZipArchive.is_available():
+ return sevenzip.SevenZipArchive(path)
+ elif mime == constants.LHA and lha.LhaArchive.is_available():
+diff --git a/mcomix/constants.py b/mcomix/constants.py
+index fad3b78..3c225c5 100644
+--- a/mcomix/constants.py
++++ b/mcomix/constants.py
+@@ -28,7 +28,7 @@ FILEINFO_PICKLE_PATH = os.path.join(DATA_DIR, 'file.pickle')
+ PREFERENCE_PICKLE_PATH = os.path.join(CONFIG_DIR, 'preferences.pickle')
+
+ ZOOM_MODE_BEST, ZOOM_MODE_WIDTH, ZOOM_MODE_HEIGHT, ZOOM_MODE_MANUAL, ZOOM_MODE_SIZE = range(5)
+-ZIP, RAR, TAR, GZIP, BZIP2, PDF, SEVENZIP, LHA = range(8)
++ZIP, TAR, GZIP, BZIP2, PDF, SEVENZIP, LHA = range(7)
+ NORMAL_CURSOR, GRAB_CURSOR, WAIT_CURSOR, NO_CURSOR = range(4)
+ LIBRARY_DRAG_EXTERNAL_ID, LIBRARY_DRAG_BOOK_ID, LIBRARY_DRAG_COLLECTION_ID = range(3)
+ AUTOROTATE_NEVER, AUTOROTATE_WIDTH_90, AUTOROTATE_WIDTH_270, \
+@@ -57,9 +57,6 @@ SUPPORTED_IMAGE_REGEX = re.compile(r'\.(jpg|jpeg|png|gif|tif|tiff|bmp|ppm|pgm|pb
+ ZIP_FORMATS = (
+ ('application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/x-cbz'),
+ ('*.zip', '*.cbz'))
+-RAR_FORMATS = (
+- ('application/x-rar', 'application/x-cbr'),
+- ('*.rar', '*.cbr'))
+ TAR_FORMATS = (
+ ('application/x-tar', 'application/x-gzip', 'application/x-bzip2', 'application/x-cbt'),
+ ('*.tar', '*.gz', '*.bz2', '*.bzip2', '*.cbt'))
+diff --git a/mcomix/file_chooser_base_dialog.py b/mcomix/file_chooser_base_dialog.py
+index 4d2a34e..c518842 100644
+--- a/mcomix/file_chooser_base_dialog.py
++++ b/mcomix/file_chooser_base_dialog.py
+@@ -88,9 +88,6 @@ class _BaseFileChooserDialog(gtk.Dialog):
+ # extractor availability.
+ mimetypes = constants.ZIP_FORMATS[0] + constants.TAR_FORMATS[0]
+ patterns = constants.ZIP_FORMATS[1] + constants.TAR_FORMATS[1]
+- if archive_tools.rar_available():
+- mimetypes += constants.RAR_FORMATS[0]
+- patterns += constants.RAR_FORMATS[1]
+ if archive_tools.szip_available():
+ mimetypes += constants.SZIP_FORMATS[0]
+ patterns += constants.SZIP_FORMATS[1]
+@@ -107,10 +104,6 @@ class _BaseFileChooserDialog(gtk.Dialog):
+ self.add_filter(_('Tar archives'),
+ *constants.TAR_FORMATS)
+
+- if archive_tools.rar_available():
+- self.add_filter(_('RAR archives'),
+- *constants.RAR_FORMATS)
+-
+ if archive_tools.szip_available():
+ self.add_filter(_('7z archives'),
+ *constants.SZIP_FORMATS)
+diff --git a/mcomix/messages/mcomix.pot b/mcomix/messages/mcomix.pot
+index 54ece85..482c051 100644
+--- a/mcomix/messages/mcomix.pot
++++ b/mcomix/messages/mcomix.pot
+@@ -24,7 +24,7 @@ msgid "%s is an image viewer specifically designed to handle comic books."
+ msgstr ""
+
+ #: mcomix/about_dialog.py:30
+-msgid "It reads ZIP, RAR and tar archives, as well as plain image files."
++msgid "It reads ZIP and tar archives, as well as plain image files."
+ msgstr ""
+
+ #: mcomix/about_dialog.py:34
+@@ -241,10 +241,6 @@ msgstr ""
+ msgid "Tar archives"
+ msgstr ""
+
+-#: mcomix/file_chooser_base_dialog.py:111
+-msgid "RAR archives"
+-msgstr ""
+-
+ #: mcomix/file_chooser_base_dialog.py:115
+ msgid "7z archives"
+ msgstr ""
+@@ -1345,10 +1341,6 @@ msgstr ""
+ msgid "Bzip2 compressed tar archive"
+ msgstr ""
+
+-#: mcomix/strings.py:13
+-msgid "RAR archive"
+-msgstr ""
+-
+ #: mcomix/strings.py:14
+ msgid "7z archive"
+ msgstr ""
+diff --git a/mcomix/process.py b/mcomix/process.py
+index 4ba60c6..c37699d 100644
+--- a/mcomix/process.py
++++ b/mcomix/process.py
+@@ -10,10 +10,7 @@ from mcomix import i18n
+ class Process:
+
+ """The subprocess and popen2 modules in Python are broken (see issue
+- #1336). The problem (i.e. complete crash) they can cause happen fairly
+- often (once is too often) in MComix when calling "rar" or "unrar" to
+- extract specific files from archives. We roll our own very simple
+- process spawning module here instead.
++ #1336). We roll our own very simple process spawning module here instead.
+ """
+ # TODO: I can no longer reproduce the issue. Check if this version of
+ # process.py still solves it.
+diff --git a/mcomix/recent.py b/mcomix/recent.py
+index 3d4613d..3f5c511 100644
+--- a/mcomix/recent.py
++++ b/mcomix/recent.py
+@@ -30,8 +30,7 @@ class RecentFilesMenu(gtk.RecentChooserMenu):
+ rfilter.add_pixbuf_formats()
+
+ mimetypes, patterns = itertools.izip(constants.ZIP_FORMATS,
+- constants.RAR_FORMATS, constants.TAR_FORMATS,
+- constants.SZIP_FORMATS)
++ constants.TAR_FORMATS, constants.SZIP_FORMATS)
+
+ for mimetype in itertools.chain.from_iterable(mimetypes):
+ rfilter.add_mime_type(mimetype)
+diff --git a/mcomix/strings.py b/mcomix/strings.py
+index c5ca21f..cc69236 100644
+--- a/mcomix/strings.py
++++ b/mcomix/strings.py
+@@ -3,14 +3,13 @@
+ This file should only be imported after gettext has been correctly initialized
+ and installed in the global namespace. """
+
+-from mcomix.constants import ZIP, TAR, GZIP, BZIP2, RAR, SEVENZIP, LHA
++from mcomix.constants import ZIP, TAR, GZIP, BZIP2, SEVENZIP, LHA
+
+ ARCHIVE_DESCRIPTIONS = {
+ ZIP: _('ZIP archive'),
+ TAR: _('Tar archive'),
+ GZIP: _('Gzip compressed tar archive'),
+ BZIP2: _('Bzip2 compressed tar archive'),
+- RAR: _('RAR archive'),
+ SEVENZIP: _('7z archive'),
+ LHA: _('LHA archive')
+ }
+diff --git a/mcomix.egg-info/SOURCES.txt b/mcomix.egg-info/SOURCES.txt
+index 62de3ad..85a65df 100644
+--- a/mcomix.egg-info/SOURCES.txt
++++ b/mcomix.egg-info/SOURCES.txt
+@@ -77,8 +77,6 @@ mcomix.egg-info/top_level.txt
+ mcomix/archive/__init__.py
+ mcomix/archive/archive_base.py
+ mcomix/archive/lha.py
+-mcomix/archive/rar.py
+-mcomix/archive/rarfile.py
+ mcomix/archive/sevenzip.py
+ mcomix/archive/tar.py
+ mcomix/archive/zip.py
+@@ -183,18 +181,13 @@ mime/comicthumb.1.gz
+ mime/mcomix.desktop
+ mime/mcomix.thumbnailer
+ mime/mcomix.xml
+-mime/icons/16x16/application-x-cbr.png
+ mime/icons/16x16/application-x-cbt.png
+ mime/icons/16x16/application-x-cbz.png
+-mime/icons/22x22/application-x-cbr.png
+ mime/icons/22x22/application-x-cbt.png
+ mime/icons/22x22/application-x-cbz.png
+-mime/icons/24x24/application-x-cbr.png
+ mime/icons/24x24/application-x-cbt.png
+ mime/icons/24x24/application-x-cbz.png
+-mime/icons/32x32/application-x-cbr.png
+ mime/icons/32x32/application-x-cbt.png
+ mime/icons/32x32/application-x-cbz.png
+-mime/icons/48x48/application-x-cbr.png
+ mime/icons/48x48/application-x-cbt.png
+-mime/icons/48x48/application-x-cbz.png
+\ No newline at end of file
++mime/icons/48x48/application-x-cbz.png
+diff --git a/mime/comicbook.schemas b/mime/comicbook.schemas
+index cdc4a4a..21b6214 100644
+--- a/mime/comicbook.schemas
++++ b/mime/comicbook.schemas
+@@ -1,28 +1,6 @@
+ <gconfschemafile>
+ <schemalist>
+ <schema>
+- <key>/schemas/desktop/gnome/thumbnailers/application@x-cbr/enable</key>
+- <applyto>/desktop/gnome/thumbnailers/application@x-cbr/enable</applyto>
+- <owner>comicthumb</owner>
+- <type>bool</type>
+- <default>true</default>
+- <locale name="C">
+- <short></short>
+- <long></long>
+- </locale>
+- </schema>
+- <schema>
+- <key>/schemas/desktop/gnome/thumbnailers/application@x-cbr/command</key>
+- <applyto>/desktop/gnome/thumbnailers/application@x-cbr/command</applyto>
+- <owner>comicthumb</owner>
+- <type>string</type>
+- <default>comicthumb %i %o %s</default>
+- <locale name="C">
+- <short></short>
+- <long></long>
+- </locale>
+- </schema>
+- <schema>
+ <key>/schemas/desktop/gnome/thumbnailers/application@x-cbz/enable</key>
+ <applyto>/desktop/gnome/thumbnailers/application@x-cbz/enable</applyto>
+ <owner>comicthumb</owner>
+diff --git a/mime/comicthumb b/mime/comicthumb
+index 5728e2a..d77a4a1 100755
+--- a/mime/comicthumb
++++ b/mime/comicthumb
+@@ -7,7 +7,7 @@ comicthumb is dependent on the Python Imaging Library (PIL).
+ comicthumb was originally written by Christoph Wolk, this version was
+ re-written from scratch for Comix 4 by Pontus Ekberg.
+
+-Supported formats: ZIP, RAR and tar (.cbz, .cbr, .cbt)
++Supported formats: ZIP and tar (.cbz, .cbt)
+
+ Usage: comicthumb INFILE OUTFILE [SIZE]
+ """
+@@ -28,16 +28,13 @@ except ImportError:
+ print __doc__
+ sys.exit(1)
+
+-ZIP, RAR, TAR, GZIP, BZIP2 = range(5)
++ZIP, TAR, GZIP, BZIP2 = range(5)
+
+
+ class Process:
+
+ """The subprocess and popen2 modules in Python are broken (see issue
+- #1336). The problem (i.e. complete crash) they can cause happen fairly
+- often (once is too often) in Comix when calling "rar" or "unrar" to
+- extract specific files from archives. We roll our own very simple
+- process spawning module here instead.
++ #1336). We roll our own very simple process spawning module here instead.
+ """
+ # TODO: I can no longer reproduce the issue. Check if this version of
+ # process.py still solves it.
+@@ -94,19 +91,6 @@ class Extractor:
+ elif self._type in [TAR, GZIP, BZIP2]:
+ self._tfile = tarfile.open(src, 'r')
+ self._files = self._tfile.getnames()
+- elif self._type == RAR:
+- self._rar = None
+- for command in ('unrar', 'rar'):
+- if Process([command]).spawn() is not None:
+- self._rar = command
+- if self._rar == None:
+- print '! Could not find the "rar" or "unrar" executable.'
+- sys.exit(1)
+- proc = Process([self._rar, 'vb', src])
+- fobj = proc.spawn()
+- self._files = fobj.readlines()
+- proc.wait()
+- self._files = [name.rstrip('\n') for name in self._files]
+
+ def get_files(self):
+ """Return a list of the files in the archive."""
+@@ -121,11 +105,6 @@ class Extractor:
+ return cStringIO.StringIO(self._zfile.read(chosen))
+ elif self._type in [TAR, GZIP, BZIP2]:
+ return cStringIO.StringIO(self._tfile.extractfile(chosen).read())
+- elif self._type == RAR:
+- proc = Process([self._rar, 'p', '-inul', '-p-', '--',
+- self._src, chosen])
+- fobj = proc.spawn()
+- return cStringIO.StringIO(fobj.read())
+
+
+ def archive_mime_type(path):
+@@ -145,8 +124,6 @@ def archive_mime_type(path):
+ if magic.startswith('\037\213'):
+ return GZIP
+ return TAR
+- if magic == 'Rar!':
+- return RAR
+ except Exception:
+ print '! Error while reading', path
+ return None
+diff --git a/mime/mcomix.desktop b/mime/mcomix.desktop
+index ee6d8b9..19ec7cd 100644
+--- a/mime/mcomix.desktop
++++ b/mime/mcomix.desktop
+@@ -19,4 +19,4 @@ Terminal=false
+ Type=Application
+ StartupNotify=true
+ Categories=Graphics;Viewer;
+-MimeType=application/x-cbz;application/x-cbr;application/x-cbt;image/jpeg;image/png;image/gif;image/tiff;image/bmp;image/x-icon;image/x-xpixmap;image/x-xbitmap;application/x-zip;application/zip;application/x-rar;application/x-tar;application/x-gzip;application/x-bzip2;image/svg+xml;image/svg;image/svg-xml;image/vnd.adobe.svg+xml;text/xml-svg;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-pcx;image/x-cmu-raster;image/x-sun-raster;image/x-tga;application/x-7z-compressed;application/x-cb7;application/x-lzh;application/x-lha;application/x-lzh-compressed;
++MimeType=application/x-cbz;application/x-cbt;image/jpeg;image/png;image/gif;image/tiff;image/bmp;image/x-icon;image/x-xpixmap;image/x-xbitmap;application/x-zip;application/zip;application/x-tar;application/x-gzip;application/x-bzip2;image/svg+xml;image/svg;image/svg-xml;image/vnd.adobe.svg+xml;text/xml-svg;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-pcx;image/x-cmu-raster;image/x-sun-raster;image/x-tga;application/x-7z-compressed;application/x-cb7;application/x-lzh;application/x-lha;application/x-lzh-compressed;
+diff --git a/mime/mcomix.thumbnailer b/mime/mcomix.thumbnailer
+index 4dcfc67..667dc8b 100644
+--- a/mime/mcomix.thumbnailer
++++ b/mime/mcomix.thumbnailer
+@@ -1,4 +1,4 @@
+ [Thumbnailer Entry]
+ TryExec=comicthumb
+ Exec=comicthumb %u %o %s
+-MimeType=application/x-cbr;application/x-cbz;application/x-cbt;
++MimeType=application/x-cbz;application/x-cbt;
+diff --git a/mime/mcomix.xml b/mime/mcomix.xml
+index 765c254..b13e2da 100644
+--- a/mime/mcomix.xml
++++ b/mime/mcomix.xml
+@@ -5,11 +5,6 @@
+ <comment xml:lang="en">Comic Book Archive (Zip compressed)</comment>
+ <glob pattern="*.cbz"/>
+ </mime-type>
+- <mime-type type="application/x-cbr">
+- <sub-class-of type="application/x-rar"/>
+- <comment xml:lang="en">Comic Book Archive (RAR compressed)</comment>
+- <glob pattern="*.cbr"/>
+- </mime-type>
+ <mime-type type="application/x-cbt">
+ <sub-class-of type="application/x-compressed-tar"/>
+ <sub-class-of type="application/x-bzip-compressed-tar"/>
+diff --git a/setup.py b/setup.py
+index 9eb7782..9979111 100755
+--- a/setup.py
++++ b/setup.py
+@@ -78,23 +78,18 @@ setuptools.setup(
+ ('share/icons/hicolor/48x48/apps', ['mcomix/images/48x48/mcomix.png']),
+ ('share/icons/hicolor/16x16/mimetypes',
+ ['mime/icons/16x16/application-x-cbz.png',
+- 'mime/icons/16x16/application-x-cbr.png',
+ 'mime/icons/16x16/application-x-cbt.png']),
+ ('share/icons/hicolor/22x22/mimetypes',
+ ['mime/icons/22x22/application-x-cbz.png',
+- 'mime/icons/22x22/application-x-cbr.png',
+ 'mime/icons/22x22/application-x-cbt.png']),
+ ('share/icons/hicolor/24x24/mimetypes',
+ ['mime/icons/24x24/application-x-cbz.png',
+- 'mime/icons/24x24/application-x-cbr.png',
+ 'mime/icons/24x24/application-x-cbt.png']),
+ ('share/icons/hicolor/32x32/mimetypes',
+ ['mime/icons/32x32/application-x-cbz.png',
+- 'mime/icons/32x32/application-x-cbr.png',
+ 'mime/icons/32x32/application-x-cbt.png']),
+ ('share/icons/hicolor/48x48/mimetypes',
+ ['mime/icons/48x48/application-x-cbz.png',
+- 'mime/icons/48x48/application-x-cbr.png',
+ 'mime/icons/48x48/application-x-cbt.png'])],
+
+ # Package metadata
diff --git a/libre/mesa-libcl/PKGBUILD b/libre/mesa-libcl/PKGBUILD
index 3f898e726..414abd6db 100644
--- a/libre/mesa-libcl/PKGBUILD
+++ b/libre/mesa-libcl/PKGBUILD
@@ -5,7 +5,7 @@ pkgbase=mesa
_pkgname=libcl
pkgname=$pkgbase-$_pkgname
_pkgflag=libre
-pkgver=10.1.1
+pkgver=10.1.3
pkgrel=1
pkgdesc='Mesa 3-D OpenCL library'
url=http://${pkgbase}3d.sourceforge.net
@@ -30,7 +30,7 @@ provides=($_pkgname-$_pkgflag $_pkgname opencl-nvidia opencl-nvidia-304xx)
conflicts=($_pkgname-$_pkgflag $_pkgname opencl-nvidia opencl-nvidia-304xx)
replaces=($_pkgname-$_pkgflag $_pkgname opencl-nvidia opencl-nvidia-304xx)
source=ftp://ftp.freedesktop.org/pub/$pkgbase/${pkgver%.0}/${pkgbase^}Lib-$pkgver.tar.bz2
-sha512sums=f136d25f6da47bb9f582eafa2f89804b1eae9f0b834a1513cf9f940ef5bd8f438b72600d992d4d9436d2899e0a91d48f4eaabb24bd149c71d3192af5e386dec7
+sha512sums=3c15b3c26db4d104450155c9b48264b6abd9fbe5b1bbe812299c9ce993cde54f8e0c1ffb2b25b9d46c818e870a514c41cac9b88fc1826d735bdf26fad498ce45
build() {
cd $srcdir/${pkgbase^}-$pkgver
diff --git a/libre/netsurf-libre/PKGBUILD b/libre/netsurf-libre/PKGBUILD
index 6d028e732..906b9e7d5 100644
--- a/libre/netsurf-libre/PKGBUILD
+++ b/libre/netsurf-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 105500 2014-02-09 11:01:04Z arodseth $
+# $Id: PKGBUILD 110427 2014-04-29 13:53:01Z arodseth $
# Maintainer: Alexander Rødseth <rodseth@gmail.com>
# Contributor: Paulo Matias <matiasΘarchlinux-br·org>
# Contributor: Georgij Kondratjev <smpuj@bk.ru>
@@ -7,8 +7,8 @@
_pkgname=netsurf
pkgname=netsurf-libre
-pkgver=3.0
-pkgrel=7
+pkgver=3.1
+pkgrel=1
pkgdesc='Lightweight and fast web browser, without non-privacy search providers'
arch=('x86_64' 'i686' 'mips64el')
url='http://www.netsurf-browser.org/'
@@ -16,15 +16,15 @@ license=('MIT' 'GPL2')
replaces=$_pkgname
conflicts=$_pkgname
provides=$_pkgname=$pkgver
-depends=('gtk2' 'libmng' 'curl' 'librsvg' 'desktop-file-utils' 'libnsbmp' 'libnsgif' 'libcss' 'libwebp' 'libdom' 'lcms') # 'libharu' 'gstreamer0.10'
-makedepends=('js' 're2c' 'gendesk' 'netsurf-buildsystem' 'libglade' 'addinclude')
+depends=('libmng' 'librsvg' 'libwebp' 'curl' 'lcms' 'desktop-file-utils' 'libnsbmp>=0.1.1' 'libnsgif>=0.1.1' 'libcss>=0.3.0' 'libdom>=0.1.0' 'js185' 'gtk2') # gtk3
+makedepends=('js185' 're2c' 'gendesk' 'netsurf-buildsystem' 'perl-html-parser' 'nsgenbind' 'inetutils')
install="$_pkgname.install"
source=("netsurf.png::http://ubuntu.allmyapps.com/data/n/e/netsurf-netsurf-web-browser/icon_48x48_netsurf.png"
"http://download.$_pkgname-browser.org/$_pkgname/releases/source/$_pkgname-$pkgver-src.tar.gz"
'netsurf.sh')
sha256sums=('f0dbcc5d80bf03d706aa8b28a322aa7f169a40813848c2d1505691f6e2c7ef00'
- '7c6a48d3cc3e9a3e3a51b532ddf60f7697e97bf8b61a6d3b2ced1a2e89fbccc6'
- '7aef20cc7b2e2e7225237f2f94b5a0074caeb8ec07075c58429b0345ca566f8d')
+ '1ef12b2e2bc68f9eff8465646b7359e3cb483e1042aed750cc283a70dd4c540c'
+ '70310682d1612457d7bb3096549110b6ec127f50e97853259fada6be0c52924b')
prepare() {
cd "$_pkgname-$pkgver"
@@ -91,36 +91,43 @@ prepare() {
\!NetSurf/Resources/en/welcome.html\,faf \
\!NetSurf/Resources/it/welcome.html\,faf \
\!NetSurf/Resources/ja/welcome.html\,faf
+ sed -i 's|nsgenbind -g|nsgenbind|
+ ' javascript/Makefile
- addinclude image/rsvg.c stdio
- addinclude image/mng.c stdio
- addinclude image/png.c stdio
+ cd ..
gendesk -f --pkgname "$_pkgname" --pkgdesc "$pkgdesc" --exec 'netsurf %U' \
--genericname 'Web Browser' --comment 'Lightweight web browser' \
--mimetypes 'text/html;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/geo'
+
+ # If patching the GTK3 deprecated errors by including files from
+ # /usr/include/gtk-3.0/gtk/deprecated, something like this might be useful:
+ #setconf "$_pkgname-$pkgver/Makefile.defaults" \
+ # CFLAGS " -DGTK_COMPILATION"
}
build() {
- cd "$_pkgname-$pkgver"
-
- make \
+ make -C "$_pkgname-$pkgver" \
PREFIX=/usr \
TARGET=gtk \
NETSURF_USE_WEBP=YES \
NETSURF_USE_VIDEO=NO
+ #NETSURF_GTK_MAJOR=3 # The latest version of GTK3 has deprecated several
+ # features that are used by NetSurf.
}
package() {
- cd "$_pkgname-$pkgver"
-
- make install PREFIX=/usr DESTDIR="$pkgdir" NETSURF_USE_WEBP=YES
+ make -C "$_pkgname-$pkgver" install PREFIX=/usr DESTDIR="$pkgdir"
mv "$pkgdir/usr/bin/$_pkgname" "$pkgdir/usr/bin/$_pkgname.elf"
- install -Dm755 "../$_pkgname.sh" "$pkgdir/usr/bin/$_pkgname"
- install -Dm644 "../$_pkgname.png" "$pkgdir/usr/share/pixmaps/$_pkgname.png"
+ install -Dm755 "$_pkgname.sh" "$pkgdir/usr/bin/$_pkgname"
+ install -Dm644 "$_pkgname.png" "$pkgdir/usr/share/pixmaps/$_pkgname.png"
install -Dm644 "$_pkgname.desktop" \
"$pkgdir/usr/share/applications/$_pkgname.desktop"
- install -Dm644 COPYING "$pkgdir/usr/share/licenses/$_pkgname/LICENSE"
+ install -Dm644 "$_pkgname-$pkgver/COPYING" \
+ "$pkgdir/usr/share/licenses/$_pkgname/LICENSE"
+ # use softlinks instead of hardlinks
+ rm -r "$pkgdir/usr/share/netsurf/C"
+ ln -s '/usr/share/netsurf/en' "$pkgdir/usr/share/netsurf/C"
}
# vim:set ts=2 sw=2 et:
diff --git a/libre/netsurf-libre/netsurf.sh b/libre/netsurf-libre/netsurf.sh
index b74f388af..01ff68450 100644
--- a/libre/netsurf-libre/netsurf.sh
+++ b/libre/netsurf-libre/netsurf.sh
@@ -1,7 +1,7 @@
#!/bin/sh
shortname=`echo $LANG | cut -b1-2`
if [[ -d /usr/share/netsurf/$shortname ]]; then
- /usr/bin/netsurf.elf "$@"
+ /usr/bin/netsurf.elf "$@"
else
- LANG=en /usr/bin/netsurf.elf "$@"
+ LANG=en /usr/bin/netsurf.elf "$@"
fi
diff --git a/libre/nss/PKGBUILD b/libre/nss/PKGBUILD
index 218c331b2..1344d4194 100644
--- a/libre/nss/PKGBUILD
+++ b/libre/nss/PKGBUILD
@@ -1,16 +1,16 @@
-# $Id: PKGBUILD 209930 2014-04-09 10:55:26Z jgc $
+# $Id: PKGBUILD 212171 2014-05-09 18:25:02Z jgc $
# Maintainer: Jan de Groot <jgc@archlinux.org>
# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
# Contributor (Parabola): Luke Shumaker <lukeshu@sbcglobal.net>
pkgname=nss
-pkgver=3.16
-pkgrel=1.1
+pkgver=3.16.1
+pkgrel=1
pkgdesc="Mozilla Network Security Services, with CAcert CA certificates support"
arch=(i686 x86_64)
url="http://www.mozilla.org/projects/security/pki/nss/"
license=('MPL' 'GPL')
-_nsprver=4.10.4
+_nsprver=4.10.5
depends=("nspr>=${_nsprver}" 'sqlite' 'zlib' 'sh')
makedepends=('perl')
options=('!strip' '!makeflags' 'staticlibs')
@@ -19,7 +19,7 @@ source=(ftp://ftp.mozilla.org/pub/security/nss/releases/NSS_${pkgver//./_}_RTM/s
nss-config.in
ssl-renegotiate-transitional.patch
add_cacert_ca_certs.patch)
-sha1sums=('981dc6ef2f1e69ec7e2b277ce27c7005e9837f95'
+sha1sums=('450a88dde8c7e4533507ac8340dbf94be28a759b'
'aa5b2c0aa38d3c1066d511336cf28d1333e3aebd'
'cb744cc3e56b604e4754bc3c7d9f25bb9a0a136c'
'8a964a744ba098711b80c0d279a2993524e8eb92'
diff --git a/libre/ogre-libre/PKGBUILD b/libre/ogre-libre/PKGBUILD
index e7bf84fcf..890b46163 100644
--- a/libre/ogre-libre/PKGBUILD
+++ b/libre/ogre-libre/PKGBUILD
@@ -14,7 +14,7 @@ pkgname=(
#$_bldname-addon-$pkgbase # package unstable
)
pkgver=1.9.0
-pkgrel=5
+pkgrel=6
pkgdesc='Scene-oriented, flexible 3D engine written in C++, without nonfree software support and files'
arch=(
mips64el
diff --git a/libre/openimageio/PKGBUILD b/libre/openimageio/PKGBUILD
index 9e7217250..3b3b2eed1 100644
--- a/libre/openimageio/PKGBUILD
+++ b/libre/openimageio/PKGBUILD
@@ -2,8 +2,8 @@
# based of Arch pkg
pkgname=openimageio
-pkgver=1.3.12
-pkgrel=2
+pkgver=1.3.13
+pkgrel=1
pkgdesc='A library for reading and writing images, including classes, utilities, and applications (built for the blender-libre package)'
arch=(
mips64el
@@ -38,7 +38,7 @@ optdepends=(
'python2: bindings support'
)
source=https://github.com/OpenImageIO/oiio/archive/Release-$pkgver.tar.gz
-sha512sums=SKIP
+sha512sums=6a8061da573f43954d6df3e67f81fbf2760482ecfb062f0ccac86fee878afc74a2e886d090760836e96c9d3ee866a971b0ee1dee404a626fe341237f9e3c32f1
prepare() {
cd oiio-Release-$pkgver
diff --git a/libre/p7zip-libre/9.04-makefile.patch b/libre/p7zip-libre/9.04-makefile.patch
deleted file mode 100644
index 93a99cc90..000000000
--- a/libre/p7zip-libre/9.04-makefile.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- p7zip_9.04/CPP/7zip/Bundles/Format7zFree/makefile.orig 2010-01-04 13:58:54.527887746 +0100
-+++ p7zip_9.04/CPP/7zip/Bundles/Format7zFree/makefile 2010-01-04 13:59:10.290868343 +0100
-@@ -247,8 +247,6 @@
- MyAes.o \
- Pbkdf2HmacSha1.o \
- RandGen.o \
-- Rar20Crypto.o \
-- RarAes.o \
- Sha1.o \
- WzAes.o \
- ZipCrypto.o \
-@@ -298,7 +296,6 @@
- $(HFS_OBJS) \
- $(ISO_OBJS) \
- $(NSIS_OBJS) \
-- $(RAR_OBJS) \
- $(TAR_OBJS) \
- $(UDF_OBJS) \
- $(WIM_OBJS) \
diff --git a/libre/p7zip-libre/PKGBUILD b/libre/p7zip-libre/PKGBUILD
index fb803b74c..5ea50cd1a 100644
--- a/libre/p7zip-libre/PKGBUILD
+++ b/libre/p7zip-libre/PKGBUILD
@@ -8,8 +8,8 @@
pkgname=p7zip-libre
_pkgname=${pkgname%-libre}
pkgver=9.20.1
-pkgrel=9.2
-pkgdesc='Command-line version of the 7zip compressed file archiver, without nonfree unrar support'
+pkgrel=9.4
+pkgdesc='Command-line version of the 7zip compressed file archiver, without nonfree decompression engine for RAR archives'
url='http://p7zip.sourceforge.net/'
license=('GPL')
arch=('i686' 'x86_64' 'mips64el')
@@ -20,34 +20,36 @@ depends=('gcc-libs' 'bash')
optdepends=('wxgtk2.8: GUI'
'desktop-file-utils: desktop entries')
makedepends=('yasm' 'nasm' 'wxgtk2.8')
-mksource=("http://downloads.sourceforge.net/project/${_pkgname}/${_pkgname}/${pkgver}/${_pkgname}_${pkgver}_src_all.tar.bz2"
- 'p7zip-libre.patch' 'parent-folder-icon.patch')
+mksource=("http://downloads.sourceforge.net/project/${_pkgname}/${_pkgname}/${pkgver}/${_pkgname}_${pkgver}_src_all.tar.bz2")
source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}_${pkgver}_src_all.tar.bz2"
- '7zFM.desktop')
-mksha1sums=('1cd567e043ee054bf08244ce15f32cb3258306b7'
- '8fc0e6e80aeec371a8c80e7a6082594ac6d08aed'
- '335a4a38d457d2b0166538d514ffd3c183bbb37f')
-sha1sums=('ef3f668f5d75941f7a3ba7873e4b234b9f97445b'
- 'f2c370d6f1b286b7ce9a2804e22541b755616a40')
+ '7zFM.desktop' 'libre.patch')
+mksha1sums=('1cd567e043ee054bf08244ce15f32cb3258306b7')
+sha1sums=('4e5ba097a90f3e00ad072023030c87f0707733b8'
+ 'f2c370d6f1b286b7ce9a2804e22541b755616a40'
+ 'bd929fdcbc05dcc783f7fa7d156ed15d38b0b4b3')
options=('!makeflags')
install=install
mksource() {
cd "${srcdir}/${_pkgname}_${pkgver}"
- msg "Removing unRar"
- # Generate patch
- # sed -e '/Rar/d' -i makefile*
- # find -name '*Rar*' -print0 | xargs -0 rm -rvf
- # Remove Rar mentions in CPP/7zip/Bundles/Format7zFree/makefile
- patch -Np1 -i ../p7zip-libre.patch
- msg 'Replacing the parent folder icon'
+
+ # Remove nonfree decompression engine for RAR archives
+ rm -rv CPP/7zip/{Archive,Compress}/Rar
+ rm -v CPP/7zip/Compress/{Rar{2,3}Decoder.{cpp,h},Rar3Vm.{cpp,h},RarCodecsRegister.cpp}
+ rm -v CPP/7zip/Crypto/{Rar20Crypto,RarAes}.{cpp,h}
+ rm -v DOCS/unRarLicense.txt
+
+ # Remove nonfree parent folder icon
rm CPP/7zip/UI/FileManager/res/ParentFolder.h
- patch -Np1 -i ../parent-folder-icon.patch
}
prepare() {
cd "${srcdir}/${_pkgname}_${pkgver}"
+
+ # remove rar and parent folder icon references
+ patch -Np1 -i ../libre.patch
+
rm GUI/kde4/p7zip_compress.desktop
[[ $CARCH = x86_64 ]] \
&& cp makefile.linux_amd64_asm makefile.machine \
diff --git a/libre/p7zip-libre/libre.patch b/libre/p7zip-libre/libre.patch
new file mode 100644
index 000000000..86b2caebc
--- /dev/null
+++ b/libre/p7zip-libre/libre.patch
@@ -0,0 +1,170 @@
+diff -Nur p7zip_9.20.1.orig/CPP/7zip/Bundles/Format7zFree/makefile p7zip_9.20.1/CPP/7zip/Bundles/Format7zFree/makefile
+--- p7zip_9.20.1.orig/CPP/7zip/Bundles/Format7zFree/makefile 2010-11-07 13:41:43.000000000 -0200
++++ p7zip_9.20.1/CPP/7zip/Bundles/Format7zFree/makefile 2014-05-03 11:19:47.618563272 -0300
+@@ -158,14 +158,6 @@
+ NsisIn.o \
+ NsisRegister.o \
+
+-RAR_OBJS = \
+- RarHandler.o \
+- RarHeader.o \
+- RarIn.o \
+- RarItem.o \
+- RarVolumeInStream.o \
+- RarRegister.o \
+-
+ TAR_OBJS = \
+ TarHandler.o \
+ TarHandlerOut.o \
+@@ -243,13 +235,6 @@
+ ZlibEncoder.o \
+ ZDecoder.o \
+
+-COMPRESS_OBJS_NON_FREE = \
+- Rar1Decoder.o \
+- Rar2Decoder.o \
+- Rar3Decoder.o \
+- Rar3Vm.o \
+- RarCodecsRegister.o \
+-
+ CRYPTO_OBJS = \
+ 7zAes.o \
+ 7zAesRegister.o \
+@@ -257,8 +242,6 @@
+ MyAes.o \
+ Pbkdf2HmacSha1.o \
+ RandGen.o \
+- Rar20Crypto.o \
+- RarAes.o \
+ Sha1.o \
+ WzAes.o \
+ ZipCrypto.o \
+diff -Nur p7zip_9.20.1.orig/CPP/7zip/UI/FileManager/FM_rc.cpp p7zip_9.20.1/CPP/7zip/UI/FileManager/FM_rc.cpp
+--- p7zip_9.20.1.orig/CPP/7zip/UI/FileManager/FM_rc.cpp 2010-11-07 13:55:36.000000000 -0200
++++ p7zip_9.20.1/CPP/7zip/UI/FileManager/FM_rc.cpp 2014-05-03 11:28:17.542065931 -0300
+@@ -774,8 +774,6 @@
+
+ /////////////////////////////////////////////////////
+
+-#include "res/ParentFolder.h"
+-
+ SevenZipPanel::SevenZipPanel(MyFrame *frame, wxWindow *parent,int id,int panelIndex) :
+ wxPanel(parent,id) , m_frame(frame), _wList(0)
+ {
+@@ -793,7 +791,7 @@
+ int sizes[] = {150, 250, 350, -1};
+ wxArrayString pathArray;
+ wxBoxSizer *pPathSizer = new wxBoxSizer(wxHORIZONTAL);
+- m_pBmpButtonParentFolder = new wxBitmapButton(this, kParentFolderID, wxGetBitmapFromMemory(PARENT_FOLDER), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW);
++ m_pBmpButtonParentFolder = new wxBitmapButton(this, kParentFolderID, wxArtProvider::GetBitmap(wxART_GO_DIR_UP, wxART_TOOLBAR, wxDefaultSize), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW);
+ m_pComboBoxPath = new wxComboBox(this, _comboBoxID, wxEmptyString, wxDefaultPosition, wxSize(300,-1), pathArray, wxCB_DROPDOWN | wxCB_SORT );
+ pPathSizer->Add(m_pBmpButtonParentFolder, 0, wxALL|wxEXPAND, 0);
+ pPathSizer->Add(m_pComboBoxPath, 1, wxALL|wxEXPAND, 5);
+diff -Nur p7zip_9.20.1.orig/CPP/7zip/UI/FileManager/makefile.depend p7zip_9.20.1/CPP/7zip/UI/FileManager/makefile.depend
+--- p7zip_9.20.1.orig/CPP/7zip/UI/FileManager/makefile.depend 2011-02-19 07:33:17.000000000 -0200
++++ p7zip_9.20.1/CPP/7zip/UI/FileManager/makefile.depend 2014-05-03 11:28:17.545399286 -0300
+@@ -714,7 +714,7 @@
+ res/Move2PNG.h res/DeletePNG.h res/Delete2PNG.h res/InfoPNG.h \
+ res/Info2PNG.h LangUtils.h ../../../Common/Lang.h \
+ ../../../Common/MyString.h ../../../Windows/ResourceString.h \
+- /usr/include/wx-2.8/wx/mstream.h res/ParentFolder.h
++ /usr/include/wx-2.8/wx/mstream.h
+ OpenCallback.o: OpenCallback.cpp ../../../myWindows/StdAfx.h \
+ ../../../myWindows/config.h ../../../Common/MyWindows.h \
+ ../../../Common/MyGuidDef.h ../../../Common/Types.h \
+diff -Nur p7zip_9.20.1.orig/makefile p7zip_9.20.1/makefile
+--- p7zip_9.20.1.orig/makefile 2011-03-13 08:52:45.000000000 -0300
++++ p7zip_9.20.1/makefile 2014-05-03 11:19:47.618563272 -0300
+@@ -56,7 +56,6 @@
+ $(MAKE) -C CPP/7zip/UI/Client7z depend
+ $(MAKE) -C CPP/7zip/UI/Console depend
+ $(MAKE) -C CPP/7zip/Bundles/Format7zFree depend
+- $(MAKE) -C CPP/7zip/Compress/Rar depend
+ $(MAKE) -C CPP/7zip/UI/GUI depend
+ $(MAKE) -C CPP/7zip/UI/FileManager depend
+ $(MAKE) -C check/my_86_filter depend
+@@ -68,7 +67,6 @@
+ common7z:common
+ $(MKDIR) bin/Codecs
+ $(MAKE) -C CPP/7zip/Bundles/Format7zFree all
+- $(MAKE) -C CPP/7zip/Compress/Rar all
+
+ 7z: common7z
+ $(MAKE) -C CPP/7zip/UI/Console all
+@@ -93,7 +91,6 @@
+ $(MAKE) -C CPP/7zip/UI/FileManager clean
+ $(MAKE) -C CPP/7zip/UI/GUI clean
+ $(MAKE) -C CPP/7zip/Bundles/Format7zFree clean
+- $(MAKE) -C CPP/7zip/Compress/Rar clean
+ $(MAKE) -C CPP/7zip/Compress/LZMA_Alone clean
+ $(MAKE) -C CPP/7zip/Bundles/AloneGCOV clean
+ $(MAKE) -C CPP/7zip/TEST/TestUI clean
+diff -Nur p7zip_9.20.1.orig/makefile.oldmake p7zip_9.20.1/makefile.oldmake
+--- p7zip_9.20.1.orig/makefile.oldmake 2011-03-13 08:53:08.000000000 -0300
++++ p7zip_9.20.1/makefile.oldmake 2014-05-03 11:19:47.618563272 -0300
+@@ -56,7 +56,6 @@
+ cd CPP/7zip/UI/Client7z ; $(MAKE) depend
+ cd CPP/7zip/UI/Console ; $(MAKE) depend
+ cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) depend
+- cd CPP/7zip/Compress/Rar ; $(MAKE) depend
+ cd CPP/7zip/UI/GUI ; $(MAKE) depend
+ cd CPP/7zip/UI/FileManager ; $(MAKE) depend
+ cd check/my_86_filter ; $(MAKE) depend
+@@ -68,7 +67,6 @@
+ common7z:common
+ $(MKDIR) bin/Codecs
+ cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) all
+- cd CPP/7zip/Compress/Rar ; $(MAKE) all
+
+ 7z: common7z
+ cd CPP/7zip/UI/Console ; $(MAKE) all
+@@ -93,7 +91,6 @@
+ cd CPP/7zip/UI/FileManager ; $(MAKE) clean
+ cd CPP/7zip/UI/GUI ; $(MAKE) clean
+ cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) clean
+- cd CPP/7zip/Compress/Rar ; $(MAKE) clean
+ cd CPP/7zip/Compress/LZMA_Alone ; $(MAKE) clean
+ cd CPP/7zip/Bundles/AloneGCOV ; $(MAKE) clean
+ cd CPP/7zip/TEST/TestUI ; $(MAKE) clean
+diff -Nur p7zip_9.20.1.orig/makefile.qnx_shared.so p7zip_9.20.1/makefile.qnx_shared.so
+--- p7zip_9.20.1.orig/makefile.qnx_shared.so 2007-06-28 04:34:14.000000000 -0300
++++ p7zip_9.20.1/makefile.qnx_shared.so 2014-05-03 11:19:47.618563272 -0300
+@@ -1,5 +1,4 @@
+ ###################################################
+-# makefile.machine for "7z.so , Codecs/Rar29.so" :
+ # tested with p7zip-4.47_beta on qnx-6.3.0 sp3 x86 target
+
+ OPTFLAGS=-O
+diff -Nur p7zip_9.20.1.orig/makefile.rules p7zip_9.20.1/makefile.rules
+--- p7zip_9.20.1.orig/makefile.rules 2010-11-07 14:08:51.000000000 -0200
++++ p7zip_9.20.1/makefile.rules 2014-05-03 11:19:47.621896630 -0300
+@@ -448,18 +448,6 @@
+ NsisRegister.o : ../../Archive/Nsis/NsisRegister.cpp
+ $(CXX) $(CXXFLAGS) ../../Archive/Nsis/NsisRegister.cpp
+
+-RarHandler.o : ../../Archive/Rar/RarHandler.cpp
+- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarHandler.cpp
+-RarHeader.o : ../../Archive/Rar/RarHeader.cpp
+- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarHeader.cpp
+-RarIn.o : ../../Archive/Rar/RarIn.cpp
+- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarIn.cpp
+-RarItem.o : ../../Archive/Rar/RarItem.cpp
+- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarItem.cpp
+-RarVolumeInStream.o : ../../Archive/Rar/RarVolumeInStream.cpp
+- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarVolumeInStream.cpp
+-RarRegister.o : ../../Archive/Rar/RarRegister.cpp
+- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarRegister.cpp
+
+ UdfHandler.o : ../../Archive/Udf/UdfHandler.cpp
+ $(CXX) $(CXXFLAGS) ../../Archive/Udf/UdfHandler.cpp
+@@ -535,10 +523,6 @@
+ $(CXX) $(CXXFLAGS) ../../Crypto/7zAesRegister.cpp
+ WzAes.o : ../../Crypto/WzAes.cpp
+ $(CXX) $(CXXFLAGS) ../../Crypto/WzAes.cpp
+-Rar20Crypto.o : ../../Crypto/Rar20Crypto.cpp
+- $(CXX) $(CXXFLAGS) ../../Crypto/Rar20Crypto.cpp
+-RarAes.o : ../../Crypto/RarAes.cpp
+- $(CXX) $(CXXFLAGS) ../../Crypto/RarAes.cpp
+ HmacSha1.o : ../../Crypto/HmacSha1.cpp
+ $(CXX) $(CXXFLAGS) ../../Crypto/HmacSha1.cpp
+ Pbkdf2HmacSha1.o : ../../Crypto/Pbkdf2HmacSha1.cpp
diff --git a/libre/p7zip-libre/p7zip-libre.patch b/libre/p7zip-libre/p7zip-libre.patch
deleted file mode 100644
index 742faf52d..000000000
--- a/libre/p7zip-libre/p7zip-libre.patch
+++ /dev/null
@@ -1,6540 +0,0 @@
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHandler.cpp p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHandler.cpp
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHandler.cpp 2011-01-08 06:41:37.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHandler.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,869 +0,0 @@
--// RarHandler.cpp
--
--#include "StdAfx.h"
--
--#include "Common/ComTry.h"
--#include "Common/IntToString.h"
--#include "Common/StringConvert.h"
--
--#include "Windows/PropVariant.h"
--#include "Windows/PropVariantUtils.h"
--#include "Windows/Time.h"
--
--#include "../../IPassword.h"
--
--#include "../../Common/CreateCoder.h"
--#include "../../Common/FilterCoder.h"
--#include "../../Common/MethodId.h"
--#include "../../Common/ProgressUtils.h"
--
--#include "../../Compress/CopyCoder.h"
--
--#include "../../Crypto/Rar20Crypto.h"
--#include "../../Crypto/RarAes.h"
--
--#include "../Common/ItemNameUtils.h"
--#include "../Common/OutStreamWithCRC.h"
--
--#include "RarHandler.h"
--
--using namespace NWindows;
--using namespace NTime;
--
--namespace NArchive {
--namespace NRar {
--
--static const wchar_t *kHostOS[] =
--{
-- L"MS DOS",
-- L"OS/2",
-- L"Win32",
-- L"Unix",
-- L"Mac OS",
-- L"BeOS"
--};
--
--static const int kNumHostOSes = sizeof(kHostOS) / sizeof(kHostOS[0]);
--
--static const wchar_t *kUnknownOS = L"Unknown";
--
--static const CUInt32PCharPair k_Flags[] =
--{
-- { 0, "Volume" },
-- { 1, "Comment" },
-- { 2, "Lock" },
-- { 3, "Solid" },
-- { 4, "NewVolName" }, // pack_comment in old versuons
-- { 5, "Authenticity" },
-- { 6, "Recovery" },
-- { 7, "BlockEncryption" },
-- { 8, "FirstVolume" },
-- { 9, "EncryptVer" }
--};
--
--static const STATPROPSTG kProps[] =
--{
-- { NULL, kpidPath, VT_BSTR},
-- { NULL, kpidIsDir, VT_BOOL},
-- { NULL, kpidSize, VT_UI8},
-- { NULL, kpidPackSize, VT_UI8},
-- { NULL, kpidMTime, VT_FILETIME},
-- { NULL, kpidCTime, VT_FILETIME},
-- { NULL, kpidATime, VT_FILETIME},
-- { NULL, kpidAttrib, VT_UI4},
--
-- { NULL, kpidEncrypted, VT_BOOL},
-- { NULL, kpidSolid, VT_BOOL},
-- { NULL, kpidCommented, VT_BOOL},
-- { NULL, kpidSplitBefore, VT_BOOL},
-- { NULL, kpidSplitAfter, VT_BOOL},
-- { NULL, kpidCRC, VT_UI4},
-- { NULL, kpidHostOS, VT_BSTR},
-- { NULL, kpidMethod, VT_BSTR},
-- { NULL, kpidUnpackVer, VT_UI1}
--};
--
--static const STATPROPSTG kArcProps[] =
--{
-- { NULL, kpidCharacts, VT_BSTR},
-- { NULL, kpidSolid, VT_BOOL},
-- { NULL, kpidNumBlocks, VT_UI4},
-- // { NULL, kpidEncrypted, VT_BOOL},
-- { NULL, kpidIsVolume, VT_BOOL},
-- { NULL, kpidNumVolumes, VT_UI4},
-- { NULL, kpidPhySize, VT_UI8}
-- // { NULL, kpidCommented, VT_BOOL}
--};
--
--IMP_IInArchive_Props
--IMP_IInArchive_ArcProps
--
--UInt64 CHandler::GetPackSize(int refIndex) const
--{
-- const CRefItem &refItem = _refItems[refIndex];
-- UInt64 totalPackSize = 0;
-- for (int i = 0; i < refItem.NumItems; i++)
-- totalPackSize += _items[refItem.ItemIndex + i].PackSize;
-- return totalPackSize;
--}
--
--STDMETHODIMP CHandler::GetArchiveProperty(PROPID propID, PROPVARIANT *value)
--{
-- COM_TRY_BEGIN
-- NWindows::NCOM::CPropVariant prop;
-- switch(propID)
-- {
-- case kpidSolid: prop = _archiveInfo.IsSolid(); break;
-- case kpidCharacts: FLAGS_TO_PROP(k_Flags, _archiveInfo.Flags, prop); break;
-- // case kpidEncrypted: prop = _archiveInfo.IsEncrypted(); break; // it's for encrypted names.
-- case kpidIsVolume: prop = _archiveInfo.IsVolume(); break;
-- case kpidNumVolumes: prop = (UInt32)_archives.Size(); break;
-- case kpidOffset: if (_archiveInfo.StartPosition != 0) prop = _archiveInfo.StartPosition; break;
-- // case kpidCommented: prop = _archiveInfo.IsCommented(); break;
-- case kpidNumBlocks:
-- {
-- UInt32 numBlocks = 0;
-- for (int i = 0; i < _refItems.Size(); i++)
-- if (!IsSolid(i))
-- numBlocks++;
-- prop = (UInt32)numBlocks;
-- break;
-- }
-- case kpidError: if (!_errorMessage.IsEmpty()) prop = _errorMessage; break;
-- }
-- prop.Detach(value);
-- return S_OK;
-- COM_TRY_END
--}
--
--STDMETHODIMP CHandler::GetNumberOfItems(UInt32 *numItems)
--{
-- *numItems = _refItems.Size();
-- return S_OK;
--}
--
--static bool RarTimeToFileTime(const CRarTime &rarTime, FILETIME &result)
--{
-- if (!DosTimeToFileTime(rarTime.DosTime, result))
-- return false;
-- UInt64 value = (((UInt64)result.dwHighDateTime) << 32) + result.dwLowDateTime;
-- value += (UInt64)rarTime.LowSecond * 10000000;
-- value += ((UInt64)rarTime.SubTime[2] << 16) +
-- ((UInt64)rarTime.SubTime[1] << 8) +
-- ((UInt64)rarTime.SubTime[0]);
-- result.dwLowDateTime = (DWORD)value;
-- result.dwHighDateTime = DWORD(value >> 32);
-- return true;
--}
--
--static void RarTimeToProp(const CRarTime &rarTime, NWindows::NCOM::CPropVariant &prop)
--{
-- FILETIME localFileTime, utcFileTime;
-- if (RarTimeToFileTime(rarTime, localFileTime))
-- {
-- if (!LocalFileTimeToFileTime(&localFileTime, &utcFileTime))
-- utcFileTime.dwHighDateTime = utcFileTime.dwLowDateTime = 0;
-- }
-- else
-- utcFileTime.dwHighDateTime = utcFileTime.dwLowDateTime = 0;
-- prop = utcFileTime;
--}
--
--STDMETHODIMP CHandler::GetProperty(UInt32 index, PROPID propID, PROPVARIANT *value)
--{
-- COM_TRY_BEGIN
-- NWindows::NCOM::CPropVariant prop;
-- const CRefItem &refItem = _refItems[index];
-- const CItemEx &item = _items[refItem.ItemIndex];
-- switch(propID)
-- {
-- case kpidPath:
-- {
-- UString u;
-- if (item.HasUnicodeName() && !item.UnicodeName.IsEmpty())
-- u = item.UnicodeName;
-- else
-- u = MultiByteToUnicodeString(item.Name, CP_OEMCP);
-- prop = (const wchar_t *)NItemName::WinNameToOSName(u);
-- break;
-- }
-- case kpidIsDir: prop = item.IsDir(); break;
-- case kpidSize: prop = item.Size; break;
-- case kpidPackSize: prop = GetPackSize(index); break;
-- case kpidMTime: RarTimeToProp(item.MTime, prop); break;
-- case kpidCTime: if (item.CTimeDefined) RarTimeToProp(item.CTime, prop); break;
-- case kpidATime: if (item.ATimeDefined) RarTimeToProp(item.ATime, prop); break;
-- case kpidAttrib: prop = item.GetWinAttributes(); break;
-- case kpidEncrypted: prop = item.IsEncrypted(); break;
-- case kpidSolid: prop = IsSolid(index); break;
-- case kpidCommented: prop = item.IsCommented(); break;
-- case kpidSplitBefore: prop = item.IsSplitBefore(); break;
-- case kpidSplitAfter: prop = _items[refItem.ItemIndex + refItem.NumItems - 1].IsSplitAfter(); break;
-- case kpidCRC:
-- {
-- const CItemEx &lastItem = _items[refItem.ItemIndex + refItem.NumItems - 1];
-- prop = ((lastItem.IsSplitAfter()) ? item.FileCRC : lastItem.FileCRC);
-- break;
-- }
-- case kpidUnpackVer: prop = item.UnPackVersion; break;
-- case kpidMethod:
-- {
-- UString method;
-- if (item.Method >= Byte('0') && item.Method <= Byte('5'))
-- {
-- method = L"m";
-- wchar_t temp[32];
-- ConvertUInt64ToString(item.Method - Byte('0'), temp);
-- method += temp;
-- if (!item.IsDir())
-- {
-- method += L":";
-- ConvertUInt64ToString(16 + item.GetDictSize(), temp);
-- method += temp;
-- }
-- }
-- else
-- {
-- wchar_t temp[32];
-- ConvertUInt64ToString(item.Method, temp);
-- method += temp;
-- }
-- prop = method;
-- break;
-- }
-- case kpidHostOS: prop = (item.HostOS < kNumHostOSes) ? (kHostOS[item.HostOS]) : kUnknownOS; break;
-- }
-- prop.Detach(value);
-- return S_OK;
-- COM_TRY_END
--}
--
--class CVolumeName
--{
-- bool _first;
-- bool _newStyle;
-- UString _unchangedPart;
-- UString _changedPart;
-- UString _afterPart;
--public:
-- CVolumeName(): _newStyle(true) {};
--
-- bool InitName(const UString &name, bool newStyle)
-- {
-- _first = true;
-- _newStyle = newStyle;
-- int dotPos = name.ReverseFind('.');
-- UString basePart = name;
-- if (dotPos >= 0)
-- {
-- UString ext = name.Mid(dotPos + 1);
-- if (ext.CompareNoCase(L"rar") == 0)
-- {
-- _afterPart = name.Mid(dotPos);
-- basePart = name.Left(dotPos);
-- }
-- else if (ext.CompareNoCase(L"exe") == 0)
-- {
-- _afterPart = L".rar";
-- basePart = name.Left(dotPos);
-- }
-- else if (!_newStyle)
-- {
-- if (ext.CompareNoCase(L"000") == 0 ||
-- ext.CompareNoCase(L"001") == 0 ||
-- ext.CompareNoCase(L"r00") == 0 ||
-- ext.CompareNoCase(L"r01") == 0)
-- {
-- _afterPart.Empty();
-- _first = false;
-- _changedPart = ext;
-- _unchangedPart = name.Left(dotPos + 1);
-- return true;
-- }
-- }
-- }
--
-- if (!_newStyle)
-- {
-- _afterPart.Empty();
-- _unchangedPart = basePart + UString(L".");
-- _changedPart = L"r00";
-- return true;
-- }
--
-- int numLetters = 1;
-- if (basePart.Right(numLetters) == L"1" || basePart.Right(numLetters) == L"0")
-- {
-- while (numLetters < basePart.Length())
-- {
-- if (basePart[basePart.Length() - numLetters - 1] != '0')
-- break;
-- numLetters++;
-- }
-- }
-- else
-- return false;
-- _unchangedPart = basePart.Left(basePart.Length() - numLetters);
-- _changedPart = basePart.Right(numLetters);
-- return true;
-- }
--
-- UString GetNextName()
-- {
-- UString newName;
-- if (_newStyle || !_first)
-- {
-- int i;
-- int numLetters = _changedPart.Length();
-- for (i = numLetters - 1; i >= 0; i--)
-- {
-- wchar_t c = _changedPart[i];
-- if (c == L'9')
-- {
-- c = L'0';
-- newName = c + newName;
-- if (i == 0)
-- newName = UString(L'1') + newName;
-- continue;
-- }
-- c++;
-- newName = UString(c) + newName;
-- i--;
-- for (; i >= 0; i--)
-- newName = _changedPart[i] + newName;
-- break;
-- }
-- _changedPart = newName;
-- }
-- _first = false;
-- return _unchangedPart + _changedPart + _afterPart;
-- }
--};
--
--HRESULT CHandler::Open2(IInStream *stream,
-- const UInt64 *maxCheckStartPosition,
-- IArchiveOpenCallback *openCallback)
--{
-- {
-- CMyComPtr<IArchiveOpenVolumeCallback> openVolumeCallback;
-- CMyComPtr<ICryptoGetTextPassword> getTextPassword;
-- CMyComPtr<IArchiveOpenCallback> openArchiveCallbackWrap = openCallback;
--
-- CVolumeName seqName;
--
-- UInt64 totalBytes = 0;
-- UInt64 curBytes = 0;
--
-- if (openCallback)
-- {
-- openArchiveCallbackWrap.QueryInterface(IID_IArchiveOpenVolumeCallback, &openVolumeCallback);
-- openArchiveCallbackWrap.QueryInterface(IID_ICryptoGetTextPassword, &getTextPassword);
-- }
--
-- for (;;)
-- {
-- CMyComPtr<IInStream> inStream;
-- if (!_archives.IsEmpty())
-- {
-- if (!openVolumeCallback)
-- break;
--
-- if (_archives.Size() == 1)
-- {
-- if (!_archiveInfo.IsVolume())
-- break;
-- UString baseName;
-- {
-- NCOM::CPropVariant prop;
-- RINOK(openVolumeCallback->GetProperty(kpidName, &prop));
-- if (prop.vt != VT_BSTR)
-- break;
-- baseName = prop.bstrVal;
-- }
-- seqName.InitName(baseName, _archiveInfo.HaveNewVolumeName());
-- }
--
-- UString fullName = seqName.GetNextName();
-- HRESULT result = openVolumeCallback->GetStream(fullName, &inStream);
-- if (result == S_FALSE)
-- break;
-- if (result != S_OK)
-- return result;
-- if (!stream)
-- break;
-- }
-- else
-- inStream = stream;
--
-- UInt64 endPos = 0;
-- RINOK(stream->Seek(0, STREAM_SEEK_END, &endPos));
-- RINOK(stream->Seek(0, STREAM_SEEK_SET, NULL));
-- if (openCallback)
-- {
-- totalBytes += endPos;
-- RINOK(openCallback->SetTotal(NULL, &totalBytes));
-- }
--
-- NArchive::NRar::CInArchive archive;
-- RINOK(archive.Open(inStream, maxCheckStartPosition));
--
-- if (_archives.IsEmpty())
-- archive.GetArchiveInfo(_archiveInfo);
--
-- CItemEx item;
-- for (;;)
-- {
-- if (archive.m_Position > endPos)
-- {
-- AddErrorMessage("Unexpected end of archive");
-- break;
-- }
-- bool decryptionError;
-- AString errorMessageLoc;
-- HRESULT result = archive.GetNextItem(item, getTextPassword, decryptionError, errorMessageLoc);
-- if (errorMessageLoc)
-- AddErrorMessage(errorMessageLoc);
-- if (result == S_FALSE)
-- {
-- if (decryptionError && _items.IsEmpty())
-- return S_FALSE;
-- break;
-- }
-- RINOK(result);
-- if (item.IgnoreItem())
-- continue;
--
-- bool needAdd = true;
-- if (item.IsSplitBefore())
-- {
-- if (!_refItems.IsEmpty())
-- {
-- CRefItem &refItem = _refItems.Back();
-- refItem.NumItems++;
-- needAdd = false;
-- }
-- }
-- if (needAdd)
-- {
-- CRefItem refItem;
-- refItem.ItemIndex = _items.Size();
-- refItem.NumItems = 1;
-- refItem.VolumeIndex = _archives.Size();
-- _refItems.Add(refItem);
-- }
-- _items.Add(item);
-- if (openCallback && _items.Size() % 100 == 0)
-- {
-- UInt64 numFiles = _items.Size();
-- UInt64 numBytes = curBytes + item.Position;
-- RINOK(openCallback->SetCompleted(&numFiles, &numBytes));
-- }
-- }
-- curBytes += endPos;
-- _archives.Add(archive);
-- }
-- }
-- return S_OK;
--}
--
--STDMETHODIMP CHandler::Open(IInStream *stream,
-- const UInt64 *maxCheckStartPosition,
-- IArchiveOpenCallback *openCallback)
--{
-- COM_TRY_BEGIN
-- Close();
-- try
-- {
-- HRESULT res = Open2(stream, maxCheckStartPosition, openCallback);
-- if (res != S_OK)
-- Close();
-- return res;
-- }
-- catch(const CInArchiveException &) { Close(); return S_FALSE; }
-- catch(...) { Close(); throw; }
-- COM_TRY_END
--}
--
--STDMETHODIMP CHandler::Close()
--{
-- COM_TRY_BEGIN
-- _errorMessage.Empty();
-- _refItems.Clear();
-- _items.Clear();
-- _archives.Clear();
-- return S_OK;
-- COM_TRY_END
--}
--
--struct CMethodItem
--{
-- Byte RarUnPackVersion;
-- CMyComPtr<ICompressCoder> Coder;
--};
--
--
--STDMETHODIMP CHandler::Extract(const UInt32 *indices, UInt32 numItems,
-- Int32 testMode, IArchiveExtractCallback *extractCallback)
--{
-- COM_TRY_BEGIN
-- CMyComPtr<ICryptoGetTextPassword> getTextPassword;
-- UInt64 censoredTotalUnPacked = 0,
-- // censoredTotalPacked = 0,
-- importantTotalUnPacked = 0;
-- // importantTotalPacked = 0;
-- bool allFilesMode = (numItems == (UInt32)-1);
-- if (allFilesMode)
-- numItems = _refItems.Size();
-- if (numItems == 0)
-- return S_OK;
-- int lastIndex = 0;
-- CRecordVector<int> importantIndexes;
-- CRecordVector<bool> extractStatuses;
--
-- for (UInt32 t = 0; t < numItems; t++)
-- {
-- int index = allFilesMode ? t : indices[t];
-- const CRefItem &refItem = _refItems[index];
-- const CItemEx &item = _items[refItem.ItemIndex];
-- censoredTotalUnPacked += item.Size;
-- // censoredTotalPacked += item.PackSize;
-- int j;
-- for (j = lastIndex; j <= index; j++)
-- // if (!_items[_refItems[j].ItemIndex].IsSolid())
-- if (!IsSolid(j))
-- lastIndex = j;
-- for (j = lastIndex; j <= index; j++)
-- {
-- const CRefItem &refItem = _refItems[j];
-- const CItemEx &item = _items[refItem.ItemIndex];
--
-- // const CItemEx &item = _items[j];
--
-- importantTotalUnPacked += item.Size;
-- // importantTotalPacked += item.PackSize;
-- importantIndexes.Add(j);
-- extractStatuses.Add(j == index);
-- }
-- lastIndex = index + 1;
-- }
--
-- RINOK(extractCallback->SetTotal(importantTotalUnPacked));
-- UInt64 currentImportantTotalUnPacked = 0;
-- UInt64 currentImportantTotalPacked = 0;
-- UInt64 currentUnPackSize, currentPackSize;
--
-- CObjectVector<CMethodItem> methodItems;
--
-- NCompress::CCopyCoder *copyCoderSpec = new NCompress::CCopyCoder;
-- CMyComPtr<ICompressCoder> copyCoder = copyCoderSpec;
--
-- CFilterCoder *filterStreamSpec = new CFilterCoder;
-- CMyComPtr<ISequentialInStream> filterStream = filterStreamSpec;
--
-- NCrypto::NRar20::CDecoder *rar20CryptoDecoderSpec = NULL;
-- CMyComPtr<ICompressFilter> rar20CryptoDecoder;
-- NCrypto::NRar29::CDecoder *rar29CryptoDecoderSpec = NULL;
-- CMyComPtr<ICompressFilter> rar29CryptoDecoder;
--
-- CFolderInStream *folderInStreamSpec = NULL;
-- CMyComPtr<ISequentialInStream> folderInStream;
--
-- CLocalProgress *lps = new CLocalProgress;
-- CMyComPtr<ICompressProgressInfo> progress = lps;
-- lps->Init(extractCallback, false);
--
-- bool solidStart = true;
-- for (int i = 0; i < importantIndexes.Size(); i++,
-- currentImportantTotalUnPacked += currentUnPackSize,
-- currentImportantTotalPacked += currentPackSize)
-- {
-- lps->InSize = currentImportantTotalPacked;
-- lps->OutSize = currentImportantTotalUnPacked;
-- RINOK(lps->SetCur());
-- CMyComPtr<ISequentialOutStream> realOutStream;
--
-- Int32 askMode;
-- if (extractStatuses[i])
-- askMode = testMode ?
-- NExtract::NAskMode::kTest :
-- NExtract::NAskMode::kExtract;
-- else
-- askMode = NExtract::NAskMode::kSkip;
--
-- UInt32 index = importantIndexes[i];
--
-- const CRefItem &refItem = _refItems[index];
-- const CItemEx &item = _items[refItem.ItemIndex];
--
-- currentUnPackSize = item.Size;
--
-- currentPackSize = GetPackSize(index);
--
-- if (item.IgnoreItem())
-- continue;
--
-- RINOK(extractCallback->GetStream(index, &realOutStream, askMode));
--
-- if (!IsSolid(index))
-- solidStart = true;
-- if (item.IsDir())
-- {
-- RINOK(extractCallback->PrepareOperation(askMode));
-- RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kOK));
-- continue;
-- }
--
-- bool mustBeProcessedAnywhere = false;
-- if (i < importantIndexes.Size() - 1)
-- {
-- // const CRefItem &nextRefItem = _refItems[importantIndexes[i + 1]];
-- // const CItemEx &nextItemInfo = _items[nextRefItem.ItemIndex];
-- // mustBeProcessedAnywhere = nextItemInfo.IsSolid();
-- mustBeProcessedAnywhere = IsSolid(importantIndexes[i + 1]);
-- }
--
-- if (!mustBeProcessedAnywhere && !testMode && !realOutStream)
-- continue;
--
-- if (!realOutStream && !testMode)
-- askMode = NExtract::NAskMode::kSkip;
--
-- RINOK(extractCallback->PrepareOperation(askMode));
--
-- COutStreamWithCRC *outStreamSpec = new COutStreamWithCRC;
-- CMyComPtr<ISequentialOutStream> outStream(outStreamSpec);
-- outStreamSpec->SetStream(realOutStream);
-- outStreamSpec->Init();
-- realOutStream.Release();
--
-- /*
-- for (int partIndex = 0; partIndex < 1; partIndex++)
-- {
-- CMyComPtr<ISequentialInStream> inStream;
--
-- // item redefinition
-- const CItemEx &item = _items[refItem.ItemIndex + partIndex];
--
-- NArchive::NRar::CInArchive &archive = _archives[refItem.VolumeIndex + partIndex];
--
-- inStream.Attach(archive.CreateLimitedStream(item.GetDataPosition(),
-- item.PackSize));
-- */
-- if (!folderInStream)
-- {
-- folderInStreamSpec = new CFolderInStream;
-- folderInStream = folderInStreamSpec;
-- }
--
-- folderInStreamSpec->Init(&_archives, &_items, refItem);
--
-- UInt64 packSize = currentPackSize;
--
-- // packedPos += item.PackSize;
-- // unpackedPos += 0;
--
-- CMyComPtr<ISequentialInStream> inStream;
-- if (item.IsEncrypted())
-- {
-- CMyComPtr<ICryptoSetPassword> cryptoSetPassword;
-- if (item.UnPackVersion >= 29)
-- {
-- if (!rar29CryptoDecoder)
-- {
-- rar29CryptoDecoderSpec = new NCrypto::NRar29::CDecoder;
-- rar29CryptoDecoder = rar29CryptoDecoderSpec;
-- // RINOK(rar29CryptoDecoder.CoCreateInstance(CLSID_CCryptoRar29Decoder));
-- }
-- rar29CryptoDecoderSpec->SetRar350Mode(item.UnPackVersion < 36);
-- CMyComPtr<ICompressSetDecoderProperties2> cryptoProperties;
-- RINOK(rar29CryptoDecoder.QueryInterface(IID_ICompressSetDecoderProperties2,
-- &cryptoProperties));
-- RINOK(cryptoProperties->SetDecoderProperties2(item.Salt, item.HasSalt() ? sizeof(item.Salt) : 0));
-- filterStreamSpec->Filter = rar29CryptoDecoder;
-- }
-- else if (item.UnPackVersion >= 20)
-- {
-- if (!rar20CryptoDecoder)
-- {
-- rar20CryptoDecoderSpec = new NCrypto::NRar20::CDecoder;
-- rar20CryptoDecoder = rar20CryptoDecoderSpec;
-- // RINOK(rar20CryptoDecoder.CoCreateInstance(CLSID_CCryptoRar20Decoder));
-- }
-- filterStreamSpec->Filter = rar20CryptoDecoder;
-- }
-- else
-- {
-- outStream.Release();
-- RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kUnSupportedMethod));
-- continue;
-- }
-- RINOK(filterStreamSpec->Filter.QueryInterface(IID_ICryptoSetPassword,
-- &cryptoSetPassword));
--
-- if (!getTextPassword)
-- extractCallback->QueryInterface(IID_ICryptoGetTextPassword, (void **)&getTextPassword);
-- if (getTextPassword)
-- {
-- CMyComBSTR password;
-- RINOK(getTextPassword->CryptoGetTextPassword(&password));
-- if (item.UnPackVersion >= 29)
-- {
-- CByteBuffer buffer;
-- UString unicodePassword(password);
-- const UInt32 sizeInBytes = unicodePassword.Length() * 2;
-- buffer.SetCapacity(sizeInBytes);
-- for (int i = 0; i < unicodePassword.Length(); i++)
-- {
-- wchar_t c = unicodePassword[i];
-- ((Byte *)buffer)[i * 2] = (Byte)c;
-- ((Byte *)buffer)[i * 2 + 1] = (Byte)(c >> 8);
-- }
-- RINOK(cryptoSetPassword->CryptoSetPassword(
-- (const Byte *)buffer, sizeInBytes));
-- }
-- else
-- {
-- AString oemPassword = UnicodeStringToMultiByte(
-- (const wchar_t *)password, CP_OEMCP);
-- RINOK(cryptoSetPassword->CryptoSetPassword(
-- (const Byte *)(const char *)oemPassword, oemPassword.Length()));
-- }
-- }
-- else
-- {
-- RINOK(cryptoSetPassword->CryptoSetPassword(0, 0));
-- }
-- filterStreamSpec->SetInStream(folderInStream);
-- inStream = filterStream;
-- }
-- else
-- {
-- inStream = folderInStream;
-- }
-- CMyComPtr<ICompressCoder> commonCoder;
-- switch(item.Method)
-- {
-- case '0':
-- {
-- commonCoder = copyCoder;
-- break;
-- }
-- case '1':
-- case '2':
-- case '3':
-- case '4':
-- case '5':
-- {
-- /*
-- if (item.UnPackVersion >= 29)
-- {
-- outStream.Release();
-- RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kUnSupportedMethod));
-- continue;
-- }
-- */
-- int m;
-- for (m = 0; m < methodItems.Size(); m++)
-- if (methodItems[m].RarUnPackVersion == item.UnPackVersion)
-- break;
-- if (m == methodItems.Size())
-- {
-- CMethodItem mi;
-- mi.RarUnPackVersion = item.UnPackVersion;
--
-- mi.Coder.Release();
-- if (item.UnPackVersion <= 30)
-- {
-- UInt32 methodID = 0x040300;
-- if (item.UnPackVersion < 20)
-- methodID += 1;
-- else if (item.UnPackVersion < 29)
-- methodID += 2;
-- else
-- methodID += 3;
-- RINOK(CreateCoder(EXTERNAL_CODECS_VARS methodID, mi.Coder, false));
-- }
--
-- if (mi.Coder == 0)
-- {
-- outStream.Release();
-- RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kUnSupportedMethod));
-- continue;
-- }
--
-- m = methodItems.Add(mi);
-- }
-- CMyComPtr<ICompressCoder> decoder = methodItems[m].Coder;
--
-- CMyComPtr<ICompressSetDecoderProperties2> compressSetDecoderProperties;
-- RINOK(decoder.QueryInterface(IID_ICompressSetDecoderProperties2,
-- &compressSetDecoderProperties));
--
-- Byte isSolid = (Byte)((IsSolid(index) || item.IsSplitBefore()) ? 1: 0);
-- if (solidStart)
-- {
-- isSolid = false;
-- solidStart = false;
-- }
--
--
-- RINOK(compressSetDecoderProperties->SetDecoderProperties2(&isSolid, 1));
--
-- commonCoder = decoder;
-- break;
-- }
-- default:
-- outStream.Release();
-- RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kUnSupportedMethod));
-- continue;
-- }
-- HRESULT result = commonCoder->Code(inStream, outStream, &packSize, &item.Size, progress);
-- if (item.IsEncrypted())
-- filterStreamSpec->ReleaseInStream();
-- if (result == S_FALSE)
-- {
-- outStream.Release();
-- RINOK(extractCallback->SetOperationResult(NExtract::NOperationResult::kDataError));
-- continue;
-- }
-- if (result != S_OK)
-- return result;
--
-- /*
-- if (refItem.NumItems == 1 &&
-- !item.IsSplitBefore() && !item.IsSplitAfter())
-- */
-- {
-- const CItemEx &lastItem = _items[refItem.ItemIndex + refItem.NumItems - 1];
-- bool crcOK = outStreamSpec->GetCRC() == lastItem.FileCRC;
-- outStream.Release();
-- RINOK(extractCallback->SetOperationResult(crcOK ?
-- NExtract::NOperationResult::kOK:
-- NExtract::NOperationResult::kCRCError));
-- }
-- /*
-- else
-- {
-- bool crcOK = true;
-- for (int partIndex = 0; partIndex < refItem.NumItems; partIndex++)
-- {
-- const CItemEx &item = _items[refItem.ItemIndex + partIndex];
-- if (item.FileCRC != folderInStreamSpec->CRCs[partIndex])
-- {
-- crcOK = false;
-- break;
-- }
-- }
-- RINOK(extractCallback->SetOperationResult(crcOK ?
-- NExtract::NOperationResult::kOK:
-- NExtract::NOperationResult::kCRCError));
-- }
-- */
-- }
-- return S_OK;
-- COM_TRY_END
--}
--
--IMPL_ISetCompressCodecsInfo
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHandler.h p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHandler.h
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHandler.h 2011-01-08 06:41:27.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHandler.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,66 +0,0 @@
--// Rar/Handler.h
--
--#ifndef __RAR_HANDLER_H
--#define __RAR_HANDLER_H
--
--#include "../IArchive.h"
--
--#include "../../Common/CreateCoder.h"
--
--#include "RarIn.h"
--#include "RarVolumeInStream.h"
--
--namespace NArchive {
--namespace NRar {
--
--class CHandler:
-- public IInArchive,
-- PUBLIC_ISetCompressCodecsInfo
-- public CMyUnknownImp
--{
-- CRecordVector<CRefItem> _refItems;
-- CObjectVector<CItemEx> _items;
-- CObjectVector<CInArchive> _archives;
-- NArchive::NRar::CInArchiveInfo _archiveInfo;
-- AString _errorMessage;
--
-- DECL_EXTERNAL_CODECS_VARS
--
-- UInt64 GetPackSize(int refIndex) const;
--
-- bool IsSolid(int refIndex)
-- {
-- const CItemEx &item = _items[_refItems[refIndex].ItemIndex];
-- if (item.UnPackVersion < 20)
-- {
-- if (_archiveInfo.IsSolid())
-- return (refIndex > 0);
-- return false;
-- }
-- return item.IsSolid();
-- }
-- void AddErrorMessage(const AString &s)
-- {
-- if (!_errorMessage.IsEmpty())
-- _errorMessage += '\n';
-- _errorMessage += s;
-- }
--
-- HRESULT Open2(IInStream *stream,
-- const UInt64 *maxCheckStartPosition,
-- IArchiveOpenCallback *openCallback);
--
--public:
-- MY_QUERYINTERFACE_BEGIN2(IInArchive)
-- QUERY_ENTRY_ISetCompressCodecsInfo
-- MY_QUERYINTERFACE_END
-- MY_ADDREF_RELEASE
--
-- INTERFACE_IInArchive(;)
--
-- DECL_ISetCompressCodecsInfo
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHeader.cpp p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHeader.cpp
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHeader.cpp 2008-08-14 06:11:25.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHeader.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,21 +0,0 @@
--// Archive/Rar/Headers.cpp
--
--#include "StdAfx.h"
--
--#include "RarHeader.h"
--
--namespace NArchive{
--namespace NRar{
--namespace NHeader{
--
--Byte kMarker[kMarkerSize] = {0x52 + 1, 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00};
--
--class CMarkerInitializer
--{
--public:
-- CMarkerInitializer() { kMarker[0]--; };
--};
--
--static CMarkerInitializer markerInitializer;
--
--}}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHeader.h p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHeader.h
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarHeader.h 2011-01-08 06:41:27.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarHeader.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,205 +0,0 @@
--// Archive/RarHeader.h
--
--#ifndef __ARCHIVE_RAR_HEADER_H
--#define __ARCHIVE_RAR_HEADER_H
--
--#include "Common/Types.h"
--
--namespace NArchive {
--namespace NRar {
--namespace NHeader {
--
--const int kMarkerSize = 7;
--extern Byte kMarker[kMarkerSize];
--
--const int kArchiveSolid = 0x1;
--
--namespace NBlockType
--{
-- enum EBlockType
-- {
-- kMarker = 0x72,
-- kArchiveHeader,
-- kFileHeader,
-- kCommentHeader,
-- kOldAuthenticity,
-- kOldSubBlock,
-- kRecoveryRecord,
-- kAuthenticity,
-- kSubBlock,
-- kEndOfArchive
-- };
--}
--
--namespace NArchive
--{
-- const UInt16 kVolume = 1;
-- const UInt16 kComment = 2;
-- const UInt16 kLock = 4;
-- const UInt16 kSolid = 8;
-- const UInt16 kNewVolName = 0x10; // ('volname.partN.rar')
-- const UInt16 kAuthenticity = 0x20;
-- const UInt16 kRecovery = 0x40;
-- const UInt16 kBlockEncryption = 0x80;
-- const UInt16 kFirstVolume = 0x100; // (set only by RAR 3.0 and later)
-- const UInt16 kEncryptVer = 0x200; // RAR 3.6 there is EncryptVer Byte in End of MainHeader
--
-- const int kHeaderSizeMin = 7;
--
-- const int kArchiveHeaderSize = 13;
--
-- const int kBlockHeadersAreEncrypted = 0x80;
--
--}
--
--namespace NFile
--{
-- const int kSplitBefore = 1 << 0;
-- const int kSplitAfter = 1 << 1;
-- const int kEncrypted = 1 << 2;
-- const int kComment = 1 << 3;
-- const int kSolid = 1 << 4;
--
-- const int kDictBitStart = 5;
-- const int kNumDictBits = 3;
-- const int kDictMask = (1 << kNumDictBits) - 1;
-- const int kDictDirectoryValue = 0x7;
--
-- const int kSize64Bits = 1 << 8;
-- const int kUnicodeName = 1 << 9;
-- const int kSalt = 1 << 10;
-- const int kOldVersion = 1 << 11;
-- const int kExtTime = 1 << 12;
-- // const int kExtFlags = 1 << 13;
-- // const int kSkipIfUnknown = 1 << 14;
--
-- const int kLongBlock = 1 << 15;
--
-- /*
-- struct CBlock
-- {
-- // UInt16 HeadCRC;
-- // Byte Type;
-- // UInt16 Flags;
-- // UInt16 HeadSize;
-- UInt32 PackSize;
-- UInt32 UnPackSize;
-- Byte HostOS;
-- UInt32 FileCRC;
-- UInt32 Time;
-- Byte UnPackVersion;
-- Byte Method;
-- UInt16 NameSize;
-- UInt32 Attributes;
-- };
-- */
--
-- /*
-- struct CBlock32
-- {
-- UInt16 HeadCRC;
-- Byte Type;
-- UInt16 Flags;
-- UInt16 HeadSize;
-- UInt32 PackSize;
-- UInt32 UnPackSize;
-- Byte HostOS;
-- UInt32 FileCRC;
-- UInt32 Time;
-- Byte UnPackVersion;
-- Byte Method;
-- UInt16 NameSize;
-- UInt32 Attributes;
-- UInt16 GetRealCRC(const void *aName, UInt32 aNameSize,
-- bool anExtraDataDefined = false, Byte *anExtraData = 0) const;
-- };
-- struct CBlock64
-- {
-- UInt16 HeadCRC;
-- Byte Type;
-- UInt16 Flags;
-- UInt16 HeadSize;
-- UInt32 PackSizeLow;
-- UInt32 UnPackSizeLow;
-- Byte HostOS;
-- UInt32 FileCRC;
-- UInt32 Time;
-- Byte UnPackVersion;
-- Byte Method;
-- UInt16 NameSize;
-- UInt32 Attributes;
-- UInt32 PackSizeHigh;
-- UInt32 UnPackSizeHigh;
-- UInt16 GetRealCRC(const void *aName, UInt32 aNameSize) const;
-- };
-- */
--
-- const int kLabelFileAttribute = 0x08;
-- const int kWinFileDirectoryAttributeMask = 0x10;
--
-- enum CHostOS
-- {
-- kHostMSDOS = 0,
-- kHostOS2 = 1,
-- kHostWin32 = 2,
-- kHostUnix = 3,
-- kHostMacOS = 4,
-- kHostBeOS = 5
-- };
--}
--
--namespace NBlock
--{
-- const UInt16 kLongBlock = 1 << 15;
-- struct CBlock
-- {
-- UInt16 CRC;
-- Byte Type;
-- UInt16 Flags;
-- UInt16 HeadSize;
-- // UInt32 DataSize;
-- };
--}
--
--/*
--struct CSubBlock
--{
-- UInt16 HeadCRC;
-- Byte HeadType;
-- UInt16 Flags;
-- UInt16 HeadSize;
-- UInt32 DataSize;
-- UInt16 SubType;
-- Byte Level; // Reserved : Must be 0
--};
--
--struct CCommentBlock
--{
-- UInt16 HeadCRC;
-- Byte HeadType;
-- UInt16 Flags;
-- UInt16 HeadSize;
-- UInt16 UnpSize;
-- Byte UnpVer;
-- Byte Method;
-- UInt16 CommCRC;
--};
--
--
--struct CProtectHeader
--{
-- UInt16 HeadCRC;
-- Byte HeadType;
-- UInt16 Flags;
-- UInt16 HeadSize;
-- UInt32 DataSize;
-- Byte Version;
-- UInt16 RecSectors;
-- UInt32 TotalBlocks;
-- Byte Mark[8];
--};
--*/
--
--}}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarIn.cpp p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarIn.cpp
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarIn.cpp 2011-01-08 06:41:37.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarIn.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,478 +0,0 @@
--// Archive/RarIn.cpp
--
--#include "StdAfx.h"
--
--#include "../../../../C/7zCrc.h"
--#include "../../../../C/CpuArch.h"
--
--#include "Common/StringConvert.h"
--#include "Common/UTFConvert.h"
--
--#include "../../Common/LimitedStreams.h"
--#include "../../Common/StreamUtils.h"
--
--#include "../Common/FindSignature.h"
--
--#include "RarIn.h"
--
--#define Get16(p) GetUi16(p)
--#define Get32(p) GetUi32(p)
--#define Get64(p) GetUi64(p)
--
--namespace NArchive {
--namespace NRar {
--
--static const char *k_UnexpectedEnd = "Unexpected end of archive";
--static const char *k_DecryptionError = "Decryption Error";
--
--void CInArchive::ThrowExceptionWithCode(
-- CInArchiveException::CCauseType cause)
--{
-- throw CInArchiveException(cause);
--}
--
--HRESULT CInArchive::Open(IInStream *inStream, const UInt64 *searchHeaderSizeLimit)
--{
-- try
-- {
-- Close();
-- HRESULT res = Open2(inStream, searchHeaderSizeLimit);
-- if (res == S_OK)
-- return res;
-- Close();
-- return res;
-- }
-- catch(...) { Close(); throw; }
--}
--
--void CInArchive::Close()
--{
-- m_Stream.Release();
--}
--
--HRESULT CInArchive::ReadBytesSpec(void *data, size_t *resSize)
--{
-- if (m_CryptoMode)
-- {
-- size_t size = *resSize;
-- *resSize = 0;
-- const Byte *bufData = m_DecryptedDataAligned;
-- UInt32 bufSize = m_DecryptedDataSize;
-- size_t i;
-- for (i = 0; i < size && m_CryptoPos < bufSize; i++)
-- ((Byte *)data)[i] = bufData[m_CryptoPos++];
-- *resSize = i;
-- return S_OK;
-- }
-- return ReadStream(m_Stream, data, resSize);
--}
--
--bool CInArchive::ReadBytesAndTestSize(void *data, UInt32 size)
--{
-- size_t processed = size;
-- if (ReadBytesSpec(data, &processed) != S_OK)
-- return false;
-- return processed == size;
--}
--
--HRESULT CInArchive::Open2(IInStream *stream, const UInt64 *searchHeaderSizeLimit)
--{
-- m_CryptoMode = false;
-- RINOK(stream->Seek(0, STREAM_SEEK_SET, &m_StreamStartPosition));
-- m_Position = m_StreamStartPosition;
--
-- UInt64 arcStartPos;
-- RINOK(FindSignatureInStream(stream, NHeader::kMarker, NHeader::kMarkerSize,
-- searchHeaderSizeLimit, arcStartPos));
-- m_Position = arcStartPos + NHeader::kMarkerSize;
-- RINOK(stream->Seek(m_Position, STREAM_SEEK_SET, NULL));
-- Byte buf[NHeader::NArchive::kArchiveHeaderSize + 1];
--
-- RINOK(ReadStream_FALSE(stream, buf, NHeader::NArchive::kArchiveHeaderSize));
-- AddToSeekValue(NHeader::NArchive::kArchiveHeaderSize);
--
--
-- UInt32 blockSize = Get16(buf + 5);
--
-- _header.EncryptVersion = 0;
-- _header.Flags = Get16(buf + 3);
--
-- UInt32 headerSize = NHeader::NArchive::kArchiveHeaderSize;
-- if (_header.IsThereEncryptVer())
-- {
-- if (blockSize <= headerSize)
-- return S_FALSE;
-- RINOK(ReadStream_FALSE(stream, buf + NHeader::NArchive::kArchiveHeaderSize, 1));
-- AddToSeekValue(1);
-- _header.EncryptVersion = buf[NHeader::NArchive::kArchiveHeaderSize];
-- headerSize += 1;
-- }
-- if (blockSize < headerSize ||
-- buf[2] != NHeader::NBlockType::kArchiveHeader ||
-- (UInt32)Get16(buf) != (CrcCalc(buf + 2, headerSize - 2) & 0xFFFF))
-- return S_FALSE;
--
-- size_t commentSize = blockSize - headerSize;
-- _comment.SetCapacity(commentSize);
-- RINOK(ReadStream_FALSE(stream, _comment, commentSize));
-- AddToSeekValue(commentSize);
-- m_Stream = stream;
-- _header.StartPosition = arcStartPos;
-- return S_OK;
--}
--
--void CInArchive::GetArchiveInfo(CInArchiveInfo &archiveInfo) const
--{
-- archiveInfo = _header;
--}
--
--static void DecodeUnicodeFileName(const char *name, const Byte *encName,
-- int encSize, wchar_t *unicodeName, int maxDecSize)
--{
-- int encPos = 0;
-- int decPos = 0;
-- int flagBits = 0;
-- Byte flags = 0;
-- Byte highByte = encName[encPos++];
-- while (encPos < encSize && decPos < maxDecSize)
-- {
-- if (flagBits == 0)
-- {
-- flags = encName[encPos++];
-- flagBits = 8;
-- }
-- switch(flags >> 6)
-- {
-- case 0:
-- unicodeName[decPos++] = encName[encPos++];
-- break;
-- case 1:
-- unicodeName[decPos++] = (wchar_t)(encName[encPos++] + (highByte << 8));
-- break;
-- case 2:
-- unicodeName[decPos++] = (wchar_t)(encName[encPos] + (encName[encPos + 1] << 8));
-- encPos += 2;
-- break;
-- case 3:
-- {
-- int length = encName[encPos++];
-- if (length & 0x80)
-- {
-- Byte correction = encName[encPos++];
-- for (length = (length & 0x7f) + 2;
-- length > 0 && decPos < maxDecSize; length--, decPos++)
-- unicodeName[decPos] = (wchar_t)(((name[decPos] + correction) & 0xff) + (highByte << 8));
-- }
-- else
-- for (length += 2; length > 0 && decPos < maxDecSize; length--, decPos++)
-- unicodeName[decPos] = name[decPos];
-- }
-- break;
-- }
-- flags <<= 2;
-- flagBits -= 2;
-- }
-- unicodeName[decPos < maxDecSize ? decPos : maxDecSize - 1] = 0;
--}
--
--void CInArchive::ReadName(CItemEx &item, int nameSize)
--{
-- item.UnicodeName.Empty();
-- if (nameSize > 0)
-- {
-- m_NameBuffer.EnsureCapacity(nameSize + 1);
-- char *buffer = (char *)m_NameBuffer;
--
-- for (int i = 0; i < nameSize; i++)
-- buffer[i] = ReadByte();
--
-- int mainLen;
-- for (mainLen = 0; mainLen < nameSize; mainLen++)
-- if (buffer[mainLen] == '\0')
-- break;
-- buffer[mainLen] = '\0';
-- item.Name = buffer;
--
-- if(item.HasUnicodeName())
-- {
-- if(mainLen < nameSize)
-- {
-- int unicodeNameSizeMax = MyMin(nameSize, (0x400));
-- _unicodeNameBuffer.EnsureCapacity(unicodeNameSizeMax + 1);
-- DecodeUnicodeFileName(buffer, (const Byte *)buffer + mainLen + 1,
-- nameSize - (mainLen + 1), _unicodeNameBuffer, unicodeNameSizeMax);
-- item.UnicodeName = _unicodeNameBuffer;
-- }
-- else if (!ConvertUTF8ToUnicode(item.Name, item.UnicodeName))
-- item.UnicodeName.Empty();
-- }
-- }
-- else
-- item.Name.Empty();
--}
--
--Byte CInArchive::ReadByte()
--{
-- if (m_CurPos >= m_PosLimit)
-- throw CInArchiveException(CInArchiveException::kIncorrectArchive);
-- return m_CurData[m_CurPos++];
--}
--
--UInt16 CInArchive::ReadUInt16()
--{
-- UInt16 value = 0;
-- for (int i = 0; i < 2; i++)
-- {
-- Byte b = ReadByte();
-- value |= (UInt16(b) << (8 * i));
-- }
-- return value;
--}
--
--UInt32 CInArchive::ReadUInt32()
--{
-- UInt32 value = 0;
-- for (int i = 0; i < 4; i++)
-- {
-- Byte b = ReadByte();
-- value |= (UInt32(b) << (8 * i));
-- }
-- return value;
--}
--
--void CInArchive::ReadTime(Byte mask, CRarTime &rarTime)
--{
-- rarTime.LowSecond = (Byte)(((mask & 4) != 0) ? 1 : 0);
-- int numDigits = (mask & 3);
-- rarTime.SubTime[0] = rarTime.SubTime[1] = rarTime.SubTime[2] = 0;
-- for (int i = 0; i < numDigits; i++)
-- rarTime.SubTime[3 - numDigits + i] = ReadByte();
--}
--
--void CInArchive::ReadHeaderReal(CItemEx &item)
--{
-- item.Flags = m_BlockHeader.Flags;
-- item.PackSize = ReadUInt32();
-- item.Size = ReadUInt32();
-- item.HostOS = ReadByte();
-- item.FileCRC = ReadUInt32();
-- item.MTime.DosTime = ReadUInt32();
-- item.UnPackVersion = ReadByte();
-- item.Method = ReadByte();
-- int nameSize = ReadUInt16();
-- item.Attrib = ReadUInt32();
--
-- item.MTime.LowSecond = 0;
-- item.MTime.SubTime[0] =
-- item.MTime.SubTime[1] =
-- item.MTime.SubTime[2] = 0;
--
-- if((item.Flags & NHeader::NFile::kSize64Bits) != 0)
-- {
-- item.PackSize |= ((UInt64)ReadUInt32() << 32);
-- item.Size |= ((UInt64)ReadUInt32() << 32);
-- }
--
-- ReadName(item, nameSize);
--
-- if (item.HasSalt())
-- for (int i = 0; i < sizeof(item.Salt); i++)
-- item.Salt[i] = ReadByte();
--
-- // some rar archives have HasExtTime flag without field.
-- if (m_CurPos < m_PosLimit && item.HasExtTime())
-- {
-- Byte accessMask = (Byte)(ReadByte() >> 4);
-- Byte b = ReadByte();
-- Byte modifMask = (Byte)(b >> 4);
-- Byte createMask = (Byte)(b & 0xF);
-- if ((modifMask & 8) != 0)
-- ReadTime(modifMask, item.MTime);
-- item.CTimeDefined = ((createMask & 8) != 0);
-- if (item.CTimeDefined)
-- {
-- item.CTime.DosTime = ReadUInt32();
-- ReadTime(createMask, item.CTime);
-- }
-- item.ATimeDefined = ((accessMask & 8) != 0);
-- if (item.ATimeDefined)
-- {
-- item.ATime.DosTime = ReadUInt32();
-- ReadTime(accessMask, item.ATime);
-- }
-- }
--
-- UInt16 fileHeaderWithNameSize = (UInt16)m_CurPos;
--
-- item.Position = m_Position;
-- item.MainPartSize = fileHeaderWithNameSize;
-- item.CommentSize = (UInt16)(m_BlockHeader.HeadSize - fileHeaderWithNameSize);
--
-- if (m_CryptoMode)
-- item.AlignSize = (UInt16)((16 - ((m_BlockHeader.HeadSize) & 0xF)) & 0xF);
-- else
-- item.AlignSize = 0;
-- AddToSeekValue(m_BlockHeader.HeadSize);
--}
--
--void CInArchive::AddToSeekValue(UInt64 addValue)
--{
-- m_Position += addValue;
--}
--
--HRESULT CInArchive::GetNextItem(CItemEx &item, ICryptoGetTextPassword *getTextPassword, bool &decryptionError, AString &errorMessage)
--{
-- decryptionError = false;
-- for (;;)
-- {
-- SeekInArchive(m_Position);
-- if (!m_CryptoMode && (_header.Flags &
-- NHeader::NArchive::kBlockHeadersAreEncrypted) != 0)
-- {
-- m_CryptoMode = false;
-- if (getTextPassword == 0)
-- return S_FALSE;
-- if (!m_RarAES)
-- {
-- m_RarAESSpec = new NCrypto::NRar29::CDecoder;
-- m_RarAES = m_RarAESSpec;
-- }
-- m_RarAESSpec->SetRar350Mode(_header.IsEncryptOld());
--
-- // Salt
-- const UInt32 kSaltSize = 8;
-- Byte salt[kSaltSize];
-- if(!ReadBytesAndTestSize(salt, kSaltSize))
-- return S_FALSE;
-- m_Position += kSaltSize;
-- RINOK(m_RarAESSpec->SetDecoderProperties2(salt, kSaltSize))
-- // Password
-- CMyComBSTR password;
-- RINOK(getTextPassword->CryptoGetTextPassword(&password))
-- UString unicodePassword(password);
--
-- CByteBuffer buffer;
-- const UInt32 sizeInBytes = unicodePassword.Length() * 2;
-- buffer.SetCapacity(sizeInBytes);
-- for (int i = 0; i < unicodePassword.Length(); i++)
-- {
-- wchar_t c = unicodePassword[i];
-- ((Byte *)buffer)[i * 2] = (Byte)c;
-- ((Byte *)buffer)[i * 2 + 1] = (Byte)(c >> 8);
-- }
--
-- RINOK(m_RarAESSpec->CryptoSetPassword((const Byte *)buffer, sizeInBytes));
--
-- const UInt32 kDecryptedBufferSize = (1 << 12);
-- if (m_DecryptedData.GetCapacity() == 0)
-- {
-- const UInt32 kAlign = 16;
-- m_DecryptedData.SetCapacity(kDecryptedBufferSize + kAlign);
-- m_DecryptedDataAligned = (Byte *)((ptrdiff_t)((Byte *)m_DecryptedData + kAlign - 1) & ~(ptrdiff_t)(kAlign - 1));
-- }
-- RINOK(m_RarAES->Init());
-- size_t decryptedDataSizeT = kDecryptedBufferSize;
-- RINOK(ReadStream(m_Stream, m_DecryptedDataAligned, &decryptedDataSizeT));
-- m_DecryptedDataSize = (UInt32)decryptedDataSizeT;
-- m_DecryptedDataSize = m_RarAES->Filter(m_DecryptedDataAligned, m_DecryptedDataSize);
--
-- m_CryptoMode = true;
-- m_CryptoPos = 0;
-- }
--
-- m_FileHeaderData.EnsureCapacity(7);
-- size_t processed = 7;
-- RINOK(ReadBytesSpec((Byte *)m_FileHeaderData, &processed));
-- if (processed != 7)
-- {
-- if (processed != 0)
-- errorMessage = k_UnexpectedEnd;
-- return S_FALSE;
-- }
--
-- m_CurData = (Byte *)m_FileHeaderData;
-- m_CurPos = 0;
-- m_PosLimit = 7;
-- m_BlockHeader.CRC = ReadUInt16();
-- m_BlockHeader.Type = ReadByte();
-- m_BlockHeader.Flags = ReadUInt16();
-- m_BlockHeader.HeadSize = ReadUInt16();
--
-- if (m_BlockHeader.HeadSize < 7)
-- ThrowExceptionWithCode(CInArchiveException::kIncorrectArchive);
--
-- if (m_BlockHeader.Type == NHeader::NBlockType::kEndOfArchive)
-- return S_FALSE;
--
-- if (m_BlockHeader.Type == NHeader::NBlockType::kFileHeader)
-- {
-- m_FileHeaderData.EnsureCapacity(m_BlockHeader.HeadSize);
-- m_CurData = (Byte *)m_FileHeaderData;
-- m_PosLimit = m_BlockHeader.HeadSize;
-- if (!ReadBytesAndTestSize(m_CurData + m_CurPos, m_BlockHeader.HeadSize - 7))
-- {
-- errorMessage = k_UnexpectedEnd;
-- return S_FALSE;
-- }
--
-- ReadHeaderReal(item);
-- if ((CrcCalc(m_CurData + 2,
-- m_BlockHeader.HeadSize - item.CommentSize - 2) & 0xFFFF) != m_BlockHeader.CRC)
-- ThrowExceptionWithCode(CInArchiveException::kFileHeaderCRCError);
--
-- FinishCryptoBlock();
-- m_CryptoMode = false;
-- SeekInArchive(m_Position); // Move Position to compressed Data;
-- AddToSeekValue(item.PackSize); // m_Position points to next header;
-- return S_OK;
-- }
-- if (m_CryptoMode && m_BlockHeader.HeadSize > (1 << 10))
-- {
-- decryptionError = true;
-- errorMessage = k_DecryptionError;
-- return S_FALSE;
-- }
-- if ((m_BlockHeader.Flags & NHeader::NBlock::kLongBlock) != 0)
-- {
-- m_FileHeaderData.EnsureCapacity(7 + 4);
-- m_CurData = (Byte *)m_FileHeaderData;
-- if (!ReadBytesAndTestSize(m_CurData + m_CurPos, 4))
-- {
-- errorMessage = k_UnexpectedEnd;
-- return S_FALSE;
-- }
-- m_PosLimit = 7 + 4;
-- UInt32 dataSize = ReadUInt32();
-- AddToSeekValue(dataSize);
-- if (m_CryptoMode && dataSize > (1 << 27))
-- {
-- decryptionError = true;
-- errorMessage = k_DecryptionError;
-- return S_FALSE;
-- }
-- m_CryptoPos = m_BlockHeader.HeadSize;
-- }
-- else
-- m_CryptoPos = 0;
-- AddToSeekValue(m_BlockHeader.HeadSize);
-- FinishCryptoBlock();
-- m_CryptoMode = false;
-- }
--}
--
--void CInArchive::SeekInArchive(UInt64 position)
--{
-- m_Stream->Seek(position, STREAM_SEEK_SET, NULL);
--}
--
--ISequentialInStream* CInArchive::CreateLimitedStream(UInt64 position, UInt64 size)
--{
-- CLimitedSequentialInStream *streamSpec = new CLimitedSequentialInStream;
-- CMyComPtr<ISequentialInStream> inStream(streamSpec);
-- SeekInArchive(position);
-- streamSpec->SetStream(m_Stream);
-- streamSpec->Init(size);
-- return inStream.Detach();
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarIn.h p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarIn.h
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarIn.h 2011-01-08 06:41:27.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarIn.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,123 +0,0 @@
--// RarIn.h
--
--#ifndef __ARCHIVE_RAR_IN_H
--#define __ARCHIVE_RAR_IN_H
--
--#include "Common/DynamicBuffer.h"
--#include "Common/MyCom.h"
--
--#include "../../ICoder.h"
--#include "../../IStream.h"
--
--#include "../../Common/StreamObjects.h"
--
--#include "../../Crypto/RarAes.h"
--
--#include "RarHeader.h"
--#include "RarItem.h"
--
--namespace NArchive {
--namespace NRar {
--
--class CInArchiveException
--{
--public:
-- enum CCauseType
-- {
-- kUnexpectedEndOfArchive = 0,
-- kArchiveHeaderCRCError,
-- kFileHeaderCRCError,
-- kIncorrectArchive
-- }
-- Cause;
-- CInArchiveException(CCauseType cause) : Cause(cause) {}
--};
--
--
--struct CInArchiveInfo
--{
-- UInt32 Flags;
-- Byte EncryptVersion;
-- UInt64 StartPosition;
--
-- bool IsSolid() const { return (Flags & NHeader::NArchive::kSolid) != 0; }
-- bool IsCommented() const { return (Flags & NHeader::NArchive::kComment) != 0; }
-- bool IsVolume() const { return (Flags & NHeader::NArchive::kVolume) != 0; }
-- bool HaveNewVolumeName() const { return (Flags & NHeader::NArchive::kNewVolName) != 0; }
-- bool IsEncrypted() const { return (Flags & NHeader::NArchive::kBlockEncryption) != 0; }
-- bool IsThereEncryptVer() const { return (Flags & NHeader::NArchive::kEncryptVer) != 0; }
-- bool IsEncryptOld() const { return (!IsThereEncryptVer() || EncryptVersion < 36); }
--};
--
--class CInArchive
--{
-- CMyComPtr<IInStream> m_Stream;
--
-- UInt64 m_StreamStartPosition;
--
-- CInArchiveInfo _header;
-- CDynamicBuffer<char> m_NameBuffer;
-- CDynamicBuffer<wchar_t> _unicodeNameBuffer;
--
-- CByteBuffer _comment;
--
-- void ReadName(CItemEx &item, int nameSize);
-- void ReadHeaderReal(CItemEx &item);
--
-- HRESULT ReadBytesSpec(void *data, size_t *size);
-- bool ReadBytesAndTestSize(void *data, UInt32 size);
--
-- HRESULT Open2(IInStream *stream, const UInt64 *searchHeaderSizeLimit);
--
-- void ThrowExceptionWithCode(CInArchiveException::CCauseType cause);
-- void ThrowUnexpectedEndOfArchiveException();
--
-- void AddToSeekValue(UInt64 addValue);
--
-- CDynamicBuffer<Byte> m_FileHeaderData;
--
-- NHeader::NBlock::CBlock m_BlockHeader;
--
-- NCrypto::NRar29::CDecoder *m_RarAESSpec;
-- CMyComPtr<ICompressFilter> m_RarAES;
--
-- Byte *m_CurData; // it must point to start of Rar::Block
-- UInt32 m_CurPos;
-- UInt32 m_PosLimit;
-- Byte ReadByte();
-- UInt16 ReadUInt16();
-- UInt32 ReadUInt32();
-- void ReadTime(Byte mask, CRarTime &rarTime);
--
-- CBuffer<Byte> m_DecryptedData;
-- Byte *m_DecryptedDataAligned;
-- UInt32 m_DecryptedDataSize;
--
-- bool m_CryptoMode;
-- UInt32 m_CryptoPos;
-- void FinishCryptoBlock()
-- {
-- if (m_CryptoMode)
-- while ((m_CryptoPos & 0xF) != 0)
-- {
-- m_CryptoPos++;
-- m_Position++;
-- }
-- }
--
--public:
-- UInt64 m_Position;
--
-- HRESULT Open(IInStream *inStream, const UInt64 *searchHeaderSizeLimit);
-- void Close();
-- HRESULT GetNextItem(CItemEx &item, ICryptoGetTextPassword *getTextPassword, bool &decryptionError, AString &errorMessage);
--
-- void GetArchiveInfo(CInArchiveInfo &archiveInfo) const;
--
-- void SeekInArchive(UInt64 position);
-- ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size);
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarItem.cpp p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarItem.cpp
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarItem.cpp 2008-08-14 06:11:25.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarItem.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,55 +0,0 @@
--// RarItem.cpp
--
--#include "StdAfx.h"
--
--#include "RarItem.h"
--
--namespace NArchive{
--namespace NRar{
--
--bool CItem::IgnoreItem() const
--{
-- switch(HostOS)
-- {
-- case NHeader::NFile::kHostMSDOS:
-- case NHeader::NFile::kHostOS2:
-- case NHeader::NFile::kHostWin32:
-- return ((Attrib & NHeader::NFile::kLabelFileAttribute) != 0);
-- }
-- return false;
--}
--
--bool CItem::IsDir() const
--{
-- if (GetDictSize() == NHeader::NFile::kDictDirectoryValue)
-- return true;
-- switch(HostOS)
-- {
-- case NHeader::NFile::kHostMSDOS:
-- case NHeader::NFile::kHostOS2:
-- case NHeader::NFile::kHostWin32:
-- if ((Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0)
-- return true;
-- }
-- return false;
--}
--
--UInt32 CItem::GetWinAttributes() const
--{
-- UInt32 winAttributes;
-- switch(HostOS)
-- {
-- case NHeader::NFile::kHostMSDOS:
-- case NHeader::NFile::kHostOS2:
-- case NHeader::NFile::kHostWin32:
-- winAttributes = Attrib;
-- break;
-- default:
-- winAttributes = 0; // must be converted from unix value;
-- }
-- if (IsDir())
-- winAttributes |= NHeader::NFile::kWinFileDirectoryAttributeMask;
-- return winAttributes;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarItem.h p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarItem.h
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarItem.h 2008-08-14 06:11:12.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarItem.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,79 +0,0 @@
--// RarItem.h
--
--#ifndef __ARCHIVE_RAR_ITEM_H
--#define __ARCHIVE_RAR_ITEM_H
--
--#include "Common/Types.h"
--#include "Common/MyString.h"
--
--#include "RarHeader.h"
--
--namespace NArchive{
--namespace NRar{
--
--struct CRarTime
--{
-- UInt32 DosTime;
-- Byte LowSecond;
-- Byte SubTime[3];
--};
--
--struct CItem
--{
-- UInt64 Size;
-- UInt64 PackSize;
--
-- CRarTime CTime;
-- CRarTime ATime;
-- CRarTime MTime;
--
-- UInt32 FileCRC;
-- UInt32 Attrib;
--
-- UInt16 Flags;
-- Byte HostOS;
-- Byte UnPackVersion;
-- Byte Method;
--
-- bool CTimeDefined;
-- bool ATimeDefined;
--
-- AString Name;
-- UString UnicodeName;
--
-- Byte Salt[8];
--
-- bool IsEncrypted() const { return (Flags & NHeader::NFile::kEncrypted) != 0; }
-- bool IsSolid() const { return (Flags & NHeader::NFile::kSolid) != 0; }
-- bool IsCommented() const { return (Flags & NHeader::NFile::kComment) != 0; }
-- bool IsSplitBefore() const { return (Flags & NHeader::NFile::kSplitBefore) != 0; }
-- bool IsSplitAfter() const { return (Flags & NHeader::NFile::kSplitAfter) != 0; }
-- bool HasSalt() const { return (Flags & NHeader::NFile::kSalt) != 0; }
-- bool HasExtTime() const { return (Flags & NHeader::NFile::kExtTime) != 0; }
-- bool HasUnicodeName()const { return (Flags & NHeader::NFile::kUnicodeName) != 0; }
-- bool IsOldVersion() const { return (Flags & NHeader::NFile::kOldVersion) != 0; }
--
-- UInt32 GetDictSize() const { return (Flags >> NHeader::NFile::kDictBitStart) & NHeader::NFile::kDictMask; }
-- bool IsDir() const;
-- bool IgnoreItem() const;
-- UInt32 GetWinAttributes() const;
--
-- CItem(): CTimeDefined(false), ATimeDefined(false) {}
--};
--
--class CItemEx: public CItem
--{
--public:
-- UInt64 Position;
-- UInt16 MainPartSize;
-- UInt16 CommentSize;
-- UInt16 AlignSize;
-- UInt64 GetFullSize() const { return MainPartSize + CommentSize + AlignSize + PackSize; };
-- // DWORD GetHeaderWithCommentSize() const { return MainPartSize + CommentSize; };
-- UInt64 GetCommentPosition() const { return Position + MainPartSize; };
-- UInt64 GetDataPosition() const { return GetCommentPosition() + CommentSize + AlignSize; };
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarRegister.cpp p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarRegister.cpp
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarRegister.cpp 2009-12-21 08:46:32.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarRegister.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,13 +0,0 @@
--// RarRegister.cpp
--
--#include "StdAfx.h"
--
--#include "../../Common/RegisterArc.h"
--
--#include "RarHandler.h"
--static IInArchive *CreateArc() { return new NArchive::NRar::CHandler; }
--
--static CArcInfo g_ArcInfo =
-- { L"Rar", L"rar r00", 0, 3, {0x52 , 0x61, 0x72, 0x21, 0x1a, 0x07, 0x00}, 7, false, CreateArc, 0, };
--
--REGISTER_ARC(Rar)
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp 2009-05-30 17:19:19.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,78 +0,0 @@
--// RarVolumeInStream.cpp
--
--#include "StdAfx.h"
--
--#include "../../../../C/7zCrc.h"
--
--#include "RarVolumeInStream.h"
--
--namespace NArchive {
--namespace NRar {
--
--void CFolderInStream::Init(
-- CObjectVector<CInArchive> *archives,
-- const CObjectVector<CItemEx> *items,
-- const CRefItem &refItem)
--{
-- _archives = archives;
-- _items = items;
-- _refItem = refItem;
-- _curIndex = 0;
-- CRCs.Clear();
-- _fileIsOpen = false;
--}
--
--HRESULT CFolderInStream::OpenStream()
--{
-- while (_curIndex < _refItem.NumItems)
-- {
-- const CItemEx &item = (*_items)[_refItem.ItemIndex + _curIndex];
-- _stream.Attach((*_archives)[_refItem.VolumeIndex + _curIndex].
-- CreateLimitedStream(item.GetDataPosition(), item.PackSize));
-- _curIndex++;
-- _fileIsOpen = true;
-- _crc = CRC_INIT_VAL;
-- return S_OK;
-- }
-- return S_OK;
--}
--
--HRESULT CFolderInStream::CloseStream()
--{
-- CRCs.Add(CRC_GET_DIGEST(_crc));
-- _stream.Release();
-- _fileIsOpen = false;
-- return S_OK;
--}
--
--STDMETHODIMP CFolderInStream::Read(void *data, UInt32 size, UInt32 *processedSize)
--{
-- UInt32 realProcessedSize = 0;
-- while ((_curIndex < _refItem.NumItems || _fileIsOpen) && size > 0)
-- {
-- if (_fileIsOpen)
-- {
-- UInt32 localProcessedSize;
-- RINOK(_stream->Read(
-- ((Byte *)data) + realProcessedSize, size, &localProcessedSize));
-- _crc = CrcUpdate(_crc, ((Byte *)data) + realProcessedSize, localProcessedSize);
-- if (localProcessedSize == 0)
-- {
-- RINOK(CloseStream());
-- continue;
-- }
-- realProcessedSize += localProcessedSize;
-- size -= localProcessedSize;
-- break;
-- }
-- else
-- {
-- RINOK(OpenStream());
-- }
-- }
-- if (processedSize != 0)
-- *processedSize = realProcessedSize;
-- return S_OK;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.h p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.h
---- p7zip_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.h 2008-08-14 06:11:12.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Archive/Rar/RarVolumeInStream.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,49 +0,0 @@
--// RarVolumeInStream.h
--
--#ifndef __RAR_VOLUME_IN_STREAM_H
--#define __RAR_VOLUME_IN_STREAM_H
--
--#include "../../IStream.h"
--#include "RarIn.h"
--
--namespace NArchive {
--namespace NRar {
--
--struct CRefItem
--{
-- int VolumeIndex;
-- int ItemIndex;
-- int NumItems;
--};
--
--class CFolderInStream:
-- public ISequentialInStream,
-- public CMyUnknownImp
--{
--public:
-- MY_UNKNOWN_IMP
--
-- STDMETHOD(Read)(void *data, UInt32 size, UInt32 *processedSize);
--
--private:
-- CObjectVector<CInArchive> *_archives;
-- const CObjectVector<CItemEx> *_items;
-- CRefItem _refItem;
-- int _curIndex;
-- UInt32 _crc;
-- bool _fileIsOpen;
-- CMyComPtr<ISequentialInStream> _stream;
--
-- HRESULT OpenStream();
-- HRESULT CloseStream();
--public:
-- void Init(CObjectVector<CInArchive> *archives,
-- const CObjectVector<CItemEx> *items,
-- const CRefItem &refItem);
--
-- CRecordVector<UInt32> CRCs;
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Bundles/Format7zFree/makefile p7zip-libre_9.20.1/CPP/7zip/Bundles/Format7zFree/makefile
---- p7zip_9.20.1/CPP/7zip/Bundles/Format7zFree/makefile 2010-11-07 12:41:43.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Bundles/Format7zFree/makefile 2011-09-07 15:42:04.000000000 -0300
-@@ -158,14 +158,6 @@
- NsisIn.o \
- NsisRegister.o \
-
--RAR_OBJS = \
-- RarHandler.o \
-- RarHeader.o \
-- RarIn.o \
-- RarItem.o \
-- RarVolumeInStream.o \
-- RarRegister.o \
--
- TAR_OBJS = \
- TarHandler.o \
- TarHandlerOut.o \
-@@ -243,13 +235,6 @@
- ZlibEncoder.o \
- ZDecoder.o \
-
--COMPRESS_OBJS_NON_FREE = \
-- Rar1Decoder.o \
-- Rar2Decoder.o \
-- Rar3Decoder.o \
-- Rar3Vm.o \
-- RarCodecsRegister.o \
--
- CRYPTO_OBJS = \
- 7zAes.o \
- 7zAesRegister.o \
-@@ -257,8 +242,6 @@
- MyAes.o \
- Pbkdf2HmacSha1.o \
- RandGen.o \
-- Rar20Crypto.o \
-- RarAes.o \
- Sha1.o \
- WzAes.o \
- ZipCrypto.o \
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar/makefile p7zip-libre_9.20.1/CPP/7zip/Compress/Rar/makefile
---- p7zip_9.20.1/CPP/7zip/Compress/Rar/makefile 2010-03-16 17:21:18.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar/makefile 1969-12-31 21:00:00.000000000 -0300
-@@ -1,34 +0,0 @@
--PROG=../../../../bin/Codecs/Rar29.so
--
--LOCAL_FLAGS=$(CC_SHARED) -DUNICODE -D_UNICODE
--
--MY_WINDOWS=
--
--include ../../../../makefile.crc32
--include ../../../../makefile.machine
--
--LOCAL_SHARED=$(LINK_SHARED)
--LIBS=$(LOCAL_LIBS)
--
--OBJS = \
--MyWindows.o \
--CRC.o\
--MyVector.o\
--CodecExports.o \
--DllExports.o \
--Rar1Decoder.o \
--Rar2Decoder.o \
--Rar3Decoder.o \
--Rar3Vm.o \
--RarCodecsRegister.o \
--$(OBJ_CRC32) \
--InBuffer.o \
--OutBuffer.o \
--StreamUtils.o \
--LzOutWindow.o \
--Ppmd7.o \
--Ppmd7Dec.o \
--Alloc.o
--
--include ../../../../makefile.glb
--
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar/makefile.depend p7zip-libre_9.20.1/CPP/7zip/Compress/Rar/makefile.depend
---- p7zip_9.20.1/CPP/7zip/Compress/Rar/makefile.depend 2011-02-19 06:33:10.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar/makefile.depend 1969-12-31 21:00:00.000000000 -0300
-@@ -1,158 +0,0 @@
--CRC.o: ../../../Common/CRC.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../Common/../../C/7zCrc.h \
-- ../../../Common/../../C/Types.h
--MyWindows.o: ../../../Common/MyWindows.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../Common/MyWindows.h
--MyVector.o: ../../../Common/MyVector.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../Common/MyVector.h \
-- ../../../Common/Defs.h
--InBuffer.o: ../../Common/InBuffer.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../Common/../../../C/Alloc.h \
-- ../../Common/InBuffer.h ../../Common/../IStream.h \
-- ../../Common/../../Common/MyUnknown.h \
-- ../../Common/../../Common/MyWindows.h ../../Common/../../Common/Types.h \
-- ../../Common/../IDecl.h ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyException.h
--StreamUtils.o: ../../Common/StreamUtils.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../Common/StreamUtils.h \
-- ../../Common/../IStream.h ../../Common/../../Common/MyUnknown.h \
-- ../../Common/../../Common/MyWindows.h ../../Common/../../Common/Types.h \
-- ../../Common/../IDecl.h
--OutBuffer.o: ../../Common/OutBuffer.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../Common/../../../C/Alloc.h \
-- ../../Common/OutBuffer.h ../../Common/../IStream.h \
-- ../../Common/../../Common/MyUnknown.h \
-- ../../Common/../../Common/MyWindows.h ../../Common/../../Common/Types.h \
-- ../../Common/../IDecl.h ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyException.h
--LzOutWindow.o: ../LzOutWindow.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../LzOutWindow.h ../../IStream.h \
-- ../../../Common/MyUnknown.h ../../../Common/MyWindows.h \
-- ../../../Common/Types.h ../../IDecl.h ../../Common/OutBuffer.h \
-- ../../Common/../IStream.h ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyWindows.h \
-- ../../Common/../../Common/MyException.h
--CodecExports.o: ../CodecExports.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../Common/ComTry.h \
-- ../../../Common/MyWindows.h ../../../Windows/PropVariant.h \
-- ../../../Windows/../Common/MyWindows.h \
-- ../../../Windows/../Common/Types.h ../../ICoder.h ../../IStream.h \
-- ../../../Common/MyUnknown.h ../../../Common/Types.h ../../IDecl.h \
-- ../../Common/RegisterCodec.h ../../Common/../Common/MethodId.h \
-- ../../Common/../Common/../../Common/Types.h
--DllExports.o: ../DllExports.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../Common/MyInitGuid.h \
-- ../../ICoder.h ../../IStream.h ../../../Common/MyUnknown.h \
-- ../../../Common/MyWindows.h ../../../Common/Types.h ../../IDecl.h \
-- ../../Common/RegisterCodec.h ../../Common/../Common/MethodId.h \
-- ../../Common/../Common/../../Common/Types.h
--Rar1Decoder.o: ../Rar1Decoder.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../Rar1Decoder.h \
-- ../../../Common/MyCom.h ../../../Common/MyWindows.h ../../ICoder.h \
-- ../../IStream.h ../../../Common/MyUnknown.h ../../../Common/Types.h \
-- ../../IDecl.h ../../Common/InBuffer.h ../../Common/../IStream.h \
-- ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyException.h \
-- ../../Common/../../Common/MyWindows.h ../BitmDecoder.h ../../IStream.h \
-- ../HuffmanDecoder.h ../../../Common/Types.h ../LzOutWindow.h \
-- ../../Common/OutBuffer.h
--Rar2Decoder.o: ../Rar2Decoder.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../Rar2Decoder.h \
-- ../../../Common/MyCom.h ../../../Common/MyWindows.h ../../ICoder.h \
-- ../../IStream.h ../../../Common/MyUnknown.h ../../../Common/Types.h \
-- ../../IDecl.h ../../Common/InBuffer.h ../../Common/../IStream.h \
-- ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyException.h \
-- ../../Common/../../Common/MyWindows.h ../BitmDecoder.h ../../IStream.h \
-- ../HuffmanDecoder.h ../../../Common/Types.h ../LzOutWindow.h \
-- ../../Common/OutBuffer.h
--Rar3Decoder.o: ../Rar3Decoder.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../../C/Alloc.h \
-- ../../Common/StreamUtils.h ../../Common/../IStream.h \
-- ../../Common/../../Common/MyUnknown.h \
-- ../../Common/../../Common/MyWindows.h ../../Common/../../Common/Types.h \
-- ../../Common/../IDecl.h ../Rar3Decoder.h ../../../../C/Ppmd7.h \
-- ../../../../C/Ppmd.h ../../../../C/Types.h ../../../../C/CpuArch.h \
-- ../../../Common/MyCom.h ../../../Common/MyWindows.h ../../ICoder.h \
-- ../../IStream.h ../../Common/InBuffer.h \
-- ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyException.h ../BitmDecoder.h ../../IStream.h \
-- ../HuffmanDecoder.h ../../../Common/Types.h ../Rar3Vm.h \
-- ../../../../C/CpuArch.h ../../../Common/MyVector.h \
-- ../../../Common/Defs.h
--Rar3Vm.o: ../Rar3Vm.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../../../C/7zCrc.h \
-- ../../../../C/Types.h ../../../../C/Alloc.h ../Rar3Vm.h \
-- ../../../../C/CpuArch.h ../../../Common/MyVector.h \
-- ../../../Common/Defs.h
--RarCodecsRegister.o: ../RarCodecsRegister.cpp ../../../myWindows/StdAfx.h \
-- ../../../myWindows/config.h ../../../Common/MyWindows.h \
-- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
-- ../../../Common/../../C/Types.h ../../../Common/Types.h \
-- ../../../include_windows/windows.h ../../../include_windows/basetyps.h \
-- ../../../include_windows/tchar.h ../../Common/RegisterCodec.h \
-- ../../Common/../Common/MethodId.h \
-- ../../Common/../Common/../../Common/Types.h ../Rar1Decoder.h \
-- ../../../Common/MyCom.h ../../../Common/MyWindows.h ../../ICoder.h \
-- ../../IStream.h ../../../Common/MyUnknown.h ../../../Common/Types.h \
-- ../../IDecl.h ../../Common/InBuffer.h ../../Common/../IStream.h \
-- ../../Common/../../Common/MyCom.h \
-- ../../Common/../../Common/MyException.h \
-- ../../Common/../../Common/MyWindows.h ../BitmDecoder.h ../../IStream.h \
-- ../HuffmanDecoder.h ../../../Common/Types.h ../LzOutWindow.h \
-- ../../Common/OutBuffer.h ../Rar2Decoder.h ../Rar3Decoder.h \
-- ../../../../C/Ppmd7.h ../../../../C/Ppmd.h ../../../../C/Types.h \
-- ../../../../C/CpuArch.h ../Rar3Vm.h ../../../../C/CpuArch.h \
-- ../../../Common/MyVector.h ../../../Common/Defs.h
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar/makefile.list p7zip-libre_9.20.1/CPP/7zip/Compress/Rar/makefile.list
---- p7zip_9.20.1/CPP/7zip/Compress/Rar/makefile.list 2010-03-16 17:23:04.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar/makefile.list 1969-12-31 21:00:00.000000000 -0300
-@@ -1,64 +0,0 @@
--SRCS=\
-- ../../../Common/CRC.cpp \
-- ../../../Common/MyWindows.cpp \
-- ../../../Common/MyVector.cpp \
-- ../../Common/InBuffer.cpp \
-- ../../Common/StreamUtils.cpp \
-- ../../Common/OutBuffer.cpp \
--../LzOutWindow.cpp \
--../CodecExports.cpp \
--../DllExports.cpp \
--../Rar1Decoder.cpp \
--../Rar2Decoder.cpp \
--../Rar3Decoder.cpp \
--../Rar3Vm.cpp \
--../RarCodecsRegister.cpp
--
--SRCS_C=\
-- ../../../../C/Alloc.c \
-- ../../../../C/Ppmd7.c \
-- ../../../../C/Ppmd7Dec.c
--
--CRC.o : ../../../Common/CRC.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../../../Common/CRC.cpp
--MyWindows.o : ../../../Common/MyWindows.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../../../Common/MyWindows.cpp
--MyVector.o : ../../../Common/MyVector.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../../../Common/MyVector.cpp
--DllExports.o : ../DllExports.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../DllExports.cpp
--CodecExports.o : ../CodecExports.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../CodecExports.cpp
--InBuffer.o : ../../Common/InBuffer.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../../Common/InBuffer.cpp
--LzOutWindow.o : ../LzOutWindow.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../LzOutWindow.cpp
--StreamUtils.o : ../../Common/StreamUtils.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../../Common/StreamUtils.cpp
--OutBuffer.o : ../../Common/OutBuffer.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../../Common/OutBuffer.cpp
--Rar1Decoder.o : ../Rar1Decoder.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../Rar1Decoder.cpp
--Rar2Decoder.o : ../Rar2Decoder.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../Rar2Decoder.cpp
--Rar3Decoder.o : ../Rar3Decoder.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../Rar3Decoder.cpp
--Rar3Vm.o : ../Rar3Vm.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../Rar3Vm.cpp
--RarCodecsRegister.o : ../RarCodecsRegister.cpp
-- $(CXX) $(CC_SHARED) $(CXXFLAGS) ../RarCodecsRegister.cpp
--Alloc.o : ../../../../C/Alloc.c
-- $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/Alloc.c
--Ppmd7.o : ../../../../C/Ppmd7.c
-- $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/Ppmd7.c
--Ppmd7Dec.o : ../../../../C/Ppmd7Dec.c
-- $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/Ppmd7Dec.c
--
--# CRC32, C version
--7zCrc.o : ../../../../C/7zCrc.c
-- $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/7zCrc.c
--7zCrcOpt.o : ../../../../C/7zCrcOpt.c
-- $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/7zCrcOpt.c
--# CRC32, ASM version
--7zCrcT8.o : ../../../../C/7zCrcT8.c
-- $(CC) $(CC_SHARED) $(CFLAGS) ../../../../C/7zCrcT8.c
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar1Decoder.cpp p7zip-libre_9.20.1/CPP/7zip/Compress/Rar1Decoder.cpp
---- p7zip_9.20.1/CPP/7zip/Compress/Rar1Decoder.cpp 2009-12-21 08:46:36.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar1Decoder.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,480 +0,0 @@
--// Rar1Decoder.cpp
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--#include "StdAfx.h"
--
--#include "Rar1Decoder.h"
--
--namespace NCompress {
--namespace NRar1 {
--
--static UInt32 PosL1[]={0,0,0,2,3,5,7,11,16,20,24,32,32, 256};
--static UInt32 PosL2[]={0,0,0,0,5,7,9,13,18,22,26,34,36, 256};
--static UInt32 PosHf0[]={0,0,0,0,0,8,16,24,33,33,33,33,33, 257};
--static UInt32 PosHf1[]={0,0,0,0,0,0,4,44,60,76,80,80,127, 257};
--static UInt32 PosHf2[]={0,0,0,0,0,0,2,7,53,117,233, 257,0};
--static UInt32 PosHf3[]={0,0,0,0,0,0,0,2,16,218,251, 257,0};
--static UInt32 PosHf4[]={0,0,0,0,0,0,0,0,0,255, 257,0,0};
--
--static const UInt32 kHistorySize = (1 << 16);
--
--class CCoderReleaser
--{
-- CDecoder *m_Coder;
--public:
-- CCoderReleaser(CDecoder *coder): m_Coder(coder) {}
-- ~CCoderReleaser() { m_Coder->ReleaseStreams(); }
--};
--
--CDecoder::CDecoder(): m_IsSolid(false) { }
--
--void CDecoder::InitStructures()
--{
-- for(int i = 0; i < kNumRepDists; i++)
-- m_RepDists[i] = 0;
-- m_RepDistPtr = 0;
-- LastLength = 0;
-- LastDist = 0;
--}
--
--UInt32 CDecoder::ReadBits(int numBits) { return m_InBitStream.ReadBits(numBits); }
--
--HRESULT CDecoder::CopyBlock(UInt32 distance, UInt32 len)
--{
-- if (len == 0)
-- return S_FALSE;
-- m_UnpackSize -= len;
-- return m_OutWindowStream.CopyBlock(distance, len) ? S_OK : S_FALSE;
--}
--
--
--UInt32 CDecoder::DecodeNum(const UInt32 *posTab)
--{
-- UInt32 startPos = 2;
-- UInt32 num = m_InBitStream.GetValue(12);
-- for (;;)
-- {
-- UInt32 cur = (posTab[startPos + 1] - posTab[startPos]) << (12 - startPos);
-- if (num < cur)
-- break;
-- startPos++;
-- num -= cur;
-- }
-- m_InBitStream.MovePos(startPos);
-- return((num >> (12 - startPos)) + posTab[startPos]);
--}
--
--static Byte kShortLen1[] = {1,3,4,4,5,6,7,8,8,4,4,5,6,6 };
--static Byte kShortLen1a[] = {1,4,4,4,5,6,7,8,8,4,4,5,6,6,4 };
--static Byte kShortLen2[] = {2,3,3,3,4,4,5,6,6,4,4,5,6,6 };
--static Byte kShortLen2a[] = {2,3,3,4,4,4,5,6,6,4,4,5,6,6,4 };
--static UInt32 kShortXor1[] = {0,0xa0,0xd0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xc0,0x80,0x90,0x98,0x9c,0xb0};
--static UInt32 kShortXor2[] = {0,0x40,0x60,0xa0,0xd0,0xe0,0xf0,0xf8,0xfc,0xc0,0x80,0x90,0x98,0x9c,0xb0};
--
--HRESULT CDecoder::ShortLZ()
--{
-- UInt32 len, saveLen, dist;
-- int distancePlace;
-- Byte *kShortLen;
-- const UInt32 *kShortXor;
-- NumHuf = 0;
--
-- if (LCount == 2)
-- {
-- if (ReadBits(1))
-- return CopyBlock(LastDist, LastLength);
-- LCount = 0;
-- }
--
-- UInt32 bitField = m_InBitStream.GetValue(8);
--
-- if (AvrLn1 < 37)
-- {
-- kShortLen = Buf60 ? kShortLen1a : kShortLen1;
-- kShortXor = kShortXor1;
-- }
-- else
-- {
-- kShortLen = Buf60 ? kShortLen2a : kShortLen2;
-- kShortXor = kShortXor2;
-- }
--
-- for (len = 0; ((bitField ^ kShortXor[len]) & (~(0xff >> kShortLen[len]))) != 0; len++);
-- m_InBitStream.MovePos(kShortLen[len]);
--
-- if (len >= 9)
-- {
-- if (len == 9)
-- {
-- LCount++;
-- return CopyBlock(LastDist, LastLength);
-- }
-- if (len == 14)
-- {
-- LCount = 0;
-- len = DecodeNum(PosL2) + 5;
-- dist = 0x8000 + ReadBits(15) - 1;
-- LastLength = len;
-- LastDist = dist;
-- return CopyBlock(dist, len);
-- }
--
-- LCount = 0;
-- saveLen = len;
-- dist = m_RepDists[(m_RepDistPtr - (len - 9)) & 3];
-- len = DecodeNum(PosL1) + 2;
-- if (len == 0x101 && saveLen == 10)
-- {
-- Buf60 ^= 1;
-- return S_OK;
-- }
-- if (dist >= 256)
-- len++;
-- if (dist >= MaxDist3 - 1)
-- len++;
-- }
-- else
-- {
-- LCount = 0;
-- AvrLn1 += len;
-- AvrLn1 -= AvrLn1 >> 4;
--
-- distancePlace = DecodeNum(PosHf2) & 0xff;
-- dist = ChSetA[distancePlace];
-- if (--distancePlace != -1)
-- {
-- PlaceA[dist]--;
-- UInt32 lastDistance = ChSetA[distancePlace];
-- PlaceA[lastDistance]++;
-- ChSetA[distancePlace + 1] = lastDistance;
-- ChSetA[distancePlace] = dist;
-- }
-- len += 2;
-- }
-- m_RepDists[m_RepDistPtr++] = dist;
-- m_RepDistPtr &= 3;
-- LastLength = len;
-- LastDist = dist;
-- return CopyBlock(dist, len);
--}
--
--
--HRESULT CDecoder::LongLZ()
--{
-- UInt32 len;
-- UInt32 dist;
-- UInt32 distancePlace, newDistancePlace;
-- UInt32 oldAvr2, oldAvr3;
--
-- NumHuf = 0;
-- Nlzb += 16;
-- if (Nlzb > 0xff)
-- {
-- Nlzb = 0x90;
-- Nhfb >>= 1;
-- }
-- oldAvr2=AvrLn2;
--
-- if (AvrLn2 >= 122)
-- len = DecodeNum(PosL2);
-- else if (AvrLn2 >= 64)
-- len = DecodeNum(PosL1);
-- else
-- {
-- UInt32 bitField = m_InBitStream.GetValue(16);
-- if (bitField < 0x100)
-- {
-- len = bitField;
-- m_InBitStream.MovePos(16);
-- }
-- else
-- {
-- for (len = 0; ((bitField << len) & 0x8000) == 0; len++)
-- ;
-- m_InBitStream.MovePos(len + 1);
-- }
-- }
--
-- AvrLn2 += len;
-- AvrLn2 -= AvrLn2 >> 5;
--
-- if (AvrPlcB > 0x28ff)
-- distancePlace = DecodeNum(PosHf2);
-- else if (AvrPlcB > 0x6ff)
-- distancePlace = DecodeNum(PosHf1);
-- else
-- distancePlace = DecodeNum(PosHf0);
--
-- AvrPlcB += distancePlace;
-- AvrPlcB -= AvrPlcB >> 8;
-- for (;;)
-- {
-- dist = ChSetB[distancePlace & 0xff];
-- newDistancePlace = NToPlB[dist++ & 0xff]++;
-- if (!(dist & 0xff))
-- CorrHuff(ChSetB,NToPlB);
-- else
-- break;
-- }
--
-- ChSetB[distancePlace] = ChSetB[newDistancePlace];
-- ChSetB[newDistancePlace] = dist;
--
-- dist = ((dist & 0xff00) >> 1) | ReadBits(7);
--
-- oldAvr3 = AvrLn3;
-- if (len != 1 && len != 4)
-- if (len == 0 && dist <= MaxDist3)
-- {
-- AvrLn3++;
-- AvrLn3 -= AvrLn3 >> 8;
-- }
-- else
-- if (AvrLn3 > 0)
-- AvrLn3--;
-- len += 3;
-- if (dist >= MaxDist3)
-- len++;
-- if (dist <= 256)
-- len += 8;
-- if (oldAvr3 > 0xb0 || AvrPlc >= 0x2a00 && oldAvr2 < 0x40)
-- MaxDist3 = 0x7f00;
-- else
-- MaxDist3 = 0x2001;
-- m_RepDists[m_RepDistPtr++] = --dist;
-- m_RepDistPtr &= 3;
-- LastLength = len;
-- LastDist = dist;
-- return CopyBlock(dist, len);
--}
--
--
--HRESULT CDecoder::HuffDecode()
--{
-- UInt32 curByte, newBytePlace;
-- UInt32 len;
-- UInt32 dist;
-- int bytePlace;
--
-- if (AvrPlc > 0x75ff) bytePlace = DecodeNum(PosHf4);
-- else if (AvrPlc > 0x5dff) bytePlace = DecodeNum(PosHf3);
-- else if (AvrPlc > 0x35ff) bytePlace = DecodeNum(PosHf2);
-- else if (AvrPlc > 0x0dff) bytePlace = DecodeNum(PosHf1);
-- else bytePlace = DecodeNum(PosHf0);
-- if (StMode)
-- {
-- if (--bytePlace == -1)
-- {
-- if (ReadBits(1))
-- {
-- NumHuf = StMode = 0;
-- return S_OK;
-- }
-- else
-- {
-- len = (ReadBits(1)) ? 4 : 3;
-- dist = DecodeNum(PosHf2);
-- dist = (dist << 5) | ReadBits(5);
-- return CopyBlock(dist - 1, len);
-- }
-- }
-- }
-- else if (NumHuf++ >= 16 && FlagsCnt == 0)
-- StMode = 1;
-- bytePlace &= 0xff;
-- AvrPlc += bytePlace;
-- AvrPlc -= AvrPlc >> 8;
-- Nhfb+=16;
-- if (Nhfb > 0xff)
-- {
-- Nhfb=0x90;
-- Nlzb >>= 1;
-- }
--
-- m_UnpackSize --;
-- m_OutWindowStream.PutByte((Byte)(ChSet[bytePlace] >> 8));
--
-- for (;;)
-- {
-- curByte = ChSet[bytePlace];
-- newBytePlace = NToPl[curByte++ & 0xff]++;
-- if ((curByte & 0xff) > 0xa1)
-- CorrHuff(ChSet, NToPl);
-- else
-- break;
-- }
--
-- ChSet[bytePlace] = ChSet[newBytePlace];
-- ChSet[newBytePlace] = curByte;
-- return S_OK;
--}
--
--
--void CDecoder::GetFlagsBuf()
--{
-- UInt32 flags, newFlagsPlace;
-- UInt32 flagsPlace = DecodeNum(PosHf2);
--
-- for (;;)
-- {
-- flags = ChSetC[flagsPlace];
-- FlagBuf = flags >> 8;
-- newFlagsPlace = NToPlC[flags++ & 0xff]++;
-- if ((flags & 0xff) != 0)
-- break;
-- CorrHuff(ChSetC, NToPlC);
-- }
--
-- ChSetC[flagsPlace] = ChSetC[newFlagsPlace];
-- ChSetC[newFlagsPlace] = flags;
--}
--
--void CDecoder::InitData()
--{
-- if (!m_IsSolid)
-- {
-- AvrPlcB = AvrLn1 = AvrLn2 = AvrLn3 = NumHuf = Buf60 = 0;
-- AvrPlc = 0x3500;
-- MaxDist3 = 0x2001;
-- Nhfb = Nlzb = 0x80;
-- }
-- FlagsCnt = 0;
-- FlagBuf = 0;
-- StMode = 0;
-- LCount = 0;
--}
--
--void CDecoder::CorrHuff(UInt32 *CharSet,UInt32 *NumToPlace)
--{
-- int i;
-- for (i = 7; i >= 0; i--)
-- for (int j = 0; j < 32; j++, CharSet++)
-- *CharSet = (*CharSet & ~0xff) | i;
-- memset(NumToPlace, 0, sizeof(NToPl));
-- for (i = 6; i >= 0; i--)
-- NumToPlace[i] = (7 - i) * 32;
--}
--
--void CDecoder::InitHuff()
--{
-- for (UInt32 i = 0; i < 256; i++)
-- {
-- Place[i] = PlaceA[i] = PlaceB[i] = i;
-- PlaceC[i] = (~i + 1) & 0xff;
-- ChSet[i] = ChSetB[i] = i << 8;
-- ChSetA[i] = i;
-- ChSetC[i] = ((~i + 1) & 0xff) << 8;
-- }
-- memset(NToPl, 0, sizeof(NToPl));
-- memset(NToPlB, 0, sizeof(NToPlB));
-- memset(NToPlC, 0, sizeof(NToPlC));
-- CorrHuff(ChSetB, NToPlB);
--}
--
--HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo * /* progress */)
--{
-- if (inSize == NULL || outSize == NULL)
-- return E_INVALIDARG;
--
-- if (!m_OutWindowStream.Create(kHistorySize))
-- return E_OUTOFMEMORY;
-- if (!m_InBitStream.Create(1 << 20))
-- return E_OUTOFMEMORY;
--
-- m_UnpackSize = (Int64)*outSize;
-- m_OutWindowStream.SetStream(outStream);
-- m_OutWindowStream.Init(m_IsSolid);
-- m_InBitStream.SetStream(inStream);
-- m_InBitStream.Init();
--
-- CCoderReleaser coderReleaser(this);
-- InitData();
-- if (!m_IsSolid)
-- {
-- InitStructures();
-- InitHuff();
-- }
-- if (m_UnpackSize > 0)
-- {
-- GetFlagsBuf();
-- FlagsCnt = 8;
-- }
--
-- while (m_UnpackSize > 0)
-- {
-- if (StMode)
-- {
-- RINOK(HuffDecode());
-- continue;
-- }
--
-- if (--FlagsCnt < 0)
-- {
-- GetFlagsBuf();
-- FlagsCnt=7;
-- }
--
-- if (FlagBuf & 0x80)
-- {
-- FlagBuf <<= 1;
-- if (Nlzb > Nhfb)
-- {
-- RINOK(LongLZ());
-- }
-- else
-- {
-- RINOK(HuffDecode());
-- }
-- }
-- else
-- {
-- FlagBuf <<= 1;
-- if (--FlagsCnt < 0)
-- {
-- GetFlagsBuf();
-- FlagsCnt = 7;
-- }
-- if (FlagBuf & 0x80)
-- {
-- FlagBuf <<= 1;
-- if (Nlzb > Nhfb)
-- {
-- RINOK(HuffDecode());
-- }
-- else
-- {
-- RINOK(LongLZ());
-- }
-- }
-- else
-- {
-- FlagBuf <<= 1;
-- RINOK(ShortLZ());
-- }
-- }
-- }
-- if (m_UnpackSize < 0)
-- return S_FALSE;
-- return m_OutWindowStream.Flush();
--}
--
--STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress)
--{
-- try { return CodeReal(inStream, outStream, inSize, outSize, progress); }
-- catch(const CInBufferException &e) { return e.ErrorCode; }
-- catch(const CLzOutWindowException &e) { return e.ErrorCode; }
-- catch(...) { return S_FALSE; }
--}
--
--STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
--{
-- if (size < 1)
-- return E_INVALIDARG;
-- m_IsSolid = (data[0] != 0);
-- return S_OK;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar1Decoder.h p7zip-libre_9.20.1/CPP/7zip/Compress/Rar1Decoder.h
---- p7zip_9.20.1/CPP/7zip/Compress/Rar1Decoder.h 2009-02-07 15:06:28.000000000 -0200
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar1Decoder.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,88 +0,0 @@
--// Rar1Decoder.h
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--#ifndef __COMPRESS_RAR1_DECODER_H
--#define __COMPRESS_RAR1_DECODER_H
--
--#include "../../Common/MyCom.h"
--
--#include "../ICoder.h"
--
--#include "../Common/InBuffer.h"
--
--#include "BitmDecoder.h"
--#include "HuffmanDecoder.h"
--#include "LzOutWindow.h"
--
--namespace NCompress {
--namespace NRar1 {
--
--const UInt32 kNumRepDists = 4;
--
--typedef NBitm::CDecoder<CInBuffer> CBitDecoder;
--
--class CDecoder :
-- public ICompressCoder,
-- public ICompressSetDecoderProperties2,
-- public CMyUnknownImp
--{
--public:
-- CLzOutWindow m_OutWindowStream;
-- CBitDecoder m_InBitStream;
--
-- UInt32 m_RepDists[kNumRepDists];
-- UInt32 m_RepDistPtr;
--
-- UInt32 LastDist;
-- UInt32 LastLength;
--
-- Int64 m_UnpackSize;
-- bool m_IsSolid;
--
-- UInt32 ReadBits(int numBits);
-- HRESULT CopyBlock(UInt32 distance, UInt32 len);
--
-- UInt32 DecodeNum(const UInt32 *posTab);
-- HRESULT ShortLZ();
-- HRESULT LongLZ();
-- HRESULT HuffDecode();
-- void GetFlagsBuf();
-- void InitData();
-- void InitHuff();
-- void CorrHuff(UInt32 *CharSet, UInt32 *NumToPlace);
-- void OldUnpWriteBuf();
--
-- UInt32 ChSet[256],ChSetA[256],ChSetB[256],ChSetC[256];
-- UInt32 Place[256],PlaceA[256],PlaceB[256],PlaceC[256];
-- UInt32 NToPl[256],NToPlB[256],NToPlC[256];
-- UInt32 FlagBuf,AvrPlc,AvrPlcB,AvrLn1,AvrLn2,AvrLn3;
-- int Buf60,NumHuf,StMode,LCount,FlagsCnt;
-- UInt32 Nhfb,Nlzb,MaxDist3;
--
-- void InitStructures();
--
-- HRESULT CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
--
--public:
-- CDecoder();
--
-- MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2)
--
-- void ReleaseStreams()
-- {
-- m_OutWindowStream.ReleaseStream();
-- m_InBitStream.ReleaseStream();
-- }
--
-- STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
--
-- STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
--
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar2Decoder.cpp p7zip-libre_9.20.1/CPP/7zip/Compress/Rar2Decoder.cpp
---- p7zip_9.20.1/CPP/7zip/Compress/Rar2Decoder.cpp 2009-12-21 08:46:36.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar2Decoder.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,391 +0,0 @@
--// Rar2Decoder.cpp
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--#include "StdAfx.h"
--
--#include "Rar2Decoder.h"
--
--namespace NCompress {
--namespace NRar2 {
--
--namespace NMultimedia {
--
--Byte CFilter::Decode(int &channelDelta, Byte deltaByte)
--{
-- D4 = D3;
-- D3 = D2;
-- D2 = LastDelta - D1;
-- D1 = LastDelta;
-- int predictedValue = ((8 * LastChar + K1 * D1 + K2 * D2 + K3 * D3 + K4 * D4 + K5 * channelDelta) >> 3);
--
-- Byte realValue = (Byte)(predictedValue - deltaByte);
-- int i = ((int)(signed char)deltaByte) << 3;
--
-- Dif[0] += abs(i);
-- Dif[1] += abs(i - D1);
-- Dif[2] += abs(i + D1);
-- Dif[3] += abs(i - D2);
-- Dif[4] += abs(i + D2);
-- Dif[5] += abs(i - D3);
-- Dif[6] += abs(i + D3);
-- Dif[7] += abs(i - D4);
-- Dif[8] += abs(i + D4);
-- Dif[9] += abs(i - channelDelta);
-- Dif[10] += abs(i + channelDelta);
--
-- channelDelta = LastDelta = (signed char)(realValue - LastChar);
-- LastChar = realValue;
--
-- if (((++ByteCount) & 0x1F) == 0)
-- {
-- UInt32 minDif = Dif[0];
-- UInt32 numMinDif = 0;
-- Dif[0] = 0;
-- for (i = 1; i < sizeof(Dif) / sizeof(Dif[0]); i++)
-- {
-- if (Dif[i] < minDif)
-- {
-- minDif = Dif[i];
-- numMinDif = i;
-- }
-- Dif[i] = 0;
-- }
-- switch(numMinDif)
-- {
-- case 1: if (K1 >= -16) K1--; break;
-- case 2: if (K1 < 16) K1++; break;
-- case 3: if (K2 >= -16) K2--; break;
-- case 4: if (K2 < 16) K2++; break;
-- case 5: if (K3 >= -16) K3--; break;
-- case 6: if (K3 < 16) K3++; break;
-- case 7: if (K4 >= -16) K4--; break;
-- case 8: if (K4 < 16) K4++; break;
-- case 9: if (K5 >= -16) K5--; break;
-- case 10:if (K5 < 16) K5++; break;
-- }
-- }
-- return realValue;
--}
--}
--
--static const char *kNumberErrorMessage = "Number error";
--
--static const UInt32 kHistorySize = 1 << 20;
--
--static const int kNumStats = 11;
--
--static const UInt32 kWindowReservSize = (1 << 22) + 256;
--
--CDecoder::CDecoder():
-- m_IsSolid(false)
--{
--}
--
--void CDecoder::InitStructures()
--{
-- m_MmFilter.Init();
-- for(int i = 0; i < kNumRepDists; i++)
-- m_RepDists[i] = 0;
-- m_RepDistPtr = 0;
-- m_LastLength = 0;
-- memset(m_LastLevels, 0, kMaxTableSize);
--}
--
--UInt32 CDecoder::ReadBits(int numBits) { return m_InBitStream.ReadBits(numBits); }
--
--#define RIF(x) { if (!(x)) return false; }
--
--bool CDecoder::ReadTables(void)
--{
-- Byte levelLevels[kLevelTableSize];
-- Byte newLevels[kMaxTableSize];
-- m_AudioMode = (ReadBits(1) == 1);
--
-- if (ReadBits(1) == 0)
-- memset(m_LastLevels, 0, kMaxTableSize);
-- int numLevels;
-- if (m_AudioMode)
-- {
-- m_NumChannels = ReadBits(2) + 1;
-- if (m_MmFilter.CurrentChannel >= m_NumChannels)
-- m_MmFilter.CurrentChannel = 0;
-- numLevels = m_NumChannels * kMMTableSize;
-- }
-- else
-- numLevels = kHeapTablesSizesSum;
--
-- int i;
-- for (i = 0; i < kLevelTableSize; i++)
-- levelLevels[i] = (Byte)ReadBits(4);
-- RIF(m_LevelDecoder.SetCodeLengths(levelLevels));
-- i = 0;
-- while (i < numLevels)
-- {
-- UInt32 number = m_LevelDecoder.DecodeSymbol(&m_InBitStream);
-- if (number < kTableDirectLevels)
-- {
-- newLevels[i] = (Byte)((number + m_LastLevels[i]) & kLevelMask);
-- i++;
-- }
-- else
-- {
-- if (number == kTableLevelRepNumber)
-- {
-- int t = ReadBits(2) + 3;
-- for (int reps = t; reps > 0 && i < numLevels ; reps--, i++)
-- newLevels[i] = newLevels[i - 1];
-- }
-- else
-- {
-- int num;
-- if (number == kTableLevel0Number)
-- num = ReadBits(3) + 3;
-- else if (number == kTableLevel0Number2)
-- num = ReadBits(7) + 11;
-- else
-- return false;
-- for (;num > 0 && i < numLevels; num--)
-- newLevels[i++] = 0;
-- }
-- }
-- }
-- if (m_AudioMode)
-- for (i = 0; i < m_NumChannels; i++)
-- {
-- RIF(m_MMDecoders[i].SetCodeLengths(&newLevels[i * kMMTableSize]));
-- }
-- else
-- {
-- RIF(m_MainDecoder.SetCodeLengths(&newLevels[0]));
-- RIF(m_DistDecoder.SetCodeLengths(&newLevels[kMainTableSize]));
-- RIF(m_LenDecoder.SetCodeLengths(&newLevels[kMainTableSize + kDistTableSize]));
-- }
-- memcpy(m_LastLevels, newLevels, kMaxTableSize);
-- return true;
--}
--
--bool CDecoder::ReadLastTables()
--{
-- // it differs a little from pure RAR sources;
-- // UInt64 ttt = m_InBitStream.GetProcessedSize() + 2;
-- // + 2 works for: return 0xFF; in CInBuffer::ReadByte.
-- if (m_InBitStream.GetProcessedSize() + 7 <= m_PackSize) // test it: probably incorrect;
-- // if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
-- if (m_AudioMode)
-- {
-- UInt32 symbol = m_MMDecoders[m_MmFilter.CurrentChannel].DecodeSymbol(&m_InBitStream);
-- if (symbol == 256)
-- return ReadTables();
-- if (symbol >= kMMTableSize)
-- return false;
-- }
-- else
-- {
-- UInt32 number = m_MainDecoder.DecodeSymbol(&m_InBitStream);
-- if (number == kReadTableNumber)
-- return ReadTables();
-- if (number >= kMainTableSize)
-- return false;
-- }
-- return true;
--}
--
--class CCoderReleaser
--{
-- CDecoder *m_Coder;
--public:
-- CCoderReleaser(CDecoder *coder): m_Coder(coder) {}
-- ~CCoderReleaser()
-- {
-- m_Coder->ReleaseStreams();
-- }
--};
--
--bool CDecoder::DecodeMm(UInt32 pos)
--{
-- while (pos-- > 0)
-- {
-- UInt32 symbol = m_MMDecoders[m_MmFilter.CurrentChannel].DecodeSymbol(&m_InBitStream);
-- if (symbol == 256)
-- return true;
-- if (symbol >= kMMTableSize)
-- return false;
-- /*
-- Byte byPredict = m_Predictor.Predict();
-- Byte byReal = (Byte)(byPredict - (Byte)symbol);
-- m_Predictor.Update(byReal, byPredict);
-- */
-- Byte byReal = m_MmFilter.Decode((Byte)symbol);
-- m_OutWindowStream.PutByte(byReal);
-- if (++m_MmFilter.CurrentChannel == m_NumChannels)
-- m_MmFilter.CurrentChannel = 0;
-- }
-- return true;
--}
--
--bool CDecoder::DecodeLz(Int32 pos)
--{
-- while (pos > 0)
-- {
-- UInt32 number = m_MainDecoder.DecodeSymbol(&m_InBitStream);
-- UInt32 length, distance;
-- if (number < 256)
-- {
-- m_OutWindowStream.PutByte(Byte(number));
-- pos--;
-- continue;
-- }
-- else if (number >= kMatchNumber)
-- {
-- number -= kMatchNumber;
-- length = kNormalMatchMinLen + UInt32(kLenStart[number]) +
-- m_InBitStream.ReadBits(kLenDirectBits[number]);
-- number = m_DistDecoder.DecodeSymbol(&m_InBitStream);
-- if (number >= kDistTableSize)
-- return false;
-- distance = kDistStart[number] + m_InBitStream.ReadBits(kDistDirectBits[number]);
-- if (distance >= kDistLimit3)
-- {
-- length += 2 - ((distance - kDistLimit4) >> 31);
-- // length++;
-- // if (distance >= kDistLimit4)
-- // length++;
-- }
-- }
-- else if (number == kRepBothNumber)
-- {
-- length = m_LastLength;
-- if (length == 0)
-- return false;
-- distance = m_RepDists[(m_RepDistPtr + 4 - 1) & 3];
-- }
-- else if (number < kLen2Number)
-- {
-- distance = m_RepDists[(m_RepDistPtr - (number - kRepNumber + 1)) & 3];
-- number = m_LenDecoder.DecodeSymbol(&m_InBitStream);
-- if (number >= kLenTableSize)
-- return false;
-- length = 2 + kLenStart[number] + m_InBitStream.ReadBits(kLenDirectBits[number]);
-- if (distance >= kDistLimit2)
-- {
-- length++;
-- if (distance >= kDistLimit3)
-- {
-- length += 2 - ((distance - kDistLimit4) >> 31);
-- // length++;
-- // if (distance >= kDistLimit4)
-- // length++;
-- }
-- }
-- }
-- else if (number < kReadTableNumber)
-- {
-- number -= kLen2Number;
-- distance = kLen2DistStarts[number] +
-- m_InBitStream.ReadBits(kLen2DistDirectBits[number]);
-- length = 2;
-- }
-- else if (number == kReadTableNumber)
-- return true;
-- else
-- return false;
-- m_RepDists[m_RepDistPtr++ & 3] = distance;
-- m_LastLength = length;
-- if (!m_OutWindowStream.CopyBlock(distance, length))
-- return false;
-- pos -= length;
-- }
-- return true;
--}
--
--HRESULT CDecoder::CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress)
--{
-- if (inSize == NULL || outSize == NULL)
-- return E_INVALIDARG;
--
-- if (!m_OutWindowStream.Create(kHistorySize))
-- return E_OUTOFMEMORY;
-- if (!m_InBitStream.Create(1 << 20))
-- return E_OUTOFMEMORY;
--
-- m_PackSize = *inSize;
--
-- UInt64 pos = 0, unPackSize = *outSize;
--
-- m_OutWindowStream.SetStream(outStream);
-- m_OutWindowStream.Init(m_IsSolid);
-- m_InBitStream.SetStream(inStream);
-- m_InBitStream.Init();
--
-- CCoderReleaser coderReleaser(this);
-- if (!m_IsSolid)
-- {
-- InitStructures();
-- if (unPackSize == 0)
-- {
-- if (m_InBitStream.GetProcessedSize() + 2 <= m_PackSize) // test it: probably incorrect;
-- if (!ReadTables())
-- return S_FALSE;
-- return S_OK;
-- }
-- if (!ReadTables())
-- return S_FALSE;
-- }
--
-- UInt64 startPos = m_OutWindowStream.GetProcessedSize();
-- while(pos < unPackSize)
-- {
-- UInt32 blockSize = 1 << 20;
-- if (blockSize > unPackSize - pos)
-- blockSize = (UInt32)(unPackSize - pos);
-- UInt64 blockStartPos = m_OutWindowStream.GetProcessedSize();
-- if (m_AudioMode)
-- {
-- if (!DecodeMm(blockSize))
-- return S_FALSE;
-- }
-- else
-- {
-- if (!DecodeLz((Int32)blockSize))
-- return S_FALSE;
-- }
-- UInt64 globalPos = m_OutWindowStream.GetProcessedSize();
-- pos = globalPos - blockStartPos;
-- if (pos < blockSize)
-- if (!ReadTables())
-- return S_FALSE;
-- pos = globalPos - startPos;
-- if (progress != 0)
-- {
-- UInt64 packSize = m_InBitStream.GetProcessedSize();
-- RINOK(progress->SetRatioInfo(&packSize, &pos));
-- }
-- }
-- if (pos > unPackSize)
-- return S_FALSE;
--
-- if (!ReadLastTables())
-- return S_FALSE;
-- return m_OutWindowStream.Flush();
--}
--
--STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress)
--{
-- try { return CodeReal(inStream, outStream, inSize, outSize, progress); }
-- catch(const CInBufferException &e) { return e.ErrorCode; }
-- catch(const CLzOutWindowException &e) { return e.ErrorCode; }
-- catch(...) { return S_FALSE; }
--}
--
--STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
--{
-- if (size < 1)
-- return E_INVALIDARG;
-- m_IsSolid = (data[0] != 0);
-- return S_OK;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar2Decoder.h p7zip-libre_9.20.1/CPP/7zip/Compress/Rar2Decoder.h
---- p7zip_9.20.1/CPP/7zip/Compress/Rar2Decoder.h 2009-02-07 15:06:28.000000000 -0200
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar2Decoder.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,174 +0,0 @@
--// Rar2Decoder.h
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--#ifndef __COMPRESS_RAR2_DECODER_H
--#define __COMPRESS_RAR2_DECODER_H
--
--#include "../../Common/MyCom.h"
--
--#include "../ICoder.h"
--
--#include "../Common/InBuffer.h"
--
--#include "BitmDecoder.h"
--#include "HuffmanDecoder.h"
--#include "LzOutWindow.h"
--
--namespace NCompress {
--namespace NRar2 {
--
--const UInt32 kNumRepDists = 4;
--const UInt32 kDistTableSize = 48;
--
--const int kMMTableSize = 256 + 1;
--
--const UInt32 kMainTableSize = 298;
--const UInt32 kLenTableSize = 28;
--
--const UInt32 kDistTableStart = kMainTableSize;
--const UInt32 kLenTableStart = kDistTableStart + kDistTableSize;
--
--const UInt32 kHeapTablesSizesSum = kMainTableSize + kDistTableSize + kLenTableSize;
--
--const UInt32 kLevelTableSize = 19;
--
--const UInt32 kMMTablesSizesSum = kMMTableSize * 4;
--
--const UInt32 kMaxTableSize = kMMTablesSizesSum;
--
--const UInt32 kTableDirectLevels = 16;
--const UInt32 kTableLevelRepNumber = kTableDirectLevels;
--const UInt32 kTableLevel0Number = kTableLevelRepNumber + 1;
--const UInt32 kTableLevel0Number2 = kTableLevel0Number + 1;
--
--const UInt32 kLevelMask = 0xF;
--
--
--const UInt32 kRepBothNumber = 256;
--const UInt32 kRepNumber = kRepBothNumber + 1;
--const UInt32 kLen2Number = kRepNumber + 4;
--
--const UInt32 kLen2NumNumbers = 8;
--const UInt32 kReadTableNumber = kLen2Number + kLen2NumNumbers;
--const UInt32 kMatchNumber = kReadTableNumber + 1;
--
--const Byte kLenStart[kLenTableSize] = {0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224};
--const Byte kLenDirectBits[kLenTableSize] = {0,0,0,0,0,0,0,0,1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5};
--
--const UInt32 kDistStart[kDistTableSize] = {0,1,2,3,4,6,8,12,16,24,32,48,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096,6144,8192,12288,16384,24576,32768U,49152U,65536,98304,131072,196608,262144,327680,393216,458752,524288,589824,655360,720896,786432,851968,917504,983040};
--const Byte kDistDirectBits[kDistTableSize] = {0,0,0,0,1,1,2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16};
--
--const Byte kLevelDirectBits[kLevelTableSize] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7};
--
--const Byte kLen2DistStarts[kLen2NumNumbers]={0,4,8,16,32,64,128,192};
--const Byte kLen2DistDirectBits[kLen2NumNumbers]={2,2,3, 4, 5, 6, 6, 6};
--
--const UInt32 kDistLimit2 = 0x101 - 1;
--const UInt32 kDistLimit3 = 0x2000 - 1;
--const UInt32 kDistLimit4 = 0x40000 - 1;
--
--const UInt32 kMatchMaxLen = 255 + 2;
--const UInt32 kMatchMaxLenMax = 255 + 5;
--const UInt32 kNormalMatchMinLen = 3;
--
--namespace NMultimedia {
--
--struct CFilter
--{
-- int K1,K2,K3,K4,K5;
-- int D1,D2,D3,D4;
-- int LastDelta;
-- UInt32 Dif[11];
-- UInt32 ByteCount;
-- int LastChar;
--
-- Byte Decode(int &channelDelta, Byte delta);
--
-- void Init() { memset(this, 0, sizeof(*this)); }
--
--};
--
--const int kNumChanelsMax = 4;
--
--class CFilter2
--{
--public:
-- CFilter m_Filters[kNumChanelsMax];
-- int m_ChannelDelta;
-- int CurrentChannel;
--
-- void Init() { memset(this, 0, sizeof(*this)); }
-- Byte Decode(Byte delta)
-- {
-- return m_Filters[CurrentChannel].Decode(m_ChannelDelta, delta);
-- }
--
--};
--
--}
--
--typedef NBitm::CDecoder<CInBuffer> CBitDecoder;
--
--const int kNumHuffmanBits = 15;
--
--class CDecoder :
-- public ICompressCoder,
-- public ICompressSetDecoderProperties2,
-- public CMyUnknownImp
--{
-- CLzOutWindow m_OutWindowStream;
-- CBitDecoder m_InBitStream;
-- NHuffman::CDecoder<kNumHuffmanBits, kMainTableSize> m_MainDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kDistTableSize> m_DistDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kLenTableSize> m_LenDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kMMTableSize> m_MMDecoders[NMultimedia::kNumChanelsMax];
-- NHuffman::CDecoder<kNumHuffmanBits, kLevelTableSize> m_LevelDecoder;
--
-- bool m_AudioMode;
--
-- NMultimedia::CFilter2 m_MmFilter;
-- int m_NumChannels;
--
-- UInt32 m_RepDists[kNumRepDists];
-- UInt32 m_RepDistPtr;
--
-- UInt32 m_LastLength;
--
-- Byte m_LastLevels[kMaxTableSize];
--
-- UInt64 m_PackSize;
-- bool m_IsSolid;
--
-- void InitStructures();
-- UInt32 ReadBits(int numBits);
-- bool ReadTables();
-- bool ReadLastTables();
--
-- bool DecodeMm(UInt32 pos);
-- bool DecodeLz(Int32 pos);
--
-- HRESULT CodeReal(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
--
--public:
-- CDecoder();
--
-- MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2)
--
-- void ReleaseStreams()
-- {
-- m_OutWindowStream.ReleaseStream();
-- m_InBitStream.ReleaseStream();
-- }
--
-- STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
--
-- STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
--
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar3Decoder.cpp p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Decoder.cpp
---- p7zip_9.20.1/CPP/7zip/Compress/Rar3Decoder.cpp 2010-09-14 16:18:38.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Decoder.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,897 +0,0 @@
--// Rar3Decoder.cpp
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--/* This code uses Carryless rangecoder (1999): Dmitry Subbotin : Public domain */
--
--#include "StdAfx.h"
--
--#include "../../../C/Alloc.h"
--
--#include "../Common/StreamUtils.h"
--
--#include "Rar3Decoder.h"
--
--namespace NCompress {
--namespace NRar3 {
--
--static void *SzBigAlloc(void *, size_t size) { return BigAlloc(size); }
--static void SzBigFree(void *, void *address) { BigFree(address); }
--static ISzAlloc g_BigAlloc = { SzBigAlloc, SzBigFree };
--
--static const UInt32 kNumAlignReps = 15;
--
--static const UInt32 kSymbolReadTable = 256;
--static const UInt32 kSymbolRep = 259;
--static const UInt32 kSymbolLen2 = kSymbolRep + kNumReps;
--
--static const Byte kLenStart[kLenTableSize] = {0,1,2,3,4,5,6,7,8,10,12,14,16,20,24,28,32,40,48,56,64,80,96,112,128,160,192,224};
--static const Byte kLenDirectBits[kLenTableSize] = {0,0,0,0,0,0,0,0,1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5};
--
--static const Byte kDistDirectBits[kDistTableSize] =
-- {0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15,
-- 16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-- 18,18,18,18,18,18,18,18,18,18,18,18};
--
--static const Byte kLevelDirectBits[kLevelTableSize] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};
--
--static const Byte kLen2DistStarts[kNumLen2Symbols]={0,4,8,16,32,64,128,192};
--static const Byte kLen2DistDirectBits[kNumLen2Symbols]={2,2,3, 4, 5, 6, 6, 6};
--
--static const UInt32 kDistLimit3 = 0x2000 - 2;
--static const UInt32 kDistLimit4 = 0x40000 - 2;
--
--static const UInt32 kNormalMatchMinLen = 3;
--
--static const UInt32 kVmDataSizeMax = 1 << 16;
--static const UInt32 kVmCodeSizeMax = 1 << 16;
--
--extern "C" {
--
--static UInt32 Range_GetThreshold(void *pp, UInt32 total)
--{
-- CRangeDecoder *p = (CRangeDecoder *)pp;
-- return p->Code / (p->Range /= total);
--}
--
--static void Range_Decode(void *pp, UInt32 start, UInt32 size)
--{
-- CRangeDecoder *p = (CRangeDecoder *)pp;
-- start *= p->Range;
-- p->Low += start;
-- p->Code -= start;
-- p->Range *= size;
-- p->Normalize();
--}
--
--static UInt32 Range_DecodeBit(void *pp, UInt32 size0)
--{
-- CRangeDecoder *p = (CRangeDecoder *)pp;
-- if (p->Code / (p->Range >>= 14) < size0)
-- {
-- Range_Decode(p, 0, size0);
-- return 0;
-- }
-- else
-- {
-- Range_Decode(p, size0, (1 << 14) - size0);
-- return 1;
-- }
--}
--
--}
--
--CRangeDecoder::CRangeDecoder()
--{
-- s.GetThreshold = Range_GetThreshold;
-- s.Decode = Range_Decode;
-- s.DecodeBit = Range_DecodeBit;
--}
--
--CDecoder::CDecoder():
-- _window(0),
-- _winPos(0),
-- _wrPtr(0),
-- _lzSize(0),
-- _writtenFileSize(0),
-- _vmData(0),
-- _vmCode(0),
-- m_IsSolid(false)
--{
-- Ppmd7_Construct(&_ppmd);
--}
--
--CDecoder::~CDecoder()
--{
-- InitFilters();
-- ::MidFree(_vmData);
-- ::MidFree(_window);
-- Ppmd7_Free(&_ppmd, &g_BigAlloc);
--}
--
--HRESULT CDecoder::WriteDataToStream(const Byte *data, UInt32 size)
--{
-- return WriteStream(_outStream, data, size);
--}
--
--HRESULT CDecoder::WriteData(const Byte *data, UInt32 size)
--{
-- HRESULT res = S_OK;
-- if (_writtenFileSize < _unpackSize)
-- {
-- UInt32 curSize = size;
-- UInt64 remain = _unpackSize - _writtenFileSize;
-- if (remain < curSize)
-- curSize = (UInt32)remain;
-- res = WriteDataToStream(data, curSize);
-- }
-- _writtenFileSize += size;
-- return res;
--}
--
--HRESULT CDecoder::WriteArea(UInt32 startPtr, UInt32 endPtr)
--{
-- if (startPtr <= endPtr)
-- return WriteData(_window + startPtr, endPtr - startPtr);
-- RINOK(WriteData(_window + startPtr, kWindowSize - startPtr));
-- return WriteData(_window, endPtr);
--}
--
--void CDecoder::ExecuteFilter(int tempFilterIndex, NVm::CBlockRef &outBlockRef)
--{
-- CTempFilter *tempFilter = _tempFilters[tempFilterIndex];
-- tempFilter->InitR[6] = (UInt32)_writtenFileSize;
-- NVm::SetValue32(&tempFilter->GlobalData[0x24], (UInt32)_writtenFileSize);
-- NVm::SetValue32(&tempFilter->GlobalData[0x28], (UInt32)(_writtenFileSize >> 32));
-- CFilter *filter = _filters[tempFilter->FilterIndex];
-- _vm.Execute(filter, tempFilter, outBlockRef, filter->GlobalData);
-- delete tempFilter;
-- _tempFilters[tempFilterIndex] = 0;
--}
--
--HRESULT CDecoder::WriteBuf()
--{
-- UInt32 writtenBorder = _wrPtr;
-- UInt32 writeSize = (_winPos - writtenBorder) & kWindowMask;
-- for (int i = 0; i < _tempFilters.Size(); i++)
-- {
-- CTempFilter *filter = _tempFilters[i];
-- if (filter == NULL)
-- continue;
-- if (filter->NextWindow)
-- {
-- filter->NextWindow = false;
-- continue;
-- }
-- UInt32 blockStart = filter->BlockStart;
-- UInt32 blockSize = filter->BlockSize;
-- if (((blockStart - writtenBorder) & kWindowMask) < writeSize)
-- {
-- if (writtenBorder != blockStart)
-- {
-- RINOK(WriteArea(writtenBorder, blockStart));
-- writtenBorder = blockStart;
-- writeSize = (_winPos - writtenBorder) & kWindowMask;
-- }
-- if (blockSize <= writeSize)
-- {
-- UInt32 blockEnd = (blockStart + blockSize) & kWindowMask;
-- if (blockStart < blockEnd || blockEnd == 0)
-- _vm.SetMemory(0, _window + blockStart, blockSize);
-- else
-- {
-- UInt32 tailSize = kWindowSize - blockStart;
-- _vm.SetMemory(0, _window + blockStart, tailSize);
-- _vm.SetMemory(tailSize, _window, blockEnd);
-- }
-- NVm::CBlockRef outBlockRef;
-- ExecuteFilter(i, outBlockRef);
-- while (i + 1 < _tempFilters.Size())
-- {
-- CTempFilter *nextFilter = _tempFilters[i + 1];
-- if (nextFilter == NULL || nextFilter->BlockStart != blockStart ||
-- nextFilter->BlockSize != outBlockRef.Size || nextFilter->NextWindow)
-- break;
-- _vm.SetMemory(0, _vm.GetDataPointer(outBlockRef.Offset), outBlockRef.Size);
-- ExecuteFilter(++i, outBlockRef);
-- }
-- WriteDataToStream(_vm.GetDataPointer(outBlockRef.Offset), outBlockRef.Size);
-- _writtenFileSize += outBlockRef.Size;
-- writtenBorder = blockEnd;
-- writeSize = (_winPos - writtenBorder) & kWindowMask;
-- }
-- else
-- {
-- for (int j = i; j < _tempFilters.Size(); j++)
-- {
-- CTempFilter *filter = _tempFilters[j];
-- if (filter != NULL && filter->NextWindow)
-- filter->NextWindow = false;
-- }
-- _wrPtr = writtenBorder;
-- return S_OK; // check it
-- }
-- }
-- }
--
-- _wrPtr = _winPos;
-- return WriteArea(writtenBorder, _winPos);
--}
--
--void CDecoder::InitFilters()
--{
-- _lastFilter = 0;
-- int i;
-- for (i = 0; i < _tempFilters.Size(); i++)
-- delete _tempFilters[i];
-- _tempFilters.Clear();
-- for (i = 0; i < _filters.Size(); i++)
-- delete _filters[i];
-- _filters.Clear();
--}
--
--bool CDecoder::AddVmCode(UInt32 firstByte, UInt32 codeSize)
--{
-- CMemBitDecoder inp;
-- inp.Init(_vmData, codeSize);
--
-- UInt32 filterIndex;
-- if (firstByte & 0x80)
-- {
-- filterIndex = NVm::ReadEncodedUInt32(inp);
-- if (filterIndex == 0)
-- InitFilters();
-- else
-- filterIndex--;
-- }
-- else
-- filterIndex = _lastFilter;
-- if (filterIndex > (UInt32)_filters.Size())
-- return false;
-- _lastFilter = filterIndex;
-- bool newFilter = (filterIndex == (UInt32)_filters.Size());
--
-- CFilter *filter;
-- if (newFilter)
-- {
-- // check if too many filters
-- if (filterIndex > 1024)
-- return false;
-- filter = new CFilter;
-- _filters.Add(filter);
-- }
-- else
-- {
-- filter = _filters[filterIndex];
-- filter->ExecCount++;
-- }
--
-- int numEmptyItems = 0;
-- int i;
-- for (i = 0; i < _tempFilters.Size(); i++)
-- {
-- _tempFilters[i - numEmptyItems] = _tempFilters[i];
-- if (_tempFilters[i] == NULL)
-- numEmptyItems++;
-- if (numEmptyItems > 0)
-- _tempFilters[i] = NULL;
-- }
-- if (numEmptyItems == 0)
-- {
-- _tempFilters.Add(NULL);
-- numEmptyItems = 1;
-- }
-- CTempFilter *tempFilter = new CTempFilter;
-- _tempFilters[_tempFilters.Size() - numEmptyItems] = tempFilter;
-- tempFilter->FilterIndex = filterIndex;
-- tempFilter->ExecCount = filter->ExecCount;
--
-- UInt32 blockStart = NVm::ReadEncodedUInt32(inp);
-- if (firstByte & 0x40)
-- blockStart += 258;
-- tempFilter->BlockStart = (blockStart + _winPos) & kWindowMask;
-- if (firstByte & 0x20)
-- filter->BlockSize = NVm::ReadEncodedUInt32(inp);
-- tempFilter->BlockSize = filter->BlockSize;
-- tempFilter->NextWindow = _wrPtr != _winPos && ((_wrPtr - _winPos) & kWindowMask) <= blockStart;
--
-- memset(tempFilter->InitR, 0, sizeof(tempFilter->InitR));
-- tempFilter->InitR[3] = NVm::kGlobalOffset;
-- tempFilter->InitR[4] = tempFilter->BlockSize;
-- tempFilter->InitR[5] = tempFilter->ExecCount;
-- if (firstByte & 0x10)
-- {
-- UInt32 initMask = inp.ReadBits(NVm::kNumGpRegs);
-- for (int i = 0; i < NVm::kNumGpRegs; i++)
-- if (initMask & (1 << i))
-- tempFilter->InitR[i] = NVm::ReadEncodedUInt32(inp);
-- }
-- if (newFilter)
-- {
-- UInt32 vmCodeSize = NVm::ReadEncodedUInt32(inp);
-- if (vmCodeSize >= kVmCodeSizeMax || vmCodeSize == 0)
-- return false;
-- for (UInt32 i = 0; i < vmCodeSize; i++)
-- _vmCode[i] = (Byte)inp.ReadBits(8);
-- _vm.PrepareProgram(_vmCode, vmCodeSize, filter);
-- }
--
-- tempFilter->AllocateEmptyFixedGlobal();
--
-- Byte *globalData = &tempFilter->GlobalData[0];
-- for (i = 0; i < NVm::kNumGpRegs; i++)
-- NVm::SetValue32(&globalData[i * 4], tempFilter->InitR[i]);
-- NVm::SetValue32(&globalData[NVm::NGlobalOffset::kBlockSize], tempFilter->BlockSize);
-- NVm::SetValue32(&globalData[NVm::NGlobalOffset::kBlockPos], 0); // It was commented. why?
-- NVm::SetValue32(&globalData[NVm::NGlobalOffset::kExecCount], tempFilter->ExecCount);
--
-- if (firstByte & 8)
-- {
-- UInt32 dataSize = NVm::ReadEncodedUInt32(inp);
-- if (dataSize > NVm::kGlobalSize - NVm::kFixedGlobalSize)
-- return false;
-- CRecordVector<Byte> &globalData = tempFilter->GlobalData;
-- int requredSize = (int)(dataSize + NVm::kFixedGlobalSize);
-- if (globalData.Size() < requredSize)
-- {
-- globalData.Reserve(requredSize);
-- for (; globalData.Size() < requredSize; i++)
-- globalData.Add(0);
-- }
-- for (UInt32 i = 0; i < dataSize; i++)
-- globalData[NVm::kFixedGlobalSize + i] = (Byte)inp.ReadBits(8);
-- }
-- return true;
--}
--
--bool CDecoder::ReadVmCodeLZ()
--{
-- UInt32 firstByte = ReadBits(8);
-- UInt32 length = (firstByte & 7) + 1;
-- if (length == 7)
-- length = ReadBits(8) + 7;
-- else if (length == 8)
-- length = ReadBits(16);
-- if (length > kVmDataSizeMax)
-- return false;
-- for (UInt32 i = 0; i < length; i++)
-- _vmData[i] = (Byte)ReadBits(8);
-- return AddVmCode(firstByte, length);
--}
--
--bool CDecoder::ReadVmCodePPM()
--{
-- int firstByte = DecodePpmSymbol();
-- if (firstByte < 0)
-- return false;
-- UInt32 length = (firstByte & 7) + 1;
-- if (length == 7)
-- {
-- int b1 = DecodePpmSymbol();
-- if (b1 < 0)
-- return false;
-- length = b1 + 7;
-- }
-- else if (length == 8)
-- {
-- int b1 = DecodePpmSymbol();
-- if (b1 < 0)
-- return false;
-- int b2 = DecodePpmSymbol();
-- if (b2 < 0)
-- return false;
-- length = b1 * 256 + b2;
-- }
-- if (length > kVmDataSizeMax)
-- return false;
-- for (UInt32 i = 0; i < length; i++)
-- {
-- int b = DecodePpmSymbol();
-- if (b < 0)
-- return false;
-- _vmData[i] = (Byte)b;
-- }
-- return AddVmCode(firstByte, length);
--}
--
--#define RIF(x) { if (!(x)) return S_FALSE; }
--
--UInt32 CDecoder::ReadBits(int numBits) { return m_InBitStream.bitDecoder.ReadBits(numBits); }
--
--/////////////////////////////////////////////////
--// PPM
--
--HRESULT CDecoder::InitPPM()
--{
-- Byte maxOrder = (Byte)ReadBits(7);
--
-- bool reset = ((maxOrder & 0x20) != 0);
-- int maxMB = 0;
-- if (reset)
-- maxMB = (Byte)ReadBits(8);
-- else
-- {
-- if (PpmError || !Ppmd7_WasAllocated(&_ppmd))
-- return S_FALSE;
-- }
-- if (maxOrder & 0x40)
-- PpmEscChar = (Byte)ReadBits(8);
-- m_InBitStream.InitRangeCoder();
-- /*
-- if (m_InBitStream.m_BitPos != 0)
-- return S_FALSE;
-- */
-- if (reset)
-- {
-- PpmError = true;
-- maxOrder = (maxOrder & 0x1F) + 1;
-- if (maxOrder > 16)
-- maxOrder = 16 + (maxOrder - 16) * 3;
-- if (maxOrder == 1)
-- {
-- Ppmd7_Free(&_ppmd, &g_BigAlloc);
-- return S_FALSE;
-- }
-- if (!Ppmd7_Alloc(&_ppmd, (maxMB + 1) << 20, &g_BigAlloc))
-- return E_OUTOFMEMORY;
-- Ppmd7_Init(&_ppmd, maxOrder);
-- PpmError = false;
-- }
-- return S_OK;
--}
--
--int CDecoder::DecodePpmSymbol() { return Ppmd7_DecodeSymbol(&_ppmd, &m_InBitStream.s); }
--
--HRESULT CDecoder::DecodePPM(Int32 num, bool &keepDecompressing)
--{
-- keepDecompressing = false;
-- if (PpmError)
-- return S_FALSE;
-- do
-- {
-- if (((_wrPtr - _winPos) & kWindowMask) < 260 && _wrPtr != _winPos)
-- {
-- RINOK(WriteBuf());
-- if (_writtenFileSize > _unpackSize)
-- {
-- keepDecompressing = false;
-- return S_OK;
-- }
-- }
-- int c = DecodePpmSymbol();
-- if (c < 0)
-- {
-- PpmError = true;
-- return S_FALSE;
-- }
-- if (c == PpmEscChar)
-- {
-- int nextCh = DecodePpmSymbol();
-- if (nextCh < 0)
-- {
-- PpmError = true;
-- return S_FALSE;
-- }
-- if (nextCh == 0)
-- return ReadTables(keepDecompressing);
-- if (nextCh == 2 || nextCh == -1)
-- return S_OK;
-- if (nextCh == 3)
-- {
-- if (!ReadVmCodePPM())
-- {
-- PpmError = true;
-- return S_FALSE;
-- }
-- continue;
-- }
-- if (nextCh == 4 || nextCh == 5)
-- {
-- UInt32 distance = 0;
-- UInt32 length = 4;
-- if (nextCh == 4)
-- {
-- for (int i = 0; i < 3; i++)
-- {
-- int c = DecodePpmSymbol();
-- if (c < 0)
-- {
-- PpmError = true;
-- return S_FALSE;
-- }
-- distance = (distance << 8) + (Byte)c;
-- }
-- distance++;
-- length += 28;
-- }
-- int c = DecodePpmSymbol();
-- if (c < 0)
-- {
-- PpmError = true;
-- return S_FALSE;
-- }
-- length += c;
-- if (distance >= _lzSize)
-- return S_FALSE;
-- CopyBlock(distance, length);
-- num -= (Int32)length;
-- continue;
-- }
-- }
-- PutByte((Byte)c);
-- num--;
-- }
-- while (num >= 0);
-- keepDecompressing = true;
-- return S_OK;
--}
--
--/////////////////////////////////////////////////
--// LZ
--
--HRESULT CDecoder::ReadTables(bool &keepDecompressing)
--{
-- keepDecompressing = true;
-- ReadBits((8 - m_InBitStream.bitDecoder.GetBitPosition()) & 7);
-- if (ReadBits(1) != 0)
-- {
-- _lzMode = false;
-- return InitPPM();
-- }
--
-- _lzMode = true;
-- PrevAlignBits = 0;
-- PrevAlignCount = 0;
--
-- Byte levelLevels[kLevelTableSize];
-- Byte newLevels[kTablesSizesSum];
--
-- if (ReadBits(1) == 0)
-- memset(m_LastLevels, 0, kTablesSizesSum);
--
-- int i;
-- for (i = 0; i < kLevelTableSize; i++)
-- {
-- UInt32 length = ReadBits(4);
-- if (length == 15)
-- {
-- UInt32 zeroCount = ReadBits(4);
-- if (zeroCount != 0)
-- {
-- zeroCount += 2;
-- while (zeroCount-- > 0 && i < kLevelTableSize)
-- levelLevels[i++]=0;
-- i--;
-- continue;
-- }
-- }
-- levelLevels[i] = (Byte)length;
-- }
-- RIF(m_LevelDecoder.SetCodeLengths(levelLevels));
-- i = 0;
-- while (i < kTablesSizesSum)
-- {
-- UInt32 number = m_LevelDecoder.DecodeSymbol(&m_InBitStream.bitDecoder);
-- if (number < 16)
-- {
-- newLevels[i] = Byte((number + m_LastLevels[i]) & 15);
-- i++;
-- }
-- else if (number > kLevelTableSize)
-- return S_FALSE;
-- else
-- {
-- int num;
-- if (((number - 16) & 1) == 0)
-- num = ReadBits(3) + 3;
-- else
-- num = ReadBits(7) + 11;
-- if (number < 18)
-- {
-- if (i == 0)
-- return S_FALSE;
-- for (; num > 0 && i < kTablesSizesSum; num--, i++)
-- newLevels[i] = newLevels[i - 1];
-- }
-- else
-- {
-- for (; num > 0 && i < kTablesSizesSum; num--)
-- newLevels[i++] = 0;
-- }
-- }
-- }
-- TablesRead = true;
--
-- // original code has check here:
-- /*
-- if (InAddr > ReadTop)
-- {
-- keepDecompressing = false;
-- return true;
-- }
-- */
--
-- RIF(m_MainDecoder.SetCodeLengths(&newLevels[0]));
-- RIF(m_DistDecoder.SetCodeLengths(&newLevels[kMainTableSize]));
-- RIF(m_AlignDecoder.SetCodeLengths(&newLevels[kMainTableSize + kDistTableSize]));
-- RIF(m_LenDecoder.SetCodeLengths(&newLevels[kMainTableSize + kDistTableSize + kAlignTableSize]));
--
-- memcpy(m_LastLevels, newLevels, kTablesSizesSum);
-- return S_OK;
--}
--
--class CCoderReleaser
--{
-- CDecoder *m_Coder;
--public:
-- CCoderReleaser(CDecoder *coder): m_Coder(coder) {}
-- ~CCoderReleaser()
-- {
-- m_Coder->ReleaseStreams();
-- }
--};
--
--HRESULT CDecoder::ReadEndOfBlock(bool &keepDecompressing)
--{
-- if (ReadBits(1) != 0)
-- {
-- // old file
-- TablesRead = false;
-- return ReadTables(keepDecompressing);
-- }
-- // new file
-- keepDecompressing = false;
-- TablesRead = (ReadBits(1) == 0);
-- return S_OK;
--}
--
--UInt32 kDistStart[kDistTableSize];
--
--class CDistInit
--{
--public:
-- CDistInit() { Init(); }
-- void Init()
-- {
-- UInt32 start = 0;
-- for (UInt32 i = 0; i < kDistTableSize; i++)
-- {
-- kDistStart[i] = start;
-- start += (1 << kDistDirectBits[i]);
-- }
-- }
--} g_DistInit;
--
--HRESULT CDecoder::DecodeLZ(bool &keepDecompressing)
--{
-- UInt32 rep0 = _reps[0];
-- UInt32 rep1 = _reps[1];
-- UInt32 rep2 = _reps[2];
-- UInt32 rep3 = _reps[3];
-- UInt32 length = _lastLength;
-- for (;;)
-- {
-- if (((_wrPtr - _winPos) & kWindowMask) < 260 && _wrPtr != _winPos)
-- {
-- RINOK(WriteBuf());
-- if (_writtenFileSize > _unpackSize)
-- {
-- keepDecompressing = false;
-- return S_OK;
-- }
-- }
-- UInt32 number = m_MainDecoder.DecodeSymbol(&m_InBitStream.bitDecoder);
-- if (number < 256)
-- {
-- PutByte((Byte)number);
-- continue;
-- }
-- else if (number == kSymbolReadTable)
-- {
-- RINOK(ReadEndOfBlock(keepDecompressing));
-- break;
-- }
-- else if (number == 257)
-- {
-- if (!ReadVmCodeLZ())
-- return S_FALSE;
-- continue;
-- }
-- else if (number == 258)
-- {
-- if (length == 0)
-- return S_FALSE;
-- }
-- else if (number < kSymbolRep + 4)
-- {
-- if (number != kSymbolRep)
-- {
-- UInt32 distance;
-- if (number == kSymbolRep + 1)
-- distance = rep1;
-- else
-- {
-- if (number == kSymbolRep + 2)
-- distance = rep2;
-- else
-- {
-- distance = rep3;
-- rep3 = rep2;
-- }
-- rep2 = rep1;
-- }
-- rep1 = rep0;
-- rep0 = distance;
-- }
--
-- UInt32 number = m_LenDecoder.DecodeSymbol(&m_InBitStream.bitDecoder);
-- if (number >= kLenTableSize)
-- return S_FALSE;
-- length = 2 + kLenStart[number] + m_InBitStream.bitDecoder.ReadBits(kLenDirectBits[number]);
-- }
-- else
-- {
-- rep3 = rep2;
-- rep2 = rep1;
-- rep1 = rep0;
-- if (number < 271)
-- {
-- number -= 263;
-- rep0 = kLen2DistStarts[number] + m_InBitStream.bitDecoder.ReadBits(kLen2DistDirectBits[number]);
-- length = 2;
-- }
-- else if (number < 299)
-- {
-- number -= 271;
-- length = kNormalMatchMinLen + (UInt32)kLenStart[number] + m_InBitStream.bitDecoder.ReadBits(kLenDirectBits[number]);
-- UInt32 number = m_DistDecoder.DecodeSymbol(&m_InBitStream.bitDecoder);
-- if (number >= kDistTableSize)
-- return S_FALSE;
-- rep0 = kDistStart[number];
-- int numBits = kDistDirectBits[number];
-- if (number >= (kNumAlignBits * 2) + 2)
-- {
-- if (numBits > kNumAlignBits)
-- rep0 += (m_InBitStream.bitDecoder.ReadBits(numBits - kNumAlignBits) << kNumAlignBits);
-- if (PrevAlignCount > 0)
-- {
-- PrevAlignCount--;
-- rep0 += PrevAlignBits;
-- }
-- else
-- {
-- UInt32 number = m_AlignDecoder.DecodeSymbol(&m_InBitStream.bitDecoder);
-- if (number < (1 << kNumAlignBits))
-- {
-- rep0 += number;
-- PrevAlignBits = number;
-- }
-- else if (number == (1 << kNumAlignBits))
-- {
-- PrevAlignCount = kNumAlignReps;
-- rep0 += PrevAlignBits;
-- }
-- else
-- return S_FALSE;
-- }
-- }
-- else
-- rep0 += m_InBitStream.bitDecoder.ReadBits(numBits);
-- length += ((kDistLimit4 - rep0) >> 31) + ((kDistLimit3 - rep0) >> 31);
-- }
-- else
-- return S_FALSE;
-- }
-- if (rep0 >= _lzSize)
-- return S_FALSE;
-- CopyBlock(rep0, length);
-- }
-- _reps[0] = rep0;
-- _reps[1] = rep1;
-- _reps[2] = rep2;
-- _reps[3] = rep3;
-- _lastLength = length;
--
-- return S_OK;
--}
--
--HRESULT CDecoder::CodeReal(ICompressProgressInfo *progress)
--{
-- _writtenFileSize = 0;
-- if (!m_IsSolid)
-- {
-- _lzSize = 0;
-- _winPos = 0;
-- _wrPtr = 0;
-- for (int i = 0; i < kNumReps; i++)
-- _reps[i] = 0;
-- _lastLength = 0;
-- memset(m_LastLevels, 0, kTablesSizesSum);
-- TablesRead = false;
-- PpmEscChar = 2;
-- PpmError = true;
-- InitFilters();
-- }
-- if (!m_IsSolid || !TablesRead)
-- {
-- bool keepDecompressing;
-- RINOK(ReadTables(keepDecompressing));
-- if (!keepDecompressing)
-- return S_OK;
-- }
--
-- for (;;)
-- {
-- bool keepDecompressing;
-- if (_lzMode)
-- {
-- RINOK(DecodeLZ(keepDecompressing))
-- }
-- else
-- {
-- RINOK(DecodePPM(1 << 18, keepDecompressing))
-- }
-- UInt64 packSize = m_InBitStream.bitDecoder.GetProcessedSize();
-- RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
-- if (!keepDecompressing)
-- break;
-- }
-- RINOK(WriteBuf());
-- UInt64 packSize = m_InBitStream.bitDecoder.GetProcessedSize();
-- RINOK(progress->SetRatioInfo(&packSize, &_writtenFileSize));
-- if (_writtenFileSize < _unpackSize)
-- return S_FALSE;
-- return S_OK;
--}
--
--STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress)
--{
-- try
-- {
-- if (inSize == NULL || outSize == NULL)
-- return E_INVALIDARG;
--
-- if (_vmData == 0)
-- {
-- _vmData = (Byte *)::MidAlloc(kVmDataSizeMax + kVmCodeSizeMax);
-- if (_vmData == 0)
-- return E_OUTOFMEMORY;
-- _vmCode = _vmData + kVmDataSizeMax;
-- }
--
-- if (_window == 0)
-- {
-- _window = (Byte *)::MidAlloc(kWindowSize);
-- if (_window == 0)
-- return E_OUTOFMEMORY;
-- }
-- if (!m_InBitStream.bitDecoder.Create(1 << 20))
-- return E_OUTOFMEMORY;
-- if (!_vm.Create())
-- return E_OUTOFMEMORY;
--
--
-- m_InBitStream.bitDecoder.SetStream(inStream);
-- m_InBitStream.bitDecoder.Init();
-- _outStream = outStream;
--
-- CCoderReleaser coderReleaser(this);
-- _unpackSize = *outSize;
-- return CodeReal(progress);
-- }
-- catch(const CInBufferException &e) { return e.ErrorCode; }
-- catch(...) { return S_FALSE; }
-- // CNewException is possible here. But probably CNewException is caused
-- // by error in data stream.
--}
--
--STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
--{
-- if (size < 1)
-- return E_INVALIDARG;
-- m_IsSolid = (data[0] != 0);
-- return S_OK;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar3Decoder.h p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Decoder.h
---- p7zip_9.20.1/CPP/7zip/Compress/Rar3Decoder.h 2010-03-16 16:08:18.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Decoder.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,267 +0,0 @@
--// Rar3Decoder.h
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--/* This code uses Carryless rangecoder (1999): Dmitry Subbotin : Public domain */
--
--#ifndef __COMPRESS_RAR3_DECODER_H
--#define __COMPRESS_RAR3_DECODER_H
--
--#include "../../../C/Ppmd7.h"
--
--#include "../../Common/MyCom.h"
--
--#include "../ICoder.h"
--
--#include "../Common/InBuffer.h"
--
--#include "BitmDecoder.h"
--#include "HuffmanDecoder.h"
--#include "Rar3Vm.h"
--
--namespace NCompress {
--namespace NRar3 {
--
--const UInt32 kWindowSize = 1 << 22;
--const UInt32 kWindowMask = (kWindowSize - 1);
--
--const UInt32 kNumReps = 4;
--const UInt32 kNumLen2Symbols = 8;
--const UInt32 kLenTableSize = 28;
--const UInt32 kMainTableSize = 256 + 1 + 1 + 1 + kNumReps + kNumLen2Symbols + kLenTableSize;
--const UInt32 kDistTableSize = 60;
--
--const int kNumAlignBits = 4;
--const UInt32 kAlignTableSize = (1 << kNumAlignBits) + 1;
--
--const UInt32 kLevelTableSize = 20;
--
--const UInt32 kTablesSizesSum = kMainTableSize + kDistTableSize + kAlignTableSize + kLenTableSize;
--
--class CBitDecoder
--{
-- UInt32 m_Value;
-- unsigned m_BitPos;
--public:
-- CInBuffer m_Stream;
-- bool Create(UInt32 bufferSize) { return m_Stream.Create(bufferSize); }
-- void SetStream(ISequentialInStream *inStream) { m_Stream.SetStream(inStream);}
-- void ReleaseStream() { m_Stream.ReleaseStream();}
--
-- void Init()
-- {
-- m_Stream.Init();
-- m_BitPos = 0;
-- m_Value = 0;
-- }
--
-- UInt64 GetProcessedSize() const { return m_Stream.GetProcessedSize() - (m_BitPos) / 8; }
-- UInt32 GetBitPosition() const { return ((8 - m_BitPos) & 7); }
--
-- UInt32 GetValue(unsigned numBits)
-- {
-- if (m_BitPos < numBits)
-- {
-- m_BitPos += 8;
-- m_Value = (m_Value << 8) | m_Stream.ReadByte();
-- if (m_BitPos < numBits)
-- {
-- m_BitPos += 8;
-- m_Value = (m_Value << 8) | m_Stream.ReadByte();
-- }
-- }
-- return m_Value >> (m_BitPos - numBits);
-- }
--
-- void MovePos(unsigned numBits)
-- {
-- m_BitPos -= numBits;
-- m_Value = m_Value & ((1 << m_BitPos) - 1);
-- }
--
-- UInt32 ReadBits(unsigned numBits)
-- {
-- UInt32 res = GetValue(numBits);
-- MovePos(numBits);
-- return res;
-- }
--};
--
--const UInt32 kTopValue = (1 << 24);
--const UInt32 kBot = (1 << 15);
--
--struct CRangeDecoder
--{
-- IPpmd7_RangeDec s;
-- UInt32 Range;
-- UInt32 Code;
-- UInt32 Low;
-- CBitDecoder bitDecoder;
-- SRes Res;
--
--public:
-- void InitRangeCoder()
-- {
-- Code = 0;
-- Low = 0;
-- Range = 0xFFFFFFFF;
-- for (int i = 0; i < 4; i++)
-- Code = (Code << 8) | bitDecoder.ReadBits(8);
-- }
--
-- void Normalize()
-- {
-- while ((Low ^ (Low + Range)) < kTopValue ||
-- Range < kBot && ((Range = (0 - Low) & (kBot - 1)), 1))
-- {
-- Code = (Code << 8) | bitDecoder.m_Stream.ReadByte();
-- Range <<= 8;
-- Low <<= 8;
-- }
-- }
--
-- CRangeDecoder();
--};
--
--struct CFilter: public NVm::CProgram
--{
-- CRecordVector<Byte> GlobalData;
-- UInt32 BlockStart;
-- UInt32 BlockSize;
-- UInt32 ExecCount;
-- CFilter(): BlockStart(0), BlockSize(0), ExecCount(0) {}
--};
--
--struct CTempFilter: public NVm::CProgramInitState
--{
-- UInt32 BlockStart;
-- UInt32 BlockSize;
-- UInt32 ExecCount;
-- bool NextWindow;
--
-- UInt32 FilterIndex;
--};
--
--const int kNumHuffmanBits = 15;
--
--class CDecoder:
-- public ICompressCoder,
-- public ICompressSetDecoderProperties2,
-- public CMyUnknownImp
--{
-- CRangeDecoder m_InBitStream;
-- Byte *_window;
-- UInt32 _winPos;
-- UInt32 _wrPtr;
-- UInt64 _lzSize;
-- UInt64 _unpackSize;
-- UInt64 _writtenFileSize; // if it's > _unpackSize, then _unpackSize only written
-- CMyComPtr<ISequentialOutStream> _outStream;
-- NHuffman::CDecoder<kNumHuffmanBits, kMainTableSize> m_MainDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kDistTableSize> m_DistDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kAlignTableSize> m_AlignDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kLenTableSize> m_LenDecoder;
-- NHuffman::CDecoder<kNumHuffmanBits, kLevelTableSize> m_LevelDecoder;
--
-- UInt32 _reps[kNumReps];
-- UInt32 _lastLength;
--
-- Byte m_LastLevels[kTablesSizesSum];
--
-- Byte *_vmData;
-- Byte *_vmCode;
-- NVm::CVm _vm;
-- CRecordVector<CFilter *> _filters;
-- CRecordVector<CTempFilter *> _tempFilters;
-- UInt32 _lastFilter;
--
-- bool m_IsSolid;
--
-- bool _lzMode;
--
-- UInt32 PrevAlignBits;
-- UInt32 PrevAlignCount;
--
-- bool TablesRead;
--
-- CPpmd7 _ppmd;
-- int PpmEscChar;
-- bool PpmError;
--
-- HRESULT WriteDataToStream(const Byte *data, UInt32 size);
-- HRESULT WriteData(const Byte *data, UInt32 size);
-- HRESULT WriteArea(UInt32 startPtr, UInt32 endPtr);
-- void ExecuteFilter(int tempFilterIndex, NVm::CBlockRef &outBlockRef);
-- HRESULT WriteBuf();
--
-- void InitFilters();
-- bool AddVmCode(UInt32 firstByte, UInt32 codeSize);
-- bool ReadVmCodeLZ();
-- bool ReadVmCodePPM();
--
-- UInt32 ReadBits(int numBits);
--
-- HRESULT InitPPM();
-- int DecodePpmSymbol();
-- HRESULT DecodePPM(Int32 num, bool &keepDecompressing);
--
-- HRESULT ReadTables(bool &keepDecompressing);
-- HRESULT ReadEndOfBlock(bool &keepDecompressing);
-- HRESULT DecodeLZ(bool &keepDecompressing);
-- HRESULT CodeReal(ICompressProgressInfo *progress);
--public:
-- CDecoder();
-- ~CDecoder();
--
-- MY_UNKNOWN_IMP1(ICompressSetDecoderProperties2)
--
-- void ReleaseStreams()
-- {
-- _outStream.Release();
-- m_InBitStream.bitDecoder.ReleaseStream();
-- }
--
-- STDMETHOD(Code)(ISequentialInStream *inStream, ISequentialOutStream *outStream,
-- const UInt64 *inSize, const UInt64 *outSize, ICompressProgressInfo *progress);
--
-- STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
--
-- void CopyBlock(UInt32 distance, UInt32 len)
-- {
-- _lzSize += len;
-- UInt32 pos = (_winPos - distance - 1) & kWindowMask;
-- Byte *window = _window;
-- UInt32 winPos = _winPos;
-- if (kWindowSize - winPos > len && kWindowSize - pos > len)
-- {
-- const Byte *src = window + pos;
-- Byte *dest = window + winPos;
-- _winPos += len;
-- do
-- *dest++ = *src++;
-- while(--len != 0);
-- return;
-- }
-- do
-- {
-- window[winPos] = window[pos];
-- winPos = (winPos + 1) & kWindowMask;
-- pos = (pos + 1) & kWindowMask;
-- }
-- while(--len != 0);
-- _winPos = winPos;
-- }
--
-- void PutByte(Byte b)
-- {
-- _window[_winPos] = b;
-- _winPos = (_winPos + 1) & kWindowMask;
-- _lzSize++;
-- }
--
--
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar3Vm.cpp p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Vm.cpp
---- p7zip_9.20.1/CPP/7zip/Compress/Rar3Vm.cpp 2010-10-20 01:56:07.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Vm.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,1091 +0,0 @@
--// Rar3Vm.cpp
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--/*
--Note:
-- Due to performance considerations Rar VM may set Flags C incorrectly
-- for some operands (SHL x, 0, ... ).
-- Check implementation of concrete VM command
-- to see if it sets flags right.
--*/
--
--#include "StdAfx.h"
--
--#include "../../../C/7zCrc.h"
--#include "../../../C/Alloc.h"
--
--#include "Rar3Vm.h"
--
--namespace NCompress {
--namespace NRar3 {
--
--UInt32 CMemBitDecoder::ReadBits(int numBits)
--{
-- UInt32 res = 0;
-- for (;;)
-- {
-- Byte b = _bitPos < _bitSize ? _data[_bitPos >> 3] : 0;
-- int avail = (int)(8 - (_bitPos & 7));
-- if (numBits <= avail)
-- {
-- _bitPos += numBits;
-- return res | (b >> (avail - numBits)) & ((1 << numBits) - 1);
-- }
-- numBits -= avail;
-- res |= (UInt32)(b & ((1 << avail) - 1)) << numBits;
-- _bitPos += avail;
-- }
--}
--
--UInt32 CMemBitDecoder::ReadBit() { return ReadBits(1); }
--
--namespace NVm {
--
--static const UInt32 kStackRegIndex = kNumRegs - 1;
--
--static const UInt32 FLAG_C = 1;
--static const UInt32 FLAG_Z = 2;
--static const UInt32 FLAG_S = 0x80000000;
--
--static const Byte CF_OP0 = 0;
--static const Byte CF_OP1 = 1;
--static const Byte CF_OP2 = 2;
--static const Byte CF_OPMASK = 3;
--static const Byte CF_BYTEMODE = 4;
--static const Byte CF_JUMP = 8;
--static const Byte CF_PROC = 16;
--static const Byte CF_USEFLAGS = 32;
--static const Byte CF_CHFLAGS = 64;
--
--static Byte kCmdFlags[]=
--{
-- /* CMD_MOV */ CF_OP2 | CF_BYTEMODE,
-- /* CMD_CMP */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_ADD */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_SUB */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_JZ */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_JNZ */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_INC */ CF_OP1 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_DEC */ CF_OP1 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_JMP */ CF_OP1 | CF_JUMP,
-- /* CMD_XOR */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_AND */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_OR */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_TEST */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_JS */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_JNS */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_JB */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_JBE */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_JA */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_JAE */ CF_OP1 | CF_JUMP | CF_USEFLAGS,
-- /* CMD_PUSH */ CF_OP1,
-- /* CMD_POP */ CF_OP1,
-- /* CMD_CALL */ CF_OP1 | CF_PROC,
-- /* CMD_RET */ CF_OP0 | CF_PROC,
-- /* CMD_NOT */ CF_OP1 | CF_BYTEMODE,
-- /* CMD_SHL */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_SHR */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_SAR */ CF_OP2 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_NEG */ CF_OP1 | CF_BYTEMODE | CF_CHFLAGS,
-- /* CMD_PUSHA */ CF_OP0,
-- /* CMD_POPA */ CF_OP0,
-- /* CMD_PUSHF */ CF_OP0 | CF_USEFLAGS,
-- /* CMD_POPF */ CF_OP0 | CF_CHFLAGS,
-- /* CMD_MOVZX */ CF_OP2,
-- /* CMD_MOVSX */ CF_OP2,
-- /* CMD_XCHG */ CF_OP2 | CF_BYTEMODE,
-- /* CMD_MUL */ CF_OP2 | CF_BYTEMODE,
-- /* CMD_DIV */ CF_OP2 | CF_BYTEMODE,
-- /* CMD_ADC */ CF_OP2 | CF_BYTEMODE | CF_USEFLAGS | CF_CHFLAGS ,
-- /* CMD_SBB */ CF_OP2 | CF_BYTEMODE | CF_USEFLAGS | CF_CHFLAGS ,
-- /* CMD_PRINT */ CF_OP0
--};
--
--CVm::CVm(): Mem(NULL) {}
--
--bool CVm::Create()
--{
-- if (Mem == NULL)
-- Mem = (Byte *)::MyAlloc(kSpaceSize + 4);
-- return (Mem != NULL);
--}
--
--CVm::~CVm()
--{
-- ::MyFree(Mem);
--}
--
--// CVm::Execute can change CProgram object: it clears progarm if VM returns error.
--
--bool CVm::Execute(CProgram *prg, const CProgramInitState *initState,
-- CBlockRef &outBlockRef, CRecordVector<Byte> &outGlobalData)
--{
-- memcpy(R, initState->InitR, sizeof(initState->InitR));
-- R[kStackRegIndex] = kSpaceSize;
-- R[kNumRegs] = 0;
-- Flags = 0;
--
-- UInt32 globalSize = MyMin((UInt32)initState->GlobalData.Size(), kGlobalSize);
-- if (globalSize != 0)
-- memcpy(Mem + kGlobalOffset, &initState->GlobalData[0], globalSize);
-- UInt32 staticSize = MyMin((UInt32)prg->StaticData.Size(), kGlobalSize - globalSize);
-- if (staticSize != 0)
-- memcpy(Mem + kGlobalOffset + globalSize, &prg->StaticData[0], staticSize);
--
-- bool res = true;
-- #ifdef RARVM_STANDARD_FILTERS
-- if (prg->StandardFilterIndex >= 0)
-- ExecuteStandardFilter(prg->StandardFilterIndex);
-- else
-- #endif
-- {
-- res = ExecuteCode(prg);
-- if (!res)
-- prg->Commands[0].OpCode = CMD_RET;
-- }
-- UInt32 newBlockPos = GetFixedGlobalValue32(NGlobalOffset::kBlockPos) & kSpaceMask;
-- UInt32 newBlockSize = GetFixedGlobalValue32(NGlobalOffset::kBlockSize) & kSpaceMask;
-- if (newBlockPos + newBlockSize >= kSpaceSize)
-- newBlockPos = newBlockSize = 0;
-- outBlockRef.Offset = newBlockPos;
-- outBlockRef.Size = newBlockSize;
--
-- outGlobalData.Clear();
-- UInt32 dataSize = GetFixedGlobalValue32(NGlobalOffset::kGlobalMemOutSize);
-- dataSize = MyMin(dataSize, kGlobalSize - kFixedGlobalSize);
-- if (dataSize != 0)
-- {
-- dataSize += kFixedGlobalSize;
-- outGlobalData.Reserve(dataSize);
-- for (UInt32 i = 0; i < dataSize; i++)
-- outGlobalData.Add(Mem[kGlobalOffset + i]);
-- }
-- return res;
--}
--
--
--#define SET_IP(IP) \
-- if ((IP) >= numCommands) return true; \
-- if (--maxOpCount <= 0) return false; \
-- cmd = commands + (IP);
--
--#define GET_FLAG_S_B(res) (((res) & 0x80) ? FLAG_S : 0)
--#define SET_IP_OP1 { UInt32 val = GetOperand32(&cmd->Op1); SET_IP(val); }
--#define FLAGS_UPDATE_SZ Flags = res == 0 ? FLAG_Z : res & FLAG_S
--#define FLAGS_UPDATE_SZ_B Flags = (res & 0xFF) == 0 ? FLAG_Z : GET_FLAG_S_B(res)
--
--UInt32 CVm::GetOperand32(const COperand *op) const
--{
-- switch(op->Type)
-- {
-- case OP_TYPE_REG: return R[op->Data];
-- case OP_TYPE_REGMEM: return GetValue32(&Mem[(op->Base + R[op->Data]) & kSpaceMask]);
-- default: return op->Data;
-- }
--}
--
--void CVm::SetOperand32(const COperand *op, UInt32 val)
--{
-- switch(op->Type)
-- {
-- case OP_TYPE_REG: R[op->Data] = val; return;
-- case OP_TYPE_REGMEM: SetValue32(&Mem[(op->Base + R[op->Data]) & kSpaceMask], val); return;
-- }
--}
--
--Byte CVm::GetOperand8(const COperand *op) const
--{
-- switch(op->Type)
-- {
-- case OP_TYPE_REG: return (Byte)R[op->Data];
-- case OP_TYPE_REGMEM: return Mem[(op->Base + R[op->Data]) & kSpaceMask];;
-- default: return (Byte)op->Data;
-- }
--}
--
--void CVm::SetOperand8(const COperand *op, Byte val)
--{
-- switch(op->Type)
-- {
-- case OP_TYPE_REG: R[op->Data] = (R[op->Data] & 0xFFFFFF00) | val; return;
-- case OP_TYPE_REGMEM: Mem[(op->Base + R[op->Data]) & kSpaceMask] = val; return;
-- }
--}
--
--UInt32 CVm::GetOperand(bool byteMode, const COperand *op) const
--{
-- if (byteMode)
-- return GetOperand8(op);
-- return GetOperand32(op);
--}
--
--void CVm::SetOperand(bool byteMode, const COperand *op, UInt32 val)
--{
-- if (byteMode)
-- SetOperand8(op, (Byte)(val & 0xFF));
-- else
-- SetOperand32(op, val);
--}
--
--bool CVm::ExecuteCode(const CProgram *prg)
--{
-- Int32 maxOpCount = 25000000;
-- const CCommand *commands = &prg->Commands[0];
-- const CCommand *cmd = commands;
-- UInt32 numCommands = prg->Commands.Size();
-- for (;;)
-- {
-- switch(cmd->OpCode)
-- {
-- #ifndef RARVM_NO_VM
--
-- case CMD_MOV:
-- SetOperand32(&cmd->Op1, GetOperand32(&cmd->Op2));
-- break;
-- case CMD_MOVB:
-- SetOperand8(&cmd->Op1, GetOperand8(&cmd->Op2));
-- break;
-- case CMD_CMP:
-- {
-- UInt32 v1 = GetOperand32(&cmd->Op1);
-- UInt32 res = v1 - GetOperand32(&cmd->Op2);
-- Flags = res == 0 ? FLAG_Z : (res > v1) | (res & FLAG_S);
-- }
-- break;
-- case CMD_CMPB:
-- {
-- Byte v1 = GetOperand8(&cmd->Op1);
-- Byte res = v1 - GetOperand8(&cmd->Op2);
-- res &= 0xFF;
-- Flags = res == 0 ? FLAG_Z : (res > v1) | GET_FLAG_S_B(res);
-- }
-- break;
-- case CMD_ADD:
-- {
-- UInt32 v1 = GetOperand32(&cmd->Op1);
-- UInt32 res = v1 + GetOperand32(&cmd->Op2);
-- SetOperand32(&cmd->Op1, res);
-- Flags = (res < v1) | (res == 0 ? FLAG_Z : (res & FLAG_S));
-- }
-- break;
-- case CMD_ADDB:
-- {
-- Byte v1 = GetOperand8(&cmd->Op1);
-- Byte res = v1 + GetOperand8(&cmd->Op2);
-- res &= 0xFF;
-- SetOperand8(&cmd->Op1, (Byte)res);
-- Flags = (res < v1) | (res == 0 ? FLAG_Z : GET_FLAG_S_B(res));
-- }
-- break;
-- case CMD_ADC:
-- {
-- UInt32 v1 = GetOperand(cmd->ByteMode, &cmd->Op1);
-- UInt32 FC = (Flags & FLAG_C);
-- UInt32 res = v1 + GetOperand(cmd->ByteMode, &cmd->Op2) + FC;
-- if (cmd->ByteMode)
-- res &= 0xFF;
-- SetOperand(cmd->ByteMode, &cmd->Op1, res);
-- Flags = (res < v1 || res == v1 && FC) | (res == 0 ? FLAG_Z : (res & FLAG_S));
-- }
-- break;
-- case CMD_SUB:
-- {
-- UInt32 v1 = GetOperand32(&cmd->Op1);
-- UInt32 res = v1 - GetOperand32(&cmd->Op2);
-- SetOperand32(&cmd->Op1, res);
-- Flags = res == 0 ? FLAG_Z : (res > v1) | (res & FLAG_S);
-- }
-- break;
-- case CMD_SUBB:
-- {
-- UInt32 v1 = GetOperand8(&cmd->Op1);
-- UInt32 res = v1 - GetOperand8(&cmd->Op2);
-- SetOperand8(&cmd->Op1, (Byte)res);
-- Flags = res == 0 ? FLAG_Z : (res > v1) | (res & FLAG_S);
-- }
-- break;
-- case CMD_SBB:
-- {
-- UInt32 v1 = GetOperand(cmd->ByteMode, &cmd->Op1);
-- UInt32 FC = (Flags & FLAG_C);
-- UInt32 res = v1 - GetOperand(cmd->ByteMode, &cmd->Op2) - FC;
-- // Flags = res == 0 ? FLAG_Z : (res > v1 || res == v1 && FC) | (res & FLAG_S);
-- if (cmd->ByteMode)
-- res &= 0xFF;
-- SetOperand(cmd->ByteMode, &cmd->Op1, res);
-- Flags = (res > v1 || res == v1 && FC) | (res == 0 ? FLAG_Z : (res & FLAG_S));
-- }
-- break;
-- case CMD_INC:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) + 1;
-- SetOperand32(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ;
-- }
-- break;
-- case CMD_INCB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) + 1;
-- SetOperand8(&cmd->Op1, res);;
-- FLAGS_UPDATE_SZ_B;
-- }
-- break;
-- case CMD_DEC:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) - 1;
-- SetOperand32(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ;
-- }
-- break;
-- case CMD_DECB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) - 1;
-- SetOperand8(&cmd->Op1, res);;
-- FLAGS_UPDATE_SZ_B;
-- }
-- break;
-- case CMD_XOR:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) ^ GetOperand32(&cmd->Op2);
-- SetOperand32(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ;
-- }
-- break;
-- case CMD_XORB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) ^ GetOperand8(&cmd->Op2);
-- SetOperand8(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ_B;
-- }
-- break;
-- case CMD_AND:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) & GetOperand32(&cmd->Op2);
-- SetOperand32(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ;
-- }
-- break;
-- case CMD_ANDB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) & GetOperand8(&cmd->Op2);
-- SetOperand8(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ_B;
-- }
-- break;
-- case CMD_OR:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) | GetOperand32(&cmd->Op2);
-- SetOperand32(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ;
-- }
-- break;
-- case CMD_ORB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) | GetOperand8(&cmd->Op2);
-- SetOperand8(&cmd->Op1, res);
-- FLAGS_UPDATE_SZ_B;
-- }
-- break;
-- case CMD_TEST:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) & GetOperand32(&cmd->Op2);
-- FLAGS_UPDATE_SZ;
-- }
-- break;
-- case CMD_TESTB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) & GetOperand8(&cmd->Op2);
-- FLAGS_UPDATE_SZ_B;
-- }
-- break;
-- case CMD_NOT:
-- SetOperand(cmd->ByteMode, &cmd->Op1, ~GetOperand(cmd->ByteMode, &cmd->Op1));
-- break;
-- case CMD_NEG:
-- {
-- UInt32 res = 0 - GetOperand32(&cmd->Op1);
-- SetOperand32(&cmd->Op1, res);
-- Flags = res == 0 ? FLAG_Z : FLAG_C | (res & FLAG_S);
-- }
-- break;
-- case CMD_NEGB:
-- {
-- Byte res = (Byte)(0 - GetOperand8(&cmd->Op1));
-- SetOperand8(&cmd->Op1, res);
-- Flags = res == 0 ? FLAG_Z : FLAG_C | GET_FLAG_S_B(res);
-- }
-- break;
--
-- case CMD_SHL:
-- {
-- UInt32 v1 = GetOperand32(&cmd->Op1);
-- int v2 = (int)GetOperand32(&cmd->Op2);
-- UInt32 res = v1 << v2;
-- SetOperand32(&cmd->Op1, res);
-- Flags = (res == 0 ? FLAG_Z : (res & FLAG_S)) | ((v1 << (v2 - 1)) & 0x80000000 ? FLAG_C : 0);
-- }
-- break;
-- case CMD_SHLB:
-- {
-- Byte v1 = GetOperand8(&cmd->Op1);
-- int v2 = (int)GetOperand8(&cmd->Op2);
-- Byte res = (Byte)(v1 << v2);
-- SetOperand8(&cmd->Op1, res);
-- Flags = (res == 0 ? FLAG_Z : GET_FLAG_S_B(res)) | ((v1 << (v2 - 1)) & 0x80 ? FLAG_C : 0);
-- }
-- break;
-- case CMD_SHR:
-- {
-- UInt32 v1 = GetOperand32(&cmd->Op1);
-- int v2 = (int)GetOperand32(&cmd->Op2);
-- UInt32 res = v1 >> v2;
-- SetOperand32(&cmd->Op1, res);
-- Flags = (res == 0 ? FLAG_Z : (res & FLAG_S)) | ((v1 >> (v2 - 1)) & FLAG_C);
-- }
-- break;
-- case CMD_SHRB:
-- {
-- Byte v1 = GetOperand8(&cmd->Op1);
-- int v2 = (int)GetOperand8(&cmd->Op2);
-- Byte res = (Byte)(v1 >> v2);
-- SetOperand8(&cmd->Op1, res);
-- Flags = (res == 0 ? FLAG_Z : GET_FLAG_S_B(res)) | ((v1 >> (v2 - 1)) & FLAG_C);
-- }
-- break;
-- case CMD_SAR:
-- {
-- UInt32 v1 = GetOperand32(&cmd->Op1);
-- int v2 = (int)GetOperand32(&cmd->Op2);
-- UInt32 res = UInt32(((Int32)v1) >> v2);
-- SetOperand32(&cmd->Op1, res);
-- Flags= (res == 0 ? FLAG_Z : (res & FLAG_S)) | ((v1 >> (v2 - 1)) & FLAG_C);
-- }
-- break;
-- case CMD_SARB:
-- {
-- Byte v1 = GetOperand8(&cmd->Op1);
-- int v2 = (int)GetOperand8(&cmd->Op2);
-- Byte res = (Byte)(((signed char)v1) >> v2);
-- SetOperand8(&cmd->Op1, res);
-- Flags= (res == 0 ? FLAG_Z : GET_FLAG_S_B(res)) | ((v1 >> (v2 - 1)) & FLAG_C);
-- }
-- break;
--
-- case CMD_JMP:
-- SET_IP_OP1;
-- continue;
-- case CMD_JZ:
-- if ((Flags & FLAG_Z) != 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JNZ:
-- if ((Flags & FLAG_Z) == 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JS:
-- if ((Flags & FLAG_S) != 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JNS:
-- if ((Flags & FLAG_S) == 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JB:
-- if ((Flags & FLAG_C) != 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JBE:
-- if ((Flags & (FLAG_C | FLAG_Z)) != 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JA:
-- if ((Flags & (FLAG_C | FLAG_Z)) == 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
-- case CMD_JAE:
-- if ((Flags & FLAG_C) == 0)
-- {
-- SET_IP_OP1;
-- continue;
-- }
-- break;
--
-- case CMD_PUSH:
-- R[kStackRegIndex] -= 4;
-- SetValue32(&Mem[R[kStackRegIndex] & kSpaceMask], GetOperand32(&cmd->Op1));
-- break;
-- case CMD_POP:
-- SetOperand32(&cmd->Op1, GetValue32(&Mem[R[kStackRegIndex] & kSpaceMask]));
-- R[kStackRegIndex] += 4;
-- break;
-- case CMD_CALL:
-- R[kStackRegIndex] -= 4;
-- SetValue32(&Mem[R[kStackRegIndex] & kSpaceMask], (UInt32)(cmd - commands + 1));
-- SET_IP_OP1;
-- continue;
--
-- case CMD_PUSHA:
-- {
-- for (UInt32 i = 0, SP = R[kStackRegIndex] - 4; i < kNumRegs; i++, SP -= 4)
-- SetValue32(&Mem[SP & kSpaceMask], R[i]);
-- R[kStackRegIndex] -= kNumRegs * 4;
-- }
-- break;
-- case CMD_POPA:
-- {
-- for (UInt32 i = 0, SP = R[kStackRegIndex]; i < kNumRegs; i++, SP += 4)
-- R[kStackRegIndex - i] = GetValue32(&Mem[SP & kSpaceMask]);
-- }
-- break;
-- case CMD_PUSHF:
-- R[kStackRegIndex] -= 4;
-- SetValue32(&Mem[R[kStackRegIndex]&kSpaceMask], Flags);
-- break;
-- case CMD_POPF:
-- Flags = GetValue32(&Mem[R[kStackRegIndex] & kSpaceMask]);
-- R[kStackRegIndex] += 4;
-- break;
--
-- case CMD_MOVZX:
-- SetOperand32(&cmd->Op1, GetOperand8(&cmd->Op2));
-- break;
-- case CMD_MOVSX:
-- SetOperand32(&cmd->Op1, (UInt32)(Int32)(signed char)GetOperand8(&cmd->Op2));
-- break;
-- case CMD_XCHG:
-- {
-- UInt32 v1 = GetOperand(cmd->ByteMode, &cmd->Op1);
-- SetOperand(cmd->ByteMode, &cmd->Op1, GetOperand(cmd->ByteMode, &cmd->Op2));
-- SetOperand(cmd->ByteMode, &cmd->Op2, v1);
-- }
-- break;
-- case CMD_MUL:
-- {
-- UInt32 res = GetOperand32(&cmd->Op1) * GetOperand32(&cmd->Op2);
-- SetOperand32(&cmd->Op1, res);
-- }
-- break;
-- case CMD_MULB:
-- {
-- Byte res = GetOperand8(&cmd->Op1) * GetOperand8(&cmd->Op2);
-- SetOperand8(&cmd->Op1, res);
-- }
-- break;
-- case CMD_DIV:
-- {
-- UInt32 divider = GetOperand(cmd->ByteMode, &cmd->Op2);
-- if (divider != 0)
-- {
-- UInt32 res = GetOperand(cmd->ByteMode, &cmd->Op1) / divider;
-- SetOperand(cmd->ByteMode, &cmd->Op1, res);
-- }
-- }
-- break;
--
-- #endif
--
-- case CMD_RET:
-- {
-- if (R[kStackRegIndex] >= kSpaceSize)
-- return true;
-- UInt32 ip = GetValue32(&Mem[R[kStackRegIndex] & kSpaceMask]);
-- SET_IP(ip);
-- R[kStackRegIndex] += 4;
-- continue;
-- }
-- case CMD_PRINT:
-- break;
-- }
-- cmd++;
-- --maxOpCount;
-- }
--}
--
--
--//////////////////////////////////////////////////////
--// Read program
--
--UInt32 ReadEncodedUInt32(CMemBitDecoder &inp)
--{
-- switch(inp.ReadBits(2))
-- {
-- case 0:
-- return inp.ReadBits(4);
-- case 1:
-- {
-- UInt32 v = inp.ReadBits(4);
-- if (v == 0)
-- return 0xFFFFFF00 | inp.ReadBits(8);
-- else
-- return (v << 4) | inp.ReadBits(4);
-- }
-- case 2:
-- return inp.ReadBits(16);
-- default:
-- return inp.ReadBits(32);
-- }
--}
--
--void CVm::DecodeArg(CMemBitDecoder &inp, COperand &op, bool byteMode)
--{
-- if (inp.ReadBit())
-- {
-- op.Type = OP_TYPE_REG;
-- op.Data = inp.ReadBits(kNumRegBits);
-- }
-- else if (inp.ReadBit() == 0)
-- {
-- op.Type = OP_TYPE_INT;
-- if (byteMode)
-- op.Data = inp.ReadBits(8);
-- else
-- op.Data = ReadEncodedUInt32(inp);
-- }
-- else
-- {
-- op.Type = OP_TYPE_REGMEM;
-- if (inp.ReadBit() == 0)
-- {
-- op.Data = inp.ReadBits(kNumRegBits);
-- op.Base = 0;
-- }
-- else
-- {
-- if (inp.ReadBit() == 0)
-- op.Data = inp.ReadBits(kNumRegBits);
-- else
-- op.Data = kNumRegs;
-- op.Base = ReadEncodedUInt32(inp);
-- }
-- }
--}
--
--void CVm::ReadVmProgram(const Byte *code, UInt32 codeSize, CProgram *prg)
--{
-- CMemBitDecoder inp;
-- inp.Init(code, codeSize);
--
-- prg->StaticData.Clear();
-- if (inp.ReadBit())
-- {
-- UInt32 dataSize = ReadEncodedUInt32(inp) + 1;
-- for (UInt32 i = 0; inp.Avail() && i < dataSize; i++)
-- prg->StaticData.Add((Byte)inp.ReadBits(8));
-- }
-- while (inp.Avail())
-- {
-- prg->Commands.Add(CCommand());
-- CCommand *cmd = &prg->Commands.Back();
-- if (inp.ReadBit() == 0)
-- cmd->OpCode = (ECommand)inp.ReadBits(3);
-- else
-- cmd->OpCode = (ECommand)(8 + inp.ReadBits(5));
-- if (kCmdFlags[cmd->OpCode] & CF_BYTEMODE)
-- cmd->ByteMode = (inp.ReadBit()) ? true : false;
-- else
-- cmd->ByteMode = 0;
-- int opNum = (kCmdFlags[cmd->OpCode] & CF_OPMASK);
-- if (opNum > 0)
-- {
-- DecodeArg(inp, cmd->Op1, cmd->ByteMode);
-- if (opNum == 2)
-- DecodeArg(inp, cmd->Op2, cmd->ByteMode);
-- else
-- {
-- if (cmd->Op1.Type == OP_TYPE_INT && (kCmdFlags[cmd->OpCode] & (CF_JUMP | CF_PROC)))
-- {
-- int Distance = cmd->Op1.Data;
-- if (Distance >= 256)
-- Distance -= 256;
-- else
-- {
-- if (Distance >= 136)
-- Distance -= 264;
-- else if (Distance >= 16)
-- Distance -= 8;
-- else if (Distance >= 8)
-- Distance -= 16;
-- Distance += prg->Commands.Size() - 1;
-- }
-- cmd->Op1.Data = Distance;
-- }
-- }
-- }
-- if (cmd->ByteMode)
-- {
-- switch (cmd->OpCode)
-- {
-- case CMD_MOV: cmd->OpCode = CMD_MOVB; break;
-- case CMD_CMP: cmd->OpCode = CMD_CMPB; break;
-- case CMD_ADD: cmd->OpCode = CMD_ADDB; break;
-- case CMD_SUB: cmd->OpCode = CMD_SUBB; break;
-- case CMD_INC: cmd->OpCode = CMD_INCB; break;
-- case CMD_DEC: cmd->OpCode = CMD_DECB; break;
-- case CMD_XOR: cmd->OpCode = CMD_XORB; break;
-- case CMD_AND: cmd->OpCode = CMD_ANDB; break;
-- case CMD_OR: cmd->OpCode = CMD_ORB; break;
-- case CMD_TEST: cmd->OpCode = CMD_TESTB; break;
-- case CMD_NEG: cmd->OpCode = CMD_NEGB; break;
-- case CMD_SHL: cmd->OpCode = CMD_SHLB; break;
-- case CMD_SHR: cmd->OpCode = CMD_SHRB; break;
-- case CMD_SAR: cmd->OpCode = CMD_SARB; break;
-- case CMD_MUL: cmd->OpCode = CMD_MULB; break;
-- }
-- }
-- }
--}
--
--#ifdef RARVM_STANDARD_FILTERS
--
--enum EStandardFilter
--{
-- SF_E8,
-- SF_E8E9,
-- SF_ITANIUM,
-- SF_RGB,
-- SF_AUDIO,
-- SF_DELTA,
-- SF_UPCASE
--};
--
--struct StandardFilterSignature
--{
-- UInt32 Length;
-- UInt32 CRC;
-- EStandardFilter Type;
--}
--kStdFilters[]=
--{
-- { 53, 0xad576887, SF_E8 },
-- { 57, 0x3cd7e57e, SF_E8E9 },
-- { 120, 0x3769893f, SF_ITANIUM },
-- { 29, 0x0e06077d, SF_DELTA },
-- { 149, 0x1c2c5dc8, SF_RGB },
-- { 216, 0xbc85e701, SF_AUDIO },
-- { 40, 0x46b9c560, SF_UPCASE }
--};
--
--static int FindStandardFilter(const Byte *code, UInt32 codeSize)
--{
-- UInt32 crc = CrcCalc(code, codeSize);
-- for (int i = 0; i < sizeof(kStdFilters) / sizeof(kStdFilters[0]); i++)
-- {
-- StandardFilterSignature &sfs = kStdFilters[i];
-- if (sfs.CRC == crc && sfs.Length == codeSize)
-- return i;
-- }
-- return -1;
--}
--
--#endif
--
--void CVm::PrepareProgram(const Byte *code, UInt32 codeSize, CProgram *prg)
--{
-- Byte xorSum = 0;
-- for (UInt32 i = 1; i < codeSize; i++)
-- xorSum ^= code[i];
--
-- prg->Commands.Clear();
-- #ifdef RARVM_STANDARD_FILTERS
-- prg->StandardFilterIndex = -1;
-- #endif
--
-- if (xorSum == code[0] && codeSize > 0)
-- {
-- #ifdef RARVM_STANDARD_FILTERS
-- prg->StandardFilterIndex = FindStandardFilter(code, codeSize);
-- if (prg->StandardFilterIndex >= 0)
-- return;
-- #endif
-- // 1 byte for checksum
-- ReadVmProgram(code + 1, codeSize - 1, prg);
-- }
-- prg->Commands.Add(CCommand());
-- CCommand *cmd = &prg->Commands.Back();
-- cmd->OpCode = CMD_RET;
--}
--
--void CVm::SetMemory(UInt32 pos, const Byte *data, UInt32 dataSize)
--{
-- if (pos < kSpaceSize && data != Mem + pos)
-- memmove(Mem + pos, data, MyMin(dataSize, kSpaceSize - pos));
--}
--
--#ifdef RARVM_STANDARD_FILTERS
--
--static void E8E9Decode(Byte *data, UInt32 dataSize, UInt32 fileOffset, bool e9)
--{
-- if (dataSize <= 4)
-- return;
-- dataSize -= 4;
-- const UInt32 kFileSize = 0x1000000;
-- Byte cmpByte2 = (e9 ? 0xE9 : 0xE8);
-- for (UInt32 curPos = 0; curPos < dataSize;)
-- {
-- Byte curByte = *(data++);
-- curPos++;
-- if (curByte == 0xE8 || curByte == cmpByte2)
-- {
-- UInt32 offset = curPos + fileOffset;
-- UInt32 addr = (Int32)GetValue32(data);
-- if (addr < kFileSize)
-- SetValue32(data, addr - offset);
-- else if ((Int32)addr < 0 && (Int32)(addr + offset) >= 0)
-- SetValue32(data, addr + kFileSize);
-- data += 4;
-- curPos += 4;
-- }
-- }
--}
--
--static inline UInt32 ItaniumGetOpType(const Byte *data, int bitPos)
--{
-- return (data[(unsigned int)bitPos >> 3] >> (bitPos & 7)) & 0xF;
--}
--
--
--static void ItaniumDecode(Byte *data, UInt32 dataSize, UInt32 fileOffset)
--{
-- UInt32 curPos = 0;
-- fileOffset >>= 4;
-- while (curPos < dataSize - 21)
-- {
-- int b = (data[0] & 0x1F) - 0x10;
-- if (b >= 0)
-- {
-- static Byte kCmdMasks[16] = {4,4,6,6,0,0,7,7,4,4,0,0,4,4,0,0};
-- Byte cmdMask = kCmdMasks[b];
-- if (cmdMask != 0)
-- for (int i = 0; i < 3; i++)
-- if (cmdMask & (1 << i))
-- {
-- int startPos = i * 41 + 18;
-- if (ItaniumGetOpType(data, startPos + 24) == 5)
-- {
-- const UInt32 kMask = 0xFFFFF;
-- Byte *p = data + ((unsigned int)startPos >> 3);
-- UInt32 bitField = ((UInt32)p[0]) | ((UInt32)p[1] << 8) | ((UInt32)p[2] << 16);
-- int inBit = (startPos & 7);
-- UInt32 offset = (bitField >> inBit) & kMask;
-- UInt32 andMask = ~(kMask << inBit);
-- bitField = ((offset - fileOffset) & kMask) << inBit;
-- for (int j = 0; j < 3; j++)
-- {
-- p[j] &= andMask;
-- p[j] |= bitField;
-- andMask >>= 8;
-- bitField >>= 8;
-- }
-- }
-- }
-- }
-- data += 16;
-- curPos += 16;
-- fileOffset++;
-- }
--}
--
--static void DeltaDecode(Byte *data, UInt32 dataSize, UInt32 numChannels)
--{
-- UInt32 srcPos = 0;
-- UInt32 border = dataSize * 2;
-- for (UInt32 curChannel = 0; curChannel < numChannels; curChannel++)
-- {
-- Byte prevByte = 0;
-- for (UInt32 destPos = dataSize + curChannel; destPos < border; destPos += numChannels)
-- data[destPos] = (prevByte = prevByte - data[srcPos++]);
-- }
--}
--
--static void RgbDecode(Byte *srcData, UInt32 dataSize, UInt32 width, UInt32 posR)
--{
-- Byte *destData = srcData + dataSize;
-- const UInt32 numChannels = 3;
-- for (UInt32 curChannel = 0; curChannel < numChannels; curChannel++)
-- {
-- Byte prevByte = 0;
--
-- for (UInt32 i = curChannel; i < dataSize; i+= numChannels)
-- {
-- unsigned int predicted;
-- if (i < width)
-- predicted = prevByte;
-- else
-- {
-- unsigned int upperLeftByte = destData[i - width];
-- unsigned int upperByte = destData[i - width + 3];
-- predicted = prevByte + upperByte - upperLeftByte;
-- int pa = abs((int)(predicted - prevByte));
-- int pb = abs((int)(predicted - upperByte));
-- int pc = abs((int)(predicted - upperLeftByte));
-- if (pa <= pb && pa <= pc)
-- predicted = prevByte;
-- else
-- if (pb <= pc)
-- predicted = upperByte;
-- else
-- predicted = upperLeftByte;
-- }
-- destData[i] = prevByte = (Byte)(predicted - *(srcData++));
-- }
-- }
-- if (dataSize < 3)
-- return;
-- for (UInt32 i = posR, border = dataSize - 2; i < border; i += 3)
-- {
-- Byte g = destData[i + 1];
-- destData[i] = destData[i] + g;
-- destData[i + 2] = destData[i + 2] + g;
-- }
--}
--
--static void AudioDecode(Byte *srcData, UInt32 dataSize, UInt32 numChannels)
--{
-- Byte *destData = srcData + dataSize;
-- for (UInt32 curChannel = 0; curChannel < numChannels; curChannel++)
-- {
-- UInt32 prevByte = 0, prevDelta = 0, dif[7];
-- Int32 D1 = 0, D2 = 0, D3;
-- Int32 K1 = 0, K2 = 0, K3 = 0;
-- memset(dif, 0, sizeof(dif));
--
-- for (UInt32 i = curChannel, byteCount = 0; i < dataSize; i += numChannels, byteCount++)
-- {
-- D3 = D2;
-- D2 = prevDelta - D1;
-- D1 = prevDelta;
--
-- UInt32 predicted = 8 * prevByte + K1 * D1 + K2 * D2 + K3 * D3;
-- predicted = (predicted >> 3) & 0xFF;
--
-- UInt32 curByte = *(srcData++);
--
-- predicted -= curByte;
-- destData[i] = (Byte)predicted;
-- prevDelta = (UInt32)(Int32)(signed char)(predicted - prevByte);
-- prevByte = predicted;
--
-- Int32 D = ((Int32)(signed char)curByte) << 3;
--
-- dif[0] += abs(D);
-- dif[1] += abs(D - D1);
-- dif[2] += abs(D + D1);
-- dif[3] += abs(D - D2);
-- dif[4] += abs(D + D2);
-- dif[5] += abs(D - D3);
-- dif[6] += abs(D + D3);
--
-- if ((byteCount & 0x1F) == 0)
-- {
-- UInt32 minDif = dif[0], numMinDif = 0;
-- dif[0] = 0;
-- for (int j = 1; j < sizeof(dif) / sizeof(dif[0]); j++)
-- {
-- if (dif[j] < minDif)
-- {
-- minDif = dif[j];
-- numMinDif = j;
-- }
-- dif[j] = 0;
-- }
-- switch (numMinDif)
-- {
-- case 1: if (K1 >= -16) K1--; break;
-- case 2: if (K1 < 16) K1++; break;
-- case 3: if (K2 >= -16) K2--; break;
-- case 4: if (K2 < 16) K2++; break;
-- case 5: if (K3 >= -16) K3--; break;
-- case 6: if (K3 < 16) K3++; break;
-- }
-- }
-- }
-- }
--}
--
--static UInt32 UpCaseDecode(Byte *data, UInt32 dataSize)
--{
-- UInt32 srcPos = 0, destPos = dataSize;
-- while (srcPos < dataSize)
-- {
-- Byte curByte = data[srcPos++];
-- if (curByte == 2 && (curByte = data[srcPos++]) != 2)
-- curByte -= 32;
-- data[destPos++] = curByte;
-- }
-- return destPos - dataSize;
--}
--
--void CVm::ExecuteStandardFilter(int filterIndex)
--{
-- UInt32 dataSize = R[4];
-- if (dataSize >= kGlobalOffset)
-- return;
-- EStandardFilter filterType = kStdFilters[filterIndex].Type;
--
-- switch (filterType)
-- {
-- case SF_E8:
-- case SF_E8E9:
-- E8E9Decode(Mem, dataSize, R[6], (filterType == SF_E8E9));
-- break;
-- case SF_ITANIUM:
-- ItaniumDecode(Mem, dataSize, R[6]);
-- break;
-- case SF_DELTA:
-- if (dataSize >= kGlobalOffset / 2)
-- break;
-- SetBlockPos(dataSize);
-- DeltaDecode(Mem, dataSize, R[0]);
-- break;
-- case SF_RGB:
-- if (dataSize >= kGlobalOffset / 2)
-- break;
-- {
-- UInt32 width = R[0];
-- if (width <= 3)
-- break;
-- SetBlockPos(dataSize);
-- RgbDecode(Mem, dataSize, width, R[1]);
-- }
-- break;
-- case SF_AUDIO:
-- if (dataSize >= kGlobalOffset / 2)
-- break;
-- SetBlockPos(dataSize);
-- AudioDecode(Mem, dataSize, R[0]);
-- break;
-- case SF_UPCASE:
-- if (dataSize >= kGlobalOffset / 2)
-- break;
-- UInt32 destSize = UpCaseDecode(Mem, dataSize);
-- SetBlockSize(destSize);
-- SetBlockPos(dataSize);
-- break;
-- }
--}
--
--#endif
--
--}}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/Rar3Vm.h p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Vm.h
---- p7zip_9.20.1/CPP/7zip/Compress/Rar3Vm.h 2009-02-07 15:06:28.000000000 -0200
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/Rar3Vm.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,179 +0,0 @@
--// Rar3Vm.h
--// According to unRAR license, this code may not be used to develop
--// a program that creates RAR archives
--
--#ifndef __COMPRESS_RAR3_VM_H
--#define __COMPRESS_RAR3_VM_H
--
--#include "../../../C/CpuArch.h"
--
--#include "Common/MyVector.h"
--#include "Common/Types.h"
--
--#define RARVM_STANDARD_FILTERS
--
--namespace NCompress {
--namespace NRar3 {
--
--class CMemBitDecoder
--{
-- const Byte *_data;
-- UInt32 _bitSize;
-- UInt32 _bitPos;
--public:
-- void Init(const Byte *data, UInt32 byteSize)
-- {
-- _data = data;
-- _bitSize = (byteSize << 3);
-- _bitPos = 0;
-- }
-- UInt32 ReadBits(int numBits);
-- UInt32 ReadBit();
-- bool Avail() const { return (_bitPos < _bitSize); }
--};
--
--namespace NVm {
--
--inline UInt32 GetValue32(const void *addr) { return GetUi32(addr); }
--inline void SetValue32(void *addr, UInt32 value) { SetUi32(addr, value); }
--
--UInt32 ReadEncodedUInt32(CMemBitDecoder &inp);
--
--const int kNumRegBits = 3;
--const UInt32 kNumRegs = 1 << kNumRegBits;
--const UInt32 kNumGpRegs = kNumRegs - 1;
--
--const UInt32 kSpaceSize = 0x40000;
--const UInt32 kSpaceMask = kSpaceSize -1;
--const UInt32 kGlobalOffset = 0x3C000;
--const UInt32 kGlobalSize = 0x2000;
--const UInt32 kFixedGlobalSize = 64;
--
--namespace NGlobalOffset
--{
-- const UInt32 kBlockSize = 0x1C;
-- const UInt32 kBlockPos = 0x20;
-- const UInt32 kExecCount = 0x2C;
-- const UInt32 kGlobalMemOutSize = 0x30;
--}
--
--enum ECommand
--{
-- CMD_MOV, CMD_CMP, CMD_ADD, CMD_SUB, CMD_JZ, CMD_JNZ, CMD_INC, CMD_DEC,
-- CMD_JMP, CMD_XOR, CMD_AND, CMD_OR, CMD_TEST, CMD_JS, CMD_JNS, CMD_JB,
-- CMD_JBE, CMD_JA, CMD_JAE, CMD_PUSH, CMD_POP, CMD_CALL, CMD_RET, CMD_NOT,
-- CMD_SHL, CMD_SHR, CMD_SAR, CMD_NEG, CMD_PUSHA,CMD_POPA, CMD_PUSHF,CMD_POPF,
-- CMD_MOVZX,CMD_MOVSX,CMD_XCHG, CMD_MUL, CMD_DIV, CMD_ADC, CMD_SBB, CMD_PRINT,
--
-- CMD_MOVB, CMD_CMPB, CMD_ADDB, CMD_SUBB, CMD_INCB, CMD_DECB,
-- CMD_XORB, CMD_ANDB, CMD_ORB, CMD_TESTB,CMD_NEGB,
-- CMD_SHLB, CMD_SHRB, CMD_SARB, CMD_MULB
--};
--
--enum EOpType {OP_TYPE_REG, OP_TYPE_INT, OP_TYPE_REGMEM, OP_TYPE_NONE};
--
--// Addr in COperand object can link (point) to CVm object!!!
--
--struct COperand
--{
-- EOpType Type;
-- UInt32 Data;
-- UInt32 Base;
-- COperand(): Type(OP_TYPE_NONE), Data(0), Base(0) {}
--};
--
--struct CCommand
--{
-- ECommand OpCode;
-- bool ByteMode;
-- COperand Op1, Op2;
--};
--
--struct CBlockRef
--{
-- UInt32 Offset;
-- UInt32 Size;
--};
--
--struct CProgram
--{
-- CRecordVector<CCommand> Commands;
-- #ifdef RARVM_STANDARD_FILTERS
-- int StandardFilterIndex;
-- #endif
-- CRecordVector<Byte> StaticData;
--};
--
--struct CProgramInitState
--{
-- UInt32 InitR[kNumGpRegs];
-- CRecordVector<Byte> GlobalData;
--
-- void AllocateEmptyFixedGlobal()
-- {
-- GlobalData.Clear();
-- GlobalData.Reserve(NVm::kFixedGlobalSize);
-- for (UInt32 i = 0; i < NVm::kFixedGlobalSize; i++)
-- GlobalData.Add(0);
-- }
--};
--
--class CVm
--{
-- static UInt32 GetValue(bool byteMode, const void *addr)
-- {
-- if (byteMode)
-- return(*(const Byte *)addr);
-- else
-- return GetUi32(addr);
-- }
--
-- static void SetValue(bool byteMode, void *addr, UInt32 value)
-- {
-- if (byteMode)
-- *(Byte *)addr = (Byte)value;
-- else
-- SetUi32(addr, value);
-- }
--
-- UInt32 GetFixedGlobalValue32(UInt32 globalOffset) { return GetValue(false, &Mem[kGlobalOffset + globalOffset]); }
--
-- void SetBlockSize(UInt32 v) { SetValue(&Mem[kGlobalOffset + NGlobalOffset::kBlockSize], v); }
-- void SetBlockPos(UInt32 v) { SetValue(&Mem[kGlobalOffset + NGlobalOffset::kBlockPos], v); }
--public:
-- static void SetValue(void *addr, UInt32 value) { SetValue(false, addr, value); }
--private:
-- UInt32 GetOperand32(const COperand *op) const;
-- void SetOperand32(const COperand *op, UInt32 val);
-- Byte GetOperand8(const COperand *op) const;
-- void SetOperand8(const COperand *op, Byte val);
-- UInt32 GetOperand(bool byteMode, const COperand *op) const;
-- void SetOperand(bool byteMode, const COperand *op, UInt32 val);
--
-- void DecodeArg(CMemBitDecoder &inp, COperand &op, bool byteMode);
--
-- bool ExecuteCode(const CProgram *prg);
--
-- #ifdef RARVM_STANDARD_FILTERS
-- void ExecuteStandardFilter(int filterIndex);
-- #endif
--
-- Byte *Mem;
-- UInt32 R[kNumRegs + 1]; // R[kNumRegs] = 0 always (speed optimization)
-- UInt32 Flags;
-- void ReadVmProgram(const Byte *code, UInt32 codeSize, CProgram *prg);
--public:
-- CVm();
-- ~CVm();
-- bool Create();
-- void PrepareProgram(const Byte *code, UInt32 codeSize, CProgram *prg);
-- void SetMemory(UInt32 pos, const Byte *data, UInt32 dataSize);
-- bool Execute(CProgram *prg, const CProgramInitState *initState,
-- CBlockRef &outBlockRef, CRecordVector<Byte> &outGlobalData);
-- const Byte *GetDataPointer(UInt32 offset) const { return Mem + offset; }
--
--};
--
--#endif
--
--}}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Compress/RarCodecsRegister.cpp p7zip-libre_9.20.1/CPP/7zip/Compress/RarCodecsRegister.cpp
---- p7zip_9.20.1/CPP/7zip/Compress/RarCodecsRegister.cpp 2009-02-07 15:06:28.000000000 -0200
-+++ p7zip-libre_9.20.1/CPP/7zip/Compress/RarCodecsRegister.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,26 +0,0 @@
--// RarCodecsRegister.cpp
--
--#include "StdAfx.h"
--
--#include "../Common/RegisterCodec.h"
--
--#include "Rar1Decoder.h"
--#include "Rar2Decoder.h"
--#include "Rar3Decoder.h"
--
--#define CREATE_CODEC(x) static void *CreateCodec ## x() { return (void *)(ICompressCoder *)(new NCompress::NRar ## x::CDecoder); }
--
--CREATE_CODEC(1)
--CREATE_CODEC(2)
--CREATE_CODEC(3)
--
--#define RAR_CODEC(x, name) { CreateCodec ## x, 0, 0x040300 + x, L"Rar" name, 1, false }
--
--static CCodecInfo g_CodecsInfo[] =
--{
-- RAR_CODEC(1, L"1"),
-- RAR_CODEC(2, L"2"),
-- RAR_CODEC(3, L"3"),
--};
--
--REGISTER_CODECS(Rar)
-diff -ruNa p7zip_9.20.1/CPP/7zip/Crypto/Rar20Crypto.cpp p7zip-libre_9.20.1/CPP/7zip/Crypto/Rar20Crypto.cpp
---- p7zip_9.20.1/CPP/7zip/Crypto/Rar20Crypto.cpp 2009-05-30 17:19:19.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Crypto/Rar20Crypto.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,133 +0,0 @@
--// Crypto/Rar20Crypto.cpp
--
--#include "StdAfx.h"
--
--#include "../../../C/7zCrc.h"
--#include "../../../C/CpuArch.h"
--#include "../../../C/RotateDefs.h"
--
--#include "Rar20Crypto.h"
--
--namespace NCrypto {
--namespace NRar20 {
--
--static const int kNumRounds = 32;
--
--static const Byte InitSubstTable[256] = {
-- 215, 19,149, 35, 73,197,192,205,249, 28, 16,119, 48,221, 2, 42,
-- 232, 1,177,233, 14, 88,219, 25,223,195,244, 90, 87,239,153,137,
-- 255,199,147, 70, 92, 66,246, 13,216, 40, 62, 29,217,230, 86, 6,
-- 71, 24,171,196,101,113,218,123, 93, 91,163,178,202, 67, 44,235,
-- 107,250, 75,234, 49,167,125,211, 83,114,157,144, 32,193,143, 36,
-- 158,124,247,187, 89,214,141, 47,121,228, 61,130,213,194,174,251,
-- 97,110, 54,229,115, 57,152, 94,105,243,212, 55,209,245, 63, 11,
-- 164,200, 31,156, 81,176,227, 21, 76, 99,139,188,127, 17,248, 51,
-- 207,120,189,210, 8,226, 41, 72,183,203,135,165,166, 60, 98, 7,
-- 122, 38,155,170, 69,172,252,238, 39,134, 59,128,236, 27,240, 80,
-- 131, 3, 85,206,145, 79,154,142,159,220,201,133, 74, 64, 20,129,
-- 224,185,138,103,173,182, 43, 34,254, 82,198,151,231,180, 58, 10,
-- 118, 26,102, 12, 50,132, 22,191,136,111,162,179, 45, 4,148,108,
-- 161, 56, 78,126,242,222, 15,175,146, 23, 33,241,181,190, 77,225,
-- 0, 46,169,186, 68, 95,237, 65, 53,208,253,168, 9, 18,100, 52,
-- 116,184,160, 96,109, 37, 30,106,140,104,150, 5,204,117,112, 84
--};
--
--void CData::UpdateKeys(const Byte *data)
--{
-- for (int i = 0; i < 16; i += 4)
-- for (int j = 0; j < 4; j++)
-- Keys[j] ^= g_CrcTable[data[i + j]];
--}
--
--static void Swap(Byte *b1, Byte *b2)
--{
-- Byte b = *b1;
-- *b1 = *b2;
-- *b2 = b;
--}
--
--void CData::SetPassword(const Byte *password, UInt32 passwordLen)
--{
-- Keys[0] = 0xD3A3B879L;
-- Keys[1] = 0x3F6D12F7L;
-- Keys[2] = 0x7515A235L;
-- Keys[3] = 0xA4E7F123L;
--
-- Byte psw[256];
-- memset(psw, 0, sizeof(psw));
-- memcpy(psw, password, passwordLen);
-- memcpy(SubstTable, InitSubstTable, sizeof(SubstTable));
--
-- for (UInt32 j = 0; j < 256; j++)
-- for (UInt32 i = 0; i < passwordLen; i += 2)
-- {
-- UInt32 n2 = (Byte)g_CrcTable[(psw[i + 1] + j) & 0xFF];
-- UInt32 n1 = (Byte)g_CrcTable[(psw[i] - j) & 0xFF];
-- for (UInt32 k = 1; (n1 & 0xFF) != n2; n1++, k++)
-- Swap(&SubstTable[n1 & 0xFF], &SubstTable[(n1 + i + k) & 0xFF]);
-- }
-- for (UInt32 i = 0; i < passwordLen; i+= 16)
-- EncryptBlock(&psw[i]);
--}
--
--void CData::CryptBlock(Byte *buf, bool encrypt)
--{
-- Byte inBuf[16];
-- UInt32 A, B, C, D, T, TA, TB;
--
-- A = GetUi32(buf + 0) ^ Keys[0];
-- B = GetUi32(buf + 4) ^ Keys[1];
-- C = GetUi32(buf + 8) ^ Keys[2];
-- D = GetUi32(buf + 12) ^ Keys[3];
--
-- if (!encrypt)
-- memcpy(inBuf, buf, sizeof(inBuf));
--
-- for (int i = 0; i < kNumRounds; i++)
-- {
-- UInt32 key = Keys[(encrypt ? i : (kNumRounds - 1 - i)) & 3];
-- T = ((C + rotlFixed(D, 11)) ^ key);
-- TA = A ^ SubstLong(T);
-- T = ((D ^ rotlFixed(C, 17)) + key);
-- TB = B ^ SubstLong(T);
-- A = C;
-- B = D;
-- C = TA;
-- D = TB;
-- }
--
-- SetUi32(buf + 0, C ^ Keys[0]);
-- SetUi32(buf + 4, D ^ Keys[1]);
-- SetUi32(buf + 8, A ^ Keys[2]);
-- SetUi32(buf + 12, B ^ Keys[3]);
--
-- UpdateKeys(encrypt ? buf : inBuf);
--}
--
--STDMETHODIMP CDecoder::CryptoSetPassword(const Byte *data, UInt32 size)
--{
-- _cipher.SetPassword(data, size);
-- return S_OK;
--}
--
--STDMETHODIMP CDecoder::Init()
--{
-- return S_OK;
--}
--
--static const UInt32 kBlockSize = 16;
--
--STDMETHODIMP_(UInt32) CDecoder::Filter(Byte *data, UInt32 size)
--{
-- if (size == 0)
-- return 0;
-- if (size < kBlockSize)
-- return kBlockSize;
-- UInt32 i;
-- size -= kBlockSize;
-- for (i = 0; i <= size; i += kBlockSize)
-- _cipher.DecryptBlock(data + i);
-- return i;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Crypto/Rar20Crypto.h p7zip-libre_9.20.1/CPP/7zip/Crypto/Rar20Crypto.h
---- p7zip_9.20.1/CPP/7zip/Crypto/Rar20Crypto.h 2009-02-07 15:07:19.000000000 -0200
-+++ p7zip-libre_9.20.1/CPP/7zip/Crypto/Rar20Crypto.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,50 +0,0 @@
--// Crypto/Rar20Crypto.h
--
--#ifndef __CRYPTO_RAR20_CRYPTO_H
--#define __CRYPTO_RAR20_CRYPTO_H
--
--#include "Common/MyCom.h"
--
--#include "../ICoder.h"
--#include "../IPassword.h"
--
--namespace NCrypto {
--namespace NRar20 {
--
--class CData
--{
-- Byte SubstTable[256];
-- UInt32 Keys[4];
--
-- UInt32 SubstLong(UInt32 t)
-- {
-- return (UInt32)SubstTable[(int)t & 255] |
-- ((UInt32)SubstTable[(int)(t >> 8) & 255] << 8) |
-- ((UInt32)SubstTable[(int)(t >> 16) & 255] << 16) |
-- ((UInt32)SubstTable[(int)(t >> 24) & 255] << 24);
-- }
-- void UpdateKeys(const Byte *data);
-- void CryptBlock(Byte *buf, bool encrypt);
--public:
-- void EncryptBlock(Byte *buf) { CryptBlock(buf, true); }
-- void DecryptBlock(Byte *buf) { CryptBlock(buf, false); }
-- void SetPassword(const Byte *password, UInt32 passwordLen);
--};
--
--class CDecoder:
-- public ICompressFilter,
-- public ICryptoSetPassword,
-- public CMyUnknownImp
--{
-- CData _cipher;
--public:
-- MY_UNKNOWN_IMP1(ICryptoSetPassword)
--
-- STDMETHOD(Init)();
-- STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size);
-- STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size);
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/CPP/7zip/Crypto/RarAes.cpp p7zip-libre_9.20.1/CPP/7zip/Crypto/RarAes.cpp
---- p7zip_9.20.1/CPP/7zip/Crypto/RarAes.cpp 2010-10-20 01:56:08.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Crypto/RarAes.cpp 1969-12-31 21:00:00.000000000 -0300
-@@ -1,134 +0,0 @@
--// Crypto/RarAes.cpp
--// Note: you must include MyAes.cpp to project to initialize AES tables
--
--#include "StdAfx.h"
--
--#include "RarAes.h"
--#include "Sha1.h"
--
--namespace NCrypto {
--namespace NRar29 {
--
--CDecoder::CDecoder():
-- _thereIsSalt(false),
-- _needCalculate(true),
-- _rar350Mode(false)
--{
-- for (int i = 0; i < sizeof(_salt); i++)
-- _salt[i] = 0;
--}
--
--STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size)
--{
-- bool thereIsSaltPrev = _thereIsSalt;
-- _thereIsSalt = false;
-- if (size == 0)
-- return S_OK;
-- if (size < 8)
-- return E_INVALIDARG;
-- _thereIsSalt = true;
-- bool same = false;
-- if (_thereIsSalt == thereIsSaltPrev)
-- {
-- same = true;
-- if (_thereIsSalt)
-- {
-- for (unsigned i = 0; i < sizeof(_salt); i++)
-- if (_salt[i] != data[i])
-- {
-- same = false;
-- break;
-- }
-- }
-- }
-- for (unsigned i = 0; i < sizeof(_salt); i++)
-- _salt[i] = data[i];
-- if (!_needCalculate && !same)
-- _needCalculate = true;
-- return S_OK;
--}
--
--static const unsigned kMaxPasswordLength = 127 * 2;
--
--STDMETHODIMP CDecoder::CryptoSetPassword(const Byte *data, UInt32 size)
--{
-- if (size > kMaxPasswordLength)
-- size = kMaxPasswordLength;
-- bool same = false;
-- if (size == buffer.GetCapacity())
-- {
-- same = true;
-- for (UInt32 i = 0; i < size; i++)
-- if (data[i] != buffer[i])
-- {
-- same = false;
-- break;
-- }
-- }
-- if (!_needCalculate && !same)
-- _needCalculate = true;
-- buffer.SetCapacity(size);
-- memcpy(buffer, data, size);
-- return S_OK;
--}
--
--STDMETHODIMP CDecoder::Init()
--{
-- Calculate();
-- SetKey(aesKey, kRarAesKeySize);
-- AesCbc_Init(_aes + _offset, _aesInit);
-- return S_OK;
--}
--
--void CDecoder::Calculate()
--{
-- if (_needCalculate)
-- {
-- const unsigned kSaltSize = 8;
--
-- Byte rawPassword[kMaxPasswordLength + kSaltSize];
--
-- memcpy(rawPassword, buffer, buffer.GetCapacity());
--
-- size_t rawLength = buffer.GetCapacity();
--
-- if (_thereIsSalt)
-- {
-- memcpy(rawPassword + rawLength, _salt, kSaltSize);
-- rawLength += kSaltSize;
-- }
--
-- NSha1::CContext sha;
-- sha.Init();
--
-- // rar reverts hash for sha.
-- const unsigned kNumRounds = (1 << 18);
-- unsigned i;
-- for (i = 0; i < kNumRounds; i++)
-- {
-- sha.UpdateRar(rawPassword, rawLength, _rar350Mode);
-- Byte pswNum[3] = { (Byte)i, (Byte)(i >> 8), (Byte)(i >> 16) };
-- sha.UpdateRar(pswNum, 3, _rar350Mode);
-- if (i % (kNumRounds / 16) == 0)
-- {
-- NSha1::CContext shaTemp = sha;
-- Byte digest[NSha1::kDigestSize];
-- shaTemp.Final(digest);
-- _aesInit[i / (kNumRounds / 16)] = (Byte)digest[4 * 4 + 3];
-- }
-- }
-- /*
-- // it's test message for sha
-- const char *message = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq";
-- sha.Update((const Byte *)message, strlen(message));
-- */
-- Byte digest[20];
-- sha.Final(digest);
-- for (i = 0; i < 4; i++)
-- for (unsigned j = 0; j < 4; j++)
-- aesKey[i * 4 + j] = (digest[i * 4 + 3 - j]);
-- }
-- _needCalculate = false;
--}
--
--}}
-diff -ruNa p7zip_9.20.1/CPP/7zip/Crypto/RarAes.h p7zip-libre_9.20.1/CPP/7zip/Crypto/RarAes.h
---- p7zip_9.20.1/CPP/7zip/Crypto/RarAes.h 2009-12-21 08:46:19.000000000 -0300
-+++ p7zip-libre_9.20.1/CPP/7zip/Crypto/RarAes.h 1969-12-31 21:00:00.000000000 -0300
-@@ -1,47 +0,0 @@
--// Crypto/RarAes.h
--
--#ifndef __CRYPTO_RAR_AES_H
--#define __CRYPTO_RAR_AES_H
--
--#include "../../../C/Aes.h"
--
--#include "Common/Buffer.h"
--
--#include "../IPassword.h"
--
--#include "MyAes.h"
--
--namespace NCrypto {
--namespace NRar29 {
--
--const UInt32 kRarAesKeySize = 16;
--
--class CDecoder:
-- public CAesCbcDecoder,
-- public ICompressSetDecoderProperties2,
-- public ICryptoSetPassword
--{
-- Byte _salt[8];
-- bool _thereIsSalt;
-- CByteBuffer buffer;
-- Byte aesKey[kRarAesKeySize];
-- Byte _aesInit[AES_BLOCK_SIZE];
-- bool _needCalculate;
-- bool _rar350Mode;
--
-- void Calculate();
--public:
-- MY_UNKNOWN_IMP2(
-- ICryptoSetPassword,
-- ICompressSetDecoderProperties2)
-- STDMETHOD(Init)();
-- STDMETHOD(CryptoSetPassword)(const Byte *aData, UInt32 aSize);
-- STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
--
-- CDecoder();
-- void SetRar350Mode(bool rar350Mode) { _rar350Mode = rar350Mode; }
--};
--
--}}
--
--#endif
-diff -ruNa p7zip_9.20.1/DOCS/unRarLicense.txt p7zip-libre_9.20.1/DOCS/unRarLicense.txt
---- p7zip_9.20.1/DOCS/unRarLicense.txt 2008-08-01 06:56:23.000000000 -0300
-+++ p7zip-libre_9.20.1/DOCS/unRarLicense.txt 1969-12-31 21:00:00.000000000 -0300
-@@ -1,41 +0,0 @@
-- ****** ***** ****** unRAR - free utility for RAR archives
-- ** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ****** ******* ****** License for use and distribution of
-- ** ** ** ** ** ** ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- ** ** ** ** ** ** FREE portable version
-- ~~~~~~~~~~~~~~~~~~~~~
--
-- The source code of unRAR utility is freeware. This means:
--
-- 1. All copyrights to RAR and the utility unRAR are exclusively
-- owned by the author - Alexander Roshal.
--
-- 2. The unRAR sources may be used in any software to handle RAR
-- archives without limitations free of charge, but cannot be used
-- to re-create the RAR compression algorithm, which is proprietary.
-- Distribution of modified unRAR sources in separate form or as a
-- part of other software is permitted, provided that it is clearly
-- stated in the documentation and source comments that the code may
-- not be used to develop a RAR (WinRAR) compatible archiver.
--
-- 3. The unRAR utility may be freely distributed. No person or company
-- may charge a fee for the distribution of unRAR without written
-- permission from the copyright holder.
--
-- 4. THE RAR ARCHIVER AND THE UNRAR UTILITY ARE DISTRIBUTED "AS IS".
-- NO WARRANTY OF ANY KIND IS EXPRESSED OR IMPLIED. YOU USE AT
-- YOUR OWN RISK. THE AUTHOR WILL NOT BE LIABLE FOR DATA LOSS,
-- DAMAGES, LOSS OF PROFITS OR ANY OTHER KIND OF LOSS WHILE USING
-- OR MISUSING THIS SOFTWARE.
--
-- 5. Installing and using the unRAR utility signifies acceptance of
-- these terms and conditions of the license.
--
-- 6. If you don't agree with terms of the license you must remove
-- unRAR files from your storage devices and cease to use the
-- utility.
--
-- Thank you for your interest in RAR and unRAR.
--
--
-- Alexander L. Roshal
-\ No hay ningún carácter de nueva línea al final del fichero
-diff -ruNa p7zip_9.20.1/makefile p7zip-libre_9.20.1/makefile
---- p7zip_9.20.1/makefile 2011-03-13 08:52:45.000000000 -0300
-+++ p7zip-libre_9.20.1/makefile 2011-09-07 15:41:14.000000000 -0300
-@@ -56,7 +56,6 @@
- $(MAKE) -C CPP/7zip/UI/Client7z depend
- $(MAKE) -C CPP/7zip/UI/Console depend
- $(MAKE) -C CPP/7zip/Bundles/Format7zFree depend
-- $(MAKE) -C CPP/7zip/Compress/Rar depend
- $(MAKE) -C CPP/7zip/UI/GUI depend
- $(MAKE) -C CPP/7zip/UI/FileManager depend
- $(MAKE) -C check/my_86_filter depend
-@@ -68,7 +67,6 @@
- common7z:common
- $(MKDIR) bin/Codecs
- $(MAKE) -C CPP/7zip/Bundles/Format7zFree all
-- $(MAKE) -C CPP/7zip/Compress/Rar all
-
- 7z: common7z
- $(MAKE) -C CPP/7zip/UI/Console all
-@@ -93,7 +91,6 @@
- $(MAKE) -C CPP/7zip/UI/FileManager clean
- $(MAKE) -C CPP/7zip/UI/GUI clean
- $(MAKE) -C CPP/7zip/Bundles/Format7zFree clean
-- $(MAKE) -C CPP/7zip/Compress/Rar clean
- $(MAKE) -C CPP/7zip/Compress/LZMA_Alone clean
- $(MAKE) -C CPP/7zip/Bundles/AloneGCOV clean
- $(MAKE) -C CPP/7zip/TEST/TestUI clean
-diff -ruNa p7zip_9.20.1/makefile.oldmake p7zip-libre_9.20.1/makefile.oldmake
---- p7zip_9.20.1/makefile.oldmake 2011-03-13 08:53:08.000000000 -0300
-+++ p7zip-libre_9.20.1/makefile.oldmake 2011-09-07 15:41:14.000000000 -0300
-@@ -56,7 +56,6 @@
- cd CPP/7zip/UI/Client7z ; $(MAKE) depend
- cd CPP/7zip/UI/Console ; $(MAKE) depend
- cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) depend
-- cd CPP/7zip/Compress/Rar ; $(MAKE) depend
- cd CPP/7zip/UI/GUI ; $(MAKE) depend
- cd CPP/7zip/UI/FileManager ; $(MAKE) depend
- cd check/my_86_filter ; $(MAKE) depend
-@@ -68,7 +67,6 @@
- common7z:common
- $(MKDIR) bin/Codecs
- cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) all
-- cd CPP/7zip/Compress/Rar ; $(MAKE) all
-
- 7z: common7z
- cd CPP/7zip/UI/Console ; $(MAKE) all
-@@ -93,7 +91,6 @@
- cd CPP/7zip/UI/FileManager ; $(MAKE) clean
- cd CPP/7zip/UI/GUI ; $(MAKE) clean
- cd CPP/7zip/Bundles/Format7zFree ; $(MAKE) clean
-- cd CPP/7zip/Compress/Rar ; $(MAKE) clean
- cd CPP/7zip/Compress/LZMA_Alone ; $(MAKE) clean
- cd CPP/7zip/Bundles/AloneGCOV ; $(MAKE) clean
- cd CPP/7zip/TEST/TestUI ; $(MAKE) clean
-diff -ruNa p7zip_9.20.1/makefile.qnx_shared.so p7zip-libre_9.20.1/makefile.qnx_shared.so
---- p7zip_9.20.1/makefile.qnx_shared.so 2007-06-28 04:34:14.000000000 -0300
-+++ p7zip-libre_9.20.1/makefile.qnx_shared.so 2011-09-07 15:41:14.000000000 -0300
-@@ -1,5 +1,4 @@
- ###################################################
--# makefile.machine for "7z.so , Codecs/Rar29.so" :
- # tested with p7zip-4.47_beta on qnx-6.3.0 sp3 x86 target
-
- OPTFLAGS=-O
-diff -ruNa p7zip_9.20.1/makefile.rules p7zip-libre_9.20.1/makefile.rules
---- p7zip_9.20.1/makefile.rules 2010-11-07 13:08:51.000000000 -0300
-+++ p7zip-libre_9.20.1/makefile.rules 2011-09-07 15:41:14.000000000 -0300
-@@ -448,18 +448,6 @@
- NsisRegister.o : ../../Archive/Nsis/NsisRegister.cpp
- $(CXX) $(CXXFLAGS) ../../Archive/Nsis/NsisRegister.cpp
-
--RarHandler.o : ../../Archive/Rar/RarHandler.cpp
-- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarHandler.cpp
--RarHeader.o : ../../Archive/Rar/RarHeader.cpp
-- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarHeader.cpp
--RarIn.o : ../../Archive/Rar/RarIn.cpp
-- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarIn.cpp
--RarItem.o : ../../Archive/Rar/RarItem.cpp
-- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarItem.cpp
--RarVolumeInStream.o : ../../Archive/Rar/RarVolumeInStream.cpp
-- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarVolumeInStream.cpp
--RarRegister.o : ../../Archive/Rar/RarRegister.cpp
-- $(CXX) $(CXXFLAGS) ../../Archive/Rar/RarRegister.cpp
-
- UdfHandler.o : ../../Archive/Udf/UdfHandler.cpp
- $(CXX) $(CXXFLAGS) ../../Archive/Udf/UdfHandler.cpp
-@@ -535,10 +523,6 @@
- $(CXX) $(CXXFLAGS) ../../Crypto/7zAesRegister.cpp
- WzAes.o : ../../Crypto/WzAes.cpp
- $(CXX) $(CXXFLAGS) ../../Crypto/WzAes.cpp
--Rar20Crypto.o : ../../Crypto/Rar20Crypto.cpp
-- $(CXX) $(CXXFLAGS) ../../Crypto/Rar20Crypto.cpp
--RarAes.o : ../../Crypto/RarAes.cpp
-- $(CXX) $(CXXFLAGS) ../../Crypto/RarAes.cpp
- HmacSha1.o : ../../Crypto/HmacSha1.cpp
- $(CXX) $(CXXFLAGS) ../../Crypto/HmacSha1.cpp
- Pbkdf2HmacSha1.o : ../../Crypto/Pbkdf2HmacSha1.cpp
diff --git a/libre/p7zip-libre/parent-folder-icon.patch b/libre/p7zip-libre/parent-folder-icon.patch
deleted file mode 100644
index da492b60f..000000000
--- a/libre/p7zip-libre/parent-folder-icon.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff -ruN p7zip_9.20.1/CPP/7zip/UI/FileManager/FM_rc.cpp p7zip_9.20.1-libre/CPP/7zip/UI/FileManager/FM_rc.cpp
---- p7zip_9.20.1/CPP/7zip/UI/FileManager/FM_rc.cpp 2010-11-07 16:55:36.000000000 +0100
-+++ p7zip_9.20.1-libre/CPP/7zip/UI/FileManager/FM_rc.cpp 2014-04-17 21:41:48.222298740 +0200
-@@ -774,8 +774,6 @@
-
- /////////////////////////////////////////////////////
-
--#include "res/ParentFolder.h"
--
- SevenZipPanel::SevenZipPanel(MyFrame *frame, wxWindow *parent,int id,int panelIndex) :
- wxPanel(parent,id) , m_frame(frame), _wList(0)
- {
-@@ -793,7 +791,7 @@
- int sizes[] = {150, 250, 350, -1};
- wxArrayString pathArray;
- wxBoxSizer *pPathSizer = new wxBoxSizer(wxHORIZONTAL);
-- m_pBmpButtonParentFolder = new wxBitmapButton(this, kParentFolderID, wxGetBitmapFromMemory(PARENT_FOLDER), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW);
-+ m_pBmpButtonParentFolder = new wxBitmapButton(this, kParentFolderID, wxArtProvider::GetBitmap(wxART_GO_DIR_UP, wxART_TOOLBAR, wxDefaultSize), wxDefaultPosition, wxDefaultSize, wxBU_AUTODRAW);
- m_pComboBoxPath = new wxComboBox(this, _comboBoxID, wxEmptyString, wxDefaultPosition, wxSize(300,-1), pathArray, wxCB_DROPDOWN | wxCB_SORT );
- pPathSizer->Add(m_pBmpButtonParentFolder, 0, wxALL|wxEXPAND, 0);
- pPathSizer->Add(m_pComboBoxPath, 1, wxALL|wxEXPAND, 5);
-diff -ruN p7zip_9.20.1/CPP/7zip/UI/FileManager/makefile.depend p7zip_9.20.1-libre/CPP/7zip/UI/FileManager/makefile.depend
---- p7zip_9.20.1/CPP/7zip/UI/FileManager/makefile.depend 2011-02-19 10:33:17.000000000 +0100
-+++ p7zip_9.20.1-libre/CPP/7zip/UI/FileManager/makefile.depend 2014-04-17 21:40:56.504696275 +0200
-@@ -714,7 +714,7 @@
- res/Move2PNG.h res/DeletePNG.h res/Delete2PNG.h res/InfoPNG.h \
- res/Info2PNG.h LangUtils.h ../../../Common/Lang.h \
- ../../../Common/MyString.h ../../../Windows/ResourceString.h \
-- /usr/include/wx-2.8/wx/mstream.h res/ParentFolder.h
-+ /usr/include/wx-2.8/wx/mstream.h
- OpenCallback.o: OpenCallback.cpp ../../../myWindows/StdAfx.h \
- ../../../myWindows/config.h ../../../Common/MyWindows.h \
- ../../../Common/MyGuidDef.h ../../../Common/Types.h \
diff --git a/libre/pacman/PKGBUILD b/libre/pacman/PKGBUILD
index 15d16466d..4f578475b 100644
--- a/libre/pacman/PKGBUILD
+++ b/libre/pacman/PKGBUILD
@@ -1,11 +1,11 @@
# vim: set ts=2 sw=2 et:
-# $Id: PKGBUILD 202690 2013-12-24 21:35:48Z dreisner $
+# $Id: PKGBUILD 211992 2014-05-04 02:54:25Z allan $
# Maintainer: Dan McGee <dan@archlinux.org>
# Maintainer: Dave Reisner <dreisner@archlinux.org>
pkgname=pacman
pkgver=4.1.2
-pkgrel=5.2
+pkgrel=6
pkgdesc="A library-based package manager with dependency support"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.archlinux.org/pacman/"
@@ -33,7 +33,7 @@ md5sums=('063c8b0ff6bdf903dc235445525627cd'
'f0f310df411f943dbc4e2dd376c88662')
build() {
- cd $srcdir/$pkgname-$pkgver
+ cd "$pkgname-$pkgver"
./configure --prefix=/usr --sysconfdir=/etc \
--localstatedir=/var --enable-doc \
@@ -48,47 +48,48 @@ check() {
}
package() {
- cd $srcdir/$pkgname-$pkgver
- make DESTDIR=$pkgdir install
- make DESTDIR=$pkgdir -C contrib install
+ cd "$pkgname-$pkgver"
+
+ make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C contrib install
# install Arch specific stuff
- install -dm755 $pkgdir/etc
- install -m644 $srcdir/pacman.conf.$CARCH $pkgdir/etc/pacman.conf
-
- case "$CARCH" in
+ install -dm755 "$pkgdir/etc"
+ install -m644 "$srcdir/pacman.conf.$CARCH" "$pkgdir/etc/pacman.conf"
+
+ case $CARCH in
i686)
mycarch="i686"
mychost="i686-pc-linux-gnu"
- myflags="-march=i686 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
+ myflags="-march=i686 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4"
myldflags="-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu"
;;
x86_64)
mycarch="x86_64"
mychost="x86_64-unknown-linux-gnu"
- myflags="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector --param=ssp-buffer-size=4"
+ myflags="-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong --param=ssp-buffer-size=4"
myldflags="-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu"
;;
mips64el)
mycarch="mips64el"
mychost="mips64el-unknown-linux-gnu"
- myflags="-O2 -march=mips3 -mtune=loongson2f -mabi=n32 -pipe -mplt -Wa,-mfix-loongson2f-nop -fstack-protector --param=ssp-buffer-size=4"
+ myflags="-O2 -march=mips3 -mtune=loongson2f -mabi=n32 -pipe -mplt -Wa,-mfix-loongson2f-nop -fstack-protector-strong --param=ssp-buffer-size=4"
myldflags="-Wl,-O1,--sort-common,--as-needed,-z,relro"
;;
esac
- install -m644 $srcdir/makepkg.conf $pkgdir/etc/
+
# set things correctly in the default conf file
- sed -i $pkgdir/etc/makepkg.conf \
+ install -m644 "$srcdir/makepkg.conf" "$pkgdir/etc"
+ sed -i "$pkgdir/etc/makepkg.conf" \
-e "s|@CARCH[@]|$mycarch|g" \
-e "s|@CHOST[@]|$mychost|g" \
-e "s|@LDFLAGS[@]|$myldflags|g" \
-e "s|@CARCHFLAGS[@]|$myflags|g"
-
+
# put bash_completion in the right location
- install -dm755 ${pkgdir}/usr/share/bash-completion/completions
- mv ${pkgdir}/etc/bash_completion.d/pacman \
- ${pkgdir}/usr/share/bash-completion/completions
- rmdir ${pkgdir}/etc/bash_completion.d
+ install -dm755 "$pkgdir/usr/share/bash-completion/completions"
+ mv "$pkgdir/etc/bash_completion.d/pacman" "$pkgdir/usr/share/bash-completion/completions"
+ rmdir "$pkgdir/etc/bash_completion.d"
for f in makepkg pacman-key; do
ln -s pacman "$pkgdir/usr/share/bash-completion/completions/$f"
diff --git a/~drtan/parabola-artwork/PKGBUILD b/libre/parabola-artwork/PKGBUILD
index 89e63d965..4833ef726 100644
--- a/~drtan/parabola-artwork/PKGBUILD
+++ b/libre/parabola-artwork/PKGBUILD
@@ -1,14 +1,14 @@
# Maintainer: Drtan Samos <lashdu@drtan.twilightparadox.com>
pkgname=parabola-artwork
-pkgver=1.0
-pkgrel=4
-pkgdesc="The artwork for Parabola GNU/Linux-libre."
+pkgver=1.0.1
+pkgrel=1
+pkgdesc="The Parabola artwork"
arch=('any')
url="https://parabolagnulinux.org"
license=('CCPL:cc-by-sa-3.0')
source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}-${pkgrel}.tar.gz")
-sha256sums=('3cddac368164531113e7d256c7ee6dd5493ae57c080bc8124748daee2c0a915b')
+sha256sums=('f8a0d0dde510f76125dbe9106dcb3e2d9af595ad5cfa1028acf10011f8fbb7af ')
package() {
cd "${srcdir}/${pkgname}-${pkgver}-${pkgrel}"
diff --git a/libre/parabola-gnome/PKGBUILD b/libre/parabola-gnome/PKGBUILD
new file mode 100644
index 000000000..19eb60aa2
--- /dev/null
+++ b/libre/parabola-gnome/PKGBUILD
@@ -0,0 +1,31 @@
+# Maintainer: Drtan Samos <lashdu@drtan.twilightparadox.com>
+
+pkgname=parabola-gnome
+pkgver=1.0.1
+pkgrel=3
+pkgdesc="The Parabola defaults for GNOME"
+arch=('any')
+url="https://parabolagnulinux.org"
+license=('GPL3')
+install=$pkgname.install
+makedepends=('git')
+depends=('dbus-glib' 'parabola-artwork>=1.0' 'parabola-artwork<1.1')
+source=("git://projects.parabolagnulinux.org/packages/${pkgname}#tag=v${pkgver}")
+sha256sums=('SKIP')
+
+package() {
+ cd "${srcdir}/${pkgname}"
+
+ install -d ${pkgdir}/etc/dconf/db/gdm.d/
+ install -m644 dconf/db/gdm.d/parabola "${pkgdir}/etc/dconf/db/gdm.d/$(date +%Y%m%d%H%M%S%N)"
+
+ install -d ${pkgdir}/etc/dconf/db/local.d/
+ install -m644 dconf/db/local.d/parabola "${pkgdir}/etc/dconf/db/local.d/$(date +%Y%m%d%H%M%S%N)"
+
+ install -d ${pkgdir}/etc/dconf/profile/
+ install -m644 dconf/profile/* "${pkgdir}/etc/dconf/profile/"
+
+ install -d ${pkgdir}/usr/share/gnome-background-properties/
+ install -m644 gnome-background-properties/parabola.xml "${pkgdir}/usr/share/gnome-background-properties/"
+}
+
diff --git a/~drtan/parabola-gnome/parabola-gnome.install b/libre/parabola-gnome/parabola-gnome.install
index 8fce17b2e..8fce17b2e 100644
--- a/~drtan/parabola-gnome/parabola-gnome.install
+++ b/libre/parabola-gnome/parabola-gnome.install
diff --git a/libre/python-reportlab-libre/PKGBUILD b/libre/python-reportlab-libre/PKGBUILD
index c211f1567..3ce775f9e 100644
--- a/libre/python-reportlab-libre/PKGBUILD
+++ b/libre/python-reportlab-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 107615 2014-03-18 10:32:13Z jelle $
+# $Id: PKGBUILD 110391 2014-04-28 19:17:21Z jelle $
# Maintainer:
# Contributor: Angel 'angvp' Velasquez <angvp[at]archlinux.com.ve>
# Contributor: William Rea <sillywilly@gmail.com>
@@ -9,18 +9,18 @@
pkgbase=python-reportlab-libre
pkgname=(python2-reportlab-libre python-reportlab-libre)
_origname=reportlab
-pkgver=3.0
-pkgrel=2
+pkgver=3.1.8
+pkgrel=1
pkgdesc="A proven industry-strength PDF generating solution, without nonfree Adobe T1 fonts support"
arch=('i686' 'x86_64')
url="http://www.reportlab.org/rl_toolkit.html"
depends=('freetype2')
checkdepends=('python' 'python2' 'python2-pillow' 'python-pillow')
license=('custom')
-source=(http://www.reportlab.com/ftp/reportlab-$pkgver.tar.gz
- free-fonts.patch)
-md5sums=('a4fd40abcfb604aa3bd907181133c071'
- 'eb3ac47734efb05b939fb88026aff8ed')
+source=("https://pypi.python.org/packages/source/r/reportlab/reportlab-$pkgver.tar.gz"
+ 'free-fonts.patch')
+md5sums=(820a9fda647078503597b85cdba7ed7f
+ eb3ac47734efb05b939fb88026aff8ed)
prepare() {
cd $srcdir
diff --git a/libre/sdl-libre/PKGBUILD b/libre/sdl-libre/PKGBUILD
index 21250fa60..18356ed03 100644
--- a/libre/sdl-libre/PKGBUILD
+++ b/libre/sdl-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 198628 2013-10-31 13:07:39Z heftig $
+# $Id: PKGBUILD 212210 2014-05-10 21:41:06Z heftig $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: dorphell <dorphell@archlinux.org>
@@ -8,7 +8,7 @@
pkgname=sdl-libre
pkgver=1.2.15
-pkgrel=5
+pkgrel=6
pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard, without nonfree riva_mmio.h file"
arch=('i686' 'x86_64')
url="http://www.libsdl.org"
@@ -28,7 +28,8 @@ source=(https://repo.parabolagnulinux.org/other/$pkgname/SDL-libre-${pkgver}.tar
sdl-1.2.14-disable-mmx.patch
fix_joystick_misc_axes.diff
libsdl-1.2.15-resizing.patch
- sdl_x11sym.patch)
+ sdl_x11sym.patch
+ X11_KeyToUnicode.patch)
mkmd5sums=('9d96df8417572a2afb781a7c4c811a85'
'5c665f72b8a2adc97a91f6db6f2da79a')
md5sums=('c6e53ef16fa347ed066c3d68fe93c378'
@@ -36,7 +37,8 @@ md5sums=('c6e53ef16fa347ed066c3d68fe93c378'
'e5c16b7611f62c7cb25f0534eff68852'
'687586a108b597a2a6b73070c1d37e51'
'3dd50347d8856160a9cbd7f80383a1f8'
- '148b285bccee9d21bb96db807363b962')
+ '148b285bccee9d21bb96db807363b962'
+ 'edea272dff4698470877c016d818918d')
mksource() {
cd SDL-$pkgver
@@ -50,6 +52,7 @@ prepare() {
patch -Np1 -i ../fix_joystick_misc_axes.diff
patch -Np1 -i ../libsdl-1.2.15-resizing.patch
patch -Np0 -i ../sdl_x11sym.patch
+ patch -Np1 -i ../X11_KeyToUnicode.patch
}
build() {
diff --git a/libre/sdl-libre/X11_KeyToUnicode.patch b/libre/sdl-libre/X11_KeyToUnicode.patch
new file mode 100644
index 000000000..5f0f325b1
--- /dev/null
+++ b/libre/sdl-libre/X11_KeyToUnicode.patch
@@ -0,0 +1,52 @@
+
+# HG changeset patch
+# User Sam Lantinga <slouken@libsdl.org>
+# Date 1327258041 18000
+# Node ID 900a0fae90ca65cff55a70a17b9ec39d2ddccbcf
+# Parent 5273dfd19a5e8c5736a0d417bd441f704c5355f8
+Fixed bug 1390 - X11_KeyToUnicode
+
+manuel.montezelo 2012-01-22 08:56:18 PST
+
+We had the following bug report at Debian:
+http://bugs.debian.org/376560
+
+Same one in Ubuntu:
+https://bugs.launchpad.net/ubuntu/+source/libsdl1.2/+bug/66217
+
+We've been including a patch since then (attached) to actually export the
+symbol, since 2006. In the last release the function seems to be there, alive
+and kicking.
+
+It's affecting other people too:
+http://www.garagegames.com/community/forums/viewthread/52287
+
+diff -r 5273dfd19a5e -r 900a0fae90ca src/video/x11/SDL_x11events.c
+--- a/src/video/x11/SDL_x11events.c Sat Jan 21 12:06:51 2012 -0500
++++ b/src/video/x11/SDL_x11events.c Sun Jan 22 13:47:21 2012 -0500
+@@ -1246,8 +1246,11 @@
+ * sequences (dead accents, compose key sequences) will not work since the
+ * state has been irrevocably lost.
+ */
++extern DECLSPEC Uint16 SDLCALL X11_KeyToUnicode(SDLKey, SDLMod);
++
+ Uint16 X11_KeyToUnicode(SDLKey keysym, SDLMod modifiers)
+ {
++ static int warning = 0;
+ struct SDL_VideoDevice *this = current_video;
+ char keybuf[32];
+ int i;
+@@ -1255,6 +1258,12 @@
+ XKeyEvent xkey;
+ Uint16 unicode;
+
++ if ( warning ) {
++ warning = 0;
++ fprintf(stderr, "WARNING: Application is using X11_KeyToUnicode().\n");
++ fprintf(stderr, "This is not an official SDL function, please report this as a bug.\n");
++ }
++
+ if ( !this || !SDL_Display ) {
+ return 0;
+ }
+
diff --git a/libre/spectrwm-libre/PKGBUILD b/libre/spectrwm-libre/PKGBUILD
index c1ea8c449..2a45650fe 100644
--- a/libre/spectrwm-libre/PKGBUILD
+++ b/libre/spectrwm-libre/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 106288 2014-02-26 16:09:20Z kkeen $
+# $Id: PKGBUILD 110857 2014-05-08 17:25:29Z kkeen $
# Maintainer: Kyle Keen <keenerd@gmail.com>
# Contributor: Christoph Zeiler <archNOSPAM_at_moonblade.dot.org>
_pkgname=spectrwm
pkgname=spectrwm-libre
-pkgver=2.5.0
+pkgver=2.5.1
pkgrel=1
pkgdesc="A minimalistic automatic tiling window manager that tries to stay out of the way, without nonfree profont support"
arch=('i686' 'x86_64' 'mips64el')
@@ -16,13 +16,15 @@ replaces=('spectrwm' 'scrotwm')
conflicts=('spectrwm')
provides=("spectrwm=$pkgver")
makedepends=('libxt')
-optdepends=('scrot: screenshots' 'xlockmore: great screenlocker' 'terminus-font: great font')
+optdepends=('scrot: screenshots'
+ 'xlockmore: great screenlocker'
+ 'terminus-font: great font')
backup=(etc/spectrwm.conf)
source=(http://opensource.conformal.com/snapshots/$_pkgname/$_pkgname-$pkgver.tgz \
LICENSE \
baraction.sh \
spectrwm-no-preload)
-md5sums=('22355256693393779b2d366d312c4577'
+md5sums=('d9aec3342920e31cbe60f1032571043a'
'a67cfe51079481e5b0eab1ad371379e3'
'950d663692e1da56e0ac864c6c3ed80e'
'974d109ce0af39cc73936d5efd682480')
diff --git a/libre/texlive-bin-libre/PKGBUILD b/libre/texlive-bin-libre/PKGBUILD
index 7d35d83e9..f3b5eca26 100644
--- a/libre/texlive-bin-libre/PKGBUILD
+++ b/libre/texlive-bin-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 209906 2014-04-08 07:50:23Z fyan $
+# $Id: PKGBUILD 211863 2014-04-28 15:07:05Z jgc $
# Maintainer: Rémy Oudompheng <remy@archlinux.org>
# Contributor: francois <francois.archlinux.org>
# Maintainer (Parabola): Michał Masłowski <mtjm@mtjm.eu>
@@ -6,11 +6,11 @@
pkgname=texlive-bin-libre
pkgver=2013.30973
-pkgrel=9
+pkgrel=10
pkgdesc="TeX Live binaries, without biber binaries (Parabola rebranded)"
license=('GPL')
arch=('i686' 'x86_64' 'mips64el')
-depends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler>=0.24.4'
+depends=('cairo' 'pixman' 'graphite' 't1lib' 'gd' 'poppler'
'libsigsegv' 'zziplib' 'libpng' 'libjpeg' 'freetype2'
'icu' 'harfbuzz' 'harfbuzz-icu')
makedepends=('perl' 'clisp' 'ffcall')
@@ -23,9 +23,16 @@ url='http://tug.org/texlive/'
install="texlive.install"
source=('fix-fontforge-encoding.patch'
"http://mirrors.kernel.org/archlinux/other/texlive/texlive-bin-source-${pkgver}.tar.xz"
+ poppler-0.26.patch
)
md5sums=('bfb9716aa00c86c08cd31e5b32edeb98'
- '0a8ffd5c0002a080a4202057b1f106c6')
+ '0a8ffd5c0002a080a4202057b1f106c6'
+ '65f5eef04fdf65fe8ff2df873509c855')
+
+prepare() {
+ cd source
+ patch -Np2 -i ../poppler-0.26.patch
+}
build() {
cd "$srcdir"
diff --git a/libre/texlive-bin-libre/poppler-0.26.patch b/libre/texlive-bin-libre/poppler-0.26.patch
new file mode 100644
index 000000000..fde123f62
--- /dev/null
+++ b/libre/texlive-bin-libre/poppler-0.26.patch
@@ -0,0 +1,104 @@
+--- trunk/source/texk/web2c/luatexdir/image/epdf.h 2013/01/20 19:58:26 4559
++++ trunk/source/texk/web2c/luatexdir/image/epdf.h 2014/01/02 15:35:31 4718
+@@ -40,21 +40,22 @@
+ # include <goo/GooString.h>
+ # include <goo/gmem.h>
+ # include <goo/gfile.h>
+-# include "Object.h"
+-# include "Stream.h"
+-# include "Gfx.h"
+-# include "Annot.h"
+-# include "Array.h"
+-# include "Dict.h"
+-# include "XRef.h"
+-# include "Catalog.h"
+-# include "Link.h"
+-# include "Page.h"
+-# include "GfxFont.h"
+-# include "PDFDoc.h"
+-# include "GlobalParams.h"
+-# include "Error.h"
+-# include "FileSpec.h"
++# include <Object.h>
++# include <Stream.h>
++# include <Gfx.h>
++# include <Annot.h>
++# include <Array.h>
++# include <Dict.h>
++# include <XRef.h>
++# include <Catalog.h>
++# include <StructTreeRoot.h>
++# include <Link.h>
++# include <Page.h>
++# include <GfxFont.h>
++# include <PDFDoc.h>
++# include <GlobalParams.h>
++# include <Error.h>
++# include <FileSpec.h>
+
+ extern "C" {
+
+@@ -81,8 +82,8 @@
+ # include "utils/avlstuff.h"
+ # include "pdf/pdftypes.h"
+
+-# include "lua52/lua.h"
+-# include "lua52/lauxlib.h"
++# include "lua.h"
++# include "lauxlib.h"
+
+ /* pdfgen.w */
+ extern int ten_pow[10];
+--- trunk/source/texk/web2c/luatexdir/lua/lepdflib.cc 2013/04/05 10:54:08 4629
++++ trunk/source/texk/web2c/luatexdir/lua/lepdflib.cc 2014/01/02 15:35:31 4718
+@@ -65,6 +65,7 @@
+ #define M_PDFRectangle "PDFRectangle"
+ #define M_Ref "Ref"
+ #define M_Stream "Stream"
++#define M_StructTreeRoot "StructTreeRoot"
+ #define M_XRefEntry "XRefEntry"
+ #define M_XRef "XRef"
+
+@@ -96,6 +97,7 @@
+ new_poppler_userdata(PDFRectangle);
+ new_poppler_userdata(Ref);
+ new_poppler_userdata(Stream);
++new_poppler_userdata(StructTreeRoot);
+ new_poppler_userdata(XRef);
+
+ //**********************************************************************
+@@ -573,7 +575,11 @@
+
+ m_poppler_get_GOOSTRING(Catalog, getBaseURI);
+ m_poppler_get_GOOSTRING(Catalog, readMetadata);
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ m_poppler_get_poppler(Catalog, Object, getStructTreeRoot);
++#else
++m_poppler_get_poppler(Catalog, StructTreeRoot, getStructTreeRoot);
++#endif
+
+ static int m_Catalog_findPage(lua_State * L)
+ {
+@@ -2146,14 +2152,22 @@
+
+ static int m_PDFDoc_getStructTreeRoot(lua_State * L)
+ {
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ Object *obj;
++#else
++ StructTreeRoot *obj;
++#endif
+ udstruct *uin, *uout;
+ uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc);
+ if (uin->pd != NULL && uin->pd->pc != uin->pc)
+ pdfdoc_changed_error(L);
+ if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) {
+ obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot();
++#ifdef GETSTRUCTTREEROOT_RETURNS_OBJECT
+ uout = new_Object_userdata(L);
++#else
++ uout = new_StructTreeRoot_userdata(L);
++#endif
+ uout->d = obj;
+ uout->pc = uin->pc;
+ uout->pd = uin->pd;
diff --git a/libre/vim-runtime/PKGBUILD b/libre/vim-runtime/PKGBUILD
index 797c5c838..893907179 100644
--- a/libre/vim-runtime/PKGBUILD
+++ b/libre/vim-runtime/PKGBUILD
@@ -8,8 +8,8 @@
pkgbase=vim
pkgname=vim-runtime
_topver=7.4
-_patchlevel=214
-__hgrev=d2ef98a43b5d
+_patchlevel=274
+__hgrev=075eea398fff
_versiondir="vim${_topver//./}"
pkgver=${_topver}.${_patchlevel}
pkgrel=1
@@ -21,7 +21,7 @@ source=("ftp://ftp.archlinux.org/other/vim/vim-${pkgver}.tar.xz"
"ftp://ftp.archlinux.org/other/vim/vim-${pkgver}.tar.xz.sig"
'vimrc'
'parabola.vim')
-md5sums=('5ec7d7f84955dacfef88e52ebc79b267'
+md5sums=('98bf9f8d57b95715d08fcc42beae8761'
'SKIP'
'27820c2bdc34624674c561ae6476bc6a'
'a8c21928eefd766e211f987879a9199c')
diff --git a/libre/xarchiver-libre/PKGBUILD b/libre/xarchiver-libre/PKGBUILD
index a718b8252..c24d97700 100644
--- a/libre/xarchiver-libre/PKGBUILD
+++ b/libre/xarchiver-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 105928 2014-02-19 11:27:15Z bgyorgy $
+# $Id: PKGBUILD 111012 2014-05-12 01:13:40Z bgyorgy $
# Maintainer: Balló György <ballogyor+arch at gmail dot com>
# Contributor: Alexander Fehr <pizzapunk gmail com>
# Contributor: Andrew Simmons <andrew.simmons@gmail.com>
@@ -7,8 +7,8 @@
_pkgname=xarchiver
pkgname=xarchiver-libre
pkgver=0.5.3
-pkgrel=1
-pkgdesc="GTK+ frontend to various command line archivers, with unar support"
+pkgrel=4
+pkgdesc="GTK+ frontend to various command line archivers, without nonfree unrar support"
arch=('i686' 'x86_64' 'mips64el')
url="http://xarchiver.sourceforge.net/"
license=('GPL')
@@ -22,21 +22,20 @@ optdepends=('zip: ZIP support'
'p7zip: 7z support'
'arj: ARJ support'
'lzop: LZOP support'
- 'cpio: RPM support'
- 'unar: RAR support')
+ 'cpio: RPM support')
install=xarchiver.install
source=(http://downloads.sourceforge.net/xarchiver/xarchiver-$pkgver.tar.bz2
xarchiver-0.5.3-fix-rpm-support.patch
xarchiver-0.5.3-fix-double-escaping.patch
xarchiver-0.5.3-fix-password-protected.patch
xarchiver-0.5.3-add-mime-types.patch
- xarchiver-0.5.3-add-unar-support.patch)
+ xarchiver-0.5.3-remove-nonfree-unrar-support.patch)
md5sums=('fd390bbd2df76a5f8a007bdeae82d4aa'
'812b93339f5e3332621f3c5abebfe277'
'6178d7ab679b761469c880a8db991907'
'35ab96d98521a0a36f3e9e9ec0969107'
- 'f9119f5290caa195a56b7d3c63d9137d'
- '5f0b21efd0159d41f207e664b72210b8')
+ '0cee887b3c989ba2cdce9154813843fb'
+ 'cf1788c180145adc3bc5d3572f8a883b')
prepare() {
cd $_pkgname-$pkgver
@@ -53,8 +52,9 @@ prepare() {
# Add more MIME types in the desktop file
patch -Np1 -i ../xarchiver-0.5.3-add-mime-types.patch
- # Add unar support
- patch -Np1 -i ../xarchiver-0.5.3-add-unar-support.patch
+ # Remove nonfree unRAR support
+ patch -Np1 -i ../xarchiver-0.5.3-remove-nonfree-unrar-support.patch
+ rm -v src/rar.{c,h}
}
build() {
diff --git a/libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch b/libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch
index 4552e5b96..ec427b99a 100644
--- a/libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-add-mime-types.patch
@@ -1,9 +1,17 @@
-diff -Naur xarchiver-0.5.3.orig/xarchiver.desktop.in xarchiver-0.5.2/xarchiver.desktop.in
---- xarchiver-0.5.3.orig/xarchiver.desktop.in 2014-01-24 04:05:33.438561000 +0100
-+++ xarchiver-0.5.3/xarchiver.desktop.in 2014-01-24 04:44:00.625750394 +0100
-@@ -11,4 +11,4 @@
+diff -Naur xarchiver-0.5.3.orig/xarchiver.desktop.in xarchiver-0.5.3/xarchiver.desktop.in
+--- xarchiver-0.5.3.orig/xarchiver.desktop.in 2014-05-12 01:08:12.159131913 +0000
++++ xarchiver-0.5.3/xarchiver.desktop.in 2014-05-12 01:09:02.585526393 +0000
+@@ -4,11 +4,11 @@
+ _Name=Xarchiver
+ _Comment=A GTK+2 only archive manager
+ _GenericName=Archive manager
+-Exec=xarchiver
++Exec=xarchiver %f
+ Icon=xarchiver
+ Terminal=false
+ Type=Application
X-MultipleArgs=false
Categories=GTK;Archiving;Utility;
StartupNotify=true
-MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-rar;application/x-rar-compressed;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;multipart/x-zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;
-+MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-rar;application/x-rar-compressed;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-xz;application/x-xz-compressed-tar;application/x-debian-package;application/x-rpm;
++MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-rar;application/x-rar-compressed;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-xz;application/x-xz-compressed-tar;application/x-deb;application/x-rpm;
diff --git a/libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch b/libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch
deleted file mode 100644
index 0b54cacc1..000000000
--- a/libre/xarchiver-libre/xarchiver-0.5.3-add-unar-support.patch
+++ /dev/null
@@ -1,545 +0,0 @@
-diff -Nur xarchiver-0.5.3.orig/doc/html/ch03s03.html xarchiver-0.5.3/doc/html/ch03s03.html
---- xarchiver-0.5.3.orig/doc/html/ch03s03.html 2008-11-03 04:49:49.000000000 -0200
-+++ xarchiver-0.5.3/doc/html/ch03s03.html 2014-02-20 04:35:34.820373529 -0200
-@@ -1,7 +1,7 @@
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>General</title><link rel="stylesheet" href="xarchiver.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="Xarchiver 0.5" /><link rel="up" href="ch03.html" title="Chapter 3. Usage" /><link rel="prev" href="ch03s02.html" title="Command line options" /><link rel="next" href="ch03s04.html" title="Xarchiver menu" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">General</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Usage</th><td width="20%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="general"></a>General</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="general_startup"></a>Startup</h3></div></div></div><p>
-- At startup, Xarchiver detects the available installed archivers (tar,rar,zip etc) and the script <i>xdg-open</i> for handling different file types. Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available. For instance if you have the free edition of rar, unrar, Xarchiver can't create rar archives since unrar allows rar archives to be opened, tested and extracted but not to be created.
-+ At startup, Xarchiver detects the available installed archivers (tar,rar,zip etc) and the script <i>xdg-open</i> for handling different file types. Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available. For instance if you have the free as in freedom alternative of rar, unar, Xarchiver can't create rar archives since unar allows rar archives to be opened, tested and extracted but not to be created.
- </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="how_it_works"></a>How it works</h3></div></div></div><p>
- Xarchiver will run in the background the cmd-line executable of the archiver with the archiver's proper switches to perform the selected operation. If something goes wrong Xarchiver reports the full output of the archiver executable in the command line output window. From the release 0.5 the files in the archive can be opened within Xarchiver. The script <i>xdg-open</i> will detect the file type and run the proper application to handle it. If you don't have such script installed in your system (it's found in the xdg-utils package) Xarchiver will recognize HTML, txt and images files only. The Preferences dialog will notify this to you when you click the Advanced section inside it.
- </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="dnd"></a>Drag and Drop</h3></div></div></div><p>
-diff -Nur xarchiver-0.5.3.orig/doc/xarchiver.docbook xarchiver-0.5.3/doc/xarchiver.docbook
---- xarchiver-0.5.3.orig/doc/xarchiver.docbook 2007-08-22 07:49:19.000000000 -0300
-+++ xarchiver-0.5.3/doc/xarchiver.docbook 2014-02-20 04:35:34.820373529 -0200
-@@ -204,7 +204,7 @@
- <section id="general_startup">
- <title>Startup</title>
- <para>
-- At startup, &app; detects the available installed archivers (tar,rar,zip etc). Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available. For instance if you have the free edition of rar, unrar, Xarchiver can't create rar archives since unrar allows rar archives to be opened, tested and extracted but not to be created.
-+ At startup, &app; detects the available installed archivers (tar,rar,zip etc). Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available. For instance if you have the free as in freedom alternative of rar, unar, Xarchiver can't create rar archives since unar allows rar archives to be opened and extracted but not to be created.
- </para>
- </section>
- <section id="how_it_works">
-diff -Nur xarchiver-0.5.3.orig/src/interface.c xarchiver-0.5.3/src/interface.c
---- xarchiver-0.5.3.orig/src/interface.c 2014-02-09 13:26:24.000000000 -0200
-+++ xarchiver-0.5.3/src/interface.c 2014-02-20 04:58:54.470139199 -0200
-@@ -45,7 +45,7 @@
- { "text/uri-list",0,0 },
- };
-
--extern gboolean unrar,batch_mode;
-+extern gboolean unar,batch_mode;
-
- static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid pid);
- static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid pid);
-@@ -623,7 +623,7 @@
- {
- gtk_widget_show(selected_frame);
- gtk_widget_set_sensitive(deselect_all,TRUE);
-- if ((archive[id]->type == XARCHIVETYPE_RAR || archive[id]->type == XARCHIVETYPE_RAR5) && unrar)
-+ if ((archive[id]->type == XARCHIVETYPE_RAR) && unar)
- {
- gtk_widget_set_sensitive (delete_menu,FALSE);
- gtk_widget_set_sensitive (rename_menu,FALSE);
-diff -Nur xarchiver-0.5.3.orig/src/main.c xarchiver-0.5.3/src/main.c
---- xarchiver-0.5.3.orig/src/main.c 2014-02-20 03:24:20.406301116 -0200
-+++ xarchiver-0.5.3/src/main.c 2014-02-20 04:43:27.247666292 -0200
-@@ -33,7 +33,7 @@
- gchar *add_files;
- gboolean error_output, file_to_open, ask_and_extract, ask_and_add, multi_extract;
- gboolean batch_mode = FALSE;
--gboolean unrar = FALSE;
-+gboolean unar = FALSE;
- gboolean sevenzr = FALSE, sevenza = FALSE, xdg_open = FALSE;
- static gboolean show_version = FALSE;
- int response;
-@@ -330,7 +330,6 @@
- delete[XARCHIVETYPE_GZIP] = 0;
- delete[XARCHIVETYPE_LZMA] = 0;
- delete[XARCHIVETYPE_XZ] = 0;
-- delete[XARCHIVETYPE_RAR] = delete[XARCHIVETYPE_RAR5] = &xa_rar_delete;
- delete[XARCHIVETYPE_RPM] = 0;
- delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_XZ] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
- delete[XARCHIVETYPE_ZIP] = &xa_zip_delete;
-@@ -343,7 +342,6 @@
- add[XARCHIVETYPE_ARJ] = &xa_arj_add;
- add[XARCHIVETYPE_DEB] = 0;
- add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = add[XARCHIVETYPE_XZ] = add[XARCHIVETYPE_LZOP] = &xa_tar_add;
-- add[XARCHIVETYPE_RAR] = add[XARCHIVETYPE_RAR5] = &xa_rar_add;
- add[XARCHIVETYPE_RPM] = 0;
- add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_XZ] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
- add[XARCHIVETYPE_ZIP] = &xa_zip_add;
-@@ -364,7 +362,6 @@
- test[XARCHIVETYPE_7ZIP] = &xa_7zip_test;
- test[XARCHIVETYPE_ARJ] = &xa_arj_test;
- test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = test[XARCHIVETYPE_XZ] = test[XARCHIVETYPE_LZOP] = &xa_tar_test;
-- test[XARCHIVETYPE_RAR] = test[XARCHIVETYPE_RAR5] = &xa_rar_test;
- test[XARCHIVETYPE_RPM] = 0;
- test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = &xa_tar_test;
- test[XARCHIVETYPE_ZIP] = &xa_zip_test;
-@@ -435,38 +432,14 @@
- //ArchiveSuffix = g_list_append(ArchiveSuffix, "");
- }
-
-- absolute_path = g_find_program_in_path ("rar");
-+ absolute_path = g_find_program_in_path ("unar");
- if ( absolute_path )
- {
-+ unar = TRUE;
- ArchiveType = g_list_append(ArchiveType, "rar");
- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar");
-- // Is RAR v5 ?
-- xa_rar_checkversion (absolute_path);
-- if (rar_version == 5)
-- {
-- ArchiveType = g_list_append(ArchiveType, "rar5");
-- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar5");
-- }
- g_free (absolute_path);
- }
-- else
-- {
-- absolute_path = g_find_program_in_path("unrar");
-- if ( absolute_path )
-- {
-- unrar = TRUE;
-- ArchiveType = g_list_append(ArchiveType, "rar");
-- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar");
-- // Is RAR v5 ?
-- xa_rar_checkversion (absolute_path);
-- if (rar_version == 5)
-- {
-- ArchiveType = g_list_append(ArchiveType, "rar5");
-- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar5");
-- }
-- g_free (absolute_path);
-- }
-- }
-
- absolute_path = g_find_program_in_path("cpio");
- if ( absolute_path )
-diff -Nur xarchiver-0.5.3.orig/src/new_dialog.c xarchiver-0.5.3/src/new_dialog.c
---- xarchiver-0.5.3.orig/src/new_dialog.c 2014-02-09 13:26:24.000000000 -0200
-+++ xarchiver-0.5.3/src/new_dialog.c 2014-02-20 05:13:00.058263839 -0200
-@@ -24,7 +24,7 @@
- #include "string_utils.h"
- #include "main.h"
-
--extern gboolean unrar;
-+extern gboolean unar;
- extern Prefs_dialog_data *prefs_window;
- gchar *current_new_directory = NULL;
- gint new_combo_box = -1;
-@@ -101,7 +101,7 @@
-
- while (Name)
- {
-- if (!(strncmp(Name->data, "rar", 3) == 0 && unrar))
-+ if (!(strncmp(Name->data, "rar", 3) == 0 && unar))
- gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box),Name->data);
- Name = g_list_next (Name);
- }
-diff -Nur xarchiver-0.5.3.orig/src/pref_dialog.c xarchiver-0.5.3/src/pref_dialog.c
---- xarchiver-0.5.3.orig/src/pref_dialog.c 2014-02-09 13:26:24.000000000 -0200
-+++ xarchiver-0.5.3/src/pref_dialog.c 2014-02-20 04:44:40.225947167 -0200
-@@ -23,7 +23,7 @@
- #include "main.h"
- #include "support.h"
-
--extern gboolean unrar;
-+extern gboolean unar;
- extern gboolean xdg_open;
- extern Extract_dialog_data *extract_window;
- extern Add_dialog_data *add_window;
-@@ -104,7 +104,7 @@
- {
- if (strcmp(archive_type->data, "tgz") == 0 ||
- strcmp(archive_type->data, "rpm") == 0 ||
-- (strncmp(archive_type->data, "rar", 3) == 0 && unrar) )
-+ (strncmp(archive_type->data, "rar", 3) == 0 && unar) )
- goto next;
- else
- gtk_combo_box_append_text (GTK_COMBO_BOX (prefs_data->combo_prefered_format),archive_type->data );
-diff -Nur xarchiver-0.5.3.orig/src/rar.c xarchiver-0.5.3/src/rar.c
---- xarchiver-0.5.3.orig/src/rar.c 2014-02-09 13:26:24.000000000 -0200
-+++ xarchiver-0.5.3/src/rar.c 2014-02-20 05:11:19.611884642 -0200
-@@ -20,7 +20,7 @@
- #include "rar.h"
- #include <unistd.h>
-
--extern gboolean unrar;
-+extern gboolean unar;
- extern void xa_reload_archive_content(XArchive *archive);
- extern void xa_create_liststore ( XArchive *archive, gchar *columns_names[]);
- extern int rar_version;
-@@ -36,44 +36,15 @@
- gchar *command = NULL;
- gchar *rar = NULL;
- jump_header = read_filename = last_line = encrypted = FALSE;
--
-- if (unrar)
-- {
-- rar = "unrar";
-- archive->can_add = archive->has_sfx = FALSE;
-- }
-- else
-- {
-- rar = "rar";
-- archive->can_add = archive->has_sfx = TRUE;
-- }
-+ rar = "unar";
-+ archive->can_add = archive->has_sfx = FALSE;
-
-- command = g_strconcat ( rar," v " , archive->escaped_path, NULL );
-+ command = g_strconcat ( rar, archive->escaped_path, NULL );
- archive->has_sfx = archive->has_properties = archive->can_extract = archive->has_test = TRUE;
- archive->dummy_size = 0;
- archive->nr_of_files = 0;
-
-- if (archive->type == XARCHIVETYPE_RAR5)
-- archive->format = "RAR5";
-- else
-- archive->format = "RAR";
--
--
-- if (rar_version == 5)
-- {
-- archive->nc = 8;
-- archive->parse_output = xa_get_rar5_line_content;
-- xa_spawn_async_process (archive,command);
-- g_free ( command );
-- if ( archive->child_pid == 0 )
-- return;
-- archive->column_types = g_malloc0(sizeof(types5));
-- for (i = 0; i < archive->nc+2; i++)
-- archive->column_types[i] = types5[i];
--
-- xa_create_liststore (archive, names5);
-- }
-- else
-+ archive->format = "RAR";
- {
- archive->nc = 10;
- archive->parse_output = xa_get_rar_line_content;
-@@ -247,32 +218,6 @@
- }
- }
-
--void xa_rar_delete (XArchive *archive,GSList *names)
--{
-- gchar *command,*e_filename = NULL;
-- GSList *list = NULL,*_names;
-- GString *files = g_string_new("");
--
-- _names = names;
-- while (_names)
-- {
-- e_filename = xa_escape_filename((gchar*)_names->data,"$'`\"\\!?* ()[]&|:;<>#");
-- g_string_prepend (files,e_filename);
-- g_string_prepend_c (files,' ');
-- _names = _names->next;
-- }
-- g_slist_foreach(names,(GFunc)g_free,NULL);
-- g_slist_free(names);
--
-- command = g_strconcat ("rar d ",archive->escaped_path," ",files->str,NULL);
-- g_string_free(files,TRUE);
-- list = g_slist_append(list,command);
--
-- xa_run_command (archive,list);
-- if (archive->status == XA_ARCHIVESTATUS_DELETE)
-- xa_reload_archive_content(archive);
--}
--
- gboolean xa_rar_extract(XArchive *archive,GSList *files)
- {
- gchar *rar, *command, *e_filename = NULL;
-@@ -281,10 +226,7 @@
- gboolean result = FALSE;
-
- _files = files;
-- if (unrar)
-- rar = "unrar";
-- else
-- rar = "rar";
-+ rar = "unar";
-
- while (_files)
- {
-@@ -315,230 +257,3 @@
- result = xa_run_command (archive,list);
- return result;
- }
--
--void xa_rar_test (XArchive *archive)
--{
-- gchar *rar = NULL;
-- gchar *command = NULL;
-- GSList *list = NULL;
--
-- if (unrar)
-- rar = "unrar";
-- else
-- rar = "rar";
--
-- archive->status = XA_ARCHIVESTATUS_TEST;
-- if (archive->passwd != NULL)
-- command = g_strconcat (rar," t -idp -p" , archive->passwd ," " , archive->escaped_path, NULL);
-- else
-- command = g_strconcat (rar," t -idp " , archive->escaped_path, NULL);
--
-- list = g_slist_append(list,command);
-- xa_run_command (archive,list);
-- }
--
--void xa_get_rar5_line_content (gchar *line, gpointer data)
--{
-- XArchive *archive = data;
-- XEntry *entry;
-- gpointer item[7];
-- unsigned short int i = 0;
-- unsigned int linesize,n,a;
-- gboolean dir = FALSE;
-- static gchar *filename;
--
-- if (last_line)
-- return;
--
-- if (jump_header == FALSE)
-- {
-- if (strncmp(line,"Comment:",8) == 0)
-- {
-- jump_comment = archive->has_comment = TRUE;
-- archive->comment = g_string_new("");
-- archive->comment = g_string_append(archive->comment,&line[9]);
-- return;
-- }
-- if (jump_comment == TRUE)
-- {
-- if (strncmp(line,"Name",4) != 0)
-- { archive->comment = g_string_append(archive->comment,line);
-- return;
-- }
-- jump_comment = FALSE;
-- }
-- if (line[0] == '-')
-- {
-- jump_header = TRUE;
-- return;
-- }
-- return;
-- }
--
-- linesize = strlen(line);
-- line[linesize - 1] = '\0';
--
-- if(line[0] == '*')
-- {
-- archive->has_passwd = TRUE;
-- encrypted = TRUE;
-- }
-- else if (line[0] == '-')
-- {
-- last_line = TRUE;
-- return;
-- }
--
-- archive->nr_of_files++;
--
-- /* Permissions */
-- for(n=0; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n] = '\0';
-- if ((line+a)[0] == 'd')
-- dir = TRUE;
-- item[5] = line + a;
-- n++;
--
-- /* Size */
-- for(; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n]='\0';
-- item[i] = line + a;
-- archive->dummy_size += g_ascii_strtoull(item[i],NULL,0);
-- i++;
-- n++;
--
-- /* Compressed */
-- for(; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n]='\0';
-- item[i] = line + a;
-- i++;
-- n++;
--
-- /* Ratio */
-- for(; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n] = '\0';
-- item[i] = line + a;
-- i++;
-- n++;
--
-- /* Date */
-- for(; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n] = '\0';
-- item[i] = line + a;
-- i++;
-- n++;
--
-- /* Time */
-- for(; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n] = '\0';
-- item[i] = line + a;
-- i+=2;
-- n++;
--
-- /* CRC */
-- for(; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' '; n++);
-- line[n] = '\0';
-- item[i] = line + a;
-- i++;
-- n++;
--
-- /* fileName */
-- for(n=64; n < linesize && line[n] == ' '; n++);
-- a = n;
-- for(; n < linesize && line[n] != ' ' && line[n] != '\n'; n++);
-- line[n]='\0';
-- filename = g_strdup(line + a);
--
-- /* Work around for rar which doesn't
-- * output / with directories */
-- if (dir)
-- {
-- gchar *filename_with_slash = g_strconcat (filename,"/",NULL);
-- g_free (filename);
-- filename = filename_with_slash;
-- }
--
-- entry = xa_set_archive_entries_for_each_row (archive,filename,item);
-- if (entry != NULL)
-- entry->is_encrypted = encrypted;
-- g_free(filename);
-- encrypted = FALSE;
--}
--
--void xa_rar_add (XArchive *archive,GString *files,gchar *compression_string)
--{
-- GSList *list = NULL;
-- gchar *command, *rar_version = NULL;
--
--
-- if (archive->location_entry_path != NULL)
-- archive->working_dir = g_strdup(archive->tmp);
--
-- if (archive->type == XARCHIVETYPE_RAR5)
-- rar_version = "5";
-- else
-- rar_version = "4";
--
-- if (compression_string == NULL)
-- compression_string = "3";
--
-- if (archive->passwd != NULL)
-- command = g_strconcat ( "rar a -ma", rar_version, " ",
-- archive->update ? "-u " : "",
-- archive->freshen ? "-f " : "",
-- archive->solid_archive ? "-s " : "",
-- archive->remove_files ? "-df " : "",
-- "-p" , archive->passwd,
-- " -idp ",
-- "-m",compression_string," ",
-- archive->escaped_path,
-- files->str,NULL);
-- else
-- command = g_strconcat ( "rar a -ma", rar_version, " ",
-- archive->update ? "-u " : "",
-- archive->freshen ? "-f " : "",
-- archive->solid_archive ? "-s " : " ",
-- archive->remove_files ? "-df " : " ",
-- "-idp ",
-- "-m",compression_string," ",
-- archive->escaped_path,
-- files->str,NULL);
--
-- g_string_free(files,TRUE);
-- list = g_slist_append(list,command);
--
-- xa_run_command (archive,list);
-- xa_reload_archive_content(archive);
--}
--
--int xa_rar_checkversion (gchar *absolute_path)
--{
-- //gchar *command;
-- gchar *output = NULL;
--
-- rar_version = 4; // Default version
--
-- //command = g_strconcat (absolute_path, "" , NULL);
-- g_spawn_command_line_sync (absolute_path, &output, NULL, NULL, NULL);
--
-- if (g_ascii_strncasecmp ("\nRAR 5", output, 6) == 0 || g_ascii_strncasecmp ("\nUNRAR 5", output, 8) == 0)
-- rar_version = 5;
--
-- g_free(output);
-- //g_free(command);
-- return rar_version;
--}
-diff -Nur xarchiver-0.5.3.orig/src/rar.h xarchiver-0.5.3/src/rar.h
---- xarchiver-0.5.3.orig/src/rar.h 2014-02-09 13:26:24.000000000 -0200
-+++ xarchiver-0.5.3/src/rar.h 2014-02-20 04:35:34.823706631 -0200
-@@ -26,10 +26,7 @@
- #include "support.h"
- #include "archive.h"
- gboolean jump_header,jump_comment,read_filename, last_line, encrypted;
--void xa_rar_delete (XArchive *,GSList *);
--void xa_rar_add (XArchive *,GString *,gchar *);
- gboolean xa_rar_extract(XArchive *,GSList *);
--void xa_rar_test (XArchive *);
- void xa_get_rar_line_content (gchar *line, gpointer data);
- void xa_open_rar ( XArchive *archive );
- #endif
-diff -Nur xarchiver-0.5.3.orig/src/window.c xarchiver-0.5.3/src/window.c
---- xarchiver-0.5.3.orig/src/window.c 2014-02-20 03:24:30.795581843 -0200
-+++ xarchiver-0.5.3/src/window.c 2014-02-20 05:08:49.982243849 -0200
-@@ -26,7 +26,7 @@
-
- extern GList *ArchiveType;
- extern GList *ArchiveSuffix;
--extern gboolean unrar;
-+extern gboolean unar;
- extern gboolean xdg_open;
- extern Prefs_dialog_data *prefs_window;
- extern Extract_dialog_data *extract_window;
-@@ -1584,7 +1584,7 @@
- gtk_widget_show(selected_frame);
- gtk_widget_set_sensitive(deselect_all,TRUE);
- }
-- if ( (archive->type == XARCHIVETYPE_RAR && unrar) || (archive->type == XARCHIVETYPE_RAR5 && unrar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
-+ if ( (archive->type == XARCHIVETYPE_RAR && unar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
- {
- gtk_widget_set_sensitive (delete_menu,FALSE);
- gtk_widget_set_sensitive (rename_menu,FALSE);
-@@ -1801,7 +1801,7 @@
- else
- idx = xa_find_archive_index (current_page);
-
-- if ((archive[idx]->type == XARCHIVETYPE_RAR || archive[idx]->type == XARCHIVETYPE_RAR5) && unrar)
-+ if ((archive[idx]->type == XARCHIVETYPE_RAR) && unar)
- {
- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't perform this action:"),_("You have to install rar package!"));
- return;
diff --git a/libre/xarchiver-libre/xarchiver-0.5.3-remove-nonfree-unrar-support.patch b/libre/xarchiver-libre/xarchiver-0.5.3-remove-nonfree-unrar-support.patch
new file mode 100644
index 000000000..e8ba41d59
--- /dev/null
+++ b/libre/xarchiver-libre/xarchiver-0.5.3-remove-nonfree-unrar-support.patch
@@ -0,0 +1,525 @@
+diff -Nur xarchiver-0.5.3.orig/doc/html/ch01.html xarchiver-0.5.3/doc/html/ch01.html
+--- xarchiver-0.5.3.orig/doc/html/ch01.html 2008-11-10 06:05:07.000000000 -0200
++++ xarchiver-0.5.3/doc/html/ch01.html 2014-05-05 16:32:35.166604039 -0300
+@@ -23,13 +23,13 @@
+ <li>Archives are detected by their magic header and not by the extension except for .tar.bz2 and .tar.gz</li>
+ <li>Drag and drop from and to Xarchiver window</li>
+ <li>Progress window when using Xarchiver from the cmd-line or from a file-manager</li>
+- <li>ARJ, RAR and ZIP archive comment are supported</li>
++ <li>ARJ and ZIP archive comment are supported</li>
+ <li>Ability to convert the archive to self-extracting for those archive types which support it</li>
+- <li>Smart detection of arj, zip and rar password encrypted archives</li>
++ <li>Smart detection of arj and zip password encrypted archives</li>
+ <li>All the the output of the cmd-line archiver is displayed in the Xarchiver window</li>
+- <li>All common formats are supported: arj, bzip2, gzip, lha, lzma, 7z, rar, tar, tar.bz2, tar.gz, tar.lzma, tar.lzop, zip, deb and rpm packages (open and extract only)</li>
++ <li>All common formats are supported: arj, bzip2, gzip, lha, lzma, 7z, tar, tar.bz2, tar.gz, tar.lzma, tar.lzop, zip, deb and rpm packages (open and extract only)</li>
+ <li>Deb and Rpm packages are handled internally, their package managers are NOT required.</li>
+- <li>Zip, rar, arj and 7z password encrypted archives are fully supported (7z automatic password detection is not supported)</li>
++ <li>Zip, arj and 7z password encrypted archives are fully supported (7z automatic password detection is not supported)</li>
+ </ul></div><p></p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01s02.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">
+ Xarchiver 0.5.2
+  </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Where to get it</td></tr></table></div></body></html>
+diff -Nur xarchiver-0.5.3.orig/doc/html/ch03s03.html xarchiver-0.5.3/doc/html/ch03s03.html
+--- xarchiver-0.5.3.orig/doc/html/ch03s03.html 2008-11-03 04:49:49.000000000 -0200
++++ xarchiver-0.5.3/doc/html/ch03s03.html 2014-05-05 16:25:59.026943013 -0300
+@@ -1,7 +1,7 @@
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>General</title><link rel="stylesheet" href="xarchiver.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="Xarchiver 0.5" /><link rel="up" href="ch03.html" title="Chapter 3. Usage" /><link rel="prev" href="ch03s02.html" title="Command line options" /><link rel="next" href="ch03s04.html" title="Xarchiver menu" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">General</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><th width="60%" align="center">Chapter 3. Usage</th><td width="20%" align="right"> <a accesskey="n" href="ch03s04.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="general"></a>General</h2></div></div></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="general_startup"></a>Startup</h3></div></div></div><p>
+- At startup, Xarchiver detects the available installed archivers (tar,rar,zip etc) and the script <i>xdg-open</i> for handling different file types. Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available. For instance if you have the free edition of rar, unrar, Xarchiver can't create rar archives since unrar allows rar archives to be opened, tested and extracted but not to be created.
++ At startup, Xarchiver detects the available installed archivers (tar,zip etc) and the script <i>xdg-open</i> for handling different file types. Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available.
+ </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="how_it_works"></a>How it works</h3></div></div></div><p>
+ Xarchiver will run in the background the cmd-line executable of the archiver with the archiver's proper switches to perform the selected operation. If something goes wrong Xarchiver reports the full output of the archiver executable in the command line output window. From the release 0.5 the files in the archive can be opened within Xarchiver. The script <i>xdg-open</i> will detect the file type and run the proper application to handle it. If you don't have such script installed in your system (it's found in the xdg-utils package) Xarchiver will recognize HTML, txt and images files only. The Preferences dialog will notify this to you when you click the Advanced section inside it.
+ </p></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h3 class="title"><a id="dnd"></a>Drag and Drop</h3></div></div></div><p>
+diff -Nur xarchiver-0.5.3.orig/doc/html/ch04s02.html xarchiver-0.5.3/doc/html/ch04s02.html
+--- xarchiver-0.5.3.orig/doc/html/ch04s02.html 2007-08-23 07:27:40.000000000 -0300
++++ xarchiver-0.5.3/doc/html/ch04s02.html 2014-05-05 16:31:53.479628949 -0300
+@@ -1,5 +1,5 @@
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>How can I create an archive with some files password protected and others not?</title><link rel="stylesheet" href="xarchiver.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="Xarchiver 0.5" /><link rel="up" href="ch04.html" title="Chapter 4. FAQ" /><link rel="prev" href="ch04.html" title="Chapter 4. FAQ" /><link rel="next" href="ch04s03.html" title="Why does Xarchiver emit this error message when handling tar archives?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How can I create an archive with some files password protected and others not?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><th width="60%" align="center">Chapter 4. FAQ</th><td width="20%" align="right"> <a accesskey="n" href="ch04s03.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="second"></a>How can I create an archive with some files password protected and others not?</h2></div></div></div><p>First of all choose 'New' and select one of arj, 7zip, rar or zip archive formats and choose 'Add' from the Action menu. Do NOT check "Password" in the Add dialog. Add your files and then reopen the Add dialog again but this time check "Password" and
++<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>How can I create an archive with some files password protected and others not?</title><link rel="stylesheet" href="xarchiver.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="Xarchiver 0.5" /><link rel="up" href="ch04.html" title="Chapter 4. FAQ" /><link rel="prev" href="ch04.html" title="Chapter 4. FAQ" /><link rel="next" href="ch04s03.html" title="Why does Xarchiver emit this error message when handling tar archives?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">How can I create an archive with some files password protected and others not?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><th width="60%" align="center">Chapter 4. FAQ</th><td width="20%" align="right"> <a accesskey="n" href="ch04s03.html">Next</a></td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="second"></a>How can I create an archive with some files password protected and others not?</h2></div></div></div><p>First of all choose 'New' and select one of arj, 7zip or zip archive formats and choose 'Add' from the Action menu. Do NOT check "Password" in the Add dialog. Add your files and then reopen the Add dialog again but this time check "Password" and
+ enter your password. From now on all the files you add to the archive will be password protected.
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04s03.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Chapter 4. FAQ </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Why does Xarchiver emit this error message when handling tar archives?</td></tr></table></div></body></html>
+diff -Nur xarchiver-0.5.3.orig/doc/html/ch04s06.html xarchiver-0.5.3/doc/html/ch04s06.html
+--- xarchiver-0.5.3.orig/doc/html/ch04s06.html 2008-11-03 04:49:49.000000000 -0200
++++ xarchiver-0.5.3/doc/html/ch04s06.html 2014-05-05 16:33:00.806793156 -0300
+@@ -1,4 +1,4 @@
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+-<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</title><link rel="stylesheet" href="xarchiver.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="Xarchiver 0.5" /><link rel="up" href="ch04.html" title="Chapter 4. FAQ" /><link rel="prev" href="ch04s06.html" title="What is the meaning of this error message?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s06.html">Prev</a> </td><th width="60%" align="center">Chapter 4. FAQ</th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="seventh"></a>Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</h2></div></div></div><p>Because rar and arj executable do not allow to do so. Zip and 7z convertion to self-extracting is made by appending an sfx module to the archive so it's possible to choose a different path.
++<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</title><link rel="stylesheet" href="xarchiver.css" type="text/css" /><meta name="generator" content="DocBook XSL Stylesheets V1.71.0" /><link rel="start" href="index.html" title="Xarchiver 0.5" /><link rel="up" href="ch04.html" title="Chapter 4. FAQ" /><link rel="prev" href="ch04s06.html" title="What is the meaning of this error message?" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s06.html">Prev</a> </td><th width="60%" align="center">Chapter 4. FAQ</th><td width="20%" align="right"> </td></tr></table><hr /></div><div class="section" lang="en" xml:lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="seventh"></a>Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</h2></div></div></div><p>Because arj executable do not allow to do so. Zip and 7z convertion to self-extracting is made by appending an sfx module to the archive so it's possible to choose a different path.
+ </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Up</a></td><td width="40%" align="right"> </td></tr><tr><td width="40%" align="left" valign="top">Why does Xarchiver sometimes report errors but the Error messages window is empty? </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></body></html>
+diff -Nur xarchiver-0.5.3.orig/doc/xarchiver.docbook xarchiver-0.5.3/doc/xarchiver.docbook
+--- xarchiver-0.5.3.orig/doc/xarchiver.docbook 2007-08-22 07:49:19.000000000 -0300
++++ xarchiver-0.5.3/doc/xarchiver.docbook 2014-05-05 16:25:17.863287969 -0300
+@@ -50,14 +50,14 @@
+ <listitem><para>The most used archiver cmd-line options are supported in the Add and Extract dialog</para></listitem>
+ <listitem><para>Archives are detected by their magic header and not by the extension except for .tar.bz2 and .tar.gz</para></listitem>
+ <listitem><para>Drag and drop from and to Xarchiver window is supported with XDS protocol</para></listitem>
+- <listitem><para>ZIP and ARJ archive comment are supported. RAR comment is not yet supported because it's compressed inside the archive itself</para></listitem>
++ <listitem><para>ZIP and ARJ archive comment are supported.</para></listitem>
+ <listitem><para>Tabs Firefox style support</para></listitem>
+ <listitem><para>Ability to convert the archive to self-extracting for those archive types which support it</para></listitem>
+- <listitem><para>Smart detection of arj, zip and rar password encrypted archives</para></listitem>
++ <listitem><para>Smart detection of arj and zip password encrypted archives</para></listitem>
+ <listitem><para>All the the output of the cmd-line archiver is displayed in the Xarchiver window</para></listitem>
+- <listitem><para>All common formats are supported: arj, bzip2, lha, gzip, 7z, rar, tar, tar.bz2, tar.gz, zip, DEB and RPM (only open,view and extract)</para></listitem>
++ <listitem><para>All common formats are supported: arj, bzip2, lha, gzip, 7z, tar, tar.bz2, tar.gz, zip, DEB and RPM (only open,view and extract)</para></listitem>
+ <listitem><para>Support of RPM files without RPM executable. This is useful on not RPM-based distributions like Slackware and Arch Linux</para></listitem>
+- <listitem><para>Zip, rar, arj and 7z password encrypted archives are fully supported (7z automatic password detection is not supported)</para></listitem>
++ <listitem><para>Zip, arj and 7z password encrypted archives are fully supported (7z automatic password detection is not supported)</para></listitem>
+ </itemizedlist>
+ </para>
+ </section>
+@@ -204,7 +204,7 @@
+ <section id="general_startup">
+ <title>Startup</title>
+ <para>
+- At startup, &app; detects the available installed archivers (tar,rar,zip etc). Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available. For instance if you have the free edition of rar, unrar, Xarchiver can't create rar archives since unrar allows rar archives to be opened, tested and extracted but not to be created.
++ At startup, &app; detects the available installed archivers (tar,zip etc). Since Xarchiver is a frontend (a graphic user interface to the cmd-line executables) it can't create archives whose archiver is not available.
+ </para>
+ </section>
+ <section id="how_it_works">
+@@ -244,7 +244,7 @@
+ <title>Open</title>
+ <para>
+ Opens a new archive. If you force &app; to open an unsupported archive
+- type an error message will be emitted. The archive type is detected by its magic header and not by the extension. Password protected archives are supported also. The password detection is done by looking for the password flag inside the archive structure except for rar ones since encrypted files in rar archives have an asterisk right before their filename. 7zip encrypted archives are not detected due to the complexity of 7zip format. Please see <ulink url="http://sourceforge.net/forum/forum.php?thread_id=1378003&amp;forum_id=383044">
++ type an error message will be emitted. The archive type is detected by its magic header and not by the extension. Password protected archives are supported also. The password detection is done by looking for the password flag inside the archive structure. 7zip encrypted archives are not detected due to the complexity of 7zip format. Please see <ulink url="http://sourceforge.net/forum/forum.php?thread_id=1378003&amp;forum_id=383044">
+ <citetitle>this thread on sf.net</citetitle>
+ </ulink>for more information.
+ </para>
+@@ -394,7 +394,7 @@
+ </section>
+ <section id="second">
+ <title>How can I create an archive with some files password protected and others not?</title>
+- <para>First of all choose 'New' and select one of arj, 7zip, rar or zip archive formats and choose 'Add' from the Action menu. Do NOT check "Password" in the Add dialog. Add your files and then reopen the Add dialog again but this time check "Password" and
++ <para>First of all choose 'New' and select one of arj, 7zip or zip archive formats and choose 'Add' from the Action menu. Do NOT check "Password" in the Add dialog. Add your files and then reopen the Add dialog again but this time check "Password" and
+ enter your password. From now on all the files you add to the archive will be password protected.
+ </para>
+ </section>
+@@ -427,7 +427,7 @@
+ </section>
+ <section id="seventh">
+ <title>Why Xarchiver doesn't allow me to choose the archive self-extracting path as it happens with zip and 7z?</title>
+- <para>Because rar and arj executable do not allow to do so. Zip and 7z convertion to self-extracting is made by appending an sfx module to the archive so it's possible to choose a different path.
++ <para>Because arj executable do not allow to do so. Zip and 7z convertion to self-extracting is made by appending an sfx module to the archive so it's possible to choose a different path.
+ </para>
+ </section>
+ </chapter>
+diff -Nur xarchiver-0.5.3.orig/po/POTFILES.in xarchiver-0.5.3/po/POTFILES.in
+--- xarchiver-0.5.3.orig/po/POTFILES.in 2008-08-26 08:53:27.000000000 -0300
++++ xarchiver-0.5.3/po/POTFILES.in 2014-05-05 16:28:26.154740706 -0300
+@@ -15,7 +15,6 @@
+ src/open-with-dlg.c
+ src/new_dialog.c
+ src/pref_dialog.c
+-src/rar.c
+ src/rpm.c
+ src/tar.c
+ src/zip.c
+diff -Nur xarchiver-0.5.3.orig/src/Makefile.am xarchiver-0.5.3/src/Makefile.am
+--- xarchiver-0.5.3.orig/src/Makefile.am 2008-09-23 03:39:50.000000000 -0300
++++ xarchiver-0.5.3/src/Makefile.am 2014-05-05 16:30:14.628892353 -0300
+@@ -16,7 +16,6 @@
+ arj.c arj.h \
+ deb.c deb.h \
+ zip.c zip.h \
+- rar.c rar.h \
+ 7zip.c 7zip.h \
+ tar.c tar.h \
+ bzip2.c bzip2.h \
+diff -Nur xarchiver-0.5.3.orig/src/Makefile.in xarchiver-0.5.3/src/Makefile.in
+--- xarchiver-0.5.3.orig/src/Makefile.in 2008-11-12 05:50:37.000000000 -0200
++++ xarchiver-0.5.3/src/Makefile.in 2014-05-05 16:30:50.625828168 -0300
+@@ -57,7 +57,7 @@
+ xarchiver-archive.$(OBJEXT) xarchiver-interface.$(OBJEXT) \
+ xarchiver-window.$(OBJEXT) xarchiver-arj.$(OBJEXT) \
+ xarchiver-deb.$(OBJEXT) xarchiver-zip.$(OBJEXT) \
+- xarchiver-rar.$(OBJEXT) xarchiver-7zip.$(OBJEXT) \
++ xarchiver-7zip.$(OBJEXT) \
+ xarchiver-tar.$(OBJEXT) xarchiver-bzip2.$(OBJEXT) \
+ xarchiver-gzip.$(OBJEXT) xarchiver-rpm.$(OBJEXT) \
+ xarchiver-lha.$(OBJEXT) xarchiver-extract_dialog.$(OBJEXT) \
+@@ -267,7 +267,6 @@
+ arj.c arj.h \
+ deb.c deb.h \
+ zip.c zip.h \
+- rar.c rar.h \
+ 7zip.c 7zip.h \
+ tar.c tar.h \
+ bzip2.c bzip2.h \
+@@ -381,7 +380,6 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-new_dialog.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-open-with-dlg.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-pref_dialog.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-rar.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-rpm.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-sexy-icon-entry.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xarchiver-socket.Po@am__quote@
+@@ -595,20 +593,6 @@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xarchiver_CFLAGS) $(CFLAGS) -c -o xarchiver-zip.obj `if test -f 'zip.c'; then $(CYGPATH_W) 'zip.c'; else $(CYGPATH_W) '$(srcdir)/zip.c'; fi`
+
+-xarchiver-rar.o: rar.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xarchiver_CFLAGS) $(CFLAGS) -MT xarchiver-rar.o -MD -MP -MF "$(DEPDIR)/xarchiver-rar.Tpo" -c -o xarchiver-rar.o `test -f 'rar.c' || echo '$(srcdir)/'`rar.c; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xarchiver-rar.Tpo" "$(DEPDIR)/xarchiver-rar.Po"; else rm -f "$(DEPDIR)/xarchiver-rar.Tpo"; exit 1; fi
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rar.c' object='xarchiver-rar.o' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xarchiver_CFLAGS) $(CFLAGS) -c -o xarchiver-rar.o `test -f 'rar.c' || echo '$(srcdir)/'`rar.c
+-
+-xarchiver-rar.obj: rar.c
+-@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xarchiver_CFLAGS) $(CFLAGS) -MT xarchiver-rar.obj -MD -MP -MF "$(DEPDIR)/xarchiver-rar.Tpo" -c -o xarchiver-rar.obj `if test -f 'rar.c'; then $(CYGPATH_W) 'rar.c'; else $(CYGPATH_W) '$(srcdir)/rar.c'; fi`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xarchiver-rar.Tpo" "$(DEPDIR)/xarchiver-rar.Po"; else rm -f "$(DEPDIR)/xarchiver-rar.Tpo"; exit 1; fi
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='rar.c' object='xarchiver-rar.obj' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xarchiver_CFLAGS) $(CFLAGS) -c -o xarchiver-rar.obj `if test -f 'rar.c'; then $(CYGPATH_W) 'rar.c'; else $(CYGPATH_W) '$(srcdir)/rar.c'; fi`
+-
+ xarchiver-7zip.o: 7zip.c
+ @am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(xarchiver_CFLAGS) $(CFLAGS) -MT xarchiver-7zip.o -MD -MP -MF "$(DEPDIR)/xarchiver-7zip.Tpo" -c -o xarchiver-7zip.o `test -f '7zip.c' || echo '$(srcdir)/'`7zip.c; \
+ @am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/xarchiver-7zip.Tpo" "$(DEPDIR)/xarchiver-7zip.Po"; else rm -f "$(DEPDIR)/xarchiver-7zip.Tpo"; exit 1; fi
+diff -Nur xarchiver-0.5.3.orig/src/interface.c xarchiver-0.5.3/src/interface.c
+--- xarchiver-0.5.3.orig/src/interface.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/interface.c 2014-05-05 17:04:24.879755668 -0300
+@@ -45,7 +45,7 @@
+ { "text/uri-list",0,0 },
+ };
+
+-extern gboolean unrar,batch_mode;
++extern gboolean batch_mode;
+
+ static gboolean xa_progress_dialog_delete_event (GtkWidget *caller,GdkEvent *event,GPid pid);
+ static void xa_progress_dialog_stop_action (GtkWidget *widget,GPid pid);
+@@ -600,7 +600,7 @@
+ if (selection != NULL)
+ xa_row_selected(selection,archive[id]);
+
+- if (archive[id]->type == XARCHIVETYPE_7ZIP || archive[id]->type == XARCHIVETYPE_ZIP || archive[id]->type == XARCHIVETYPE_RAR || archive[id]->type == XARCHIVETYPE_RAR5 || archive[id]->type == XARCHIVETYPE_ARJ)
++ if (archive[id]->type == XARCHIVETYPE_7ZIP || archive[id]->type == XARCHIVETYPE_ZIP || archive[id]->type == XARCHIVETYPE_ARJ)
+ gtk_widget_set_sensitive (comment_menu,TRUE);
+ else
+ gtk_widget_set_sensitive (comment_menu,FALSE);
+@@ -623,12 +623,7 @@
+ {
+ gtk_widget_show(selected_frame);
+ gtk_widget_set_sensitive(deselect_all,TRUE);
+- if ((archive[id]->type == XARCHIVETYPE_RAR || archive[id]->type == XARCHIVETYPE_RAR5) && unrar)
+- {
+- gtk_widget_set_sensitive (delete_menu,FALSE);
+- gtk_widget_set_sensitive (rename_menu,FALSE);
+- }
+- else if (archive[id]->type == XARCHIVETYPE_BZIP2 || archive[id]->type == XARCHIVETYPE_GZIP || archive[id]->type == XARCHIVETYPE_DEB || archive[id]->type == XARCHIVETYPE_RPM || archive[id]->type == XARCHIVETYPE_LZMA || archive[id]->type == XARCHIVETYPE_XZ || archive[id]->type == XARCHIVETYPE_LZOP)
++ if (archive[id]->type == XARCHIVETYPE_BZIP2 || archive[id]->type == XARCHIVETYPE_GZIP || archive[id]->type == XARCHIVETYPE_DEB || archive[id]->type == XARCHIVETYPE_RPM || archive[id]->type == XARCHIVETYPE_LZMA || archive[id]->type == XARCHIVETYPE_XZ || archive[id]->type == XARCHIVETYPE_LZOP)
+ {
+ gtk_widget_set_sensitive (delete_menu,FALSE);
+ gtk_widget_set_sensitive (rename_menu,FALSE);
+diff -Nur xarchiver-0.5.3.orig/src/main.c xarchiver-0.5.3/src/main.c
+--- xarchiver-0.5.3.orig/src/main.c 2014-02-09 13:30:28.000000000 -0200
++++ xarchiver-0.5.3/src/main.c 2014-05-05 16:23:04.132223201 -0300
+@@ -33,13 +33,11 @@
+ gchar *add_files;
+ gboolean error_output, file_to_open, ask_and_extract, ask_and_add, multi_extract;
+ gboolean batch_mode = FALSE;
+-gboolean unrar = FALSE;
+ gboolean sevenzr = FALSE, sevenza = FALSE, xdg_open = FALSE;
+ static gboolean show_version = FALSE;
+ int response;
+ extern gchar *current_open_directory;
+ extern int status;
+-extern int rar_version;
+
+ extern Progress_bar_data *pb;
+ Prefs_dialog_data *prefs_window = NULL;
+@@ -315,7 +313,6 @@
+ open_archive[XARCHIVETYPE_GZIP] = &xa_open_gzip;
+ open_archive[XARCHIVETYPE_LZMA] = &xa_open_bzip2_lzma;
+ open_archive[XARCHIVETYPE_XZ] = &xa_open_bzip2_lzma;
+- open_archive[XARCHIVETYPE_RAR] = open_archive[XARCHIVETYPE_RAR5] = &xa_open_rar;
+ open_archive[XARCHIVETYPE_RPM] = &xa_open_rpm;
+ open_archive[XARCHIVETYPE_TAR] = open_archive[XARCHIVETYPE_TAR_BZ2] = open_archive[XARCHIVETYPE_TAR_GZ] = open_archive[XARCHIVETYPE_TAR_LZMA] = open_archive[XARCHIVETYPE_TAR_XZ] = open_archive[XARCHIVETYPE_TAR_LZOP] = &xa_open_tar;
+ open_archive[XARCHIVETYPE_ZIP] = &xa_open_zip;
+@@ -330,7 +327,6 @@
+ delete[XARCHIVETYPE_GZIP] = 0;
+ delete[XARCHIVETYPE_LZMA] = 0;
+ delete[XARCHIVETYPE_XZ] = 0;
+- delete[XARCHIVETYPE_RAR] = delete[XARCHIVETYPE_RAR5] = &xa_rar_delete;
+ delete[XARCHIVETYPE_RPM] = 0;
+ delete[XARCHIVETYPE_TAR] = delete[XARCHIVETYPE_TAR_BZ2] = delete[XARCHIVETYPE_TAR_GZ] = delete[XARCHIVETYPE_TAR_LZMA] = delete[XARCHIVETYPE_TAR_XZ] = delete[XARCHIVETYPE_TAR_LZOP] = &xa_tar_delete;
+ delete[XARCHIVETYPE_ZIP] = &xa_zip_delete;
+@@ -343,7 +339,6 @@
+ add[XARCHIVETYPE_ARJ] = &xa_arj_add;
+ add[XARCHIVETYPE_DEB] = 0;
+ add[XARCHIVETYPE_BZIP2] = add[XARCHIVETYPE_GZIP] = add[XARCHIVETYPE_LZMA] = add[XARCHIVETYPE_XZ] = add[XARCHIVETYPE_LZOP] = &xa_tar_add;
+- add[XARCHIVETYPE_RAR] = add[XARCHIVETYPE_RAR5] = &xa_rar_add;
+ add[XARCHIVETYPE_RPM] = 0;
+ add[XARCHIVETYPE_TAR] = add[XARCHIVETYPE_TAR_BZ2] = add[XARCHIVETYPE_TAR_GZ] = add[XARCHIVETYPE_TAR_LZMA] = add[XARCHIVETYPE_TAR_XZ] = add[XARCHIVETYPE_TAR_LZOP] = &xa_tar_add;
+ add[XARCHIVETYPE_ZIP] = &xa_zip_add;
+@@ -354,7 +349,6 @@
+ extract[XARCHIVETYPE_ARJ] = &xa_arj_extract;
+ extract[XARCHIVETYPE_DEB] = &xa_deb_extract;;
+ extract[XARCHIVETYPE_BZIP2] = extract[XARCHIVETYPE_GZIP] = extract[XARCHIVETYPE_LZMA] = extract[XARCHIVETYPE_XZ] = extract[XARCHIVETYPE_LZOP] = &xa_tar_extract;
+- extract[XARCHIVETYPE_RAR] = extract[XARCHIVETYPE_RAR5] = &xa_rar_extract;
+ extract[XARCHIVETYPE_RPM] = &xa_rpm_extract;
+ extract[XARCHIVETYPE_TAR] = extract[XARCHIVETYPE_TAR_BZ2] = extract[XARCHIVETYPE_TAR_GZ] = extract[XARCHIVETYPE_TAR_LZMA] = extract[XARCHIVETYPE_TAR_XZ] = extract[XARCHIVETYPE_TAR_LZOP] = &xa_tar_extract;
+ extract[XARCHIVETYPE_ZIP] = &xa_zip_extract;
+@@ -364,7 +358,6 @@
+ test[XARCHIVETYPE_7ZIP] = &xa_7zip_test;
+ test[XARCHIVETYPE_ARJ] = &xa_arj_test;
+ test[XARCHIVETYPE_DEB] = test[XARCHIVETYPE_BZIP2] = test[XARCHIVETYPE_GZIP] = test[XARCHIVETYPE_LZMA] = test[XARCHIVETYPE_XZ] = test[XARCHIVETYPE_LZOP] = &xa_tar_test;
+- test[XARCHIVETYPE_RAR] = test[XARCHIVETYPE_RAR5] = &xa_rar_test;
+ test[XARCHIVETYPE_RPM] = 0;
+ test[XARCHIVETYPE_TAR] = test[XARCHIVETYPE_TAR_BZ2] = test[XARCHIVETYPE_TAR_GZ] = test[XARCHIVETYPE_TAR_LZMA] = test[XARCHIVETYPE_TAR_XZ] = test[XARCHIVETYPE_TAR_LZOP] = &xa_tar_test;
+ test[XARCHIVETYPE_ZIP] = &xa_zip_test;
+@@ -435,39 +428,6 @@
+ //ArchiveSuffix = g_list_append(ArchiveSuffix, "");
+ }
+
+- absolute_path = g_find_program_in_path ("rar");
+- if ( absolute_path )
+- {
+- ArchiveType = g_list_append(ArchiveType, "rar");
+- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar");
+- // Is RAR v5 ?
+- xa_rar_checkversion (absolute_path);
+- if (rar_version == 5)
+- {
+- ArchiveType = g_list_append(ArchiveType, "rar5");
+- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar5");
+- }
+- g_free (absolute_path);
+- }
+- else
+- {
+- absolute_path = g_find_program_in_path("unrar");
+- if ( absolute_path )
+- {
+- unrar = TRUE;
+- ArchiveType = g_list_append(ArchiveType, "rar");
+- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar");
+- // Is RAR v5 ?
+- xa_rar_checkversion (absolute_path);
+- if (rar_version == 5)
+- {
+- ArchiveType = g_list_append(ArchiveType, "rar5");
+- ArchiveSuffix = g_list_append(ArchiveSuffix, "*.rar5");
+- }
+- g_free (absolute_path);
+- }
+- }
+-
+ absolute_path = g_find_program_in_path("cpio");
+ if ( absolute_path )
+ {
+diff -Nur xarchiver-0.5.3.orig/src/mime.c xarchiver-0.5.3/src/mime.c
+--- xarchiver-0.5.3.orig/src/mime.c 2008-11-05 07:53:22.000000000 -0200
++++ xarchiver-0.5.3/src/mime.c 2014-05-05 16:31:28.126107426 -0300
+@@ -44,7 +44,7 @@
+ icon_name = "gnome-mime-application-vnd.ms-excel";
+ else if (strcmp(mime,"application/vnd.ms-powerpoint") == 0 || strcmp (mime,"application/vnd.oasis.opendocument.presentation") == 0)
+ icon_name = "gnome-mime-application-vnd.ms-powerpoint";
+- else if (strcmp(mime,"application/zip") == 0 || strcmp(mime,"application/x-rar") == 0 || strcmp(mime,"application/x-tar") == 0
++ else if (strcmp(mime,"application/zip") == 0 || strcmp(mime,"application/x-tar") == 0
+ || strcmp(mime,"application/x-7z-compressed") == 0 || strcmp(mime,"application/x-bzip-compressed-tar") == 0
+ || strcmp (mime,"application/x-compressed-tar") == 0 || strcmp (mime,"application/x-lha") == 0
+ || strcmp (mime,"application/x-rpm") == 0 || strcmp (mime,"application/x-deb") == 0
+diff -Nur xarchiver-0.5.3.orig/src/new_dialog.c xarchiver-0.5.3/src/new_dialog.c
+--- xarchiver-0.5.3.orig/src/new_dialog.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/new_dialog.c 2014-05-05 16:21:07.714600036 -0300
+@@ -24,7 +24,6 @@
+ #include "string_utils.h"
+ #include "main.h"
+
+-extern gboolean unrar;
+ extern Prefs_dialog_data *prefs_window;
+ gchar *current_new_directory = NULL;
+ gint new_combo_box = -1;
+@@ -100,11 +99,6 @@
+ Name = g_list_first (ArchiveType);
+
+ while (Name)
+- {
+- if (!(strncmp(Name->data, "rar", 3) == 0 && unrar))
+- gtk_combo_box_append_text(GTK_COMBO_BOX(combo_box),Name->data);
+- Name = g_list_next (Name);
+- }
+ if (new_combo_box == -1)
+ gtk_combo_box_set_active(GTK_COMBO_BOX(combo_box),gtk_combo_box_get_active(GTK_COMBO_BOX(prefs_window->combo_prefered_format)));
+ else
+@@ -227,16 +221,6 @@
+ type = XARCHIVETYPE_LZOP;
+ format = "LZOP";
+ }
+- else if (strcmp (ComboArchiveType,"rar") == 0)
+- {
+- type = XARCHIVETYPE_RAR;
+- format = "RAR";
+- }
+- else if (strcmp (ComboArchiveType,"rar5") == 0)
+- {
+- type = XARCHIVETYPE_RAR5;
+- format = "RAR5";
+- }
+ else if (strcmp (ComboArchiveType,"tar") == 0)
+ {
+ type = XARCHIVETYPE_TAR;
+diff -Nur xarchiver-0.5.3.orig/src/pref_dialog.c xarchiver-0.5.3/src/pref_dialog.c
+--- xarchiver-0.5.3.orig/src/pref_dialog.c 2014-02-09 13:26:24.000000000 -0200
++++ xarchiver-0.5.3/src/pref_dialog.c 2014-05-05 17:29:05.494321392 -0300
+@@ -23,7 +23,6 @@
+ #include "main.h"
+ #include "support.h"
+
+-extern gboolean unrar;
+ extern gboolean xdg_open;
+ extern Extract_dialog_data *extract_window;
+ extern Add_dialog_data *add_window;
+@@ -103,9 +102,7 @@
+ while ( archive_type != NULL )
+ {
+ if (strcmp(archive_type->data, "tgz") == 0 ||
+- strcmp(archive_type->data, "rpm") == 0 ||
+- (strncmp(archive_type->data, "rar", 3) == 0 && unrar) )
+- goto next;
++ strcmp(archive_type->data, "rpm") == 0);
+ else
+ gtk_combo_box_append_text (GTK_COMBO_BOX (prefs_data->combo_prefered_format),archive_type->data );
+ next:
+diff -Nur xarchiver-0.5.3.orig/src/window.c xarchiver-0.5.3/src/window.c
+--- xarchiver-0.5.3.orig/src/window.c 2014-02-09 13:49:07.000000000 -0200
++++ xarchiver-0.5.3/src/window.c 2014-05-05 17:19:54.769288791 -0300
+@@ -26,7 +26,6 @@
+
+ extern GList *ArchiveType;
+ extern GList *ArchiveSuffix;
+-extern gboolean unrar;
+ extern gboolean xdg_open;
+ extern Prefs_dialog_data *prefs_window;
+ extern Extract_dialog_data *extract_window;
+@@ -326,11 +325,7 @@
+
+ /* Does the user open an archive from the command line whose archiver is not installed? */
+ gchar *ext = NULL;
+- if (type == XARCHIVETYPE_RAR)
+- ext = "rar";
+- else if (type == XARCHIVETYPE_RAR5)
+- ext = "rar5";
+- else if (type == XARCHIVETYPE_7ZIP)
++ if (type == XARCHIVETYPE_7ZIP)
+ ext = "7z";
+ else if (type == XARCHIVETYPE_ARJ)
+ ext = "arj";
+@@ -358,7 +353,7 @@
+ g_free (path);
+ return;
+ }
+- /* Detect archive comment,rar one is detected in rar.c */
++ /* Detect archive comment */
+ if (type == XARCHIVETYPE_ZIP)
+ archive[current_page]->has_comment = xa_detect_archive_comment (XARCHIVETYPE_ZIP,path,archive[current_page]);
+ else if (type == XARCHIVETYPE_ARJ)
+@@ -780,13 +775,6 @@
+ archive[idx]->status = XA_ARCHIVESTATUS_SFX;
+ switch ( archive[idx]->type)
+ {
+- case XARCHIVETYPE_RAR:
+- case XARCHIVETYPE_RAR5:
+- command = g_strconcat ("rar s -o+ ",archive[idx]->escaped_path,NULL);
+- list = g_slist_append(list,command);
+- xa_run_command (archive[idx],list);
+- break;
+-
+ case XARCHIVETYPE_ZIP:
+ {
+ gchar *archive_name = NULL;
+@@ -964,7 +952,7 @@
+ void xa_about (GtkMenuItem *menuitem,gpointer user_data)
+ {
+ static GtkWidget *about = NULL;
+- const char *authors[] = {"Main developer:\nGiuseppe Torelli <colossus73@gmail.com>\n\nArchive navigation code:\nJohn Berthels\n\nCode fixing:\nEnrico Tröger\n\nLHA and DEB support:\nŁukasz Zemczak <sil2100@vexillium.org>\n\nLZMA support:\nThomas Dy <dysprosium66@gmail.com>\n\nLZOP support:\nKevin Day\n\nRAR5, XZ, TAR.XZ support:\nFrederick GUERIN <fguerin01@gmail.com>\n",NULL};
++ const char *authors[] = {"Main developer:\nGiuseppe Torelli <colossus73@gmail.com>\n\nArchive navigation code:\nJohn Berthels\n\nCode fixing:\nEnrico Tröger\n\nLHA and DEB support:\nŁukasz Zemczak <sil2100@vexillium.org>\n\nLZMA support:\nThomas Dy <dysprosium66@gmail.com>\n\nLZOP support:\nKevin Day\n\nXZ, TAR.XZ support:\nFrederick GUERIN <fguerin01@gmail.com>\n",NULL};
+ const char *documenters[] = {"Special thanks to Bjoern Martensen for\nbugs hunting and Xarchiver Tango logo.\n\nThanks to:\nBenedikt Meurer\nStephan Arts\nBruno Jesus <00cpxxx@gmail.com>\nUracile for the stunning logo\n",NULL};
+
+ if (about == NULL)
+@@ -1122,10 +1110,6 @@
+ xx = XARCHIVETYPE_ZIP;
+ else if (memcmp (magic,"\x60\xea",2) == 0)
+ xx = XARCHIVETYPE_ARJ;
+- else if (memcmp ( magic,"\x52\x61\x72\x21\x1a\x07\x00",7) == 0)
+- xx = XARCHIVETYPE_RAR;
+- else if (memcmp ( magic,"\x52\x61\x72\x21\x1a\x07\x01",7) == 0)
+- xx = XARCHIVETYPE_RAR5;
+ else if (memcmp ( magic,"\x42\x5a\x68",3) == 0)
+ xx = XARCHIVETYPE_BZIP2;
+ else if (memcmp ( magic,"\x1f\x8b",2) == 0 || memcmp ( magic,"\x1f\x9d",2) == 0)
+@@ -1479,8 +1463,6 @@
+ pos = 3;
+ break;
+
+- case XARCHIVETYPE_RAR:
+- case XARCHIVETYPE_RAR5:
+ case XARCHIVETYPE_ARJ:
+ case XARCHIVETYPE_7ZIP:
+ pos = 2;
+@@ -1545,8 +1527,6 @@
+ pos = 3;
+ break;
+
+- case XARCHIVETYPE_RAR:
+- case XARCHIVETYPE_RAR5:
+ case XARCHIVETYPE_ARJ:
+ case XARCHIVETYPE_7ZIP:
+ pos = 2;
+@@ -1584,7 +1564,7 @@
+ gtk_widget_show(selected_frame);
+ gtk_widget_set_sensitive(deselect_all,TRUE);
+ }
+- if ( (archive->type == XARCHIVETYPE_RAR && unrar) || (archive->type == XARCHIVETYPE_RAR5 && unrar) || archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
++ if (archive->type == XARCHIVETYPE_BZIP2 || archive->type == XARCHIVETYPE_GZIP || archive->type == XARCHIVETYPE_LZMA || archive->type == XARCHIVETYPE_XZ || archive->type == XARCHIVETYPE_LZOP)
+ {
+ gtk_widget_set_sensitive (delete_menu,FALSE);
+ gtk_widget_set_sensitive (rename_menu,FALSE);
+@@ -1801,11 +1781,6 @@
+ else
+ idx = xa_find_archive_index (current_page);
+
+- if ((archive[idx]->type == XARCHIVETYPE_RAR || archive[idx]->type == XARCHIVETYPE_RAR5) && unrar)
+- {
+- response = xa_show_message_dialog (GTK_WINDOW (xa_main_window),GTK_DIALOG_MODAL,GTK_MESSAGE_ERROR,GTK_BUTTONS_OK,_("Can't perform this action:"),_("You have to install rar package!"));
+- return;
+- }
+ if (archive[idx]->type == XARCHIVETYPE_DEB || archive[idx]->type == XARCHIVETYPE_RPM)
+ {
+ gchar *msg;
+@@ -2111,11 +2086,6 @@
+ command = g_strconcat ("arj c ",archive[idx]->escaped_path," -z",tmp,NULL);
+ break;
+
+- case XARCHIVETYPE_RAR:
+- case XARCHIVETYPE_RAR5:
+- command = g_strconcat ("rar c ",archive[idx]->escaped_path," -z",tmp,NULL);
+- break;
+-
+ case XARCHIVETYPE_ZIP:
+ command = g_strconcat ("sh -c \"zip ",archive[idx]->escaped_path," -z <",tmp,"\"",NULL);
+ break;
+diff -Nur xarchiver-0.5.3.orig/src/window.h xarchiver-0.5.3/src/window.h
+--- xarchiver-0.5.3.orig/src/window.h 2008-10-24 07:26:51.000000000 -0200
++++ xarchiver-0.5.3/src/window.h 2014-05-05 16:29:42.841987069 -0300
+@@ -40,7 +40,6 @@
+ #include "deb.h"
+ #include "lha.h"
+ #include "zip.h"
+-#include "rar.h"
+ #include "tar.h"
+ #include "7zip.h"
+ #include "bzip2.h"
+diff -Nur xarchiver-0.5.3.orig/xarchiver.desktop.in xarchiver-0.5.3/xarchiver.desktop.in
+--- xarchiver-0.5.3.orig/xarchiver.desktop.in 2014-05-12 02:00:44.138672823 -0300
++++ xarchiver-0.5.3/xarchiver.desktop.in 2014-05-12 02:01:31.452361143 -0300
+@@ -11,4 +11,4 @@
+ X-MultipleArgs=false
+ Categories=GTK;Archiving;Utility;
+ StartupNotify=true
+-MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-rar;application/x-rar-compressed;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-xz;application/x-xz-compressed-tar;application/x-deb;application/x-rpm;
++MimeType=application/x-arj;application/arj;application/x-bzip;application/x-bzip-compressed-tar;application/x-gzip;application/x-tar;application/x-zip;application/x-zip-compressed;application/zip;application/x-7z-compressed;application/x-compressed-tar;application/x-bzip2;application/x-bzip2-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-lzop;application/x-lzop-compressed-tar;application/x-xz;application/x-xz-compressed-tar;application/x-deb;application/x-rpm;
diff --git a/libre/xbmc-libre-lts/PKGBUILD b/libre/xbmc-libre-lts/PKGBUILD
new file mode 100644
index 000000000..c8613308b
--- /dev/null
+++ b/libre/xbmc-libre-lts/PKGBUILD
@@ -0,0 +1,138 @@
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Brad Fanella <bradfanella@archlinux.us>
+# Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com>
+# Contributor: Zeqadious <zeqadious.at.gmail.dot.com>
+# Contributor: BlackIkeEagle < ike DOT devolder AT gmail DOT com >
+# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
+
+_prefix=/usr
+
+_pkgname=xbmc
+pkgname=xbmc-libre-lts
+pkgver=12.3
+_codename=Frodo
+pkgrel=1
+pkgdesc="A software media player and entertainment hub for digital media (Frodo version), without nonfree addons and unrar support"
+arch=('i686' 'x86_64')
+url="http://xbmc.org"
+license=('GPL' 'custom')
+conflicts=$_pkgname
+provides=$_pkgname
+depends=('hicolor-icon-theme' 'fribidi' 'lzo2' 'smbclient' 'libtiff' 'libva'
+ 'libpng' 'libcdio' 'yajl' 'libmariadbclient' 'libjpeg-turbo' 'libsamplerate'
+ 'glew' 'libssh' 'libmicrohttpd' 'libxrandr' 'sdl_mixer' 'sdl_image' 'python2'
+ 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump' 'unzip' 'mesa-demos'
+ 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng' 'libshairport' 'avahi' 'bluez-libs' 'glu'
+ 'tinyxml' 'taglib' 'ffmpeg-compat')
+makedepends=('boost' 'cmake' 'gperf' 'nasm' 'libxinerama' 'zip' 'libvdpau' 'libcec'
+ 'udisks' 'upower' 'mesa' 'doxygen' 'swig' 'java-environment')
+optdepends=('libcec: support for Pulse-Eight USB-CEC adapter'
+ 'lirc: remote controller support'
+ 'udisks: automount external drives'
+ 'upower: used to trigger power management functionality'
+ 'xorg-xinit: autostart xbmc')
+install="${_pkgname}.install"
+mksource=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz")
+source=("https://repo.parabolagnulinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"
+ "xbmc.service"
+ "polkit.rules"
+ "libass.patch::https://bugs.archlinux.org/index.php?getfile=11285")
+mkmd5sums=('7ae385ebf8e5cfcb917393235e6efbdb')
+md5sums=('7c71af50af55b097e4365a58b70754e8'
+ 'de331663cc8adc94f2fe44a262cfff58'
+ '02f7951824ee13103344f36009c0ef2a'
+ '7fd6399d2ffbdf06b724f0cc2efa0784')
+
+mksource() {
+ cd "${srcdir}/xbmc-$pkgver-$_codename"
+
+ # remove nonfree unRAR utility files from the source
+ rm -rv lib/UnrarXLib
+}
+
+prepare() {
+ cd "${srcdir}/xbmc-$pkgver-$_codename"
+
+ patch -p0 <$srcdir/libass.patch
+
+ # fix lsb_release dependency
+ sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/arch-release:' xbmc/utils/SystemInfo.cpp
+ sed -i -e 's:#include <libsmbclient.h>:#include <samba-4.0/libsmbclient.h>:' xbmc/filesystem/{SmbFile,SMBDirectory}.cpp
+
+ # use addons.xml from Parabola server (without nonfree addons support)
+ sed -i -e 's|mirrors[.]xbmc[.]org/addons/frodo/addons.xml|repo.parabolagnulinux.org/other/xbmc-libre-lts/addons/frodo/addons.xml|' addons/repository.xbmc.org/addon.xml
+}
+
+build() {
+ cd "${srcdir}/xbmc-$pkgver-$_codename"
+
+ # Bootstrapping XBMC
+ ./bootstrap
+
+ # Configuring XBMC
+ export PYTHON_VERSION=2 # external python v2
+ export PKG_CONFIG_PATH=/usr/lib/ffmpeg-compat/pkgconfig:$PKG_CONFIG_PATH
+ ./configure --prefix=$_prefix --exec-prefix=$_prefix \
+ --disable-debug \
+ --enable-optimizations \
+ --enable-gl \
+ --enable-sdl \
+ --enable-vaapi \
+ --enable-vdpau \
+ --enable-xvba \
+ --enable-joystick \
+ --enable-xrandr \
+ --enable-rsxs \
+ --enable-projectm \
+ --enable-x11 \
+ --enable-rtmp \
+ --enable-samba \
+ --enable-nfs \
+ --enable-afpclient \
+ --enable-airplay \
+ --enable-airtunes \
+ --enable-ffmpeg-libvorbis \
+ --enable-dvdcss \
+ --disable-hal \
+ --enable-avahi \
+ --enable-webserver \
+ --enable-optical-drive \
+ --enable-libbluray \
+ --enable-texturepacker \
+ --enable-udev \
+ --enable-libusb \
+ --enable-libcec \
+ --enable-external-libraries \
+ --enable-external-ffmpeg \
+ --disable-non-free
+ # Now (finally) build
+ make
+}
+
+package() {
+ cd "${srcdir}/xbmc-$pkgver-$_codename"
+ # Running make install
+ make DESTDIR="${pkgdir}" install
+
+ # run feh with python2
+ sed -i -e 's/python/python2/g' ${pkgdir}${_prefix}/bin/xbmc
+
+ # lsb_release fix
+ sed -i -e 's/which lsb_release &> \/dev\/null/\[ -f \/etc\/arch-release ]/g' "${pkgdir}${_prefix}/bin/xbmc"
+ sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/arch-release/g" "${pkgdir}${_prefix}/bin/xbmc"
+
+ # Tools
+ install -D -m 0755 "${srcdir}/xbmc-$pkgver-$_codename/xbmc-xrandr" "${pkgdir}${_prefix}/share/xbmc/xbmc-xrandr"
+ install -D -m 0755 "${srcdir}/xbmc-$pkgver-$_codename/tools/TexturePacker/TexturePacker" "${pkgdir}${_prefix}/share/xbmc/"
+
+ # Licenses
+ install -d -m 0755 "${pkgdir}${_prefix}/share/licenses/${_pkgname}"
+ for licensef in LICENSE.GPL copying.txt; do
+ mv "${pkgdir}${_prefix}/share/doc/xbmc/${licensef}" "${pkgdir}${_prefix}/share/licenses/${_pkgname}"
+ done
+
+ install -Dm0644 $srcdir/xbmc.service $pkgdir/usr/lib/systemd/system/xbmc.service
+# install -Dm0644 $srcdir/polkit.rules $pkgdir/usr/share/polkit-1/rules.d/10-xbmc.rules
+# chmod 0700 $pkgdir/usr/share/polkit-1/rules.d/
+}
+# vim:set ts=2 sw=2 et:
diff --git a/libre/xbmc-libre-lts/polkit.rules b/libre/xbmc-libre-lts/polkit.rules
new file mode 100644
index 000000000..4b6d0fda0
--- /dev/null
+++ b/libre/xbmc-libre-lts/polkit.rules
@@ -0,0 +1,12 @@
+polkit.addRule(function(action, subject) {
+ if (subject.user == "xbmc") {
+ polkit.log("action=" + action);
+ polkit.log("subject=" + subject);
+ if (action.id.indexOf("org.freedesktop.login1.") == 0) {
+ return polkit.Result.YES;
+ }
+ if (action.id.indexOf("org.freedesktop.udisks.") == 0) {
+ return polkit.Result.YES;
+ }
+ }
+});
diff --git a/libre/xbmc-libre-lts/xbmc.install b/libre/xbmc-libre-lts/xbmc.install
new file mode 100644
index 000000000..8076fe2d3
--- /dev/null
+++ b/libre/xbmc-libre-lts/xbmc.install
@@ -0,0 +1,19 @@
+post_install() {
+ [[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor
+ [[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications
+ getent group xbmc > /dev/null || groupadd -r xbmc
+ getent passwd xbmc > /dev/null || useradd -r -m -d /var/lib/xbmc -g xbmc xbmc
+ usermod -a -G xbmc,audio,video,network,optical xbmc
+ mkdir -p var/lib/xbmc
+ chown -R xbmc:xbmc var/lib/xbmc
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+post_remove() {
+ [[ $(type -p gtk-update-icon-cache) ]] && usr/bin/gtk-update-icon-cache -qtf usr/share/icons/hicolor
+ [[ $(type -p update-desktop-database) ]] && usr/bin/update-desktop-database -q usr/share/applications
+ getent passwd xbmc > /dev/null && userdel xbmc
+}
diff --git a/libre/xbmc-libre-lts/xbmc.service b/libre/xbmc-libre-lts/xbmc.service
new file mode 100644
index 000000000..d36ddb05a
--- /dev/null
+++ b/libre/xbmc-libre-lts/xbmc.service
@@ -0,0 +1,16 @@
+[Unit]
+Description = Starts instance of XBMC using xinit
+After = systemd-user-sessions.service
+Conflicts=getty@tty7.service
+
+[Service]
+User = xbmc
+Group = xbmc
+PAMName=login
+Type = simple
+TTYPath=/dev/tty7
+ExecStart = /usr/bin/xinit /usr/bin/dbus-launch --exit-with-session /usr/bin/xbmc-standalone -l /run/lirc/lircd -- :0 -nolisten tcp vt7
+Restart = on-abort
+
+[Install]
+WantedBy = multi-user.target
diff --git a/libre/xbmc-libre/ChangeLog b/libre/xbmc-libre/ChangeLog
deleted file mode 100644
index 66ae97e3b..000000000
--- a/libre/xbmc-libre/ChangeLog
+++ /dev/null
@@ -1,69 +0,0 @@
-2010-04-10 BlackEagle <ike DOT devolder AT gmail DOT com>
- * 9.11-15 :
- Made it back compliant with FHS ( thx pierre for pointing that out )
- namcap checked and modified to fit its needs as far as it was possible
-
-2009-03-07 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-10 :
- Try and fix some autoconf issues (thanks Gentoo ebuild).
-
-2009-02-08 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-9 :
- Replace some libtool 'ltmain.sh' scripts with the one from libtool
- installed with Arch.
- Make sure XBMCTex isn't linked to OpenGL libraries or it will segfault
- on systems using the nvidia driver.
-
-2009-01-30 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-8 :
- Fix some include's so that gcc 4.3.x is happy, shouldn't complain about
- undefined '::realloc' anymore.
- Remove Mac OS X specific files.
-
-2009-01-25 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-7 :
- Moved libcdio, pmount, smbclient and unrar to optdepends.
- Removed unneeded dependency on sdl_gfx.
- Removed dependency on libpng as sdl_image depends on it.
-
-2008-12-14 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-6 :
- Added libpng to dependency list.
- Added gawk to dependency list.
- Removed '--disable-mms' and '--enable-halmount' configure flags as they
- are not mentioned as supported in the configure script.
-
-2008-12-06 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-5 :
- Added libmad to the dependency list.
- Streamripper 1.64.0+ does not include tre anymore, removed streamripper
- and added tre instead.
- Removed subversion from makedepends.
-
-2008-12-06 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-4 :
- Fix permissions for some more scripts, ffmpeg/texi2doc.pl should not
- fail any longer.
-
-2008-12-05 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-3 :
- Added lirc to the optdepends array.
-
-2008-11-26 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-2 :
- Added install file which informs users that a display depth of at
- least 24-bit is required.
-
-2008-11-17 [vEX] <niechift.dot.vex.at.gmail.dot.com>
-
- * 8.10-1 :
- Initial package, based on previous work by Zeqadious.
diff --git a/libre/xbmc-libre/PKGBUILD b/libre/xbmc-libre/PKGBUILD
index e347707d2..2b8631f1b 100644
--- a/libre/xbmc-libre/PKGBUILD
+++ b/libre/xbmc-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 108909 2014-04-07 10:57:58Z spupykin $
+# $Id: PKGBUILD 110797 2014-05-07 10:38:28Z bpiotrowski $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Contributor: Brad Fanella <bradfanella@archlinux.us>
# Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com>
@@ -10,10 +10,10 @@ _prefix=/usr
_pkgname=xbmc
pkgname=xbmc-libre
-pkgver=12.3
-_codename=Frodo
-pkgrel=14
-pkgdesc="A software media player and entertainment hub for digital media, without nonfree addons and unrar support"
+pkgver=13.0
+_codename=Gotham
+pkgrel=2.1
+pkgdesc="A software media player and entertainment hub for digital media (Gotham version), without nonfree addons and unrar support"
arch=('i686' 'x86_64')
url="http://xbmc.org"
license=('GPL' 'custom')
@@ -21,48 +21,49 @@ replaces=$_pkgname
conflicts=$_pkgname
provides=$_pkgname=$pkgver
depends=('hicolor-icon-theme' 'fribidi' 'lzo2' 'smbclient' 'libtiff' 'libva'
- 'libpng' 'libcdio' 'yajl' 'libmariadbclient' 'libjpeg-turbo' 'libsamplerate'
- 'glew' 'libssh' 'libmicrohttpd' 'libxrandr' 'sdl_mixer' 'sdl_image' 'python2'
- 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump' 'unzip' 'mesa-demos'
- 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng' 'libshairport' 'avahi' 'bluez-libs' 'glu'
- 'tinyxml' 'taglib' 'ffmpeg-compat')
+ 'libpng' 'libcdio' 'yajl' 'libmysqlclient' 'libjpeg-turbo' 'libsamplerate'
+ 'glew' 'libssh' 'libmicrohttpd' 'libxrandr' 'sdl_mixer' 'sdl_image'
+ 'python2' 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump'
+ 'unzip' 'mesa-demos' 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng'
+ 'avahi' 'bluez-libs' 'tinyxml' 'libcap' 'swig' 'taglib' 'libpulse'
+ 'java-runtime-headless' 'glu' 'mesa' 'shairplay' 'libxslt' 'ffmpeg')
makedepends=('boost' 'cmake' 'gperf' 'nasm' 'libxinerama' 'zip' 'libvdpau' 'libcec'
- 'udisks' 'upower' 'mesa' 'doxygen' 'swig' 'java-environment')
+ 'udisks' 'upower' 'mesa' 'doxygen' 'swig' 'java-environment')
optdepends=('libcec: support for Pulse-Eight USB-CEC adapter'
- 'lirc: remote controller support'
- 'udisks: automount external drives'
- 'upower: used to trigger power management functionality'
- 'xorg-xinit: autostart xbmc')
+ 'lirc: remote controller support'
+ 'udisks: automount external drives'
+ 'upower: used to trigger power management functionality'
+ 'xorg-xinit: autostart xbmc'
+ 'pulseaudio: for pulseaudio support')
install="${_pkgname}.install"
-mksource=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz")
-source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.gz"
- "xbmc.service"
- "polkit.rules"
- "libass.patch::https://bugs.archlinux.org/index.php?getfile=11285")
-mkmd5sums=('7ae385ebf8e5cfcb917393235e6efbdb')
-md5sums=('7c71af50af55b097e4365a58b70754e8'
+mksource=(
+ "xbmc-$pkgver.tar.gz::https://github.com/xbmc/xbmc/archive/13.0-Gotham.tar.gz"
+ )
+source=(
+ "https://repo.parabolagnulinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz"
+ "xbmc.service"
+ "polkit.rules"
+ "enable-external-ffmpeg.patch"
+ )
+mkmd5sums=('54fafd985b5209859ba6faeb50b8f142')
+md5sums=('87083f6d9be2861dfc8bddca959e3880'
'de331663cc8adc94f2fe44a262cfff58'
'02f7951824ee13103344f36009c0ef2a'
- '7fd6399d2ffbdf06b724f0cc2efa0784')
+ '9f9b41cfc1e21b1e7d0bb10d6e85b3c6')
mksource() {
cd "${srcdir}/xbmc-$pkgver-$_codename"
- # remove unrar files from the source
+ msg2 "remove nonfree unRAR utility files from the source"
rm -rv lib/UnrarXLib
}
prepare() {
cd "${srcdir}/xbmc-$pkgver-$_codename"
+ patch -p1 -i ../enable-external-ffmpeg.patch
- patch -p0 <$srcdir/libass.patch
-
- # fix lsb_release dependency
- sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/arch-release:' xbmc/utils/SystemInfo.cpp
- sed -i -e 's:#include <libsmbclient.h>:#include <samba-4.0/libsmbclient.h>:' xbmc/filesystem/{SmbFile,SMBDirectory}.cpp
-
- # use addons.xml from Parabola server (without nonfree addons support)
- sed -i -e 's|mirrors[.]xbmc[.]org/addons/frodo/addons.xml|repo.parabolagnulinux.org/other/xbmc-libre/addons/frodo/addons.xml|' addons/repository.xbmc.org/addon.xml
+ msg2 "Use addons.xml from Parabola server (without nonfree addons support)"
+ sed -i -e 's|mirrors[.]xbmc[.]org/addons/gotham/addons.xml|repo.parabolagnulinux.org/other/xbmc-libre/addons/gotham/addons.xml|' addons/repository.xbmc.org/addon.xml
}
build() {
@@ -73,7 +74,6 @@ build() {
# Configuring XBMC
export PYTHON_VERSION=2 # external python v2
- export PKG_CONFIG_PATH=/usr/lib/ffmpeg-compat/pkgconfig:$PKG_CONFIG_PATH
./configure --prefix=$_prefix --exec-prefix=$_prefix \
--disable-debug \
--enable-optimizations \
@@ -105,8 +105,8 @@ build() {
--enable-libusb \
--enable-libcec \
--enable-external-libraries \
- --enable-external-ffmpeg \
--disable-non-free
+
# Now (finally) build
make
}
@@ -119,22 +119,21 @@ package() {
# run feh with python2
sed -i -e 's/python/python2/g' ${pkgdir}${_prefix}/bin/xbmc
- # lsb_release fix
- sed -i -e 's/which lsb_release &> \/dev\/null/\[ -f \/etc\/arch-release ]/g' "${pkgdir}${_prefix}/bin/xbmc"
- sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/ \/'/cat \/etc\/arch-release/g" "${pkgdir}${_prefix}/bin/xbmc"
-
# Tools
+ msg2 "Tools"
install -D -m 0755 "${srcdir}/xbmc-$pkgver-$_codename/xbmc-xrandr" "${pkgdir}${_prefix}/share/xbmc/xbmc-xrandr"
install -D -m 0755 "${srcdir}/xbmc-$pkgver-$_codename/tools/TexturePacker/TexturePacker" "${pkgdir}${_prefix}/share/xbmc/"
# Licenses
- install -d -m 0755 "${pkgdir}${_prefix}/share/licenses/${_pkgname}"
+ msg2 "Copy licenses"
+ install -dm755 ${pkgdir}${_prefix}/share/licenses/${_pkgname}
for licensef in LICENSE.GPL copying.txt; do
- mv "${pkgdir}${_prefix}/share/doc/xbmc/${licensef}" "${pkgdir}${_prefix}/share/licenses/${_pkgname}"
+ mv ${pkgdir}${_prefix}/share/doc/xbmc/${licensef} \
+ ${pkgdir}${_prefix}/share/licenses/${_pkgname}
done
+ # install systemd service
install -Dm0644 $srcdir/xbmc.service $pkgdir/usr/lib/systemd/system/xbmc.service
-# install -Dm0644 $srcdir/polkit.rules $pkgdir/usr/share/polkit-1/rules.d/10-xbmc.rules
-# chmod 0700 $pkgdir/usr/share/polkit-1/rules.d/
+ install -Dm0644 $srcdir/polkit.rules $pkgdir/etc/polkit-1/rules.d/10-xbmc.rules
}
# vim:set ts=2 sw=2 et:
diff --git a/libre/xbmc-libre/enable-external-ffmpeg.patch b/libre/xbmc-libre/enable-external-ffmpeg.patch
new file mode 100644
index 000000000..2bc1aaf03
--- /dev/null
+++ b/libre/xbmc-libre/enable-external-ffmpeg.patch
@@ -0,0 +1,100 @@
+diff -rupN a/configure.in b/configure.in
+--- a/configure.in 2014-05-03 21:03:25.000000000 +0000
++++ b/configure.in 2014-05-07 09:56:30.039177391 +0000
+@@ -600,7 +600,7 @@ PKG_PROG_PKG_CONFIG
+ MAKE="${MAKE:-make}"
+ OBJDUMP="${OBJDUMP:-objdump}"
+
+-use_external_ffmpeg=no
++use_external_ffmpeg=yes
+ use_static_ffmpeg=no
+
+ # ffmpeg needs the output of uname -s (e.x. linux, darwin) for the target_os
+@@ -632,7 +632,7 @@ case $host in
+ use_arch="x86"
+ use_cpu="i686"
+ fi
+- use_static_ffmpeg=yes
++ use_static_ffmpeg=no
+ ;;
+ x86_64-*-linux-gnu*|x86_64-*-linux-uclibc*)
+ ARCH="x86_64-linux"
+@@ -640,7 +640,7 @@ case $host in
+ use_arch="x86_64"
+ use_cpu="x86_64"
+ fi
+- use_static_ffmpeg=yes
++ use_static_ffmpeg=no
+ ;;
+ i386-*-freebsd*)
+ ARCH="x86-freebsd"
+@@ -696,7 +696,7 @@ case $host in
+ use_sdl=no
+ use_x11=no
+ use_wayland=no
+- use_static_ffmpeg=yes
++ use_static_ffmpeg=no
+ ;;
+ arm*-*linux-android*)
+ target_platform=target_android
+diff -rupN a/lib/DllAvCodec.h b/lib/DllAvCodec.h
+--- a/lib/DllAvCodec.h 2014-05-03 21:03:25.000000000 +0000
++++ b/lib/DllAvCodec.h 2014-05-07 10:10:06.298165915 +0000
+@@ -43,6 +43,7 @@ extern "C" {
+
+ #if (defined USE_EXTERNAL_FFMPEG)
+ #include <libavcodec/avcodec.h>
++ #include <libavutil/frame.h>
+ #else
+ #include "libavcodec/avcodec.h"
+ #endif
+diff -rupN a/lib/DllAvUtil.h b/lib/DllAvUtil.h
+--- a/lib/DllAvUtil.h 2014-05-03 21:03:25.000000000 +0000
++++ b/lib/DllAvUtil.h 2014-05-07 10:17:31.415798448 +0000
+@@ -31,33 +31,19 @@
+ #endif
+
+ extern "C" {
+-#if (defined USE_EXTERNAL_FFMPEG)
+- #include <libavutil/avutil.h>
+- // for av_get_default_channel_layout
+- #include <libavutil/audioconvert.h>
+- #include <libavutil/crc.h>
+- #include <libavutil/fifo.h>
+- // for LIBAVCODEC_VERSION_INT:
+- #include <libavcodec/avcodec.h>
+- // for enum AVSampleFormat
+- #include <libavutil/samplefmt.h>
+- #include <libavutil/opt.h>
+- #include <libavutil/mem.h>
+- #include <libavutil/mathematics.h>
+- #if (defined USE_LIBAV_HACKS)
+- #include "xbmc-libav-hacks/libav_hacks.h"
+- #endif
+-#else
+- #include "libavutil/avutil.h"
+- //for av_get_default_channel_layout
+- #include "libavutil/audioconvert.h"
+- #include "libavutil/crc.h"
+- #include "libavutil/opt.h"
+- #include "libavutil/mem.h"
+- #include "libavutil/fifo.h"
+- // for enum AVSampleFormat
+- #include "libavutil/samplefmt.h"
+-#endif
++#include <libavutil/avutil.h>
++#include <libavutil/frame.h>
++// for av_get_default_channel_layout
++#include <libavutil/audioconvert.h>
++#include <libavutil/crc.h>
++#include <libavutil/fifo.h>
++// for LIBAVCODEC_VERSION_INT:
++#include <libavcodec/avcodec.h>
++// for enum AVSampleFormat
++#include <libavutil/samplefmt.h>
++#include <libavutil/opt.h>
++#include <libavutil/mem.h>
++#include <libavutil/mathematics.h>
+ }
+
+ #if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52,29,100)
diff --git a/libre/xbmc-pvr-addons-lts/PKGBUILD b/libre/xbmc-pvr-addons-lts/PKGBUILD
new file mode 100644
index 000000000..540e90c45
--- /dev/null
+++ b/libre/xbmc-pvr-addons-lts/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id: PKGBUILD 110811 2014-05-07 15:05:32Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Maintainer (Parabola): André Silva <emulatorman@parabola.nu>
+
+_pkgname=xbmc-pvr-addons
+pkgname=xbmc-pvr-addons-lts
+pkgver=20131106.Frodo
+pkgrel=1
+pkgdesc="XBMC PVR add-ons for current stable xbmc"
+arch=('i686' 'x86_64')
+url="https://github.com/opdenkamp/xbmc-pvr-addons"
+license=('GPL3')
+depends=('xbmc-libre-lts' 'libmysqlclient')
+makedepends=('git' 'libmysqlclient' 'boost')
+optdepends=('tvheadend-git: tvheadend backend' 'mythtv: mythtv backend')
+conflicts=('xbmc-pvr-addons-git' 'xbmc-pvr-addons')
+source=("git://github.com/fetzerch/xbmc-pvr-addons.git#branch=frodo")
+md5sums=('SKIP')
+
+build() {
+ cd "$srcdir/$_pkgname"
+ ./bootstrap
+ ./configure --prefix=/usr --enable-addons-with-dependencies
+ make
+}
+
+package() {
+ cd "$srcdir/$_pkgname"
+ make DESTDIR="$pkgdir/" install
+}
diff --git a/nonprism/claws-mail-nonprism/PKGBUILD b/nonprism/claws-mail-nonprism/PKGBUILD
index 83710a1e8..4d8f8abac 100644
--- a/nonprism/claws-mail-nonprism/PKGBUILD
+++ b/nonprism/claws-mail-nonprism/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 209689 2014-04-01 11:24:16Z jgc $
+# $Id: PKGBUILD 211817 2014-04-27 16:25:16Z andyrtr $
# Maintainer: Andreas Radke <andyrtr@archlinux.org>
# Maintainer (Parabola): Márcio Silva <coadde@parabola.nu>
_pkgname=claws-mail
pkgname=$_pkgname-nonprism
pkgver=3.9.3
-pkgrel=3
+pkgrel=4
pkgdesc="A GTK+ based e-mail client, without libgdata support"
arch=('i686' 'x86_64' 'mips64el')
license=('GPL3')
@@ -35,9 +35,24 @@ replaces=("$_pkgname" "sylpheed-claws" "$_pkgname-extra-plugins" "$_pkgname-libr
conflicts=("$_pkgname" "$_pkgname-extra-plugins")
provides=("$_pkgname=$pkgver" 'claws')
install=$_pkgname.install
-source=(http://downloads.sourceforge.net/sourceforge/sylpheed-claws/$_pkgname-$pkgver.tar.bz2{,.asc})
+source=(http://downloads.sourceforge.net/sourceforge/sylpheed-claws/$_pkgname-$pkgver.tar.bz2{,.asc}
+ claws-ssl-1.patch
+ claws-ssl-2.patch
+ claws-ssl-3.patch)
md5sums=('0158b5e6b6d6866f9a75fd288a4edf04'
- 'SKIP')
+ 'SKIP'
+ '02e5fc5dba976208dfabf23d7666681d'
+ 'dd53ff284cf802ef639bf92fac996d12'
+ 'e8c2ce77c8df7a2c514a4547337304d8')
+
+prepare() {
+ cd $_pkgname-$pkgver
+ # fix ssl certificate verification with libetpan >= 1.4
+ patch -Np1 < $srcdir/claws-ssl-1.patch
+ patch -Np1 < $srcdir/claws-ssl-2.patch
+ patch -Np1 < $srcdir/claws-ssl-3.patch
+ autoreconf -vfi
+}
build() {
cd $_pkgname-$pkgver
diff --git a/nonprism/claws-mail-nonprism/claws-ssl-1.patch b/nonprism/claws-mail-nonprism/claws-ssl-1.patch
new file mode 100644
index 000000000..941a66ac2
--- /dev/null
+++ b/nonprism/claws-mail-nonprism/claws-ssl-1.patch
@@ -0,0 +1,494 @@
+From 35da14ea91d4d32527fbe3293d2ffd26cd642710 Mon Sep 17 00:00:00 2001
+From: Nepu User <nepu@localhost.localdomain>
+Date: Sun, 27 Apr 2014 14:50:36 +0200
+Subject: [PATCH 1/3] upstream commit b0c17cd08e482dbda407dabdc952dfcf5d8fdb6e
+
+---
+ src/etpan/Makefile.am | 6 ++-
+ src/etpan/etpan-ssl.c | 121 ++++++++++++++++++++++++++++++++++++++++++++++++
+ src/etpan/etpan-ssl.h | 40 ++++++++++++++++
+ src/etpan/imap-thread.c | 96 +++-----------------------------------
+ src/etpan/nntp-thread.c | 83 ++-------------------------------
+ 5 files changed, 175 insertions(+), 171 deletions(-)
+ create mode 100644 src/etpan/etpan-ssl.c
+ create mode 100644 src/etpan/etpan-ssl.h
+
+diff --git a/src/etpan/Makefile.am b/src/etpan/Makefile.am
+index b4bfe62..eb343b2 100644
+--- a/src/etpan/Makefile.am
++++ b/src/etpan/Makefile.am
+@@ -5,7 +5,8 @@ noinst_LTLIBRARIES = libclawsetpan.la
+ libclawsetpan_la_SOURCES = \
+ etpan-thread-manager.c \
+ imap-thread.c \
+- nntp-thread.c
++ nntp-thread.c \
++ etpan-ssl.c
+
+ clawsetpanincludedir = $(pkgincludedir)/etpan
+ clawsetpaninclude_HEADERS = \
+@@ -13,7 +14,8 @@ clawsetpaninclude_HEADERS = \
+ etpan-thread-manager.h \
+ etpan-errors.h \
+ imap-thread.h \
+- nntp-thread.h
++ nntp-thread.h \
++ etpan-ssl.h
+
+ INCLUDES = \
+ -I$(top_srcdir)/src \
+diff --git a/src/etpan/etpan-ssl.c b/src/etpan/etpan-ssl.c
+new file mode 100644
+index 0000000..6642e40
+--- /dev/null
++++ b/src/etpan/etpan-ssl.c
+@@ -0,0 +1,121 @@
++/*
++ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
++ * Copyright (C) 1999-2012 Colin Leroy <colin@colino.net>
++ * and the Claws Mail team
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program. If not, see <http://www.gnu.org/licenses/>.
++ *
++ */
++
++#ifdef HAVE_CONFIG_H
++# include "config.h"
++#include "claws-features.h"
++#endif
++
++#ifdef USE_GNUTLS
++#ifdef HAVE_LIBETPAN
++#include <libetpan/libetpan.h>
++#include <gnutls/gnutls.h>
++#include <gnutls/x509.h>
++#include <stdlib.h>
++#include <glib.h>
++#include <glib/gi18n.h>
++#include <errno.h>
++
++#include "ssl_certificate.h"
++#include "utils.h"
++#include "log.h"
++#include "prefs_account.h"
++
++gboolean etpan_certificate_check(mailstream *stream, const char *host, gint port)
++{
++ unsigned char *cert_der = NULL;
++ int len;
++ gnutls_x509_crt_t cert = NULL;
++ gnutls_datum_t tmp;
++
++ if (stream == NULL)
++ return FALSE;
++
++ len = (int)mailstream_ssl_get_certificate(stream, &cert_der);
++
++ if (cert_der == NULL || len < 0) {
++ g_warning("no cert presented.\n");
++ return FALSE;
++ }
++
++ tmp.data = malloc(len);
++ memcpy(tmp.data, cert_der, len);
++ tmp.size = len;
++ gnutls_x509_crt_init(&cert);
++
++ free(cert_der);
++
++ if (gnutls_x509_crt_import(cert, &tmp, GNUTLS_X509_FMT_DER) < 0) {
++ free(tmp.data);
++ g_warning("IMAP: can't get cert\n");
++ return FALSE;
++ } else if (ssl_certificate_check(cert, (guint)-1, host, port) == TRUE) {
++ free(tmp.data);
++ gnutls_x509_crt_deinit(cert);
++ return TRUE;
++ } else {
++ free(tmp.data);
++ gnutls_x509_crt_deinit(cert);
++ return FALSE;
++ }
++}
++
++void etpan_connect_ssl_context_cb(struct mailstream_ssl_context * ssl_context, void * data)
++{
++ PrefsAccount *account = (PrefsAccount *)data;
++ const gchar *cert_path = NULL;
++ const gchar *password = NULL;
++ gnutls_x509_crt_t x509 = NULL;
++ gnutls_x509_privkey_t pkey = NULL;
++
++ if (account->in_ssl_client_cert_file && *account->in_ssl_client_cert_file)
++ cert_path = account->in_ssl_client_cert_file;
++ if (account->in_ssl_client_cert_pass && *account->in_ssl_client_cert_pass)
++ password = account->in_ssl_client_cert_pass;
++
++ if (mailstream_ssl_set_client_certificate_data(ssl_context, NULL, 0) < 0 ||
++ mailstream_ssl_set_client_private_key_data(ssl_context, NULL, 0) < 0)
++ debug_print("Impossible to set the client certificate.\n");
++ x509 = ssl_certificate_get_x509_from_pem_file(cert_path);
++ pkey = ssl_certificate_get_pkey_from_pem_file(cert_path);
++ if (!(x509 && pkey)) {
++ /* try pkcs12 format */
++ ssl_certificate_get_x509_and_pkey_from_p12_file(cert_path, password, &x509, &pkey);
++ }
++ if (x509 && pkey) {
++ unsigned char *x509_der = NULL, *pkey_der = NULL;
++ size_t x509_len, pkey_len;
++
++ x509_len = (size_t)gnutls_i2d_X509(x509, &x509_der);
++ pkey_len = (size_t)gnutls_i2d_PrivateKey(pkey, &pkey_der);
++ if (x509_len > 0 && pkey_len > 0) {
++ if (mailstream_ssl_set_client_certificate_data(ssl_context, x509_der, x509_len) < 0 ||
++ mailstream_ssl_set_client_private_key_data(ssl_context, pkey_der, pkey_len) < 0)
++ log_error(LOG_PROTOCOL, _("Impossible to set the client certificate.\n"));
++ g_free(x509_der);
++ g_free(pkey_der);
++ }
++ gnutls_x509_crt_deinit(x509);
++ gnutls_x509_privkey_deinit(pkey);
++ }
++}
++
++#endif /* USE_GNUTLS */
++#endif /* HAVE_LIBETPAN */
+diff --git a/src/etpan/etpan-ssl.h b/src/etpan/etpan-ssl.h
+new file mode 100644
+index 0000000..5607d1a
+--- /dev/null
++++ b/src/etpan/etpan-ssl.h
+@@ -0,0 +1,40 @@
++/*
++ * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client
++ * Copyright (C) 1999-2012 Colin Leroy <colin@colino.net>
++ * and the Claws Mail team
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 3 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program. If not, see <http://www.gnu.org/licenses/>.
++ *
++ */
++
++#ifndef __ETPAN_SSL_H__
++#define __ETPAN_SSL_H__
++
++#ifdef HAVE_CONFIG_H
++# include "config.h"
++#include "claws-features.h"
++#endif
++
++#ifdef USE_GNUTLS
++#ifdef HAVE_LIBETPAN
++
++#include <libetpan/libetpan.h>
++
++gboolean etpan_certificate_check(mailstream *imap_stream, const char *host, gint port);
++void etpan_connect_ssl_context_cb(struct mailstream_ssl_context * ssl_context, void * data);
++
++#endif /* USE_GNUTLS */
++#endif /* HAVE_LIBETPAN */
++
++#endif /* __ETPAN_SSL_H__ */
+diff --git a/src/etpan/imap-thread.c b/src/etpan/imap-thread.c
+index b71e4d7..4332f59 100644
+--- a/src/etpan/imap-thread.c
++++ b/src/etpan/imap-thread.c
+@@ -41,6 +41,7 @@
+ #include <gtk/gtk.h>
+ #include <log.h>
+ #include "etpan-thread-manager.h"
++#include "etpan-ssl.h"
+ #include "utils.h"
+ #include "mainwindow.h"
+ #include "ssl.h"
+@@ -519,79 +520,6 @@ int imap_threaded_connect(Folder * folder, const char * server, int port)
+ return result.error;
+ }
+
+-static int etpan_certificate_check(const unsigned char *certificate, int len, void *data)
+-{
+-#ifdef USE_GNUTLS
+- struct connect_param *param = (struct connect_param *)data;
+- gnutls_x509_crt_t cert = NULL;
+- gnutls_datum_t tmp;
+-
+- if (certificate == NULL || len < 0) {
+- g_warning("no cert presented.\n");
+- return 0;
+- }
+-
+- tmp.data = malloc(len);
+- memcpy(tmp.data, certificate, len);
+- tmp.size = len;
+- gnutls_x509_crt_init(&cert);
+- if (gnutls_x509_crt_import(cert, &tmp, GNUTLS_X509_FMT_DER) < 0) {
+- g_warning("IMAP: can't get cert\n");
+- return 0;
+- } else if (ssl_certificate_check(cert, (guint)-1, (gchar *)param->server,
+- (gushort)param->port) == TRUE) {
+- gnutls_x509_crt_deinit(cert);
+- return 0;
+- } else {
+- gnutls_x509_crt_deinit(cert);
+- return -1;
+- }
+-#endif
+- return 0;
+-}
+-
+-static void connect_ssl_context_cb(struct mailstream_ssl_context * ssl_context, void * data)
+-{
+-#ifdef USE_GNUTLS
+- PrefsAccount *account = (PrefsAccount *)data;
+- const gchar *cert_path = NULL;
+- const gchar *password = NULL;
+- gnutls_x509_crt_t x509 = NULL;
+- gnutls_x509_privkey_t pkey = NULL;
+-
+- if (account->in_ssl_client_cert_file && *account->in_ssl_client_cert_file)
+- cert_path = account->in_ssl_client_cert_file;
+- if (account->in_ssl_client_cert_pass && *account->in_ssl_client_cert_pass)
+- password = account->in_ssl_client_cert_pass;
+-
+- if (mailstream_ssl_set_client_certificate_data(ssl_context, NULL, 0) < 0 ||
+- mailstream_ssl_set_client_private_key_data(ssl_context, NULL, 0) < 0)
+- debug_print("Impossible to set the client certificate.\n");
+- x509 = ssl_certificate_get_x509_from_pem_file(cert_path);
+- pkey = ssl_certificate_get_pkey_from_pem_file(cert_path);
+- if (!(x509 && pkey)) {
+- /* try pkcs12 format */
+- ssl_certificate_get_x509_and_pkey_from_p12_file(cert_path, password, &x509, &pkey);
+- }
+- if (x509 && pkey) {
+- unsigned char *x509_der = NULL, *pkey_der = NULL;
+- size_t x509_len, pkey_len;
+-
+- x509_len = (size_t)gnutls_i2d_X509(x509, &x509_der);
+- pkey_len = (size_t)gnutls_i2d_PrivateKey(pkey, &pkey_der);
+- if (x509_len > 0 && pkey_len > 0) {
+- if (mailstream_ssl_set_client_certificate_data(ssl_context, x509_der, x509_len) < 0 ||
+- mailstream_ssl_set_client_private_key_data(ssl_context, pkey_der, pkey_len) < 0)
+- log_error(LOG_PROTOCOL, _("Impossible to set the client certificate.\n"));
+- g_free(x509_der);
+- g_free(pkey_der);
+- }
+- gnutls_x509_crt_deinit(x509);
+- gnutls_x509_privkey_deinit(pkey);
+- }
+-#endif
+-}
+-
+ static void connect_ssl_run(struct etpan_thread_op * op)
+ {
+ int r;
+@@ -605,7 +533,7 @@ static void connect_ssl_run(struct etpan_thread_op * op)
+
+ r = mailimap_ssl_connect_with_callback(param->imap,
+ param->server, param->port,
+- connect_ssl_context_cb, param->account);
++ etpan_connect_ssl_context_cb, param->account);
+ result->error = r;
+ }
+
+@@ -616,8 +544,6 @@ int imap_threaded_connect_ssl(Folder * folder, const char * server, int port)
+ chashdatum key;
+ chashdatum value;
+ mailimap * imap, * oldimap;
+- unsigned char *certificate = NULL;
+- int cert_len;
+
+ oldimap = get_imap(folder);
+
+@@ -644,11 +570,8 @@ int imap_threaded_connect_ssl(Folder * folder, const char * server, int port)
+
+ if ((result.error == MAILIMAP_NO_ERROR_AUTHENTICATED ||
+ result.error == MAILIMAP_NO_ERROR_NON_AUTHENTICATED) && !etpan_skip_ssl_cert_check) {
+- cert_len = (int)mailstream_ssl_get_certificate(imap->imap_stream, &certificate);
+- if (etpan_certificate_check(certificate, cert_len, &param) < 0)
+- return -1;
+- if (certificate)
+- free(certificate);
++ if (etpan_certificate_check(imap->imap_stream, server, port) < 0)
++ result.error = MAILIMAP_ERROR_SSL;
+ }
+ debug_print("connect %d with imap %p\n", result.error, imap);
+
+@@ -1156,7 +1079,7 @@ static void starttls_run(struct etpan_thread_op * op)
+ return;
+ }
+
+- tls_low = mailstream_low_tls_open_with_callback(fd, connect_ssl_context_cb, param->account);
++ tls_low = mailstream_low_tls_open_with_callback(fd, etpan_connect_ssl_context_cb, param->account);
+ if (tls_low == NULL) {
+ debug_print("imap starttls run - can't tls_open\n");
+ result->error = MAILIMAP_ERROR_STREAM;
+@@ -1171,8 +1094,6 @@ int imap_threaded_starttls(Folder * folder, const gchar *host, int port)
+ {
+ struct connect_param param;
+ struct starttls_result result;
+- int cert_len;
+- unsigned char *certificate = NULL;
+
+ debug_print("imap starttls - begin\n");
+
+@@ -1186,11 +1107,8 @@ int imap_threaded_starttls(Folder * folder, const gchar *host, int port)
+ debug_print("imap starttls - end\n");
+
+ if (result.error == 0 && param.imap && !etpan_skip_ssl_cert_check) {
+- cert_len = (int)mailstream_ssl_get_certificate(param.imap->imap_stream, &certificate);
+- if (etpan_certificate_check(certificate, cert_len, &param) < 0)
+- result.error = MAILIMAP_ERROR_STREAM;
+- if (certificate)
+- free(certificate);
++ if (etpan_certificate_check(param.imap->imap_stream, host, port) < 0)
++ return MAILIMAP_ERROR_SSL;
+ }
+ return result.error;
+ }
+diff --git a/src/etpan/nntp-thread.c b/src/etpan/nntp-thread.c
+index 6d76e7a..84a2f83 100644
+--- a/src/etpan/nntp-thread.c
++++ b/src/etpan/nntp-thread.c
+@@ -41,6 +41,7 @@
+ #include <gtk/gtk.h>
+ #include <log.h>
+ #include "etpan-thread-manager.h"
++#include "etpan-ssl.h"
+ #include "utils.h"
+ #include "mainwindow.h"
+ #include "ssl_certificate.h"
+@@ -373,79 +374,6 @@ int nntp_threaded_connect(Folder * folder, const char * server, int port)
+ return result.error;
+ }
+
+-static int etpan_certificate_check(const unsigned char *certificate, int len, void *data)
+-{
+-#ifdef USE_GNUTLS
+- struct connect_param *param = (struct connect_param *)data;
+- gnutls_x509_crt_t cert = NULL;
+- gnutls_datum_t tmp;
+-
+- if (certificate == NULL || len < 0) {
+- g_warning("no cert presented.\n");
+- return 0;
+- }
+-
+- tmp.data = malloc(len);
+- memcpy(tmp.data, certificate, len);
+- tmp.size = len;
+- gnutls_x509_crt_init(&cert);
+- if (gnutls_x509_crt_import(cert, &tmp, GNUTLS_X509_FMT_DER) < 0) {
+- g_warning("nntp: can't get cert\n");
+- return 0;
+- } else if (ssl_certificate_check(cert, (guint)-1,
+- (gchar *)param->server, (gushort)param->port) == TRUE) {
+- gnutls_x509_crt_deinit(cert);
+- return 0;
+- } else {
+- gnutls_x509_crt_deinit(cert);
+- return -1;
+- }
+-#endif
+- return 0;
+-}
+-
+-static void connect_ssl_context_cb(struct mailstream_ssl_context * ssl_context, void * data)
+-{
+-#ifdef USE_GNUTLS
+- PrefsAccount *account = (PrefsAccount *)data;
+- const gchar *cert_path = NULL;
+- const gchar *password = NULL;
+- gnutls_x509_crt_t x509 = NULL;
+- gnutls_x509_privkey_t pkey = NULL;
+-
+- if (account->in_ssl_client_cert_file && *account->in_ssl_client_cert_file)
+- cert_path = account->in_ssl_client_cert_file;
+- if (account->in_ssl_client_cert_pass && *account->in_ssl_client_cert_pass)
+- password = account->in_ssl_client_cert_pass;
+-
+- if (mailstream_ssl_set_client_certificate_data(ssl_context, NULL, 0) < 0 ||
+- mailstream_ssl_set_client_private_key_data(ssl_context, NULL, 0) < 0)
+- debug_print("Impossible to set the client certificate.\n");
+- x509 = ssl_certificate_get_x509_from_pem_file(cert_path);
+- pkey = ssl_certificate_get_pkey_from_pem_file(cert_path);
+- if (!(x509 && pkey)) {
+- /* try pkcs12 format */
+- ssl_certificate_get_x509_and_pkey_from_p12_file(cert_path, password, &x509, &pkey);
+- }
+- if (x509 && pkey) {
+- unsigned char *x509_der = NULL, *pkey_der = NULL;
+- size_t x509_len, pkey_len;
+-
+- x509_len = (size_t)gnutls_i2d_X509(x509, &x509_der);
+- pkey_len = (size_t)gnutls_i2d_PrivateKey(pkey, &pkey_der);
+- if (x509_len > 0 && pkey_len > 0) {
+- if (mailstream_ssl_set_client_certificate_data(ssl_context, x509_der, x509_len) < 0 ||
+- mailstream_ssl_set_client_private_key_data(ssl_context, pkey_der, pkey_len) < 0)
+- log_error(LOG_PROTOCOL, _("Impossible to set the client certificate.\n"));
+- g_free(x509_der);
+- g_free(pkey_der);
+- }
+- gnutls_x509_crt_deinit(x509);
+- gnutls_x509_privkey_deinit(pkey);
+- }
+-#endif
+-}
+-
+ static void connect_ssl_run(struct etpan_thread_op * op)
+ {
+ int r;
+@@ -459,7 +387,7 @@ static void connect_ssl_run(struct etpan_thread_op * op)
+
+ r = newsnntp_ssl_connect_with_callback(param->nntp,
+ param->server, param->port,
+- connect_ssl_context_cb, param->account);
++ etpan_connect_ssl_context_cb, param->account);
+ result->error = r;
+ }
+
+@@ -470,8 +398,6 @@ int nntp_threaded_connect_ssl(Folder * folder, const char * server, int port)
+ chashdatum key;
+ chashdatum value;
+ newsnntp * nntp, * oldnntp;
+- unsigned char *certificate = NULL;
+- int cert_len;
+
+ oldnntp = get_nntp(folder);
+
+@@ -497,11 +423,8 @@ int nntp_threaded_connect_ssl(Folder * folder, const char * server, int port)
+ threaded_run(folder, &param, &result, connect_ssl_run);
+
+ if (result.error == NEWSNNTP_NO_ERROR && !etpan_skip_ssl_cert_check) {
+- cert_len = (int)mailstream_ssl_get_certificate(nntp->nntp_stream, &certificate);
+- if (etpan_certificate_check(certificate, cert_len, &param) < 0)
++ if (etpan_certificate_check(nntp->nntp_stream, server, port) < 0)
+ return -1;
+- if (certificate)
+- free(certificate);
+ }
+ debug_print("connect %d with nntp %p\n", result.error, nntp);
+
+--
+1.9.2
+
diff --git a/nonprism/claws-mail-nonprism/claws-ssl-2.patch b/nonprism/claws-mail-nonprism/claws-ssl-2.patch
new file mode 100644
index 000000000..77186d20b
--- /dev/null
+++ b/nonprism/claws-mail-nonprism/claws-ssl-2.patch
@@ -0,0 +1,139 @@
+From fe50206b4385404c38ad0421bdfb707bb6994d80 Mon Sep 17 00:00:00 2001
+From: Nepu User <nepu@localhost.localdomain>
+Date: Sun, 27 Apr 2014 14:55:18 +0200
+Subject: [PATCH 2/3] upstream commit dda3675203030f329d527c697e14342c9c13a75c
+
+---
+ src/common/ssl_certificate.c | 17 ++++++++++++++
+ src/common/ssl_certificate.h | 1 +
+ src/etpan/etpan-ssl.c | 53 ++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 71 insertions(+)
+
+diff --git a/src/common/ssl_certificate.c b/src/common/ssl_certificate.c
+index 84e017e..72f73ac 100644
+--- a/src/common/ssl_certificate.c
++++ b/src/common/ssl_certificate.c
+@@ -647,6 +647,23 @@ gboolean ssl_certificate_check (gnutls_x509_crt_t x509_cert, guint status, const
+ return TRUE;
+ }
+
++gboolean ssl_certificate_check_chain(gnutls_x509_crt_t *certs, gint chain_len, const gchar *host, gushort port)
++{
++ gboolean result = FALSE;
++ gint status;
++
++ gnutls_x509_crt_list_verify (certs,
++ chain_len,
++ NULL, 0,
++ NULL, 0,
++ GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT,
++ &status);
++
++ result = ssl_certificate_check(certs[0], status, host, port);
++
++ return result;
++}
++
+ gnutls_x509_crt_t ssl_certificate_get_x509_from_pem_file(const gchar *file)
+ {
+ gnutls_x509_crt_t x509 = NULL;
+diff --git a/src/common/ssl_certificate.h b/src/common/ssl_certificate.h
+index 8bbe2ac..fd8822a 100644
+--- a/src/common/ssl_certificate.h
++++ b/src/common/ssl_certificate.h
+@@ -58,6 +58,7 @@ struct _SSLCertHookData
+
+ SSLCertificate *ssl_certificate_find (const gchar *host, gushort port, const gchar *fingerprint);
+ gboolean ssl_certificate_check (gnutls_x509_crt_t x509_cert, guint status, const gchar *host, gushort port);
++gboolean ssl_certificate_check_chain(gnutls_x509_crt_t *certs, gint chain_len, const gchar *host, gushort port);
+ void ssl_certificate_destroy(SSLCertificate *cert);
+ void ssl_certificate_delete_from_disk(SSLCertificate *cert);
+ char * readable_fingerprint(unsigned char *src, int len);
+diff --git a/src/etpan/etpan-ssl.c b/src/etpan/etpan-ssl.c
+index 6642e40..c9dc9d8 100644
+--- a/src/etpan/etpan-ssl.c
++++ b/src/etpan/etpan-ssl.c
+@@ -26,6 +26,7 @@
+ #ifdef USE_GNUTLS
+ #ifdef HAVE_LIBETPAN
+ #include <libetpan/libetpan.h>
++#include <libetpan/libetpan_version.h>
+ #include <gnutls/gnutls.h>
+ #include <gnutls/x509.h>
+ #include <stdlib.h>
+@@ -33,6 +34,7 @@
+ #include <glib/gi18n.h>
+ #include <errno.h>
+
++#include "etpan-ssl.h"
+ #include "ssl_certificate.h"
+ #include "utils.h"
+ #include "log.h"
+@@ -40,6 +42,7 @@
+
+ gboolean etpan_certificate_check(mailstream *stream, const char *host, gint port)
+ {
++#if (!defined LIBETPAN_API_CURRENT || LIBETPAN_API_CURRENT < 18)
+ unsigned char *cert_der = NULL;
+ int len;
+ gnutls_x509_crt_t cert = NULL;
+@@ -75,6 +78,56 @@ gboolean etpan_certificate_check(mailstream *stream, const char *host, gint port
+ gnutls_x509_crt_deinit(cert);
+ return FALSE;
+ }
++#else
++ carray *certs_der = NULL;
++ gint chain_len = 0, i;
++ gnutls_x509_crt_t *certs = NULL;
++ gboolean result;
++
++ if (stream == NULL)
++ return FALSE;
++
++ certs_der = mailstream_get_certificate_chain(stream);
++ if (!certs_der) {
++ g_warning("could not get certs");
++ return FALSE;
++ }
++ chain_len = carray_count(certs_der);
++
++ certs = malloc(sizeof(gnutls_x509_crt_t) * chain_len);
++ if (certs == NULL) {
++ g_warning("could not allocate certs");
++ return FALSE;
++ }
++
++ result = TRUE;
++ for (i = 0; i < chain_len; i++) {
++ MMAPString *cert_str = carray_get(certs_der, i);
++ gnutls_datum_t tmp;
++
++ tmp.data = malloc(cert_str->len);
++ memcpy(tmp.data, cert_str->str, cert_str->len);
++ tmp.size = cert_str->len;
++
++ mmap_string_free(cert_str);
++
++ gnutls_x509_crt_init(&certs[i]);
++ if (gnutls_x509_crt_import(certs[i], &tmp, GNUTLS_X509_FMT_DER) < 0)
++ result = FALSE;
++
++ free(tmp.data);
++ }
++
++ carray_free(certs_der);
++
++ if (result == TRUE)
++ result = ssl_certificate_check_chain(certs, chain_len, host, port);
++
++ for (i = 0; i < chain_len; i++)
++ gnutls_x509_crt_deinit(certs[i]);
++
++ return result;
++#endif
+ }
+
+ void etpan_connect_ssl_context_cb(struct mailstream_ssl_context * ssl_context, void * data)
+--
+1.9.2
+
diff --git a/nonprism/claws-mail-nonprism/claws-ssl-3.patch b/nonprism/claws-mail-nonprism/claws-ssl-3.patch
new file mode 100644
index 000000000..cf3306337
--- /dev/null
+++ b/nonprism/claws-mail-nonprism/claws-ssl-3.patch
@@ -0,0 +1,241 @@
+From a74e15a5c7185b941a24b0b61bc134397c8d5737 Mon Sep 17 00:00:00 2001
+From: Nepu User <nepu@localhost.localdomain>
+Date: Sun, 27 Apr 2014 14:56:01 +0200
+Subject: [PATCH 3/3] upstream commit 4d0f2b9b14819b26fbaa72ad129ec0c03e41400f
+
+---
+ src/common/ssl_certificate.c | 114 +++++++++++++++++++++++++++++--------------
+ src/etpan/etpan-ssl.c | 1 +
+ src/etpan/imap-thread.c | 4 +-
+ src/etpan/nntp-thread.c | 2 +-
+ 4 files changed, 82 insertions(+), 39 deletions(-)
+
+diff --git a/src/common/ssl_certificate.c b/src/common/ssl_certificate.c
+index 72f73ac..48e55c9 100644
+--- a/src/common/ssl_certificate.c
++++ b/src/common/ssl_certificate.c
+@@ -207,33 +207,73 @@ size_t gnutls_i2d_PrivateKey(gnutls_x509_privkey_t pkey, unsigned char **output)
+ return key_size;
+ }
+
+-static gnutls_x509_crt_t gnutls_d2i_X509_fp(FILE *fp, int format)
++static int gnutls_d2i_X509_list_fp(FILE *fp, int format, gnutls_x509_crt_t **cert_list, gint *num_certs)
+ {
+- gnutls_x509_crt_t cert = NULL;
++ gnutls_x509_crt_t *crt_list;
++ unsigned int max = 512;
++ unsigned int flags = 0;
+ gnutls_datum_t tmp;
+ struct stat s;
+ int r;
++
++ *cert_list = NULL;
++ *num_certs = 0;
++
++ if (fp == NULL)
++ return -ENOENT;
++
+ if (fstat(fileno(fp), &s) < 0) {
+ perror("fstat");
+- return NULL;
++ return -errno;
+ }
++
++ crt_list=(gnutls_x509_crt_t*)malloc(max*sizeof(gnutls_x509_crt_t));
+ tmp.data = malloc(s.st_size);
+ memset(tmp.data, 0, s.st_size);
+ tmp.size = s.st_size;
+ if (fread (tmp.data, 1, s.st_size, fp) < s.st_size) {
+ perror("fread");
+ free(tmp.data);
+- return NULL;
++ free(crt_list);
++ return -EIO;
+ }
+
+- gnutls_x509_crt_init(&cert);
+- if ((r = gnutls_x509_crt_import(cert, &tmp, (format == 0)?GNUTLS_X509_FMT_DER:GNUTLS_X509_FMT_PEM)) < 0) {
++ if ((r = gnutls_x509_crt_list_import(crt_list, &max,
++ &tmp, format, flags)) < 0) {
+ debug_print("cert import failed: %s\n", gnutls_strerror(r));
+- gnutls_x509_crt_deinit(cert);
+- cert = NULL;
++ free(tmp.data);
++ free(crt_list);
++ return r;
+ }
+ free(tmp.data);
+- debug_print("got cert! %p\n", cert);
++ debug_print("got %d certs in crt_list! %p\n", max, &crt_list);
++
++ *cert_list = crt_list;
++ *num_certs = max;
++
++ return r;
++}
++
++/* return one certificate, read from file */
++static gnutls_x509_crt_t gnutls_d2i_X509_fp(FILE *fp, int format)
++{
++ gnutls_x509_crt_t *certs = NULL;
++ gnutls_x509_crt_t cert = NULL;
++ int i, ncerts, r;
++
++ if ((r = gnutls_d2i_X509_list_fp(fp, format, &certs, &ncerts)) < 0) {
++ return NULL;
++ }
++
++ if (ncerts == 0)
++ return NULL;
++
++ for (i = 1; i < ncerts; i++)
++ gnutls_x509_crt_deinit(certs[i]);
++
++ cert = certs[0];
++ free(certs);
++
+ return cert;
+ }
+
+@@ -474,8 +514,6 @@ static guint check_cert(gnutls_x509_crt_t cert)
+ gnutls_x509_crt_t *ca_list;
+ unsigned int max = 512;
+ unsigned int flags = 0;
+- gnutls_datum_t tmp;
+- struct stat s;
+ int r, i;
+ unsigned int status;
+ FILE *fp;
+@@ -485,34 +523,12 @@ static guint check_cert(gnutls_x509_crt_t cert)
+ else
+ return (guint)-1;
+
+- if (fstat(fileno(fp), &s) < 0) {
+- perror("fstat");
+- fclose(fp);
+- return (guint)-1;
+- }
+-
+- ca_list=(gnutls_x509_crt_t*)malloc(max*sizeof(gnutls_x509_crt_t));
+- tmp.data = malloc(s.st_size);
+- memset(tmp.data, 0, s.st_size);
+- tmp.size = s.st_size;
+- if (fread (tmp.data, 1, s.st_size, fp) < s.st_size) {
+- perror("fread");
+- free(tmp.data);
+- free(ca_list);
+- fclose(fp);
+- return (guint)-1;
+- }
+-
+- if ((r = gnutls_x509_crt_list_import(ca_list, &max,
+- &tmp, GNUTLS_X509_FMT_PEM, flags)) < 0) {
++ if ((r = gnutls_d2i_X509_list_fp(fp, GNUTLS_X509_FMT_PEM, &ca_list, &max)) < 0) {
+ debug_print("cert import failed: %s\n", gnutls_strerror(r));
+- free(tmp.data);
+- free(ca_list);
+ fclose(fp);
+ return (guint)-1;
+ }
+- free(tmp.data);
+- debug_print("got %d certs in ca_list! %p\n", max, &ca_list);
++
+ r = gnutls_x509_crt_verify(cert, ca_list, max, flags, &status);
+ fclose(fp);
+
+@@ -649,18 +665,44 @@ gboolean ssl_certificate_check (gnutls_x509_crt_t x509_cert, guint status, const
+
+ gboolean ssl_certificate_check_chain(gnutls_x509_crt_t *certs, gint chain_len, const gchar *host, gushort port)
+ {
++ int ncas = 0, ncrls = 0;
++ gnutls_x509_crt_t *cas = NULL;
++ gnutls_x509_crl_t *crls = NULL;
+ gboolean result = FALSE;
++ int i;
+ gint status;
+
++ if (claws_ssl_get_cert_file()) {
++ FILE *fp = g_fopen(claws_ssl_get_cert_file(), "rb");
++ int r = -errno;
++
++ if (fp) {
++ r = gnutls_d2i_X509_list_fp(fp, GNUTLS_X509_FMT_PEM, &cas, &ncas);
++ fclose(fp);
++ }
++
++ if (r < 0)
++ g_warning("Can't read SSL_CERT_FILE %s: %s\n",
++ claws_ssl_get_cert_file(),
++ gnutls_strerror(r));
++ } else {
++ debug_print("Can't find SSL ca-certificates file\n");
++ }
++
++
+ gnutls_x509_crt_list_verify (certs,
+ chain_len,
+- NULL, 0,
++ cas, ncas,
+ NULL, 0,
+ GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT,
+ &status);
+
+ result = ssl_certificate_check(certs[0], status, host, port);
+
++ for (i = 0; i < ncas; i++)
++ gnutls_x509_crt_deinit(cas[i]);
++ free(cas);
++
+ return result;
+ }
+
+diff --git a/src/etpan/etpan-ssl.c b/src/etpan/etpan-ssl.c
+index c9dc9d8..f99955b 100644
+--- a/src/etpan/etpan-ssl.c
++++ b/src/etpan/etpan-ssl.c
+@@ -125,6 +125,7 @@ gboolean etpan_certificate_check(mailstream *stream, const char *host, gint port
+
+ for (i = 0; i < chain_len; i++)
+ gnutls_x509_crt_deinit(certs[i]);
++ free(certs);
+
+ return result;
+ #endif
+diff --git a/src/etpan/imap-thread.c b/src/etpan/imap-thread.c
+index 4332f59..f0b504e 100644
+--- a/src/etpan/imap-thread.c
++++ b/src/etpan/imap-thread.c
+@@ -570,7 +570,7 @@ int imap_threaded_connect_ssl(Folder * folder, const char * server, int port)
+
+ if ((result.error == MAILIMAP_NO_ERROR_AUTHENTICATED ||
+ result.error == MAILIMAP_NO_ERROR_NON_AUTHENTICATED) && !etpan_skip_ssl_cert_check) {
+- if (etpan_certificate_check(imap->imap_stream, server, port) < 0)
++ if (etpan_certificate_check(imap->imap_stream, server, port) != TRUE)
+ result.error = MAILIMAP_ERROR_SSL;
+ }
+ debug_print("connect %d with imap %p\n", result.error, imap);
+@@ -1107,7 +1107,7 @@ int imap_threaded_starttls(Folder * folder, const gchar *host, int port)
+ debug_print("imap starttls - end\n");
+
+ if (result.error == 0 && param.imap && !etpan_skip_ssl_cert_check) {
+- if (etpan_certificate_check(param.imap->imap_stream, host, port) < 0)
++ if (etpan_certificate_check(param.imap->imap_stream, host, port) != TRUE)
+ return MAILIMAP_ERROR_SSL;
+ }
+ return result.error;
+diff --git a/src/etpan/nntp-thread.c b/src/etpan/nntp-thread.c
+index 84a2f83..7708d31 100644
+--- a/src/etpan/nntp-thread.c
++++ b/src/etpan/nntp-thread.c
+@@ -423,7 +423,7 @@ int nntp_threaded_connect_ssl(Folder * folder, const char * server, int port)
+ threaded_run(folder, &param, &result, connect_ssl_run);
+
+ if (result.error == NEWSNNTP_NO_ERROR && !etpan_skip_ssl_cert_check) {
+- if (etpan_certificate_check(nntp->nntp_stream, server, port) < 0)
++ if (etpan_certificate_check(nntp->nntp_stream, server, port) != TRUE)
+ return -1;
+ }
+ debug_print("connect %d with nntp %p\n", result.error, nntp);
+--
+1.9.2
+
diff --git a/nonprism/darktable-nonprism/PKGBUILD b/nonprism/darktable-nonprism/PKGBUILD
index 2f4b6ecca..7a34970ec 100644
--- a/nonprism/darktable-nonprism/PKGBUILD
+++ b/nonprism/darktable-nonprism/PKGBUILD
@@ -1,11 +1,11 @@
-# $Id: PKGBUILD 105572 2014-02-10 13:31:04Z spupykin $
+# $Id: PKGBUILD 110040 2014-04-23 14:50:57Z spupykin $
# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
# Maintainer: Christian Himpel <chressie at gmail dot com>
# Contributor: Johannes Hanika <hanatos at gmail dot com>
_pkgname=darktable
pkgname=darktable-nonprism
-pkgver=1.4.1
+pkgver=1.4.2
_pkgver=1.4
pkgrel=1
pkgdesc="Utility to organize and develop raw images, without flickcurl support"
@@ -22,7 +22,7 @@ makedepends=('intltool>=0.40' 'cmake' 'librsvg')
optdepends=('librsvg')
install=darktable.install
source=(http://downloads.sourceforge.net/project/darktable/darktable/${_pkgver}/darktable-$pkgver.tar.xz)
-md5sums=('78252618bb7b1df30109ef5484d46f3c')
+md5sums=('f86554329c2c809ffb009244a6f1d643')
build() {
cd "$srcdir/$_pkgname-$pkgver"
diff --git a/nonprism/duplicity-nonprism/PKGBUILD b/nonprism/duplicity-nonprism/PKGBUILD
index 79163db90..21dfe9a47 100644
--- a/nonprism/duplicity-nonprism/PKGBUILD
+++ b/nonprism/duplicity-nonprism/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 105458 2014-02-08 15:39:04Z bgyorgy $
+# $Id: PKGBUILD 110919 2014-05-09 15:34:16Z lfleischer $
# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
# Contributor: Kaiting Chen <kaitocracy@gmail.com>
# Contributor: Aaron Schaefer <aaron@elasticdog.com>
@@ -6,13 +6,17 @@
_pkgname=duplicity
pkgname=duplicity-nonprism
-pkgver=0.6.23
-pkgrel=3
+pkgver=0.6.24
+pkgrel=1
pkgdesc='A utility for encrypted, bandwidth-efficient backups using the rsync algorithm, without python2-gdata recommendation'
arch=('i686' 'x86_64')
url='http://www.nongnu.org/duplicity/'
license=('GPL')
+replaces=$_pkgname
+conflicts=$_pkgname
+provides=$_pkgname=$pkgver
depends=('gnupg' 'librsync' 'ncftp' 'python2-paramiko' 'python2-lockfile')
+makedepends=('python2-setuptools')
optdepends=('lftp: FTPS backend'
'python2-boto: Amazon S3 backend'
'python2-gobject: GIO backend'
@@ -20,21 +24,9 @@ optdepends=('lftp: FTPS backend'
'python2-httplib2: Ubuntu One backend'
'python2-oauthlib: Ubuntu One backend'
'rsync: rsync backend')
-replaces=$_pkgname
-conflicts=$_pkgname
-provides=$_pkgname=$pkgver
-source=("http://savannah.nongnu.org/download/$_pkgname/$_pkgname-$pkgver.tar.gz"{,.sig}
- "gpg-encode.patch")
-md5sums=('ae0e84446bcf114735de1057ed53c977'
- 'SKIP'
- '366555c73aeebf7f15f6f37ec65176ce')
-
-prepare() {
- cd "${srcdir}/${_pkgname}-${pkgver}"
-
- # Fix gpg encrypted backup (FS#38838, upstream revision 961, will be fixed in 0.6.24).
- patch -Np0 -i ../gpg-encode.patch
-}
+source=("https://launchpad.net/$_pkgname/0.6-series/$pkgver/+download/$_pkgname-$pkgver.tar.gz"{,.sig})
+md5sums=('5d4e9329a6d793880909d18b0736ff06'
+ 'SKIP')
build() {
cd "${srcdir}/${_pkgname}-${pkgver}"
diff --git a/nonprism/icedove-libre-nonprism/PKGBUILD b/nonprism/icedove-libre-nonprism/PKGBUILD
index 3a2393476..8aca600e8 100644
--- a/nonprism/icedove-libre-nonprism/PKGBUILD
+++ b/nonprism/icedove-libre-nonprism/PKGBUILD
@@ -3,8 +3,8 @@
# We're getting this from Debian Sid
_debname=icedove
-_debver=24.4.0
-_debrel=deb1
+_debver=24.5.0
+_debrel=deb2
_debrepo=http://ftp.debian.org/debian/pool/main/
debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
@@ -30,8 +30,8 @@ source=("${_debrepo}/`debfile ${_debname}`_${_debver}.orig.tar.xz"
vendor.js
${_pkgname}.desktop)
options=(!emptydirs)
-md5sums=('bfe7e2d0d7bf13070745849a98cf1ef0'
- 'bfb4b90eba2586b890c9735a91c3ab1f'
+md5sums=('f5fdb857b1da3e7419acbd5922b4966d'
+ '051ee07e7ca1f28b114e60524a7f72d2'
'c46cf2a671c8fdefcabd4c87e38f3d40'
'5a53179d14ae9631b7afe5e4d0fc0b25'
'e785e0c267f4435ae1a9aa0b03bcacfb')
diff --git a/pcr/font-manager/0001-nonexistent_cache.patch b/pcr/font-manager/0001-nonexistent_cache.patch
new file mode 100644
index 000000000..effd89320
--- /dev/null
+++ b/pcr/font-manager/0001-nonexistent_cache.patch
@@ -0,0 +1,71 @@
+Description: Don't remove cache dir if non-existent.
+Origin: upstream, http://code.google.com/p/font-manager/source/detail?r=261
+Bug-Fedora: https://bugzilla.redhat.com/show_bug.cgi?id=658328
+---
+ src/lib/fm-fontutils.c | 16 ++++++++--------
+ src/ui/fontconfig.py | 8 +++++---
+ 2 files changed, 13 insertions(+), 11 deletions(-)
+
+--- font-manager.orig/src/lib/fm-fontutils.c
++++ font-manager/src/lib/fm-fontutils.c
+@@ -72,8 +72,8 @@ FcListFiles()
+ {
+ FcChar8 *file;
+
+- FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &file);
+- filelist = g_slist_prepend(filelist, g_strdup((const gchar *) file));
++ if (FcPatternGetString(fontset->fonts[i], FC_FILE, 0, &file) == FcResultMatch)
++ filelist = g_slist_prepend(filelist, g_strdup((const gchar *) file));
+ }
+
+ if (objectset)
+@@ -272,7 +272,7 @@ _get_base_font_info(FontInfo *fontinfo,
+ PangoFontDescription *descr;
+
+ /* Need to add this font to the configuration, it may not be there in the
+- * case where this the font is not installed yet or possibly just installed
++ * case where this font is not installed yet or possibly just installed
+ */
+ FcConfigAppFontAddFile(FcConfigGetCurrent(), filepath);
+
+@@ -287,10 +287,10 @@ _get_base_font_info(FontInfo *fontinfo,
+ FcChar8 *family,
+ *style;
+
+- FcPatternGetString(fontset->fonts[i], FC_FAMILY, 0, &family);
+- FcPatternGetString(fontset->fonts[i], FC_STYLE, 0, &style);
+- ADD_PROP(fontinfo->family, family);
+- ADD_PROP(fontinfo->style, style);
++ if (FcPatternGetString(fontset->fonts[i], FC_FAMILY, 0, &family) == FcResultMatch)
++ ADD_PROP(fontinfo->family, family);
++ if (FcPatternGetString(fontset->fonts[i], FC_STYLE, 0, &style) == FcResultMatch)
++ ADD_PROP(fontinfo->style, style);
+ }
+
+ descr = pango_fc_font_description_from_pattern(pattern, FALSE);
+@@ -539,7 +539,7 @@ static const struct
+ }
+ NoticeData[] =
+ {
+- {"Bigelow", "B&H"},
++ {"Bigelow", "Bigelow & Holmes"},
+ {"Adobe", "Adobe"},
+ {"Bitstream", "Bitstream"},
+ {"Monotype", "Monotype"},
+--- font-manager.orig/src/ui/fontconfig.py
++++ font-manager/src/ui/fontconfig.py
+@@ -376,9 +376,11 @@ class ConfigEdit(gtk.Window):
+ for name in self.cache.iterkeys():
+ discard_fontconfig_settings(self.cache[name])
+ self.save_settings(None)
+- os.unlink(join(CACHE_DIR, CACHED_SETTINGS))
+- os.unlink(join(USER_FONT_CONFIG_DIR,
+- '25-{0}.conf'.format(self.selected_family.get_name())))
++ cache = join(CACHE_DIR, CACHED_SETTINGS)
++ not exists(cache) or os.unlink(cache)
++ cache = join(USER_FONT_CONFIG_DIR,
++ '25-{0}.conf'.format(self.selected_family.get_name()))
++ not exists(cache) or os.unlink(cache)
+ return
+
+ def save_cache(self):
diff --git a/pcr/font-manager/1001-gcc47.patch b/pcr/font-manager/1001-gcc47.patch
new file mode 100644
index 000000000..1563c71ce
--- /dev/null
+++ b/pcr/font-manager/1001-gcc47.patch
@@ -0,0 +1,18 @@
+Description: Fix missing #includes to prevent FTBFS with GCC 4.7.
+Author: Alessio Treglia <alessio@debian.org>
+Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=672043
+Forwarded: http://code.google.com/p/font-manager/issues/detail?id=71
+---
+ src/lib/fm-fontutils.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+--- font-manager.orig/src/lib/fm-fontutils.c
++++ font-manager/src/lib/fm-fontutils.c
+@@ -21,6 +21,7 @@
+ * Boston, MA 02110-1301, USA
+ */
+
++#include <unistd.h>
+ #include <glib.h>
+ #include <glib/gprintf.h>
+ #include <glib/gstdio.h>
diff --git a/pcr/font-manager/2001-paths.patch b/pcr/font-manager/2001-paths.patch
new file mode 100644
index 000000000..2c15232fc
--- /dev/null
+++ b/pcr/font-manager/2001-paths.patch
@@ -0,0 +1,25 @@
+Description: Fixes file location constants to more updated/organized variants.
+ ~/.fonts.conf -> ~/.config/fontconfig/fonts.conf
+ ~/.fonts/ -> ~/.local/share/fonts/
+Author: i_magnific0 (i_magnific0@yahoo.com)
+Notes: patch not submitted
+---
+ src/constants.py.in | 4 ++--
+ 1 file changed, 2 insertion(+), 2 deletions(-)
+
+--- font-manager.orig/src/constants.py.in
++++ font-manager/src/constants.py
+@@ -75,11 +75,11 @@
+
+ HOME = os.getenv('HOME')
+ USER = os.getenv('USER')
+-USER_FONT_DIR = join(HOME, '.fonts')
++USER_FONT_DIR = join(glib.get_user_data_dir(), 'fonts')
+ COMPAT_COLLECTIONS = join(CONFIG_DIR, 'fontgroups.xml')
+ USER_FONT_COLLECTIONS = join(DATA_DIR, 'Collections.xml')
+ USER_FONT_COLLECTIONS_BAK = join(DATA_DIR, 'Collections.xml.bak')
+-USER_FONT_CONFIG = join(HOME, '.fonts.conf')
++USER_FONT_CONFIG = join(CONFIG_DIR, 'fontconfig/fonts.conf')
+ USER_FONT_CONFIG_DIR = join(APP_CONFIG_DIR, 'conf.d')
+ USER_FONT_CONFIG_DIRS = join(APP_CONFIG_DIR, 'directories.conf')
+ USER_FONT_CONFIG_RENDER = join(APP_CONFIG_DIR, 'local.conf')
diff --git a/pcr/font-manager/2002-local-fontconfig-path.patch b/pcr/font-manager/2002-local-fontconfig-path.patch
new file mode 100644
index 000000000..b3c65cc5c
--- /dev/null
+++ b/pcr/font-manager/2002-local-fontconfig-path.patch
@@ -0,0 +1,11 @@
+--- font-manager/src/core/__init__.py.in 2010-12-24 11:05:14.000000000 +0800
++++ font-manager/src/core/__init__.py.in 2013-06-12 21:15:28.294418494 +0800
+@@ -882,7 +882,7 @@
+ # Make sure we have everything we need to run properly
+ _setup_logging()
+ for folder in CACHE_DIR, CONFIG_DIR, APP_CONFIG_DIR, AUTOSTART_DIR, DATA_DIR, \
+- USER_FONT_CONFIG_DIR, USER_FONT_DIR, USER_LIBRARY_DIR:
++ USER_FONT_CONFIG_DIR, USER_FONT_DIR, USER_LIBRARY_DIR, join(CONFIG_DIR, 'fontconfig'):
+ if not exists(folder):
+ os.makedirs(folder, 0755)
+ if folder == USER_FONT_DIR:
diff --git a/pcr/font-manager/2003-file-roller-syntax-fix.patch b/pcr/font-manager/2003-file-roller-syntax-fix.patch
new file mode 100644
index 000000000..229e13dc6
--- /dev/null
+++ b/pcr/font-manager/2003-file-roller-syntax-fix.patch
@@ -0,0 +1,22 @@
+--- font-manager/src/utils/common.py 2010-12-20 12:47:37.000000000 +0800
++++ font-manager/src/utils/common.py 2013-06-12 22:09:06.296985078 +0800
+@@ -146,7 +146,7 @@
+
+ If delete is True, folder will be deleted afterwards
+ """
+- archiver = """file-roller -a '{0}.{1}' '{2}'""".format(arch_name,
++ archiver = """file-roller --add-to='{0}.{1}' '{2}'""".format(arch_name,
+ arch_type, folder)
+ os.chdir(destination)
+ roller = subprocess.Popen(shlex.split(archiver))
+--- font-manager/src/core/fonts.py 2010-12-20 13:14:43.000000000 +0800
++++ font-manager/src/core/fonts.py 2013-06-12 22:26:29.084669145 +0800
+@@ -524,7 +524,7 @@
+ tmp_dir = tempfile.mkdtemp(suffix='-font-manager', prefix='tmp-')
+ arch_dir = join(tmp_dir, dir_name)
+ os.mkdir(arch_dir)
+- subprocess.call(['file-roller', '-e', arch_dir, filepath])
++ subprocess.call(['file-roller', '--extract-to=' + arch_dir, filepath])
+ # Todo: Need to check whether archive actually contained any fonts
+ # if user_is_stupid:
+ # self.notify()
diff --git a/pcr/font-manager/PKGBUILD b/pcr/font-manager/PKGBUILD
new file mode 100644
index 000000000..7224df504
--- /dev/null
+++ b/pcr/font-manager/PKGBUILD
@@ -0,0 +1,58 @@
+# Contributor: Joeny Ang <ang(dot)joeny(at)gmail(dot)com>
+# Contributor: Guan 'kuno' Qing <neokuno(at)gmail(dot)com>
+# Contributor: Guten Ye <ywzhaifei(at)gmail(dot)com>
+# Contributor: i_magnific0 <i_magnific0(at)yahoo(dot)com>
+# Maintainer (Parabola): Esteban Carnevale <alfplayer@mailoo.org>
+
+pkgname=font-manager
+pkgver=0.5.7
+pkgrel=4
+pkgdesc="A font management application for the GNOME desktop"
+url="http://code.google.com/p/font-manager/"
+arch=('i686' 'x86_64')
+license=('GPL')
+depends=('pygtk>=2.0' 'libxml2' 'fontconfig')
+optdepends=('file-roller: to import/export font collections to archives'
+ 'gucharmap: to view selected font using GNOME character map application'
+ 'python-reportlab: to create PDF sample sheets')
+source=(http://font-manager.googlecode.com/files/${pkgname}-${pkgver}.tar.bz2
+ 0001-nonexistent_cache.patch
+ 1001-gcc47.patch
+ 2001-paths.patch
+ 2002-local-fontconfig-path.patch
+ 2003-file-roller-syntax-fix.patch)
+md5sums=('7cd3b635eaddcb84a8b31509880510ed'
+ '50e732de1a92bc498d4cffd39185225c'
+ '727acfbbce4ab8d05078e4719443ce29'
+ 'a9a3cfc9433a0a4c710d4192f34760b9'
+ '119c5049113dadbf54aa4d2edf243d97'
+ '1daadcf92126caa46a628710fd07ae41')
+
+build() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ ./configure --prefix=/usr --sysconfdir=/etc
+ sed -i -e 's/^PYTHON.*/PYTHON=\/usr\/bin\/python2/' Makefile
+
+ # apply patches from Debian
+ # source: http://ftp.de.debian.org/debian/pool/main/f/font-manager/font-manager_0.5.7-4.debian.tar.gz
+ patch -Np1 < ../0001-nonexistent_cache.patch
+ patch -Np1 < ../1001-gcc47.patch
+
+ # apply config file location constants patch by i_magnific0
+ # source: https://github.com/magnific0/font-manager
+ patch -Np1 < ../2001-paths.patch
+
+ # apply patch to create local fontconfig path if not found
+ patch -Np1 < ../2002-local-fontconfig-path.patch
+
+ # apply patch to fix file-roller command line syntax
+ patch -Np1 < ../2003-file-roller-syntax-fix.patch
+
+ # build
+ make
+}
+
+package() {
+ cd ${srcdir}/${pkgname}-${pkgver}
+ make DESTDIR=${pkgdir}/ install
+}
diff --git a/pcr/git-remote-mediawiki/PKGBUILD b/pcr/git-remote-mediawiki/PKGBUILD
index 8fb47724a..d5ffd33be 100644
--- a/pcr/git-remote-mediawiki/PKGBUILD
+++ b/pcr/git-remote-mediawiki/PKGBUILD
@@ -1,10 +1,12 @@
+# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
+
pkgname=git-remote-mediawiki
url=https://github.com/moy/Git-Mediawiki/wiki
license=('GPL') # GPLv2+
pkgdesc="Support for MediaWiki remotes in git"
-pkgver=1.8.5.1
-pkgrel=2
+pkgver=1.9.2
+pkgrel=1
arch=('any')
depends=(
git
@@ -14,18 +16,15 @@ depends=(
perl-mediawiki-api
)
-_symlink() {
- local src=$1
- local dst=$2
- mkdir -p "${pkgdir}/${dst%/*}"
- ln -s "$(realpath "$src" --relative-to="${dst%/*}")" "${pkgdir}/${dst}"
-}
-
package() {
- _mwdir=/usr/share/git/mw-to-git
- _perldir=/usr/share/perl5/vendor_perl
- _gitdir=/usr/lib/git-core
- _symlink ${_mwdir}/Git/Mediawiki.pm ${_perldir}/Git/Mediawiki.pm
- _symlink ${_mwdir}/git-mw.perl ${_gitdir}/git-mw
- _symlink ${_mwdir}/git-remote-mediawiki.perl ${_gitdir}/git-remote-mediawiki
+ local _mwdir=/usr/share/git/mw-to-git
+ local _perldir=/usr/share/perl5/vendor_perl
+ local _gitdir=/usr/lib/git-core
+
+ install -d "$pkgdir"/$_perldir/Git
+ install -d "$pkgdir"/$_gitdir
+
+ ln -srT "$pkgdir"/${_mwdir}/Git/Mediawiki.pm "$pkgdir"/${_perldir}/Git/Mediawiki.pm
+ ln -srT "$pkgdir"/${_mwdir}/git-mw.perl "$pkgdir"/${_gitdir}/git-mw
+ ln -srT "$pkgdir"/${_mwdir}/git-remote-mediawiki.perl "$pkgdir"/${_gitdir}/git-remote-mediawiki
}
diff --git a/pcr/git-send-email/PKGBUILD b/pcr/git-send-email/PKGBUILD
new file mode 100644
index 000000000..22d484073
--- /dev/null
+++ b/pcr/git-send-email/PKGBUILD
@@ -0,0 +1,12 @@
+# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
+
+pkgname=git-send-email
+pkgver=1.9.2
+pkgdesc="Meta-package for packages nescessary for git send-email"
+url="http://git-scm.com/"
+license=('GPL2')
+
+pkgrel=1
+arch=(any)
+
+depends=(git perl-mime-tools perl-net-smtp-ssl perl-authen-sasl)
diff --git a/pcr/gnash/PKGBUILD b/pcr/gnash/PKGBUILD
new file mode 100644
index 000000000..f932fa084
--- /dev/null
+++ b/pcr/gnash/PKGBUILD
@@ -0,0 +1,59 @@
+# $Id: PKGBUILD 107172 2014-03-14 00:14:28Z heftig $
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+pkgname=gnash
+pkgdesc="A GNU Flash movie player"
+pkgver=0.8.11dev
+pkgrel=2
+arch=(i686 x86_64)
+url="http://www.gnu.org/software/gnash/"
+license=(GPL3)
+depends=(curl giflib sdl agg libjpeg libpng libltdl libgl glu speex fontconfig cairo ffmpeg jemalloc boost-libs gtk2 libldap hicolor-icon-theme desktop-file-utils gconf gtkglext)
+makedepends=(libtool mesa xulrunner pkgconfig boost git)
+provides=(gnash-common gnash-gtk)
+conflicts=(gnash-common gnash-gtk)
+replaces=(gnash-common gnash-gtk)
+options=(!emptydirs)
+backup=(etc/gnashrc etc/gnashthumbnailrc etc/gnashpluginrc)
+install=gnash-gtk.install
+source=('gnash::git://git.sv.gnu.org/gnash.git#commit=a3180f2'
+ nodebug.patch)
+sha256sums=('SKIP'
+ '0ebb104a7632af997c7e6b268755949fa0c1eea5e32015b95a22d63d0e431551')
+
+
+prepare() {
+ cd gnash
+
+ # Disable very, very verbose debugging (gigabytes of logs)
+ patch -Np1 -i ../nodebug.patch
+
+ ./autogen.sh
+}
+
+build() {
+ cd gnash
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-plugins-install=system \
+ --with-npapi-plugindir=/usr/lib/mozilla/plugins \
+ --enable-gui=sdl,gtk,dump \
+ --enable-media=ffmpeg \
+ --enable-renderer=all \
+ --enable-device=x11
+
+ sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
+
+ make
+}
+
+package() {
+ cd gnash
+ make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR="$pkgdir" install install-plugin
+
+ install -m755 -d "$pkgdir/usr/share/gconf/schemas"
+ gconf-merge-schema "$pkgdir/usr/share/gconf/schemas/gnash.schemas" --domain gnash \
+ "$pkgdir"/usr/share/applications/*.schemas
+ rm -f "$pkgdir"/usr/share/applications/*.schemas
+}
diff --git a/pcr/gnash/gnash-gtk.install b/pcr/gnash/gnash-gtk.install
new file mode 100644
index 000000000..6678a7f8a
--- /dev/null
+++ b/pcr/gnash/gnash-gtk.install
@@ -0,0 +1,22 @@
+post_install() {
+ gconfpkg --install gnash
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+ pre_remove
+}
+
+post_upgrade() {
+ post_install
+}
+
+pre_remove() {
+ gconfpkg --uninstall gnash
+}
+
+post_remove() {
+ update-desktop-database -q
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/pcr/gnash/nodebug.patch b/pcr/gnash/nodebug.patch
new file mode 100644
index 000000000..ca160b898
--- /dev/null
+++ b/pcr/gnash/nodebug.patch
@@ -0,0 +1,48 @@
+diff -u -r gnash-0.8.9/libbase/log.h gnash-0.8.9-nodebug/libbase/log.h
+--- gnash-0.8.9/libbase/log.h 2011-02-26 19:11:08.000000000 +0100
++++ gnash-0.8.9-nodebug/libbase/log.h 2012-01-18 09:39:02.004103494 +0100
+@@ -331,27 +331,27 @@
+
+ // Define to 0 to completely remove parse debugging at compile-time
+ #ifndef VERBOSE_PARSE
+-#define VERBOSE_PARSE 1
++#define VERBOSE_PARSE 0
+ #endif
+
+ // Define to 0 to completely remove action debugging at compile-time
+ #ifndef VERBOSE_ACTION
+-#define VERBOSE_ACTION 1
++#define VERBOSE_ACTION 0
+ #endif
+
+ // Define to 0 to remove ActionScript errors verbosity at compile-time
+ #ifndef VERBOSE_ASCODING_ERRORS
+-#define VERBOSE_ASCODING_ERRORS 1
++#define VERBOSE_ASCODING_ERRORS 0
+ #endif
+
+ // Define to 0 this to remove invalid SWF verbosity at compile-time
+ #ifndef VERBOSE_MALFORMED_SWF
+-#define VERBOSE_MALFORMED_SWF 1
++#define VERBOSE_MALFORMED_SWF 0
+ #endif
+
+ // Define to 0 this to remove Networking verbosity at compile-time
+ #ifndef VERBOSE_NETWORKING
+-#define VERBOSE_NETWORKING 1
++#define VERBOSE_NETWORKING 0
+ #endif
+
+ #if VERBOSE_PARSE
+diff -u -r gnash-0.8.9/libcore/vm/ActionExec.cpp gnash-0.8.9-nodebug/libcore/vm/ActionExec.cpp
+--- gnash-0.8.9/libcore/vm/ActionExec.cpp 2011-03-13 17:47:36.000000000 +0100
++++ gnash-0.8.9-nodebug/libcore/vm/ActionExec.cpp 2012-01-18 09:40:25.653458508 +0100
+@@ -46,7 +46,7 @@
+ // too much information for my tastes. I really want just
+ // to see how stack changes while executing actions...
+ // --strk Fri Jun 30 02:28:46 CEST 2006
+-# define DEBUG_STACK 1
++//# define DEBUG_STACK 1
+
+ // Max number of stack item to dump. 0 for unlimited.
+ # define STACK_DUMP_LIMIT 32
diff --git a/pcr/gnome-boxes-libre/PKGBUILD b/pcr/gnome-boxes-libre/PKGBUILD
deleted file mode 100644
index 91a3b41be..000000000
--- a/pcr/gnome-boxes-libre/PKGBUILD
+++ /dev/null
@@ -1,44 +0,0 @@
-# Contributor: Daniel Milewski <niitotantei@gmail.com>
-
-_pkgname='gnome-boxes'
-pkgname="$_pkgname-libre"
-pkgver='3.10.2'
-pkgrel='1'
-pkgdesc='A simple GNOME 3 application to access remote or virtual systems, without nonfree system logos'
-arch=('i686' 'x86_64')
-url='https://wiki.gnome.org/Apps/Boxes'
-license=('LGPL')
-depends=('clutter-gtk' 'desktop-file-utils' 'gtk-vnc' 'libosinfo' 'libsoup' 'libtracker-sparql' 'libvirt-glib'
- 'spice-gtk3')
-makedepends=('gobject-introspection' 'intltool' 'itstool' 'spice-protocol' 'vala')
-optdepends=('qemu-usbredir: virtual machines support')
-provides=("$_pkgname=$pkgver")
-conflicts=("$_pkgname")
-replaces=("$_pkgname")
-install='gnome-boxes.install'
-source=("http://ftp.gnome.org/pub/GNOME/sources/$_pkgname/${pkgver:0:4}/$_pkgname-$pkgver.tar.xz" 'logos.patch'
- 'free-distros.patch')
-sha256sums=('9e055627cff5f59323bc95ad65ab361fc26328854d5a421bd09c899c466f2ec4'
- '63d8a7fb5e0d6260d56bd92e9d11f39e9f37c323a261bc822a589b85f760b254'
- '025e56fff5ae3659abc867ef1b5739a4632c91fa7f10d54d0853e9905355a15f')
-
-prepare() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- patch -Np1 -i "$srcdir/logos.patch"
-
- patch -Np1 -i "$srcdir/free-distros.patch"
-}
-
-build() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- ./configure --prefix=/usr
- make
-}
-
-package() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- make DESTDIR="$pkgdir/" install
-}
diff --git a/pcr/gnome-boxes-libre/free-distros.patch b/pcr/gnome-boxes-libre/free-distros.patch
deleted file mode 100644
index d83d2ca4b..000000000
--- a/pcr/gnome-boxes-libre/free-distros.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnome-boxes-3.10.0/data/gnome-boxes-logos-db.xml.original 2013-11-23 13:26:20.013010981 +0100
-+++ gnome-boxes-3.10.0/data/gnome-boxes-logos-db.xml 2013-11-23 14:29:33.237567173 +0100
-@@ -2,4 +2,8 @@
-
- <!-- Please read README.logos for any questions about usage of product logos in Boxes. !-->
-
-+ <os id="https://parabolagnulinux.org">
-+ <logo>https://projects.parabolagnulinux.org/artwork.git/plain/official-2013/optimized-text/logo.svg</logo>
-+ </os>
-+
- </libosinfo>
diff --git a/pcr/gnome-boxes-libre/logos.patch b/pcr/gnome-boxes-libre/logos.patch
deleted file mode 100644
index 6fe80a2eb..000000000
--- a/pcr/gnome-boxes-libre/logos.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- gnome-boxes-3.10.0/data/gnome-boxes-logos-db.xml.original 2013-11-16 22:30:08.198540527 +0100
-+++ gnome-boxes-3.10.0/data/gnome-boxes-logos-db.xml 2013-11-16 22:30:12.135269885 +0100
-@@ -2,36 +2,4 @@
-
- <!-- Please read README.logos for any questions about usage of product logos in Boxes. !-->
-
-- <os id="http://debian.org/debian/1.0">
-- <logo>http://www.debian.org/logos/openlogo-nd.svg</logo>
-- </os>
--
-- <os id="http://fedoraproject.org/fedora/1">
-- <logo>http://people.gnome.org/~zeeshanak/logos/fedora.svg</logo>
-- </os>
--
-- <os id="http://opensuse.org/opensuse/10.2">
-- <logo>http://people.gnome.org/~zeeshanak/logos/opensuse.svg</logo>
-- </os>
--
-- <os id="http://ubuntu.com/ubuntu/4.10">
-- <logo>http://people.gnome.org/~zeeshanak/logos/ubuntu.svg</logo>
-- </os>
--
-- <os id="http://gnome.org/3.6">
-- <logo>http://people.gnome.org/~zeeshanak/logos/gnome-logo.svg</logo>
-- </os>
--
-- <os id="http://redhat.com/rhel/4.0">
-- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
-- </os>
--
-- <os id="http://redhat.com/rhel/5.0">
-- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
-- </os>
--
-- <os id="http://redhat.com/rhel/6.0">
-- <logo>http://people.gnome.org/~zeeshanak/logos/shadownman-pill.svg</logo>
-- </os>
--
- </libosinfo>
diff --git a/pcr/libosinfo-libre/PKGBUILD b/pcr/libosinfo-libre/PKGBUILD
deleted file mode 100644
index 8400558c0..000000000
--- a/pcr/libosinfo-libre/PKGBUILD
+++ /dev/null
@@ -1,63 +0,0 @@
-# Contributor: Daniel Milewski <niitotantei@gmail.com>
-
-_pkgname='libosinfo'
-pkgname="$_pkgname-libre"
-pkgver='0.2.8'
-pkgrel='1'
-pkgdesc='A GObject based library API for managing information about operating systems, hypervisors and the (virtual) hardware devices they can support, without support for nonfree systems'
-arch=('i686' 'x86_64')
-url='http://libosinfo.org'
-license=('LGPL')
-depends=('glib2' 'libxslt')
-makedepends=('intltool' 'libsoup')
-checkdepends=('check')
-provides=("$_pkgname=$pkgver")
-conflicts=("$_pkgname")
-replaces=("$_pkgname")
-source=("https://fedorahosted.org/releases/l/i/$_pkgname/$_pkgname-$pkgver.tar.gz" 'data.patch' 'po.patch' 'test.patch'
- 'free-distros.patch')
-sha256sums=('50cbfcff4548f37b5b7d3328cbc6e96fe6c2a48696e31eec0c819d161e38c643'
- 'fdfb0753a7cf7865ac2ea5b17145f90d27d70e18c69fba0d60dfb43629ea0dac'
- 'aab885d2b3a7f91a79efd7ab6f12fe1d4b264afa0fbc200268838b353600b338'
- 'c4b328f36973931abd71a10a62ec590ef3ba1177486179bc96aa47a22a6d0a42'
- 'f4b79c44ae4a39325480c2b0af4aa7ed086cc1cab7c9ba1119f50967a9a5f4ca')
-
-prepare() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- rm data/datamaps/windows-lang.xml \
- data/hypervisors/rhel-xen.xml{,.in} \
- data/install-scripts/*.xml \
- data/oses/*.xml{,.in}
- rm -r test/isodata/*
-
- patch -Np1 -i "$srcdir/data.patch"
- patch -Np1 -i "$srcdir/po.patch"
- patch -Np1 -i "$srcdir/test.patch"
-
- cd "$srcdir/$_pkgname-$pkgver/po"
- intltool-update pl
- intltool-update uk
- cd "$srcdir/$_pkgname-$pkgver"
-
- patch -Np1 -i "$srcdir/free-distros.patch"
-}
-
-build() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- ./configure --prefix=/usr
- make
-}
-
-check() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- make -k check
-}
-
-package() {
- cd "$srcdir/$_pkgname-$pkgver"
-
- make DESTDIR="$pkgdir/" install
-}
diff --git a/pcr/libosinfo-libre/data.patch b/pcr/libosinfo-libre/data.patch
deleted file mode 100644
index d37d30671..000000000
--- a/pcr/libosinfo-libre/data.patch
+++ /dev/null
@@ -1,137 +0,0 @@
-diff -ruN libosinfo-0.2.8/data/datamaps/Makefile.am libosinfo-0.2.8-libre/data/datamaps/Makefile.am
---- libosinfo-0.2.8/data/datamaps/Makefile.am 2013-01-09 00:01:25.000000000 +0100
-+++ libosinfo-0.2.8-libre/data/datamaps/Makefile.am 2013-12-01 12:15:00.261131308 +0100
-@@ -1,7 +1,6 @@
-
- datamapdir = $(pkgdatadir)/db/datamaps/
- datamap_DATA = \
-- windows-lang.xml \
- x11-keyboard.xml \
- $(NULL)
-
-diff -ruN libosinfo-0.2.8/data/datamaps/Makefile.in libosinfo-0.2.8-libre/data/datamaps/Makefile.in
---- libosinfo-0.2.8/data/datamaps/Makefile.in 2013-09-16 18:45:26.000000000 +0200
-+++ libosinfo-0.2.8-libre/data/datamaps/Makefile.in 2013-12-01 12:15:07.561496625 +0100
-@@ -326,7 +326,6 @@
- top_srcdir = @top_srcdir@
- datamapdir = $(pkgdatadir)/db/datamaps/
- datamap_DATA = \
-- windows-lang.xml \
- x11-keyboard.xml \
- $(NULL)
-
-diff -ruN libosinfo-0.2.8/data/hypervisors/Makefile.am libosinfo-0.2.8-libre/data/hypervisors/Makefile.am
---- libosinfo-0.2.8/data/hypervisors/Makefile.am 2013-02-14 02:39:37.000000000 +0100
-+++ libosinfo-0.2.8-libre/data/hypervisors/Makefile.am 2013-12-01 12:18:54.718635301 +0100
-@@ -1,6 +1,6 @@
-
- databasedir = $(pkgdatadir)/db/hypervisors/
--database_in_files = kvm.xml.in qemu.xml.in rhel-xen.xml.in xen.xml.in
-+database_in_files = kvm.xml.in qemu.xml.in xen.xml.in
-
- database_DATA = $(database_in_files:.xml.in=.xml)
-
-diff -ruN libosinfo-0.2.8/data/hypervisors/Makefile.in libosinfo-0.2.8-libre/data/hypervisors/Makefile.in
---- libosinfo-0.2.8/data/hypervisors/Makefile.in 2013-09-16 18:45:26.000000000 +0200
-+++ libosinfo-0.2.8-libre/data/hypervisors/Makefile.in 2013-12-01 12:20:01.822560286 +0100
-@@ -325,7 +325,7 @@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
- databasedir = $(pkgdatadir)/db/hypervisors/
--database_in_files = kvm.xml.in qemu.xml.in rhel-xen.xml.in xen.xml.in
-+database_in_files = kvm.xml.in qemu.xml.in xen.xml.in
- database_DATA = $(database_in_files:.xml.in=.xml)
- EXTRA_DIST = $(database_in_files) $(database_DATA)
- all: all-am
-diff -ruN libosinfo-0.2.8/data/install-scripts/Makefile.am libosinfo-0.2.8-libre/data/install-scripts/Makefile.am
---- libosinfo-0.2.8/data/install-scripts/Makefile.am 2013-03-27 23:03:14.000000000 +0100
-+++ libosinfo-0.2.8-libre/data/install-scripts/Makefile.am 2013-12-01 12:24:10.160616083 +0100
-@@ -1,12 +1,6 @@
-
- databasedir = $(pkgdatadir)/db/install-scripts/
- database_DATA = \
-- fedora.xml \
-- rhel.xml \
-- windows-sif.xml \
-- windows-cmd.xml \
-- windows-reg.xml \
-- windows-unattend.xml \
- $(NULL)
-
- EXTRA_DIST = $(database_DATA)
-diff -ruN libosinfo-0.2.8/data/install-scripts/Makefile.in libosinfo-0.2.8-libre/data/install-scripts/Makefile.in
---- libosinfo-0.2.8/data/install-scripts/Makefile.in 2013-09-16 18:45:26.000000000 +0200
-+++ libosinfo-0.2.8-libre/data/install-scripts/Makefile.in 2013-12-01 12:24:20.500882542 +0100
-@@ -326,12 +326,6 @@
- top_srcdir = @top_srcdir@
- databasedir = $(pkgdatadir)/db/install-scripts/
- database_DATA = \
-- fedora.xml \
-- rhel.xml \
-- windows-sif.xml \
-- windows-cmd.xml \
-- windows-reg.xml \
-- windows-unattend.xml \
- $(NULL)
-
- EXTRA_DIST = $(database_DATA)
-diff -ruN libosinfo-0.2.8/data/oses/Makefile.am libosinfo-0.2.8-libre/data/oses/Makefile.am
---- libosinfo-0.2.8/data/oses/Makefile.am 2013-09-10 15:22:50.000000000 +0200
-+++ libosinfo-0.2.8-libre/data/oses/Makefile.am 2013-12-01 12:26:24.797757509 +0100
-@@ -1,26 +1,6 @@
-
- databasedir = $(pkgdatadir)/db/oses/
- database_in_files = \
-- altlinux.xml.in \
-- centos.xml.in \
-- debian.xml.in \
-- dos.xml.in \
-- fedora.xml.in \
-- freebsd.xml.in \
-- gnome.xml.in \
-- mandriva.xml.in \
-- mandrake.xml.in \
-- netbsd.xml.in \
-- netware.xml.in \
-- macos.xml.in \
-- openbsd.xml.in \
-- opensuse.xml.in \
-- rhl.xml.in \
-- rhel.xml.in \
-- solaris.xml.in \
-- suse.xml.in \
-- ubuntu.xml.in \
-- windows.xml.in \
- $(NULL)
-
- database_DATA = $(database_in_files:.xml.in=.xml)
-diff -ruN libosinfo-0.2.8/data/oses/Makefile.in libosinfo-0.2.8-libre/data/oses/Makefile.in
---- libosinfo-0.2.8/data/oses/Makefile.in 2013-09-16 18:45:26.000000000 +0200
-+++ libosinfo-0.2.8-libre/data/oses/Makefile.in 2013-12-01 12:26:32.557686417 +0100
-@@ -326,26 +326,6 @@
- top_srcdir = @top_srcdir@
- databasedir = $(pkgdatadir)/db/oses/
- database_in_files = \
-- altlinux.xml.in \
-- centos.xml.in \
-- debian.xml.in \
-- dos.xml.in \
-- fedora.xml.in \
-- freebsd.xml.in \
-- gnome.xml.in \
-- mandriva.xml.in \
-- mandrake.xml.in \
-- netbsd.xml.in \
-- netware.xml.in \
-- macos.xml.in \
-- openbsd.xml.in \
-- opensuse.xml.in \
-- rhl.xml.in \
-- rhel.xml.in \
-- solaris.xml.in \
-- suse.xml.in \
-- ubuntu.xml.in \
-- windows.xml.in \
- $(NULL)
-
- database_DATA = $(database_in_files:.xml.in=.xml)
diff --git a/pcr/libosinfo-libre/free-distros.patch b/pcr/libosinfo-libre/free-distros.patch
deleted file mode 100644
index c69cd3fed..000000000
--- a/pcr/libosinfo-libre/free-distros.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-diff -ruN libosinfo-0.2.8-libre/data/oses/Makefile.am libosinfo-0.2.8-libre-free-distros/data/oses/Makefile.am
---- libosinfo-0.2.8-libre/data/oses/Makefile.am 2013-12-01 13:14:07.267023100 +0100
-+++ libosinfo-0.2.8-libre-free-distros/data/oses/Makefile.am 2013-12-01 13:18:29.183029813 +0100
-@@ -1,6 +1,7 @@
-
- databasedir = $(pkgdatadir)/db/oses/
- database_in_files = \
-+ parabola.xml.in \
- $(NULL)
-
- database_DATA = $(database_in_files:.xml.in=.xml)
-diff -ruN libosinfo-0.2.8-libre/data/oses/Makefile.in libosinfo-0.2.8-libre-free-distros/data/oses/Makefile.in
---- libosinfo-0.2.8-libre/data/oses/Makefile.in 2013-12-01 13:14:07.267023100 +0100
-+++ libosinfo-0.2.8-libre-free-distros/data/oses/Makefile.in 2013-12-01 13:18:48.053708302 +0100
-@@ -326,6 +326,7 @@
- top_srcdir = @top_srcdir@
- databasedir = $(pkgdatadir)/db/oses/
- database_in_files = \
-+ parabola.xml.in \
- $(NULL)
-
- database_DATA = $(database_in_files:.xml.in=.xml)
-diff -ruN libosinfo-0.2.8-libre/data/oses/parabola.xml libosinfo-0.2.8-libre-free-distros/data/oses/parabola.xml
---- libosinfo-0.2.8-libre/data/oses/parabola.xml 1970-01-01 01:00:00.000000000 +0100
-+++ libosinfo-0.2.8-libre-free-distros/data/oses/parabola.xml 2013-12-01 13:26:26.128660679 +0100
-@@ -0,0 +1,42 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<libosinfo version="0.0.1">
-+
-+ <os id="https://parabolagnulinux.org">
-+ <short-id>parabola</short-id>
-+ <name>Parabola GNU/Linux-libre</name>
-+ <vendor>Parabola Project</vendor>
-+ <family>gnu/linux</family>
-+
-+ <resources arch="all">
-+ <minimum>
-+ <cpu>1000000000</cpu>
-+ <n-cpus>1</n-cpus>
-+ <ram>67108864</ram>
-+ <storage>524288000</storage>
-+ </minimum>
-+ <recommended>
-+ <cpu>1000000000</cpu>
-+ <ram>67108864</ram>
-+ <storage>524288000</storage>
-+ </recommended>
-+ </resources>
-+
-+ <media arch="x86_64">
-+ <url>https://repo.parabolagnulinux.org/iso/2013.09.01/parabola-2013.09.01-dual.iso</url>
-+ <iso>
-+ <volume-id>PARA_201309</volume-id>
-+ </iso>
-+ <kernel>parabola/boot/x86_64/vmlinuz</kernel>
-+ <initrd>parabola/boot/x86_64/parabolaiso.img</initrd>
-+ </media>
-+ <media arch="i686">
-+ <url>https://repo.parabolagnulinux.org/iso/2013.09.01/parabola-2013.09.01-dual.iso</url>
-+ <iso>
-+ <volume-id>PARA_201309</volume-id>
-+ </iso>
-+ <kernel>parabola/boot/i686/vmlinuz</kernel>
-+ <initrd>parabola/boot/i686/parabolaiso.img</initrd>
-+ </media>
-+ </os>
-+
-+</libosinfo>
-\ No newline at end of file
-diff -ruN libosinfo-0.2.8-libre/data/oses/parabola.xml.in libosinfo-0.2.8-libre-free-distros/data/oses/parabola.xml.in
---- libosinfo-0.2.8-libre/data/oses/parabola.xml.in 1970-01-01 01:00:00.000000000 +0100
-+++ libosinfo-0.2.8-libre-free-distros/data/oses/parabola.xml.in 2013-12-01 13:17:12.086931332 +0100
-@@ -0,0 +1,42 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<libosinfo version="0.0.1">
-+
-+ <os id="https://parabolagnulinux.org">
-+ <short-id>parabola</short-id>
-+ <_name>Parabola GNU/Linux-libre</_name>
-+ <_vendor>Parabola Project</_vendor>
-+ <family>gnu/linux</family>
-+
-+ <resources arch="all">
-+ <minimum>
-+ <cpu>1000000000</cpu>
-+ <n-cpus>1</n-cpus>
-+ <ram>67108864</ram>
-+ <storage>524288000</storage>
-+ </minimum>
-+ <recommended>
-+ <cpu>1000000000</cpu>
-+ <ram>67108864</ram>
-+ <storage>524288000</storage>
-+ </recommended>
-+ </resources>
-+
-+ <media arch="x86_64">
-+ <url>https://repo.parabolagnulinux.org/iso/2013.09.01/parabola-2013.09.01-dual.iso</url>
-+ <iso>
-+ <volume-id>PARA_201309</volume-id>
-+ </iso>
-+ <kernel>parabola/boot/x86_64/vmlinuz</kernel>
-+ <initrd>parabola/boot/x86_64/parabolaiso.img</initrd>
-+ </media>
-+ <media arch="i686">
-+ <url>https://repo.parabolagnulinux.org/iso/2013.09.01/parabola-2013.09.01-dual.iso</url>
-+ <iso>
-+ <volume-id>PARA_201309</volume-id>
-+ </iso>
-+ <kernel>parabola/boot/i686/vmlinuz</kernel>
-+ <initrd>parabola/boot/i686/parabolaiso.img</initrd>
-+ </media>
-+ </os>
-+
-+</libosinfo>
-diff -ruN libosinfo-0.2.8-libre/po/POTFILES.in libosinfo-0.2.8-libre-free-distros/po/POTFILES.in
---- libosinfo-0.2.8-libre/po/POTFILES.in 2013-12-01 13:14:10.297130169 +0100
-+++ libosinfo-0.2.8-libre-free-distros/po/POTFILES.in 2013-12-01 13:23:01.616209485 +0100
-@@ -1,3 +1,4 @@
-+data/oses/parabola.xml.in
- data/devices/qemu-ps2.xml.in
- data/devices/qemu-pci.xml.in
- data/devices/virtio-pci.xml.in
diff --git a/pcr/libosinfo-libre/po.patch b/pcr/libosinfo-libre/po.patch
deleted file mode 100644
index abd11cb71..000000000
--- a/pcr/libosinfo-libre/po.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-diff -ruN libosinfo-0.2.8/po/POTFILES.in libosinfo-0.2.8-libre/po/POTFILES.in
---- libosinfo-0.2.8/po/POTFILES.in 2013-09-10 15:22:50.000000000 +0200
-+++ libosinfo-0.2.8-libre/po/POTFILES.in 2013-12-01 11:54:50.441912252 +0100
-@@ -1,30 +1,9 @@
--data/oses/netware.xml.in
--data/oses/solaris.xml.in
--data/oses/dos.xml.in
--data/oses/mandrake.xml.in
--data/oses/mandriva.xml.in
--data/oses/suse.xml.in
--data/oses/gnome.xml.in
--data/oses/rhel.xml.in
--data/oses/fedora.xml.in
--data/oses/windows.xml.in
--data/oses/opensuse.xml.in
--data/oses/macos.xml.in
--data/oses/debian.xml.in
--data/oses/ubuntu.xml.in
--data/oses/centos.xml.in
--data/oses/openbsd.xml.in
--data/oses/freebsd.xml.in
--data/oses/rhl.xml.in
--data/oses/netbsd.xml.in
--data/oses/altlinux.xml.in
- data/devices/qemu-ps2.xml.in
- data/devices/qemu-pci.xml.in
- data/devices/virtio-pci.xml.in
- data/devices/qemu-usb.xml.in
- data/hypervisors/kvm.xml.in
- data/hypervisors/qemu.xml.in
--data/hypervisors/rhel-xen.xml.in
- data/hypervisors/xen.xml.in
- osinfo/osinfo_avatar_format.c
- osinfo/osinfo_deployment.c
diff --git a/pcr/libosinfo-libre/test.patch b/pcr/libosinfo-libre/test.patch
deleted file mode 100644
index 413deb1c0..000000000
--- a/pcr/libosinfo-libre/test.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-diff -ruN libosinfo-0.2.8/test/test-isodetect.c libosinfo-0.2.8-libre/test/test-isodetect.c
---- libosinfo-0.2.8/test/test-isodetect.c 2013-09-10 15:22:50.000000000 +0200
-+++ libosinfo-0.2.8-libre/test/test-isodetect.c 2013-12-01 11:44:32.830411240 +0100
-@@ -342,66 +342,6 @@
- g_object_unref(loader);
- }
-
--START_TEST(test_fedora)
--{
-- test_one("fedora");
--}
--END_TEST
--
--START_TEST(test_rhel)
--{
-- test_one("rhel");
--}
--END_TEST
--
--START_TEST(test_ubuntu)
--{
-- test_one("ubuntu");
--}
--END_TEST
--
--START_TEST(test_debian)
--{
-- test_one("debian");
--}
--END_TEST
--
--START_TEST(test_windows)
--{
-- test_one("windows");
--}
--END_TEST
--
--START_TEST(test_openbsd)
--{
-- test_one("openbsd");
--}
--END_TEST
--
--START_TEST(test_opensuse)
--{
-- test_one("opensuse");
--}
--END_TEST
--
--START_TEST(test_centos)
--{
-- test_one("centos");
--}
--END_TEST
--
--START_TEST(test_gnome)
--{
-- test_one("gnome");
--}
--END_TEST
--
--START_TEST(test_altlinux)
--{
-- test_one("altlinux");
--}
--END_TEST
--
- static Suite *
- list_suite(void)
- {
-@@ -409,16 +349,6 @@
- TCase *tc = tcase_create("Core");
- tcase_set_timeout(tc, 20);
-
-- tcase_add_test(tc, test_fedora);
-- tcase_add_test(tc, test_rhel);
-- tcase_add_test(tc, test_ubuntu);
-- tcase_add_test(tc, test_debian);
-- tcase_add_test(tc, test_windows);
-- tcase_add_test(tc, test_openbsd);
-- tcase_add_test(tc, test_opensuse);
-- tcase_add_test(tc, test_centos);
-- tcase_add_test(tc, test_gnome);
-- tcase_add_test(tc, test_altlinux);
- suite_add_tcase(s, tc);
- return s;
- }
diff --git a/pcr/lostfiles/PKGBUILD b/pcr/lostfiles/PKGBUILD
index acc8ddd64..413eb2ccf 100644
--- a/pcr/lostfiles/PKGBUILD
+++ b/pcr/lostfiles/PKGBUILD
@@ -1,7 +1,8 @@
# Contributor: graysky <graysky AT archlinux dot us>
+# Maintainer (Parabola): Esteban Carnevale <alfplayer@mailoo.org>
pkgname=lostfiles
-pkgver=3.07
+pkgver=3.10
pkgrel=1
pkgdesc='Find orphan files - those not owned by any Arch packages.'
arch=('any')
@@ -9,7 +10,7 @@ license=('GPL2')
depends=('bash')
url="https://github.com/graysky2/lostfiles"
source=("https://github.com/graysky2/$pkgname/archive/v$pkgver.tar.gz")
-sha256sums=('970d35a619043471067d58a6702443d5e7b9ab9ead96c37ae0811ecb11d2424d')
+sha256sums=('52cb37cb1214d9285fbba7dc774f1490eee0d3380d8f4f383406049e37c4fbc8')
package() {
cd "$pkgname-$pkgver"
diff --git a/pcr/md5deep/PKGBUILD b/pcr/md5deep/PKGBUILD
index fe1acb7bd..261bb9889 100755
--- a/pcr/md5deep/PKGBUILD
+++ b/pcr/md5deep/PKGBUILD
@@ -1,12 +1,13 @@
# Contributor: billycongo <billycongo@gmail.com>
# Maintainer: dkaylor <dpkaylor@gmail.com>
+# Maintainer (Parabola): Esteban Carnevale <alfplayer@mailoo.org>
pkgname=md5deep
-pkgver=4.3
-pkgrel=2
+pkgver=4.4
+pkgrel=1
arch=('i686' 'x86_64')
pkgdesc="Advanced checksum hashing tool"
-url="http://md5deep.sourceforge.net"
+url="https://github.com/jessek/hashdeep"
license=('Public Domain')
# Copyright and license stuff:
@@ -22,24 +23,25 @@ license=('Public Domain')
# As such, md5deep exists in the public domain under 17 USC 105.
depends=('glibc')
-source=("http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz")
-
-md5sums=('f172e686ca1df83a53308ad90f7f706d')
-sha1sums=('b9dd6444f07c9fc344ebef201baebdf71bda337f')
-sha256sums=('905bcf8bddf0e7e2650b280d5e7af8cb8cd41dad4f299751dfec397dcb4f8d54')
-sha512sums=('fe1240e6ae039b18d35a9de0cf15fb77eaac9d5505b6b550eb32858bf6d603f8186de06114d40325d5071640f46cec70795e9c192fa7b6ca9022a12c212a9b14')
-
+source=("https://github.com/jessek/hashdeep/archive/release-$pkgver.tar.gz")
+md5sums=('9ccfd5ba3e3d9cffddeb118cacad0c27')
+sha1sums=('cb4e313352974299c32bc55fe56396adb74517ef')
+sha256sums=('dbda8ab42a9c788d4566adcae980d022d8c3d52ee732f1cbfa126c551c8fcc46')
+sha512sums=('c37ec85ed04d4452f9038f43434c02e064cf9e17c4eaa233867dba0236443922a14ccb8ec76c68820087751c2ca3db014d3f17dd8fcd2c2bde84d620aae50de1')
build() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "$srcdir/hashdeep-release-$pkgver"
+
+ sh ./bootstrap.sh
./configure --prefix=/usr
+
make
}
package() {
- cd "${srcdir}/${pkgname}-${pkgver}"
+ cd "$srcdir/hashdeep-release-$pkgver"
make DESTDIR=$pkgdir install
}
diff --git a/pcr/multipath-tools-git/PKGBUILD b/pcr/multipath-tools-git/PKGBUILD
deleted file mode 100644
index d1bb4ac9b..000000000
--- a/pcr/multipath-tools-git/PKGBUILD
+++ /dev/null
@@ -1,44 +0,0 @@
-# Maintainer: Miguel Revilla <yo@miguelrevilla.com>
-# Contributor: Alexander Rødseth <rodseth@gmail.com>
-# Contributor: Timothée Ravier <tim@siosm.fr>
-
-pkgname=multipath-tools-git
-pkgver=1295.81895af
-pkgrel=1
-pkgdesc="Tools to drive the Device Mapper multipathing driver (contains kpartx)"
-url="http://christophe.varoqui.free.fr/"
-arch=('x86_64' 'i686')
-license=('GPL2')
-depends=('libaio' 'device-mapper')
-makedepends=('git' 'setconf')
-options=(!emptydirs)
-source=("${pkgname}::git+http://git.opensvc.com/multipath-tools/.git")
-md5sums=('SKIP')
-
-pkgver() {
- cd ${pkgname}
- echo $(git rev-list --count HEAD).$(git rev-parse --short HEAD)
-}
-
-prepare() {
- cd ${pkgname}
- sed -i 's|/sbin|/usr/bin|g' Makefile.inc
- sed -i 's|LIB=lib|LIB=usr/lib|g' Makefile.inc
- sed -i 's|${prefix}/lib/udev|${prefix}/usr/lib/udev|g' Makefile.inc
- sed -i 's|$(prefix)/lib/systemd/system|$(prefix)/usr/lib/systemd/system|g' Makefile.inc
-}
-
-build() {
- cd ${pkgname}
- setconf Makefile.inc GZIP '/usr/bin/gzip -9 -c'
- make
-}
-
-package() {
- cd ${pkgname}
- make LIB="/usr/lib" DESTDIR="${pkgdir}" install
- install -Dm644 COPYING "${pkgdir}"/usr/share/licenses/${pkgname}/COPYING
- cd "${pkgdir}"/usr/lib
- rm libmpathpersist.so
- ln -s libmpathpersist.so.0 libmpathpersist.so
-}
diff --git a/pcr/multipath-tools/PKGBUILD b/pcr/multipath-tools/PKGBUILD
new file mode 100644
index 000000000..b497d0f60
--- /dev/null
+++ b/pcr/multipath-tools/PKGBUILD
@@ -0,0 +1,56 @@
+# Maintainer: Justin Dray <justin@dray.be>
+# Contributor: Patrick McCarty <pnorcks at gmail dot com>
+# Contributor: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+# Contributor: Thomas S Hatch <thatch45 ar gmail dot com>
+# Contributor: Michael P <ptchinster@archlinux.us>
+# Contributor: Matt Heagney <matt@heagney.com>
+
+pkgname=multipath-tools
+pkgver=0.5.0
+pkgrel=1
+pkgdesc='Multipath tools for Linux (including kpartx)'
+arch=('i686' 'x86_64')
+url="http://christophe.varoqui.free.fr/"
+license=('GPL2')
+depends=('libaio' 'device-mapper')
+conflicts=('multipath-tools-git')
+backup=('etc/multipath.conf')
+install=multipath-tools.install
+options=(!emptydirs)
+source=(http://christophe.varoqui.free.fr/multipath-tools/$pkgname-$pkgver.tar.bz2
+ buffer-overflows.patch
+ blacklist-cciss-devices.patch)
+md5sums=('faf261d4cc717bf4c979557dc7bf5f52'
+ '869942bdd31decc696f9cf4af24df65b'
+ 'c81422ccf5fd5ca6208dfbdd66ff323c')
+
+prepare() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ patch -Np1 -i "${srcdir}/buffer-overflows.patch"
+ patch -Np1 -i "${srcdir}/blacklist-cciss-devices.patch"
+
+ sed -i 's|/etc/udev/rules.d|/usr/lib/udev|g' Makefile.inc kpartx/Makefile kpartx/kpartx.rules
+ sed -i 's|${prefix}/lib/udev|${prefix}/usr/lib/udev|g' Makefile.inc
+ sed -i 's|/sbin|/usr/bin|g' Makefile.inc multipathd/multipathd.service
+ sed -i '/Before/d' multipathd/multipathd.service
+}
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make
+}
+
+package() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+ make LIB="/usr/lib" \
+ DESTDIR="${pkgdir}" \
+ install
+
+ install -d "${pkgdir}/usr/share/multipath/examples"
+ install -Dm644 "multipath.conf.annotated" "${pkgdir}/usr/share/multipath/examples/multipath.conf.annotated"
+ install -Dm644 "multipath.conf.defaults" "${pkgdir}/usr/share/multipath/examples/multipath.conf.defaults"
+ install -Dm644 "multipath.conf.synthetic" "${pkgdir}/usr/share/multipath/examples/multipath.conf.synthetic"
+ install -Dm644 "multipath.conf.defaults" "${pkgdir}/etc/multipath.conf"
+ rm "${pkgdir}/usr/lib/libmpathpersist.so"
+ ln -s "${pkgdir}/usr/lib/libmpathpersist.so.0" "libmpathpersist.so"
+}
diff --git a/pcr/multipath-tools/blacklist-cciss-devices.patch b/pcr/multipath-tools/blacklist-cciss-devices.patch
new file mode 100644
index 000000000..30a4400a7
--- /dev/null
+++ b/pcr/multipath-tools/blacklist-cciss-devices.patch
@@ -0,0 +1,30 @@
+From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
+Date: Fri, 3 Oct 2008 12:39:48 +0200
+Subject: [PATCH] blacklist cciss devices
+
+cciss support isn't complete in 0.4.8 and the half functioning causes
+problems in d-i among other things.
+Closes: #500991
+---
+ libmultipath/blacklist.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+
+diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c
+index 79ddcde..6d0a0ad 100644
+--- a/libmultipath/blacklist.c
++++ b/libmultipath/blacklist.c
+@@ -182,6 +182,13 @@ setup_default_blist (struct config * conf)
+ if (store_ble(conf->elist_property, str, ORIGIN_DEFAULT))
+ return 1;
+
++ str = STRDUP("^cciss!c[0-9]d[0-9]*");
++ if (!str)
++ return 1;
++ if (store_ble(conf->blist_devnode, str, ORIGIN_DEFAULT))
++ return 1;
++
++
+ vector_foreach_slot (conf->hwtable, hwe, i) {
+ if (hwe->bl_product) {
+ if (_blacklist_device(conf->blist_device, hwe->vendor, \ No newline at end of file
diff --git a/pcr/multipath-tools/buffer-overflows.patch b/pcr/multipath-tools/buffer-overflows.patch
new file mode 100644
index 000000000..7d84ea91c
--- /dev/null
+++ b/pcr/multipath-tools/buffer-overflows.patch
@@ -0,0 +1,13 @@
+diff --git a/libmultipath/prioritizers/hds.c b/libmultipath/prioritizers/hds.c
+index f748707..1cec8a7 100644
+--- a/libmultipath/prioritizers/hds.c
++++ b/libmultipath/prioritizers/hds.c
+@@ -125,7 +125,7 @@ int hds_modular_prio (const char *dev, int fd)
+ return -1;
+ }
+
+- snprintf (vendor, 9, "%.8s", inqBuffp + 8);
++ snprintf (vendor, 8, "%.8s", inqBuffp + 8);
+ snprintf (product, 17, "%.16s", inqBuffp + 16);
+ snprintf (serial, 5, "%.4s", inqBuffp + 40);
+ snprintf (ldev, 5, "%.4s", inqBuffp + 44); \ No newline at end of file
diff --git a/pcr/multipath-tools/multipath-tools.install b/pcr/multipath-tools/multipath-tools.install
new file mode 100644
index 000000000..8ef2efaca
--- /dev/null
+++ b/pcr/multipath-tools/multipath-tools.install
@@ -0,0 +1,9 @@
+post_install() {
+
+ cat <<-EOF
+ * For full functonality ensure that the dm_multipath kernel module is loaded"
+ * Make sure to create /etc/multipath.conf based off of the defaults found in
+ /usr/share/multipath/examples
+ EOF
+
+}
diff --git a/pcr/python2-polib/PKGBUILD b/pcr/python2-polib/PKGBUILD
deleted file mode 100644
index 50047ac3e..000000000
--- a/pcr/python2-polib/PKGBUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-# Maintainer: Esteban V. Carnevale <alfplayer@mailoo.com>
-
-pkgname=python2-polib
-_pkgname='polib'
-pkgver=1.0.3
-pkgrel=1
-pkgdesc='A library to manipulate gettext files'
-url='http://polib.readthedocs.org/en/latest/index.html'
-arch=('any')
-license=('MIT')
-depends=('python2')
-
-source=("https://bitbucket.org/izi/polib/downloads/polib-${pkgver}.tar.gz")
-md5sums=('dc9dc39d4053cfe030155891f3043cb1')
-
-build() {
- cd "${srcdir}/${_pkgname}-${pkgver}"
- python2 setup.py build
-}
-
-package() {
- cd "${srcdir}/${_pkgname}-${pkgver}"
- python2 setup.py install --root="${pkgdir}" --optimize=1
- install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
-}
diff --git a/pcr/retroshare/PKGBUILD b/pcr/retroshare/PKGBUILD
index 36bfeb18e..f52c614c5 100644
--- a/pcr/retroshare/PKGBUILD
+++ b/pcr/retroshare/PKGBUILD
@@ -4,7 +4,7 @@
# Contributor: funkyou
# Set this to true to build and install retroshare-nogui
-_build_nogui=false
+_build_nogui=true
# Set this to true to build and install the plugins
_build_linkscloud=true
@@ -14,20 +14,21 @@ _build_voip=true
### Nothing to be changed below this line ###
pkgname=retroshare
-pkgver=0.5.4e
-pkgrel=3
+pkgver=0.5.5c
+pkgsvn=0.7068
+pkgrel=2
pkgdesc="Serverless encrypted instant messenger with filesharing, chatgroups, e-mail."
-arch=('i686' 'x86_64')
+arch=('i686' 'x86_64' 'armv6h' 'armv7h' 'mips64el')
url="http://retroshare.sourceforge.net/"
license=('LGPL' 'GPL')
depends=('qt4' 'libupnp' 'libgnome-keyring' 'libxss')
install="${pkgname}.install"
-source=(http://sourceforge.net/projects/retroshare/files/RetroShare/${pkgver}/RetroShare-v${pkgver}.tar.gz \
+source=(http://sourceforge.net/projects/retroshare/files/RetroShare/${pkgver}/${pkgname}_${pkgver::5}-${pkgsvn}.tar.gz \
${pkgname}.install \
${pkgname}.desktop)
-sha256sums=('a1cc85327213aa3bab0eac0923b546472bb41aacd56a11f5f3be1ba2315a0bda'
+sha256sums=('772b0d7916137e81fc0f5ea14f0a8fa70d3d7acb701ca0b0c1c66018f2255650'
'4b50547648612e9091536205402a4da9ddea9c18c0f71e5d6cd30b2226f206d9'
'70be00968f2477e368f75393f193e76f366fff2dadab869c855e92048060cf29')
@@ -36,8 +37,10 @@ sha256sums=('a1cc85327213aa3bab0eac0923b546472bb41aacd56a11f5f3be1ba2315a0bda'
[[ $_build_voip == true ]] && depends=(${depends[@]} 'speex')
[[ $_build_feedreader == true ]] && depends=(${depends[@]} 'curl' 'libxslt')
+_rssrcdir="${pkgname}-${pkgver::5}/src"
+
build() {
- local _srcdir="${srcdir}/retroshare-0.5.4/src"
+ local _srcdir="${srcdir}/$_rssrcdir"
local _qmake='qmake-qt4'
msg "Compiling OpenPGP-SDK..."
@@ -63,7 +66,7 @@ build() {
if [[ "$_build_voip" == "true" ]] ; then
msg "Compiling VOIP plugin..."
cd "${_srcdir}/plugins/VOIP"
- sed -i 's/lessThan.*/true {/' VOIP.pro
+ #sed -i 's/lessThan.*/true {/' VOIP.pro
$_qmake
make
fi
@@ -87,14 +90,14 @@ build() {
cd "${_srcdir}/rsctrl/src"
make
cd "${_srcdir}/retroshare-nogui/src"
- sed -i 's/pkg-config --atleast-version 0.5.4 libssh/pkg-config --atleast-version 0.5 libssh/' retroshare-nogui.pro
+ #sed -i 's/pkg-config --atleast-version 0.5.4 libssh/pkg-config --atleast-version 0.5 libssh/' retroshare-nogui.pro
$_qmake
make
fi
}
package() {
- local _srcdir="${srcdir}/retroshare-0.5.4/src"
+ local _srcdir="${srcdir}/$_rssrcdir"
# --- Install Files ---
@@ -144,5 +147,5 @@ package() {
# Skins
cp -r "${_srcdir}/retroshare-gui/src/qss" "${pkgdir}/usr/share/RetroShare/"
- find "${pkgdir}/usr/share/RetroShare/" -depth -type d -name ".svn" -exec rm -r {} \;
+ #find "${pkgdir}/usr/share/RetroShare/" -depth -type d -name ".svn" -exec rm -r {} \;
}
diff --git a/pcr/ryzom-hg/PKGBUILD b/pcr/ryzom-hg/PKGBUILD
index 392fc5850..ee50d998a 100644
--- a/pcr/ryzom-hg/PKGBUILD
+++ b/pcr/ryzom-hg/PKGBUILD
@@ -2,22 +2,24 @@
# Maintainer (aur): Bjoern Bidar <theodorstormgrade@gmail.com>
pkgname='ryzom-hg'
-hgver=923522b
-pkgver=20131215
-pkgrel=3
+hgver=e7f0b9c
+pkgver=20140328
+pkgrel=1
pkgdesc="An awesome free software 3D MMORPG game"
arch=('i686' 'x86_64')
url="http://www.ryzom.com/"
license=('AGPL3')
#depends=('nel-hg' 'ryzom-data' 'lua51') # use these when https://bitbucket.org/ryzom/ryzomcore/issue/149 is solved
-depends=('libpng' 'libjpeg' 'libwww-hg' 'boost' 'freetype2' 'luabind' 'libogg' 'libvorbis' 'openal' 'mesa' 'glu' 'lua51' 'ryzom-data')
+depends=('libpng' 'libjpeg' 'libwww-hg' 'boost' 'freetype2' 'luabind' 'libogg' 'libvorbis'
+ 'openal' 'mesa' 'glu' 'lua51' 'ryzom-data')
#conflicts=('ryzom' 'ryzom-client') # see above
conflicts=('ryzom' 'ryzom-client' 'nel-hg' 'ryzom-nel')
makedepends=('mercurial' 'cpptest' 'cmake' 'bison' 'boost' 'rrdtool')
source=("https://repo.parabolagnulinux.org/other/$pkgname/$pkgname-$pkgver.tar.gz")
-sha256sums=('ad05f08004a80758a13566061ce29edfe4803c0c62e30190c437c781038c254e')
+sha256sums=('fce7d94f1c55afd939ab4943af6480b0d20d4f74f5d357029777f84ac661f869')
mksource=("$pkgname-$pkgver::hg+https://bitbucket.org/ryzom/ryzomcore#revision=${hgver}")
+mkdepends=('mercurial')
mksource() {
cd "$srcdir/$pkgname-$pkgver/"
@@ -25,7 +27,7 @@ mksource() {
cd "$srcdir/$pkgname-$pkgver/code/"
mv * ../
rm -rf "$srcdir/$pkgname-$pkgver/code/"
- sed -i 's|<freetype/|<freetype2/|g' "${srcdir}/${srcpkgname}-${pkgver}/nel/src/3d/font_generator.cpp"
+ #sed -i 's|<freetype/|<freetype2/|g' "${srcdir}/${srcpkgname}-${pkgver}/nel/src/3d/font_generator.cpp"
}
build() {
diff --git a/pcr/tomb/PKGBUILD b/pcr/tomb/PKGBUILD
index 2902f07bc..1217fa8a9 100644
--- a/pcr/tomb/PKGBUILD
+++ b/pcr/tomb/PKGBUILD
@@ -2,24 +2,27 @@
# Maintainer: nignux <nignux@freaknet.org>
# Maintainer (Parabola): fauno <fauno@parabola.nu>
# Contributor: BoySka
+# Contributor: Rich Li
-pkgbase=tomb
pkgname=(tomb tomb-kdf)
-pkgver=1.4
-pkgrel=2
+pkgver=1.5.2
+pkgrel=1
pkgdesc="Crypto Undertaker, simple tool to manage encrypted storage"
arch=('i686' 'x86_64' 'mips64el')
url="http://www.dyne.org/software/tomb/"
license=('GPL3')
install=${pkgname}.install
-source=(https://files.dyne.org/.xsend.php?file=tomb/releases/Tomb-1.4.tar.gz https://files.dyne.org/tomb/releases/Tomb-${pkgver}.tar.gz.sha{,.asc})
+source=(https://files.dyne.org/.xsend.php?file=tomb/Tomb-${pkgver}.tar.gz
+ https://files.dyne.org/.xsend.php?file=tomb/Tomb-${pkgver}.tar.gz.sha
+ https://files.dyne.org/.xsend.php?file=tomb/Tomb-${pkgver}.tar.gz.sha.asc
+ )
# The first hash comes from the .sha file
-sha256sums=('2621ac6b9180321e69743dc899645449b2b958c6aa46e4b2601c2e89131bbf29'
+sha256sums=('6ae28aaec7b533127534070b25ccba08eb1416dc07e7e74bf433f5c5d675f7e2'
'SKIP'
'SKIP')
build() {
- cd ${srcdir}/Tomb-${pkgver}/extras/kdf
+ cd ${srcdir}/Tomb-${pkgver}/extras/kdf-keys
make
}
@@ -46,6 +49,6 @@ package_tomb-kdf() {
pkgdesc="Crypto Undertaker extensions to improve password security"
depends=('libgcrypt')
- cd ${srcdir}/Tomb-${pkgver}/extras/kdf
+ cd ${srcdir}/Tomb-${pkgver}/extras/kdf-keys
make DESTDIR=${pkgdir} PREFIX=/usr install
}
diff --git a/pcr/twinkle/PKGBUILD b/pcr/twinkle/PKGBUILD
index b9e8fc537..c4c7abdc9 100644
--- a/pcr/twinkle/PKGBUILD
+++ b/pcr/twinkle/PKGBUILD
@@ -7,7 +7,7 @@
pkgname=twinkle
pkgver=1.4.2
-pkgrel=20
+pkgrel=21
pkgdesc="Softphone for voice over IP and IM communication using SIP"
arch=('x86_64' 'i686')
url="http://www.twinklephone.com/"
@@ -30,7 +30,7 @@ build() {
automake -a
export QTDIR=/usr/lib/qt3
export PATH=$QTDIR/bin:$PATH
- CPPFLAGS="$CPPFLAGS -I/usr/include/qt3" \
+ CPPFLAGS="$CPPFLAGS -I/usr/include/qt3 -I/usr/include/libzrtpcpp/" \
./configure --prefix=/usr \
--without-kde \
--with-speex \
diff --git a/pcr/youtube-dl-current/PKGBUILD b/pcr/youtube-dl-current/PKGBUILD
index 1e2cc344c..f2dc2ac05 100644
--- a/pcr/youtube-dl-current/PKGBUILD
+++ b/pcr/youtube-dl-current/PKGBUILD
@@ -5,7 +5,7 @@
pkgname=youtube-dl-current
_pkgname=youtube-dl
provides=(youtube-dl)
-pkgver=2014.04.11.2
+pkgver=2014.04.21.6
pkgrel=1
pkgdesc="A small command-line program to download videos from YouTube.com and a few more sites"
arch=('any')
@@ -28,5 +28,5 @@ package() {
"${pkgdir}/usr/share/bash-completion/completions/youtube-dl"
install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${_pkgname}/LICENSE"
}
-md5sums=('12c5d1af893c7f5ff782ccb84347573b'
+md5sums=('6521af6c7a419ade8d271aad3a3648df'
'SKIP')
diff --git a/~drtan/parabola-gnome/PKGBUILD b/~drtan/parabola-gnome/PKGBUILD
deleted file mode 100644
index c179800cc..000000000
--- a/~drtan/parabola-gnome/PKGBUILD
+++ /dev/null
@@ -1,24 +0,0 @@
-# Maintainer: Drtan Samos <lashdu@drtan.twilightparadox.com>
-
-pkgname=parabola-gnome
-pkgver=1.0
-pkgrel=6
-pkgdesc="The GNOME configuration for Parabola GNU/Linux-libre"
-arch=('any')
-url="https://parabolagnulinux.org"
-license=('GPL3')
-install=$pkgname.install
-depends=('dbus-glib' 'parabola-artwork>=1.0-4')
-source=("https://repo.parabolagnulinux.org/other/${pkgname}/${pkgname}-${pkgver}-${pkgrel}.tar.gz")
-sha256sums=('979ab611fdf9a9cddf97c7f6c646bf39df8765787b077ac0b836e75a67897a08')
-
-package() {
- cd ${srcdir}/${pkgname}-${pkgver}-${pkgrel}
- install -d "${pkgdir}/usr/share/gnome-background-properties"
- install -m644 gnome-background-properties/01-parabola.xml "${pkgdir}/usr/share/gnome-background-properties/"
- install -d "${pkgdir}/etc/dconf/db/local.d"
- install -m644 dconf/db/local.d/* "${pkgdir}/etc/dconf/db/local.d/"
- install -d "${pkgdir}/etc/dconf/profile"
- install -m644 dconf/profile/* "${pkgdir}/etc/dconf/profile/"
-}
-