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