X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=appimage%2Fctdlvisor.c;h=3c7be88cc514159689e7012f2e8cccf4d2f65470;hb=8779ae0fd227b721c5244857956f578fc4af2149;hp=7e2c25b29765e351d0e7831596b8919653f0c455;hpb=76a0216278f0a014d3533de9150adbc9f74085ab;p=citadel.git diff --git a/appimage/ctdlvisor.c b/appimage/ctdlvisor.c index 7e2c25b29..3c7be88cc 100644 --- a/appimage/ctdlvisor.c +++ b/appimage/ctdlvisor.c @@ -4,16 +4,9 @@ // // Copyright (c) 2021 by the citadel.org team // -// This program is open source software. It runs great on the -// Linux operating system (and probably elsewhere). You can use, -// copy, and run it under the terms of the GNU General Public -// License version 3. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. - +// This program is open source software. Use, duplication, or disclosure +// is subject to the terms of the GNU General Public License, version 3. +// The program is distributed without any warranty, expressed or implied. #include #include @@ -71,15 +64,7 @@ void signal_handler(int signal) { what_exited = "unknown"; } if (who_exited >= 0) { - if (WIFEXITED(status)) { - fprintf(stderr, "ctdlvisor: %d (%s) exited, exitcode=%d\n", who_exited, what_exited, WEXITSTATUS(status)); - } - else if (WIFSIGNALED(status)) { - fprintf(stderr, "ctdlvisor: %d (%s) crashed, signal=%d\n", who_exited, what_exited, WTERMSIG(status)); - } - else { - fprintf(stderr, "ctdlvisor: %d (%s) ended, status=%d\n", who_exited, what_exited, status); - } + fprintf(stderr, "ctdlvisor: %d (%s) ended, status=%d\n", who_exited, what_exited, status); } } while (who_exited >= 0); ctdlvisor_exit(0); @@ -170,19 +155,22 @@ void main_loop(void) { // If it crashes, however, we will start it back up. if (who_exited == citserver_pid) { citserver_exit_code = WEXITSTATUS(status); - if (citserver_exit_code == 0) { + if ((WIFEXITED(status)) && (citserver_exit_code == 0)) { fprintf(stderr, "ctdlvisor: citserver exited normally - ending AppImage session\n"); shutting_down = 1; kill(webcit_pid, SIGTERM); kill(webcits_pid, SIGTERM); } - else if ((citserver_exit_code >= 101) && (citserver_exit_code <= 109)) { + else if ((WIFEXITED(status)) && (citserver_exit_code >= 101) && (citserver_exit_code <= 109)) { fprintf(stderr, "ctdlvisor: citserver exited intentionally - ending AppImage session\n"); shutting_down = 1; kill(webcit_pid, SIGTERM); kill(webcits_pid, SIGTERM); } else { + if (WIFSIGNALED(status)) { + fprintf(stderr, "ctdlvisor: citserver crashed on signal %d\n", WTERMSIG(status)); + } citserver_pid = start_citadel(); } } @@ -249,7 +237,7 @@ int main(int argc, char **argv) { fprintf(stderr, "ctdlvisor: waiting a moment for citserver to initialize...\n"); sleep(5); char bin[1024]; - sprintf(bin, "%s/usr/local/citadel/ctdlmigrate", getenv("APPDIR")); + sprintf(bin, "%s/usr/local/citadel/ctdlmigrate -h %s", getenv("APPDIR"), getenv("CTDL_DIR")); system(bin); kill(citserver_pid, SIGTERM); }