hunspell: Fix tmpfile handling
authorFredrik Fornwall <fredrik@fornwall.net>
Sun, 6 Mar 2016 07:35:15 +0000 (02:35 -0500)
committerFredrik Fornwall <fredrik@fornwall.net>
Sun, 6 Mar 2016 07:35:15 +0000 (02:35 -0500)
Also add dependency on english hunspell dictionary.

packages/hunspell/build.sh
packages/hunspell/hunspell.cxx.patch
packages/hunspell/hzip.c.patch [new file with mode: 0644]

index 0db9c87..95dcaf2 100644 (file)
@@ -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"
index c146d73..7d87a3d 100644 (file)
@@ -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 (file)
index 0000000..1ea5c5a
--- /dev/null
@@ -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;