From 5b99d33689d1c8de7938b1ed93e3c018b9686272 Mon Sep 17 00:00:00 2001 From: Fredrik Fornwall Date: Sun, 6 Mar 2016 02:35:15 -0500 Subject: [PATCH] hunspell: Fix tmpfile handling Also add dependency on english hunspell dictionary. --- packages/hunspell/build.sh | 3 +- packages/hunspell/hunspell.cxx.patch | 38 ++++++++++++++++++++-- packages/hunspell/hzip.c.patch | 47 ++++++++++++++++++++++++++++ 3 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 packages/hunspell/hzip.c.patch diff --git a/packages/hunspell/build.sh b/packages/hunspell/build.sh index 0db9c87ad..95dcaf278 100644 --- a/packages/hunspell/build.sh +++ b/packages/hunspell/build.sh @@ -1,6 +1,7 @@ TERMUX_PKG_HOMEPAGE=http://hunspell.sourceforge.net/ TERMUX_PKG_DESCRIPTION="Spell checker" TERMUX_PKG_VERSION=1.3.3 +TERMUX_PKG_BUILD_REVISION=1 TERMUX_PKG_SRCURL=http://downloads.sourceforge.net/project/hunspell/Hunspell/${TERMUX_PKG_VERSION}/hunspell-${TERMUX_PKG_VERSION}.tar.gz TERMUX_PKG_EXTRA_CONFIGURE_ARGS="--with-ui --with-readline" -TERMUX_PKG_DEPENDS="ncurses, readline" +TERMUX_PKG_DEPENDS="ncurses, readline, hunspell-en-us" diff --git a/packages/hunspell/hunspell.cxx.patch b/packages/hunspell/hunspell.cxx.patch index c146d734e..7d87a3da3 100644 --- a/packages/hunspell/hunspell.cxx.patch +++ b/packages/hunspell/hunspell.cxx.patch @@ -1,6 +1,6 @@ diff -u -r ../hunspell-1.3.3/src/tools/hunspell.cxx ./src/tools/hunspell.cxx ---- ../hunspell-1.3.3/src/tools/hunspell.cxx 2014-06-02 13:35:50.000000000 +0200 -+++ ./src/tools/hunspell.cxx 2014-07-02 13:14:52.000000000 +0200 +--- ../hunspell-1.3.3/src/tools/hunspell.cxx 2014-06-02 07:35:50.000000000 -0400 ++++ ./src/tools/hunspell.cxx 2016-03-06 02:28:02.031833160 -0500 @@ -68,7 +68,7 @@ #include "odfparser.hxx" @@ -19,3 +19,37 @@ diff -u -r ../hunspell-1.3.3/src/tools/hunspell.cxx ./src/tools/hunspell.cxx #define DIRSEPCH '/' #define DIRSEP "/" #define PATHSEP ":" +@@ -1423,7 +1423,13 @@ + } + } + ++#ifdef __ANDROID__ ++ char tmpfile_template[] = "@TERMUX_PREFIX@/tmp/hunspell.XXXXXX"; ++ int tmpfile_fd = mkstemp(tmpfile_template); ++ FILE *tempfile = fdopen(tmpfile_fd, "w+"); ++#else + FILE *tempfile = tmpfile(); ++#endif + + if (!tempfile) + { +@@ -1443,6 +1449,9 @@ + clear(); + refresh(); + fclose(tempfile); //automatically deleted when closed ++#ifdef __ANDROID__ ++ unlink(tmpfile_template); ++#endif + if (is_zipped_odf(parser, extension)) { + sprintf(buf, "rm %s; rmdir %s", filename, odftempdir); + if (system(buf) != 0) +@@ -1493,6 +1502,9 @@ + + delete parser; + fclose(tempfile); //automatically deleted when closed ++#ifdef __ANDROID__ ++ unlink(tmpfile_template); ++#endif + } + + #endif diff --git a/packages/hunspell/hzip.c.patch b/packages/hunspell/hzip.c.patch new file mode 100644 index 000000000..1ea5c5a55 --- /dev/null +++ b/packages/hunspell/hzip.c.patch @@ -0,0 +1,47 @@ +diff -u -r ../hunspell-1.3.3/src/tools/hzip.c ./src/tools/hzip.c +--- ../hunspell-1.3.3/src/tools/hzip.c 2012-06-30 07:18:47.000000000 -0400 ++++ ./src/tools/hzip.c 2016-03-06 02:30:47.121570946 -0500 +@@ -272,7 +272,13 @@ + strcat(out, EXTENSION); + f = fopen(filename, "r"); + if (!f) return fail("hzip: %s: Permission denied\n", filename); ++#ifdef __ANDROID__ ++ char tmpfile_template[] = "@TERMUX_PREFIX@/tmp/hunspell.XXXXXX"; ++ int tmpfile_fd = mkstemp(tmpfile_template); ++ tempfile = fdopen(tmpfile_fd, "w+"); ++#else + tempfile = tmpfile(); ++#endif + if (!tempfile) { + fclose(f); + return fail("hzip: cannot create temporary file\n", NULL); +@@ -280,6 +286,9 @@ + f2 = fopen(out, "wb"); + if (!f2) { + fclose(tempfile); ++#ifdef __ANDROID__ ++ unlink(tmpfile_template); ++#endif + fclose(f); + return fail("hzip: %s: Permission denied\n", out); + } +@@ -287,6 +296,9 @@ + if (prefixcompress(f, tempfile) != 0) { + fclose(f2); + fclose(tempfile); ++#ifdef __ANDROID__ ++ unlink(tmpfile_template); ++#endif + fclose(f); + return fail("hzip: cannot write file\n", NULL); + } +@@ -297,6 +309,9 @@ + n = encode_file(table, n, tempfile, f2, termword, key); + fclose(f2); + fclose(tempfile); ++#ifdef __ANDROID__ ++ unlink(tmpfile_template); ++#endif + fclose(f); + if (n != 0) return fail("hzip: cannot write file\n", NULL); + return n;