-/* $Id: lcd4linux.c,v 1.83 2006/09/14 03:49:14 reinelt Exp $
+/* $Id: lcd4linux.c,v 1.84 2006/09/14 11:19:29 entropy Exp $
  *
  * LCD4Linux
  *
  *
  *
  * $Log: lcd4linux.c,v $
+ * Revision 1.84  2006/09/14 11:19:29  entropy
+ * New cmdline option -p to specify the pidfile location
+ *
  * Revision 1.83  2006/09/14 03:49:14  reinelt
  * indent run
  *
     printf("%s\n", copyright);
     printf("usage: lcd4linux [-h]\n");
     printf("       lcd4linux [-l]\n");
-    printf("       lcd4linux [-c key=value] [-i] [-f config-file] [-v]\n");
+    printf("       lcd4linux [-c key=value] [-i] [-f config-file] [-v] [-p pid-file]\n");
     printf("       lcd4linux [-c key=value] [-F] [-f config-file] [-o output-file] [-q] [-v]\n");
 }
 
 int main(int argc, char *argv[])
 {
     char *cfg = "/etc/lcd4linux.conf";
+    char *pidfile = PIDFILE;
     char *display, *driver, *layout;
     char section[32];
     int c;
     running_foreground = 0;
     running_background = 0;
 
-    while ((c = getopt(argc, argv, "c:Ff:hilo:qv")) != EOF) {
+    while ((c = getopt(argc, argv, "c:Ff:hilo:qvp:")) != EOF) {
 
        switch (c) {
        case 'c':
        case 'v':
            verbose_level++;
            break;
+       case 'p':
+           pidfile = optarg;
+           break;
        default:
            exit(2);
        }
        signal(SIGQUIT, SIG_IGN);
 
        /* create PID file */
-       if ((pid = pid_init(PIDFILE)) != 0) {
+       if ((pid = pid_init(pidfile)) != 0) {
            error("lcd4linux already running as process %d", pid);
            exit(1);
        }
     /* go into interactive mode before display initialization */
     if (interactive >= 2) {
        interactive_mode();
-       pid_exit(PIDFILE);
+       pid_exit(pidfile);
        cfg_exit();
        exit(0);
     }
 
     debug("initializing driver %s", driver);
     if (drv_init(section, driver, quiet) == -1) {
-       pid_exit(PIDFILE);
+       pid_exit(pidfile);
        exit(1);
     }
     free(driver);
     if (interactive >= 1) {
        interactive_mode();
        drv_quit(quiet);
-       pid_exit(PIDFILE);
+       pid_exit(pidfile);
        cfg_exit();
        exit(0);
     }
     debug("leaving main loop");
 
     drv_quit(quiet);
-    pid_exit(PIDFILE);
+    pid_exit(pidfile);
     cfg_exit();
     plugin_exit();
     timer_exit();