+ if (argc>0) {
+#ifdef DEBUG
+ fprintf (stderr, _("Spawning gnokiid startup child process \"%s\"...\n"), *argv);
+#endif
+ signal(SIGCHLD,gnokiid_SIGCHLD);
+ errno=0;
+ switch (vfork()) {
+ case -1: /* vfork() failure */
+ fprintf (stderr, _("vfork() failed! (%s)\n"),strerror(errno));
+ return -1;
+ case 0: /* child */
+ execv(*argv,argv);
+ fprintf (stderr, _("Spawn of child process failed! (%s)\n"),strerror(errno));
+ _exit(9);
+ break;
+ default: /* parent */
+ /* PASSTHRU */
+ break;
+ }
+ }
+
+#ifdef DEBUG
+ fprintf (stderr, _("Entering gnokiid virtual modem main loop...\n"));
+#endif
+
+ VM_ThreadLoop();
+