void *TvDeviceCommandLoop(void *args) { int stoploop = 0; char cmdline[100]; char cmd[100]; while (!stoploop) { sprintf(cmdline, " "); sprintf(cmd, " "); SampleUtil_Print("\n>> "); /* Get a command line */ char *s = fgets(cmdline, 100, stdin); if (!s) break; sscanf(cmdline, "%s", cmd); if (strcasecmp(cmd, "exit") == 0) { SampleUtil_Print("Shutting down...\n"); TvDeviceStop(); exit(0); } else { SampleUtil_Print("\n Unknown command: %s\n\n", cmd); SampleUtil_Print(" Valid Commands:\n" " Exit\n\n"); } } return NULL; args = args; }
int main(int argc, char *argv[]) { int rc; ithread_t cmdloop_thread; #ifdef WIN32 #else int sig; sigset_t sigs_to_catch; #endif int code; rc = device_main(argc, argv); if (rc != UPNP_E_SUCCESS) { return rc; } /* start a command loop thread */ code = ithread_create(&cmdloop_thread, NULL, TvDeviceCommandLoop, NULL); if (code != 0) { return UPNP_E_INTERNAL_ERROR; } #ifdef WIN32 ithread_join(cmdloop_thread, NULL); #else /* Catch Ctrl-C and properly shutdown */ sigemptyset(&sigs_to_catch); sigaddset(&sigs_to_catch, SIGINT); sigwait(&sigs_to_catch, &sig); SampleUtil_Print("Shutting down on signal %d...\n", sig); #endif rc = TvDeviceStop(); return rc; }