summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-16 16:40:03 -0800
committerAdam Ierymenko <adam.ierymenko@gmail.com>2013-12-16 16:40:03 -0800
commitb54f998a85c525a6d483c827e1f22c7344d49543 (patch)
tree5fb3d745a0bd680bf026eee2a25e68f916da9098
parentb792ab8ff1010c7016856d6070fd639b64a70a78 (diff)
downloadinfinitytier-b54f998a85c525a6d483c827e1f22c7344d49543.tar.gz
infinitytier-b54f998a85c525a6d483c827e1f22c7344d49543.zip
Linux installer: remove old init.d files, fix for init.d startup/shutdown script.
-rwxr-xr-xbuildinstaller.sh6
-rwxr-xr-xext/installfiles/linux/init.d/zerotier-one4
-rw-r--r--installer.c24
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 <unistd.h>
#include <pwd.h>
+#include <dirent.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
@@ -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");