On many systems /var/run is not world-writeable, and writing PID fails
authorJanis Ruksans <janis.ruksans@gmail.com>
Thu, 28 Jun 2012 06:11:57 +0000 (08:11 +0200)
committerAndreas Eversberg <jolly@eversberg.eu>
Thu, 28 Jun 2012 06:11:57 +0000 (08:11 +0200)
if LCR is not being run as root. The lock directory, on the contrary,
must be writable by the lcr process, and can be configured by the user.

Signed-off-by: Andreas Eversberg <jolly@eversberg.eu>
main.c

diff --git a/main.c b/main.c
index 7290af9..95388a0 100644 (file)
--- a/main.c
+++ b/main.c
@@ -332,11 +332,13 @@ int main(int argc, char *argv[])
                nooutput = 1;
 
                /* write pid file */
                nooutput = 1;
 
                /* write pid file */
-               pidfile = fopen("/var/run/lcr.pid","w");
+               SPRINT(lock, "%s/lcr.pid", options.lock);
+               pidfile = fopen(lock,"w");
                if (pidfile) {
                        fprintf(pidfile, "%d\n", getpid());
                        fclose(pidfile);
                if (pidfile) {
                        fprintf(pidfile, "%d\n", getpid());
                        fclose(pidfile);
-               }
+               } else
+                       fprintf(stderr, "Failed to create PID file: %s\n", lock);
        } else
        /* if not start */
        if (!!strcasecmp(argv[1],"start")) {
        } else
        /* if not start */
        if (!!strcasecmp(argv[1],"start")) {