[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r1047 - gnunet-gtk/src
From: |
grothoff |
Subject: |
[GNUnet-SVN] r1047 - gnunet-gtk/src |
Date: |
Sun, 26 Jun 2005 03:40:48 -0700 (PDT) |
Author: grothoff
Date: 2005-06-26 03:40:46 -0700 (Sun, 26 Jun 2005)
New Revision: 1047
Modified:
gnunet-gtk/src/daemon.c
Log:
backend daemon code moved to util
Modified: gnunet-gtk/src/daemon.c
===================================================================
--- gnunet-gtk/src/daemon.c 2005-06-26 10:34:27 UTC (rev 1046)
+++ gnunet-gtk/src/daemon.c 2005-06-26 10:40:46 UTC (rev 1047)
@@ -29,167 +29,9 @@
#include "daemon.h"
#include "main.h"
#include "helper.h"
-#ifndef MINGW
- #include <sys/wait.h>
-#endif
#include <GNUnet/gnunet_util.h>
-#include <GNUnet/gnunet_protocols.h>
/**
- * Checks if gnunetd is running
- *
- * NOTE: Uses CS_PROTO_CLIENT_COUNT query to determine if
- * gnunetd is running
- */
-static int checkDaemonRunning(void) {
- GNUNET_TCP_SOCKET * sock;
- CS_HEADER csHdr;
- int ret;
-
- sock = getClientSocket();
- if(sock == NULL) {
- BREAK();
- return SYSERR;
- }
-
- csHdr.size
- = htons(sizeof(CS_HEADER));
- csHdr.type
- = htons(CS_PROTO_CLIENT_COUNT);
- if (SYSERR == writeToSocket(sock,
- &csHdr)) {
- LOG(LOG_DEBUG,
- _("gnunetd is NOT running.\n"));
- releaseClientSocket(sock);
- return SYSERR;
- }
- if (SYSERR == readTCPResult(sock,
- &ret)) {
- releaseClientSocket(sock);
- return SYSERR;
- }
- releaseClientSocket(sock);
-
- return OK;
-}
-
-
-
-#if LINUX || OSX || SOLARIS || SOMEBSD
-static int launchWithExec() {
- pid_t pid;
-
- pid = fork();
- if (pid == 0) {
- char * args[4];
- char * path;
- char * cp;
-
- path = NULL;
- cp = getConfigurationString("MAIN",
- "ARGV[0]");
- if (cp != NULL) {
- int i = strlen(cp);
- while ( (i >= 0) &&
- (cp[i] != DIR_SEPARATOR) )
- i--;
- if ( i != -1 ) {
- cp[i+1] = '\0';
- path = MALLOC(i+1+strlen("gnunetd"));
- strcpy(path, cp);
- strcat(path, "gnunetd");
- args[0] = path;
- FREE(cp);
- } else {
- args[0] = "gnunetd";
- }
- }
- cp = getConfigurationString("GNUNET-GTK",
- "GNUNETD-CONFIG");
- if (cp != NULL) {
- args[1] = "-c";
- args[2] = cp;
- } else {
- args[1] = NULL;
- }
- args[3] = NULL;
- errno = 0;
- nice(10); /* return value is not well-defined */
- if (errno != 0)
- LOG_STRERROR(LOG_WARNING, "nice");
- if (path != NULL)
- execv(path,
- args);
- else
- execvp("gnunetd",
- args);
- LOG_STRERROR(LOG_FAILURE, "exec");
- LOG(LOG_FAILURE,
- _("Attempted path to '%s' was '%s'.\n"),
- "gnunetd",
- (path == NULL) ? "gnunetd" : path);
- FREENONNULL(path); /* yeah, right, like we're likely to get
- here... */
- FREENONNULL(args[1]);
- _exit(-1);
- } else {
- pid_t ret;
- int status;
-
- ret = waitpid(pid, &status, 0);
- if (ret == -1) {
- LOG_STRERROR(LOG_ERROR, "waitpid");
- return SYSERR;
- }
- if ( (WIFEXITED(status) &&
- (0 != WEXITSTATUS(status)) ) ) {
- guiMessage(_("Starting gnunetd failed, error code: %d"),
- WEXITSTATUS(status));
- return SYSERR;
- }
-#ifdef WCOREDUMP
- if (WCOREDUMP(status)) {
- guiMessage(_("Starting gnunetd failed (core dumped)."));
- return SYSERR;
- }
-#endif
- if (WIFSIGNALED(status) ||
- WTERMSIG(status) ) {
- guiMessage(_("Starting gnunetd failed (aborted by signal)."));
- return SYSERR;
- }
- return OK;
- }
-}
-#endif
-
-static int doLaunch() {
-
-#if LINUX || OSX || SOLARIS || SOMEBSD
- return launchWithExec();
-#elif MINGW
- char szCall[_MAX_PATH + 1], szWd[_MAX_PATH + 1], szCWd[_MAX_PATH + 1];
- char *args[1];
-
- plibc_conv_to_win_path("/bin/gnunetd.exe", szCall);
- plibc_conv_to_win_path("/bin", szWd);
- _getcwd(szCWd, _MAX_PATH);
-
- chdir(szWd);
- args[0] = NULL;
- spawnvp(_P_NOWAIT, szCall, (const char *const *) args);
- chdir(szCWd);
-
- return OK;
-#else
- /* any system out there that does not support THIS!? */
- system("gnunetd"); /* we may not have nice,
- so let's be minimalistic here. */
- return OK;
-#endif
-}
-
-/**
* Launch gnunetd w/ checks
*/
void on_startDaemon_clicked(GtkWidget * widget,
@@ -199,12 +41,16 @@
= glade_xml_get_widget(mainXML,
"startDaemon");
gtk_widget_set_sensitive(launchEntry, FALSE);
- if (OK == checkDaemonRunning() ) {
+ if (OK == checkGNUnetDaemonRunning() ) {
cronCheckDaemon(NULL);
return;
} else {
addLogEntry(_("Launching gnunetd..."));
- doLaunch();
+ if (OK == startGNUnetDaemon(YES)) {
+ addLogEntry(_("Launched gnunetd"));
+ } else {
+ addLogEntry(_("Launching gnunetd failed"));
+ }
}
}
@@ -219,47 +65,12 @@
"stopDaemon");
gtk_widget_set_sensitive(killEntry, FALSE);
- if (OK == checkDaemonRunning() ) {
- GNUNET_TCP_SOCKET * sock;
- CS_HEADER csHdr;
- int ret;
-
- sock = getClientSocket();
- if (sock == NULL) {
- cronCheckDaemon(NULL);
- /* well, probably already dead */
- return;
- }
- csHdr.size
- = htons(sizeof(CS_HEADER));
- csHdr.type
- = htons(CS_PROTO_SHUTDOWN_REQUEST);
- if (SYSERR == writeToSocket(sock,
- &csHdr)) {
- guiMessage(_("Error sending shutdown request to gnunetd."));
- releaseClientSocket(sock);
- cronCheckDaemon(NULL);
- return;
- }
- if (SYSERR == readTCPResult(sock,
- &ret)) {
- guiMessage(_("Error reading shutdown confirmation from gnunetd."));
- releaseClientSocket(sock);
- cronCheckDaemon(NULL);
- return;
- }
- if (ret == OK) {
- static GtkWidget * killEntry;
- killEntry
- = glade_xml_get_widget(mainXML,
- "stopDaemon");
- gtk_widget_set_sensitive(killEntry, FALSE);
- addLogEntry(_("Terminating gnunetd..."));
+ if (OK == checkGNUnetDaemonRunning() ) {
+ if (OK != stopGNUnetDaemon()) {
+ guiMessage(_("Error requesting shutdown by gnunetd."));
} else {
- guiMessage(_("gnunetd refused to shut down (error code '%d')."),
- ret);
+ addLogEntry(_("Terminating gnunetd..."));
}
- releaseClientSocket(sock);
}
cronCheckDaemon(NULL);
}
@@ -317,7 +128,7 @@
static int last = 42;
int ret;
- ret = checkDaemonRunning();
+ ret = checkGNUnetDaemonRunning();
if (ret != last) {
last = ret;
gtkSaveCall((GtkFunction) doUpdateMenus, &ret);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r1047 - gnunet-gtk/src,
grothoff <=