-/* $Id: lcd4linux.c,v 1.81 2006/08/13 06:46:51 reinelt Exp $
+/* $Id: lcd4linux.c,v 1.82 2006/09/13 20:04:57 entropy Exp $
  *
  * LCD4Linux
  *
  *
  *
  * $Log: lcd4linux.c,v $
+ * Revision 1.82  2006/09/13 20:04:57  entropy
+ * threads change argv[0] to their thread name, for a neat 'ps' output
+ *
  * Revision 1.81  2006/08/13 06:46:51  reinelt
  * T6963 soft-timing & enhancements; indent
  *
 #include "timer.h"
 #include "layout.h"
 #include "plugin.h"
+#include "thread.h"
 
 #include "widget.h"
 #include "widget_timer.h"
        my_argv[c] = strdup(argv[c]);
     }
     my_argv[c] = NULL;
+   
+    /* save original arguments pointer for threads */
+    thread_argv=argv;
+    thread_argc=argc;
 
     running_foreground = 0;
     running_background = 0;
 
-/* $Id: thread.c,v 1.8 2006/07/12 21:01:41 reinelt Exp $
+/* $Id: thread.c,v 1.9 2006/09/13 20:04:57 entropy Exp $
  *
  * thread handling (mutex, shmem, ...)
  *
  *
  *
  * $Log: thread.c,v $
+ * Revision 1.9  2006/09/13 20:04:57  entropy
+ * threads change argv[0] to their thread name, for a neat 'ps' output
+ *
  * Revision 1.8  2006/07/12 21:01:41  reinelt
  * thread_destroy, minor cleanups
  *
 #endif
 
 
+int   thread_argc;
+char **thread_argv;
+
+
 /* glibc 2.1 requires defining semun ourselves */
 #ifdef _SEM_SEMUN_UNDEFINED
 union semun {
     pid_t pid, ppid;
 
     ppid = getpid();
-
+    
     switch (pid = fork()) {
     case -1:
        error("fatal error: fork(%s) failed: %s", name, strerror(errno));
        return -1;
     case 0:
        info("thread %s starting...", name);
+       if (thread_argc > 0) {
+           strncpy(thread_argv[0],name,strlen(thread_argv[0]));
+        }
        thread(data);
        info("thread %s ended.", name);
        exit(0);
 
-/* $Id: thread.h,v 1.7 2006/07/12 21:01:41 reinelt Exp $
+/* $Id: thread.h,v 1.8 2006/09/13 20:04:57 entropy Exp $
  *
  * thread handling (mutex, shmem, ...)
  *
  *
  *
  * $Log: thread.h,v $
+ * Revision 1.8  2006/09/13 20:04:57  entropy
+ * threads change argv[0] to their thread name, for a neat 'ps' output
+ *
  * Revision 1.7  2006/07/12 21:01:41  reinelt
  * thread_destroy, minor cleanups
  *
 #ifndef _THREAD_H_
 #define _THREAD_H_
 
+
+extern int   thread_argc;
+extern char **thread_argv;
+
 int mutex_create(void);
 void mutex_lock(const int semid);
 void mutex_unlock(const int semid);