From: short <> Date: Sun, 26 Jun 2005 04:43:30 +0000 (+0000) Subject: PID is now also tried to be stored to: /tmp X-Git-Tag: udpgate-1_0_2~17 X-Git-Url: http://git.jankratochvil.net/?p=udpgate.git;a=commitdiff_plain;h=841083f5a7a6501423467275c5086e8d3a648621 PID is now also tried to be stored to: /tmp --- diff --git a/src/network.c b/src/network.c index c658c13..838e80a 100644 --- a/src/network.c +++ b/src/network.c @@ -39,10 +39,10 @@ #include "network.h" #include "packet.h" #include "main.h" /* for optarg_verbose */ +#include "pathname.h" /* Config: */ -#define NETWORK_PATHNAME_PID "/var/run/udpgate.pid" #define SOCK_SOURCE_CHECK_EVENTS (G_IO_IN) /* |G_IO_PRI */ #define SOCK_SOURCE_CHECK_REVENTS (SOCK_SOURCE_CHECK_EVENTS) /* |G_IO_ERR|G_IO_HUP|G_IO_NVAL */ #define SERVER_INADDR 0xC37AD054 /* mms2.org = 195.122.208.84; host order */ @@ -57,6 +57,21 @@ void (*network_notify_hostip)(guint32 hostip_guint32); +static G_CONST_RETURN gchar *pid_pathname(void) +{ +static const gchar *static_pathname; +static const char *user_val; + + if (!static_pathname) + user_val=getenv("USER"); + return pathname_find(&static_pathname, + G_STRINGIFY(LOCALSTATEDIR) "/run",PACKAGE ".pid", + (!user_val ? NULL : "/tmp"), + (!user_val ? NULL : udpgate_printf_alloca(".%s-%s.pid",user_val,PACKAGE)), + NULL); +} + + struct client { GPollFD gpollfd; struct sockaddr_in sockaddr_in_from; @@ -84,7 +99,7 @@ int pid_int; if (sock_gsource) return getpid(); - if (!(f=fopen(NETWORK_PATHNAME_PID,"r"))) + if (!(f=fopen(pid_pathname(),"r"))) goto err; got=fgets(buf,sizeof(buf),f); fclose(f); /* FIXME: error ignored */ @@ -110,19 +125,19 @@ static gboolean write_daemon_running(pid_t pid) FILE *f; if (pid==(pid_t)-1) { - if (unlink(NETWORK_PATHNAME_PID)) { + if (unlink(pid_pathname())) { if (errno!=ENOENT) - g_warning(_("Error removing PID file \"%s\": %m"),NETWORK_PATHNAME_PID); + g_warning(_("Error removing PID file \"%s\": %m"),pid_pathname()); return FALSE; } return TRUE; } - if (!(f=fopen(NETWORK_PATHNAME_PID,"w"))) { + if (!(f=fopen(pid_pathname(),"w"))) { static gboolean once=TRUE; if (once) { once=FALSE; - g_warning(_("Error writing PID %d to \"%s\": %m"),(int)pid,NETWORK_PATHNAME_PID); + g_warning(_("Error writing PID %d to \"%s\": %m"),(int)pid,pid_pathname()); } return FALSE; }