diff options
| author | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-10 15:30:53 -0800 |
|---|---|---|
| committer | Adam Ierymenko <adam.ierymenko@gmail.com> | 2013-12-10 15:30:53 -0800 |
| commit | bf0da9f2f778aeb3eebe200a8cdeecbc6e1f9253 (patch) | |
| tree | 92e9c18362d7dd5a89371a9039128d9347791030 /main.cpp | |
| parent | 612c17240af65243a1fa5d8cc17d3ebdb38a9bee (diff) | |
| download | infinitytier-bf0da9f2f778aeb3eebe200a8cdeecbc6e1f9253.tar.gz infinitytier-bf0da9f2f778aeb3eebe200a8cdeecbc6e1f9253.zip | |
Rest of software updater, ready to test...
Diffstat (limited to 'main.cpp')
| -rw-r--r-- | main.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
@@ -44,6 +44,7 @@ #else #include <unistd.h> #include <pwd.h> +#include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <signal.h> @@ -473,13 +474,21 @@ int main(int argc,char **argv) try { node = new Node(homeDir,port,controlPort); - const char *termReason = (char *)0; switch(node->run()) { - case Node::NODE_UNRECOVERABLE_ERROR: + case Node::NODE_NODE_RESTART_FOR_UPGRADE: { +#ifdef __UNIX_LIKE__ + const char *upgPath = node->reasonForTermination(); + if (upgPath) + execl(upgPath,upgPath,"-s",(char *)0); // -s = (re)start after install/upgrade + exitCode = -1; + fprintf(stderr,"%s: abnormal termination: unable to execute update at %s",argv[0],(upgPath) ? upgPath : "(unknown path)"); +#endif + } break; + case Node::NODE_UNRECOVERABLE_ERROR: { exitCode = -1; - termReason = node->reasonForTermination(); + const char *termReason = node->reasonForTermination(); fprintf(stderr,"%s: abnormal termination: %s\n",argv[0],(termReason) ? termReason : "(unknown reason)"); - break; + } break; default: break; } |
