summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO27
-rw-r--r--.gitignore4
-rw-r--r--0001_list_store.patch14
-rw-r--r--0002_spinbutton.patch14
-rw-r--r--0003_k_wait_ready.patch88
-rw-r--r--0004_kermit_missing_info.patch39
-rw-r--r--0005_arch_kermit_name.patch13
-rw-r--r--PKGBUILD49
8 files changed, 248 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..06a31cc42609
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,27 @@
+pkgbase = hptalx
+ pkgdesc = A HP Calculator<->PC communications program for Linux
+ pkgver = 1.3.1a
+ pkgrel = 1
+ url = http://hptalx.sourceforge.net/
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = ckermit
+ depends = glib2
+ depends = gtk2
+ depends = libxml2
+ source = http://downloads.sourceforge.net/sourceforge/hptalx/hptalx-1.3.1a.tar.gz
+ source = 0001_list_store.patch
+ source = 0002_spinbutton.patch
+ source = 0003_k_wait_ready.patch
+ source = 0004_kermit_missing_info.patch
+ source = 0005_arch_kermit_name.patch
+ sha256sums = d725d2b5806ab9f70432c6adcc6db41c3cc94b5444b90e52878a395dd115af60
+ sha256sums = 5d687b7eef67d48652a82e575e8a3f988d4dc9b1138be0140c72cfa9b7ee688a
+ sha256sums = e9c6860531a257910c3da5cfbdcc0a391851c314896d5ae29db1471d08ded2af
+ sha256sums = 09b4c2b4fb3a5391f2b77e4d2d17c49c2f5663e3124f2fd3eeb0abb58caf2d48
+ sha256sums = 9ce7cea5882d44a242b7a04fc9ef6e95c76d1664fd6475850991b2f655d7fad8
+ sha256sums = f8bc335150d6069b5e7bb0cc070585f1065e75b9c9e2bc3edf7dde4833ae0504
+
+pkgname = hptalx
+
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..83c731079852
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+/pkg/
+/src/
+/*.tar.gz
+/*.tar.xz
diff --git a/0001_list_store.patch b/0001_list_store.patch
new file mode 100644
index 000000000000..456b46df3433
--- /dev/null
+++ b/0001_list_store.patch
@@ -0,0 +1,14 @@
+Author: Stefan Achatz
+https://sourceforge.net/p/hptalx/patches/2/
+
+--- a/src/io.c
++++ b/src/io.c
+@@ -212,7 +212,7 @@
+ break;
+ default:
+ gtk_list_store_set (list, iter, FLC_TYPE, unknown_pixbuf, -1);
+- gtk_list_store_set (list, iter, FLC_TYPESTR, ROW_DATA_FILE);
++ gtk_list_store_set (list, iter, FLC_TYPESTR, ROW_DATA_FILE, -1);
+ break;
+ }
+ }
diff --git a/0002_spinbutton.patch b/0002_spinbutton.patch
new file mode 100644
index 000000000000..46542ea0a77c
--- /dev/null
+++ b/0002_spinbutton.patch
@@ -0,0 +1,14 @@
+Author: Stefan Achatz
+https://sourceforge.net/p/hptalx/patches/3/
+
+--- a/src/setup.c
++++ b/src/setup.c
+@@ -310,7 +310,7 @@ _create_setttyusbport_box (GtkWidget * box)
+ /*
+ * The spin button for choosing the port number
+ */
+- interval = GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 20, 1, 1, 1));
++ interval = GTK_ADJUSTMENT (gtk_adjustment_new (0, 0, 20, 1, 1, 0));
+ button = gtk_spin_button_new (interval, 1, 0);
+ g_signal_connect (GTK_OBJECT (button), "changed",
+ G_CALLBACK (_set_ttyusb_port), NULL);
diff --git a/0003_k_wait_ready.patch b/0003_k_wait_ready.patch
new file mode 100644
index 000000000000..9b133fd03518
--- /dev/null
+++ b/0003_k_wait_ready.patch
@@ -0,0 +1,88 @@
+Author: Stefan Achatz
+https://sourceforge.net/p/hptalx/patches/4/
+
+--- a/src/kermit.c
++++ b/src/kermit.c
+@@ -52,6 +52,7 @@
+ #include <pty.h>
+ #include <termios.h>
+ #include <signal.h>
++#include <errno.h>
+
+ /*
+ * Global variable that holds the last Kermit status
+@@ -297,44 +298,22 @@ k_wait_ready (char **o, size_t * size)
+ * has arrived
+ */
+ if (br > 0) {
+- if (*size == 0) {
+- /*
+- * First time we read into *o
+- */
+- *o = (char *) malloc (br);
+- if (*o == NULL) {
+- return k_errno = K_MALLOC;
+- }
+-
+- /*
+- * Zero out everthing in *o
+- */
+- memset ((void *) *o, 0, br);
+- memcpy ((void *) *o, (void *) buff, br);
+- *size = br;
++
++ *size += br;
++
++ if (*size == br) {
++ *o = (char *) malloc (*size);
+ } else {
+- /*
+- * Previous reads took place
+- */
+-
+- /*
+- * New size of *o
+- */
+- *size += br;
+ *o = (char *) realloc (*o, *size);
++ }
++
++ if (*o == NULL) {
++ return k_errno = K_MALLOC;
++ }
+
+- if (*o == NULL) {
+- return k_errno = K_MALLOC;
+- }
++ memcpy ((void *) (*o + (*size - br)), (void *) buff, br);
+
+- memset ((void *) (*o + (*size - br)), 0, br);
+- /*
+- * Copy content from buff to *o
+- * at old pos in *o -> (size-br)
+- */
+- memcpy ((void *) (*o + (*size - br)), (void *) buff, br);
+- }
+- } else {
++ } else if (br == 0 || errno == EAGAIN) {
+ /*
+ * Wait nicely for new data
+ */
+@@ -343,6 +322,8 @@ k_wait_ready (char **o, size_t * size)
+ return k_errno = K_TIMEOUT;
+ }
+
++ } else {
++ return k_errno = K_READ;
+ }
+
+ /*
+@@ -352,7 +333,7 @@ k_wait_ready (char **o, size_t * size)
+ tv.tv_usec = 0;
+
+ }
+- while ((strstr (*o, K_KERMIT_PROMPT) == NULL)
++ while ((*o != 0 && strstr (*o, K_KERMIT_PROMPT) == NULL)
+ || (select (FD_SETSIZE, &rset, NULL, NULL, &tv) != 0));
+ return k_errno = K_OK;
+ }
diff --git a/0004_kermit_missing_info.patch b/0004_kermit_missing_info.patch
new file mode 100644
index 000000000000..b74f029140d9
--- /dev/null
+++ b/0004_kermit_missing_info.patch
@@ -0,0 +1,39 @@
+Author: Stefan Achatz
+https://sourceforge.net/p/hptalx/patches/5/
+
+--- a/src/kermit.c
++++ b/src/kermit.c
+@@ -96,6 +96,8 @@ static k_status _k_parent (const k_params * params);
+ static k_status
+ _k_parent (const k_params * params)
+ {
++ pid_t pid;
++ int status;
+
+ if (fcntl (g_master_fld, F_SETFL, O_NONBLOCK) == -1)
+ return K_FCNTL;
+@@ -107,6 +109,16 @@ _k_parent (const k_params * params)
+ */
+ k_errno = k_discard_output ();
+
++ /*
++ * _k_parent() gets called only and immediately after forking child.
++ * All file descriptor parameters are set and the first read took place.
++ * If child exited already with an error kermit might not have been found.
++ */
++ pid = waitpid(g_child, &status, WNOHANG);
++ if (pid && WIFEXITED(status) && WEXITSTATUS(status) == 2) {
++ return k_errno = K_EXECKERMIT;
++ }
++
+ k_errno = k_send_command (K_CMD_SET_PROMPT);
+ k_errno = k_discard_output ();
+
+@@ -165,7 +177,6 @@ k_connect (const k_params * params)
+ tcsetattr (g_master_fld, TCSANOW, &term_cap);
+ return _k_parent (params);
+ }
+- return k_errno = K_UNKNOWN;
+ }
+
+ k_status
diff --git a/0005_arch_kermit_name.patch b/0005_arch_kermit_name.patch
new file mode 100644
index 000000000000..b79dddfb66ac
--- /dev/null
+++ b/0005_arch_kermit_name.patch
@@ -0,0 +1,13 @@
+Author: Sven Karsten Greiner
+
+--- hptalx-1.3.1a/src/kermit.c 2007-09-29 23:21:01.000000000 +0200
++++ hptalx-1.3.1a_patched/src/kermit.c 2020-03-03 20:05:25.887400124 +0100
+@@ -157,7 +157,7 @@
+ if (g_child == -1)
+ return k_errno = K_FORKPTY;
+ if (g_child == 0) { /* child */
+- if (execlp ("kermit", "kermit", "-z", "-Y", NULL) < 0)
++ if (execlp ("ckermit", "ckermit", "-z", "-Y", NULL) < 0)
+ exit (2);
+ exit (0);
+ } else { /* parent */
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..ca04a7c8b573
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,49 @@
+# Maintainer: Sven Karsten Greiner <sven@sammyshp.de>
+
+# Make sure that your user is in the group 'uucp'.
+#
+# Kermit might need a different lock directory because of the permissions. Try
+# to run hptalx as:
+# $ LOCK_DIR=/tmp hptalx
+
+pkgname=hptalx
+pkgver=1.3.1a
+pkgrel=1
+pkgdesc="A HP Calculator<->PC communications program for Linux"
+arch=('i686' 'x86_64')
+url="http://hptalx.sourceforge.net/"
+license=('GPL')
+depends=('ckermit' 'glib2' 'gtk2' 'libxml2')
+source=("http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz"
+ 0001_list_store.patch
+ 0002_spinbutton.patch
+ 0003_k_wait_ready.patch
+ 0004_kermit_missing_info.patch
+ 0005_arch_kermit_name.patch)
+sha256sums=('d725d2b5806ab9f70432c6adcc6db41c3cc94b5444b90e52878a395dd115af60'
+ '5d687b7eef67d48652a82e575e8a3f988d4dc9b1138be0140c72cfa9b7ee688a'
+ 'e9c6860531a257910c3da5cfbdcc0a391851c314896d5ae29db1471d08ded2af'
+ '09b4c2b4fb3a5391f2b77e4d2d17c49c2f5663e3124f2fd3eeb0abb58caf2d48'
+ '9ce7cea5882d44a242b7a04fc9ef6e95c76d1664fd6475850991b2f655d7fad8'
+ 'f8bc335150d6069b5e7bb0cc070585f1065e75b9c9e2bc3edf7dde4833ae0504')
+
+prepare() {
+ cd "$pkgname-$pkgver"
+ patch -p1 -i ../0001_list_store.patch
+ patch -p1 -i ../0002_spinbutton.patch
+ patch -p1 -i ../0003_k_wait_ready.patch
+ patch -p1 -i ../0004_kermit_missing_info.patch
+ patch -p1 -i ../0005_arch_kermit_name.patch
+
+}
+
+build() {
+ cd "$pkgname-$pkgver"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "$pkgname-$pkgver"
+ make DESTDIR="$pkgdir/" install
+}