[arch-commits] Commit in enca/trunk (PKGBUILD enca-bad-file-descriptor.patch)

Antonio Rojas arojas at archlinux.org
Sun Apr 1 10:03:24 UTC 2018


    Date: Sunday, April 1, 2018 @ 10:03:23
  Author: arojas
Revision: 320821

Add patch for FS#57881

Added:
  enca/trunk/enca-bad-file-descriptor.patch
Modified:
  enca/trunk/PKGBUILD

--------------------------------+
 PKGBUILD                       |   16 +++++++++++-----
 enca-bad-file-descriptor.patch |   35 +++++++++++++++++++++++++++++++++++
 2 files changed, 46 insertions(+), 5 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2018-04-01 09:51:16 UTC (rev 320820)
+++ PKGBUILD	2018-04-01 10:03:23 UTC (rev 320821)
@@ -4,7 +4,7 @@
 
 pkgname=enca
 pkgver=1.19
-pkgrel=1
+pkgrel=2
 pkgdesc="Charset analyser and converter"
 arch=('x86_64')
 url="http://cihar.com/software/enca/"
@@ -11,11 +11,17 @@
 license=('GPL')
 depends=('recode')
 options=('!docs')
-source=("https://dl.cihar.com/${pkgname}/${pkgname}-${pkgver}.tar.xz")
-sha256sums=('3a487eca40b41021e2e4b7a6440b97d822e6532db5464471f572ecf77295e8b8')
+source=("https://dl.cihar.com/${pkgname}/${pkgname}-${pkgver}.tar.xz" enca-bad-file-descriptor.patch)
+sha256sums=('3a487eca40b41021e2e4b7a6440b97d822e6532db5464471f572ecf77295e8b8'
+            '270c7c0abaea5f3d10173b58849200d4106675d3127a0b9b8ce1fc3dcf775acb')
 
+prepare() {
+  cd $pkgname-$pkgver
+  patch -p1 -i ../enca-bad-file-descriptor.patch # https://github.com/nijel/enca/issues/28
+}
+
 build() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
+  cd ${pkgname}-${pkgver}
 
   ./configure --prefix=/usr \
               --libexecdir=/usr/lib \
@@ -26,7 +32,7 @@
 }
 
 package() {
-  cd "${srcdir}/${pkgname}-${pkgver}"
+  cd ${pkgname}-${pkgver}
 
   make DESTDIR="${pkgdir}" install
 }

Added: enca-bad-file-descriptor.patch
===================================================================
--- enca-bad-file-descriptor.patch	                        (rev 0)
+++ enca-bad-file-descriptor.patch	2018-04-01 10:03:23 UTC (rev 320821)
@@ -0,0 +1,35 @@
+--- a/src/convert_recode.c
++++ b/src/convert_recode.c
+@@ -101,7 +101,8 @@ convert_recode(File *file,
+       return ERR_IOFAIL;
+     file->buffer->pos = 0;
+ 
+-    if ((tempfile = file_temporary(file->buffer, 1)) == NULL
++    /* We do not unlink tempfile, because we want to reopen it later */
++    if ((tempfile = file_temporary(file->buffer, 0)) == NULL
+         || file_seek(file, 0, SEEK_SET) != 0) {
+       file_free(tempfile);
+       return ERR_IOFAIL;
+@@ -112,9 +113,20 @@ convert_recode(File *file,
+     task->fail_level = enca_recode_fail_level;
+     task->abort_level = RECODE_SYSTEM_ERROR;
+     task->input.name = NULL;
+-    task->input.file = file->stream;
+     task->output.name = NULL;
+-    task->output.file = tempfile->stream;
++    /* recode_perform_task closes given streams, so we need to duplicate them */
++    task->input.file = fopen(file->name, "rb");
++    if (task->input.file == NULL) {
++        fprintf(stderr, "failed to reopen `%s'\n", file->name);
++        file_free(tempfile);
++        return ERR_IOFAIL;
++    }
++    task->output.file = fopen(tempfile->name, "wb");
++    if (task->input.file == NULL) {
++        fprintf(stderr, "failed to reopen `%s'\n", tempfile->name);
++        file_free(tempfile);
++        return ERR_IOFAIL;
++    }
+ 
+     /* Now run conversion original -> temporary file. */
+     success = recode_perform_task(task);



More information about the arch-commits mailing list