if (!(strcasecmp(argv[1],"fork")))
{
pid_t pid;
+ FILE *pidfile;
/* do daemon fork */
pid = fork();
exit(0);
}
nooutput = 1;
+
+ /* write pid file */
+ pidfile = fopen("/var/run/lcr.pid","w");
+ if (pidfile)
+ {
+ fprintf(pidfile, "%d\n", getpid());
+ fclose(pidfile);
+ }
} else
/* if not start */
if (!!strcasecmp(argv[1],"start"))
goto free;
}
+#ifdef WITH_GSM
+ /* handle gsm */
+ if (options.gsm && gsm_init())
+ {
+ fprintf(stderr, "GSM initialization failed.\n");
+ goto free;
+ }
+#else
+ if (options.gsm)
+ {
+ fprintf(stderr, "GSM is enabled, but not compiled. Use --with-gsm while configure!\n");
+ goto free;
+ }
+#endif
+
/* read interfaces and open ports */
if (!read_interfaces())
{
switch(errno)
{
case ENOMEM:
- fprintf(stderr, "Warning: Not enough memory to lock paging, exitting...\n");
+ fprintf(stderr, "Warning: Not enough memory to lock paging.\n");
break;
case EPERM:
- fprintf(stderr, "Warning: No permission to lock paging, exitting...\n");
+ fprintf(stderr, "Warning: No permission to lock paging.\n");
break;
case EFAULT:
- fprintf(stderr, "Warning: 'Bad address' while locking paging, exitting...\n");
+ fprintf(stderr, "Warning: 'Bad address' while locking paging.\n");
break;
default:
- fprintf(stderr, "Warning: Unknown error %d while locking paging, exitting...\n", errno);
+ fprintf(stderr, "Warning: Unknown error %d while locking paging.\n", errno);
}
}
all_idle = 0;
BUDETECT
+#ifdef WITH_GSM
+ /* handle gsm */
+ if (options.gsm)
+ while(handle_gsm())
+ all_idle = 0;
+#endif
+
+BUDETECT
+
#if 0
/* check for child to exit (eliminate zombies) */
if (waitpid(-1, NULL, WNOHANG) > 0)
if (created_misdn)
mISDN_deinitialize();
+#ifdef WITH_GSM
+ /* free gsm */
+ if (options.gsm)
+ gsm_exit(0);
+#endif
+
/* display memory leak */
#define MEMCHECK(a, b) \
if (b) \