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:
parent
03e43356ce
commit
809c96b53f
27
src/daemon.c
27
src/daemon.c
@ -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
|
||||
|
30
src/daemon.h
30
src/daemon.h
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user