summarylogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.SRCINFO4
-rw-r--r--PKGBUILD9
-rw-r--r--pidfile.patch63
3 files changed, 74 insertions, 2 deletions
diff --git a/.SRCINFO b/.SRCINFO
index 91947af32963..ff0391a80686 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -1,7 +1,7 @@
pkgbase = inadyn-fork
pkgdesc = Simple dynamic DNS client - fork of the original INADYN implementation from Narcis Ilisei
pkgver = 1.99.14
- pkgrel = 1
+ pkgrel = 2
url = http://troglobit.com/inadyn.html
arch = x86_64
arch = i686
@@ -16,9 +16,11 @@ pkgbase = inadyn-fork
conflicts = inadyn-fork-git
backup = etc/inadyn.conf
source = https://github.com/troglobit/inadyn/releases/download/1.99.14/inadyn-1.99.14.tar.xz
+ source = pidfile.patch
source = inadyn.conf
source = inadyn.service
sha256sums = b2dfed3bb1340843105b6ba73c0bccc558bf7ead53f7f598cb47ec18de46e8d1
+ sha256sums = 71d639c5b31157f53ea7a25374330ae60aa6c59780462c16ec8ce6c87d8c9b2d
sha256sums = 919f87ea87b58e4ddfaf3346ffbcf899b8d9dcee5a0e9440e17e5db9552bba53
sha256sums = 4587f4ae2a4215f9ba67d5b3b7d0aa120a9ebd31677472fa68d8792f42d7135f
diff --git a/PKGBUILD b/PKGBUILD
index 0bc3ef9fbfb6..82d288bbff5e 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -6,7 +6,7 @@
pkgname=inadyn-fork
_name=inadyn
pkgver=1.99.14
-pkgrel=1
+pkgrel=2
pkgdesc='Simple dynamic DNS client - fork of the original INADYN implementation from Narcis Ilisei'
url='http://troglobit.com/inadyn.html'
arch=('x86_64' 'i686' 'armv6h' 'armv7h')
@@ -16,11 +16,18 @@ backup=('etc/inadyn.conf')
conflicts=('inadyn-opendns' 'inadyn' 'inadyn-mt' 'inadyn-fork-git')
provides=('inadyn')
source=(https://github.com/troglobit/inadyn/releases/download/$pkgver/${_name}-$pkgver.tar.xz
+ pidfile.patch
inadyn.conf
inadyn.service)
sha256sums=('b2dfed3bb1340843105b6ba73c0bccc558bf7ead53f7f598cb47ec18de46e8d1'
+ '71d639c5b31157f53ea7a25374330ae60aa6c59780462c16ec8ce6c87d8c9b2d'
'919f87ea87b58e4ddfaf3346ffbcf899b8d9dcee5a0e9440e17e5db9552bba53'
'4587f4ae2a4215f9ba67d5b3b7d0aa120a9ebd31677472fa68d8792f42d7135f')
+prepare(){
+ cd ${_name}-$pkgver
+ patch -Np1 -i ../pidfile.patch
+
+}
build(){
cd ${_name}-$pkgver
diff --git a/pidfile.patch b/pidfile.patch
new file mode 100644
index 000000000000..596fa9b67870
--- /dev/null
+++ b/pidfile.patch
@@ -0,0 +1,63 @@
+diff --git a/src/os.c b/src/os.c
+index 66c3ada..246c10f 100644
+--- a/src/os.c
++++ b/src/os.c
+@@ -33,7 +33,6 @@
+ #include "debug.h"
+ #include "ddns.h"
+ #include "cache.h"
+-#include "libite/lite.h"
+
+ #define MAXSTRING 1024
+
+@@ -421,6 +420,39 @@ static int mkparentdir(char *file)
+ return rc;
+ }
+
++static void pidexit(void)
++{
++ if (pidfile_path) {
++ unlink(pidfile_path);
++ free(pidfile_path);
++ pidfile_path = NULL;
++ }
++}
++
++/* Continue using old pidfile fn for Inadyn 1.x series,
++ * incompatible semantics with OpenBSD version. */
++static int old_pidfile(char *file)
++{
++ FILE *fp;
++
++ /* Ignore any errors, we may not be allowed to create the dir,
++ * but still be able to create/overwrite the pidfile. */
++ mkparentdir(file);
++
++ fp = fopen(file, "w");
++ if (!fp) {
++ logit(LOG_ERR, "Failed creating pidfile %s: %s", file, strerror(errno));
++ return RC_FILE_IO_ACCESS_ERROR;
++ }
++
++ fprintf(fp, "%u\n", getpid());
++ fclose(fp);
++
++ atexit(pidexit);
++
++ return 0;
++}
++
+ /* Create pid and cache file repository, make sure we can write to it. If
+ * we are restarted we cannot otherwise make sure we've not already updated
+ * the IP -- and the user will be locked-out of their DDNS server provider
+@@ -440,8 +472,8 @@ int os_check_perms(void *UNUSED(arg))
+ return RC_FILE_IO_ACCESS_ERROR;
+ }
+
+- /* Not creating a pidfile is OK, the cache file is the critical point. */
+- pidfile(pidfile_path);
++ if (old_pidfile(pidfile_path))
++ logit(LOG_WARNING, "Failed creating pidfile %s: %m", pidfile_path);
+
+ return 0;
+ }