Fixed compile warning,exit if cant daemonize
Relevant output of make:
ggsn.c: In function ‘main’:
ggsn.c:436: warning: ignoring return value of ‘freopen’, declared with
attribute warn_unused_result
ggsn.c:437: warning: ignoring return value of ‘freopen’, declared with
attribute warn_unused_result
ggsn.c:438: warning: ignoring return value of ‘freopen’, declared with
attribute warn_unused_result
ggsn.c:439: warning: ignoring return value of ‘daemon’, declared with
attribute warn_unused_result
Signed-off-by: Emmanuel Bretelle <chantra@debuntu.org>
diff --git a/ggsn/ggsn.c b/ggsn/ggsn.c
index 52a2022..8b71884 100644
--- a/ggsn/ggsn.c
+++ b/ggsn/ggsn.c
@@ -430,13 +430,28 @@
/* If flag not given run as a daemon */
if (!args_info.fg_flag)
{
+ FILE *f;
+ int rc;
closelog();
/* Close the standard file descriptors. */
/* Is this really needed ? */
- freopen("/dev/null", "w", stdout);
- freopen("/dev/null", "w", stderr);
- freopen("/dev/null", "r", stdin);
- daemon(0, 0);
+ f = freopen("/dev/null", "w", stdout);
+ if (f == NULL) {
+ sys_err(LOG_WARNING, __FILE__, __LINE__, 0, "Could not redirect stdout to /dev/null");
+ }
+ f = freopen("/dev/null", "w", stderr);
+ if (f == NULL) {
+ sys_err(LOG_WARNING, __FILE__, __LINE__, 0, "Could not redirect stderr to /dev/null");
+ }
+ f = freopen("/dev/null", "r", stdin);
+ if (f == NULL) {
+ sys_err(LOG_WARNING, __FILE__, __LINE__, 0, "Could not redirect stdin to /dev/null");
+ }
+ rc = daemon(0, 0);
+ if (rc != 0) {
+ sys_err(LOG_ERR, __FILE__, __LINE__, rc, "Could not daemonize");
+ exit(1);
+ }
/* Open log again. This time with new pid */
openlog(PACKAGE, LOG_PID, LOG_DAEMON);
}