From b54f998a85c525a6d483c827e1f22c7344d49543 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Dec 2013 16:40:03 -0800 Subject: Linux installer: remove old init.d files, fix for init.d startup/shutdown script. --- buildinstaller.sh | 6 +++++- ext/installfiles/linux/init.d/zerotier-one | 4 +--- installer.c | 24 ++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/buildinstaller.sh b/buildinstaller.sh index f0d6579f..19778222 100755 --- a/buildinstaller.sh +++ b/buildinstaller.sh @@ -58,7 +58,11 @@ case "$system" in targ="zt1-${vmajor}_${vminor}_${revision}-linux-${machine}-install" - gcc -Os -o $targ installer.c ext/lz4/lz4.o ext/lz4/lz4hc.o + if [ -e /usr/bin/clang ]; then + clang -Os -o $targ installer.c ext/lz4/lz4.o ext/lz4/lz4hc.o + else + gcc -Os -o $targ installer.c ext/lz4/lz4.o ext/lz4/lz4hc.o + fi strip --strip-all $targ ls -l $targ diff --git a/ext/installfiles/linux/init.d/zerotier-one b/ext/installfiles/linux/init.d/zerotier-one index fdb8522a..24d5198e 100755 --- a/ext/installfiles/linux/init.d/zerotier-one +++ b/ext/installfiles/linux/init.d/zerotier-one @@ -47,10 +47,8 @@ fi running=0 if [ "$pid" -gt 0 ]; then - if [ "`readlink -nf /proc/$pid/exe`" = "$zthome/zerotier-one" ]; then + if [ -n "`ls -l /proc/$pid/exe | grep -F zerotier-one`" ]; then running=1 - else - rm -f "$zthome/zerotier-one.pid" fi fi diff --git a/installer.c b/installer.c index a6e382df..76542ca6 100644 --- a/installer.c +++ b/installer.c @@ -45,6 +45,7 @@ #else #include #include +#include #include #include #include @@ -284,9 +285,28 @@ int main(int argc,char **argv) } printf("write %s\n",buf); + /* Erase any previous startup/shutdown links */ + for(int rl=0;rl<=6;++rl) { + sprintf(buf,"/etc/rc%d.d",rl); + DIR *rcd = opendir(buf); + if (rcd) { + struct dirent *d; + while ((d = readdir(rcd))) { + if (strstr(d->d_name,"zerotier-one")) { + sprintf(buf,"/etc/rc%d.d/%s",rl,d->d_name); + unlink(buf); + printf("rm %s\n",buf); + } + } + closedir(rcd); + } + } + /* Link init script to all the proper places for startup/shutdown */ symlink("/etc/init.d/zerotier-one","/etc/rc0.d/K89zerotier-one"); printf("link /etc/init.d/zerotier-one /etc/rc0.d/K89zerotier-one\n"); + symlink("/etc/init.d/zerotier-one","/etc/rc1.d/K89zerotier-one"); + printf("link /etc/init.d/zerotier-one /etc/rc1.d/K89zerotier-one\n"); symlink("/etc/init.d/zerotier-one","/etc/rc2.d/S11zerotier-one"); printf("link /etc/init.d/zerotier-one /etc/rc2.d/S11zerotier-one\n"); symlink("/etc/init.d/zerotier-one","/etc/rc3.d/S11zerotier-one"); @@ -295,8 +315,8 @@ int main(int argc,char **argv) printf("link /etc/init.d/zerotier-one /etc/rc4.d/S11zerotier-one\n"); symlink("/etc/init.d/zerotier-one","/etc/rc5.d/S11zerotier-one"); printf("link /etc/init.d/zerotier-one /etc/rc5.d/S11zerotier-one\n"); - symlink("/etc/init.d/zerotier-one","/etc/rc6.d/S11zerotier-one"); - printf("link /etc/init.d/zerotier-one /etc/rc6.d/S11zerotier-one\n"); + symlink("/etc/init.d/zerotier-one","/etc/rc6.d/K89zerotier-one"); + printf("link /etc/init.d/zerotier-one /etc/rc6.d/K89zerotier-one\n"); #endif printf("# Done!\n"); -- cgit v1.2.3