diff options
-rw-r--r-- | .SRCINFO | 4 | ||||
-rw-r--r-- | PKGBUILD | 9 | ||||
-rw-r--r-- | pidfile.patch | 63 |
3 files changed, 74 insertions, 2 deletions
@@ -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 @@ -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; + } |