daemon: Moved empty Windows version functions to header file

On Windows only daemonize_close_stdin() function does
something.  Other functions are either empty or generate an
error.  Those have been moved to header file and declared
static inline so compiler can remove the call all together.
This commit is contained in:
Michal Nazarewicz 2009-07-19 08:18:23 +02:00 committed by Max Kellermann
parent 03e43356ce
commit 809c96b53f
2 changed files with 36 additions and 21 deletions

View File

@ -56,12 +56,10 @@ static char *pidfile;
/* whether "group" conf. option was given */
static bool had_group = false;
#endif
void
daemonize_kill(void)
{
#ifndef WIN32
FILE *fp;
int pid, ret;
@ -85,11 +83,10 @@ daemonize_kill(void)
pid, g_strerror(errno));
exit(EXIT_SUCCESS);
#else
g_error("--kill is not available on WIN32");
#endif
}
#endif
void
daemonize_close_stdin(void)
{
@ -103,10 +100,11 @@ daemonize_close_stdin(void)
}
}
#ifndef WIN32
void
daemonize_set_user(void)
{
#ifndef WIN32
if (user_name == NULL)
return;
@ -135,10 +133,8 @@ daemonize_set_user(void)
g_error("cannot change to uid of user \"%s\": %s",
user_name, g_strerror(errno));
}
#endif
}
#ifndef G_OS_WIN32
static void
daemonize_detach(void)
{
@ -169,12 +165,10 @@ daemonize_detach(void)
g_debug("daemonized!");
}
#endif
void
daemonize(bool detach)
{
#ifndef WIN32
FILE *fp = NULL;
if (pidfile != NULL) {
@ -196,16 +190,11 @@ daemonize(bool detach)
fprintf(fp, "%lu\n", (unsigned long)getpid());
fclose(fp);
}
#else
/* no daemonization on WIN32 */
(void)detach;
#endif
}
void
daemonize_init(const char *user, const char *group, const char *_pidfile)
{
#ifndef WIN32
if (user) {
struct passwd *pwd = getpwnam(user);
if (!pwd)
@ -230,20 +219,16 @@ daemonize_init(const char *user, const char *group, const char *_pidfile)
pidfile = g_strdup(_pidfile);
#else
(void)user;
(void)_pidfile;
#endif
}
void
daemonize_finish(void)
{
#ifndef WIN32
if (pidfile != NULL)
unlink(pidfile);
g_free(user_name);
g_free(pidfile);
#endif
}
#endif

View File

@ -22,18 +22,36 @@
#include <stdbool.h>
#ifndef WIN32
void
daemonize_init(const char *user, const char *group, const char *pidfile);
#else
static inline void
daemonize_init(const char *user, const char *group, const char *pidfile)
{ (void)user; (void)group; (void)pidfile; }
#endif
#ifndef WIN32
void
daemonize_finish(void);
#else
static inline void
daemonize_finish(void)
{ /* nop */ }
#endif
/**
* Kill the MPD which is currently running, pid determined from the
* pid file.
*/
#ifndef WIN32
void
daemonize_kill(void);
#else
static inline void
daemonize_kill(void)
{ g_error("--kill is not available on WIN32"); }
#endif
/**
* Close stdin (fd 0) and re-open it as /dev/null.
@ -44,10 +62,22 @@ daemonize_close_stdin(void);
/**
* Change to the configured Unix user.
*/
#ifndef WIN32
void
daemonize_set_user(void);
#else
static inline void
daemonize_set_user(void)
{ /* nop */ }
#endif
#ifndef WIN32
void
daemonize(bool detach);
#else
static inline void
daemonize(bool detach)
{ (void)detach; }
#endif
#endif