void main(int argc, char** argv){ glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(640,480); glutInitWindowPosition(100,150); glutCreateWindow("Graphics Engine"); glutDisplayFunc(gs_render); gs_init(); glutMainLoop(); };
/* Initialize group iterator for start group and all its descendant * groups. */ int nc_get_giter(int grpid, /* start group id */ ncgiter_t **iterp /* returned opaque iteration state */ ) { int stat = NC_NOERR; stat = nc_inq(grpid, NULL, NULL, NULL, NULL); /* check if grpid is valid */ if(stat != NC_EBADGRPID && stat != NC_EBADID) { *iterp = gs_init(); gs_push(*iterp, grpid); } return stat; }
int main(int argc, char **argv) { if (!gs_init()) return EXIT_FAILURE; test_matrix_bfs(); gs_shutdown(); return EXIT_SUCCESS; shutdown_gs: gs_shutdown(); return EXIT_FAILURE; }
int main(void) { GameState gs; Move *m; Player p; gs_init(&gs); shuffle(gs.freetiles, NTILES); player_init(&p); player_add_tiles(&p, "hello"); print_rack(&p); m = move_new(&p, &gs, "hello", 4, 5); gs_step(&gs, m); print_board(&gs); print_rack(&p); gs_rewind(&gs); print_board(&gs); print_rack(&p); return 0; }
/* *********************************************************************** */ extern int slurm_sched_init( void ) { int retval = SLURM_SUCCESS; char *sched_type = NULL; slurm_mutex_lock( &g_sched_context_lock ); if ( g_sched_context ) goto done; sched_type = slurm_get_sched_type(); g_sched_context = slurm_sched_context_create( sched_type ); if ( g_sched_context == NULL ) { error( "cannot create scheduler context for %s", sched_type ); retval = SLURM_ERROR; goto done; } if ( slurm_sched_get_ops( g_sched_context ) == NULL ) { error( "cannot resolve scheduler plugin operations" ); slurm_sched_context_destroy( g_sched_context ); g_sched_context = NULL; retval = SLURM_ERROR; goto done; } if ( (slurm_get_preempt_mode() & PREEMPT_MODE_GANG) && (gs_init() != SLURM_SUCCESS)) error( "cannot start gang scheduler "); done: slurm_mutex_unlock( &g_sched_context_lock ); xfree(sched_type); return retval; }
int main (int argc, char *argv[]){ char buf[256]; #ifdef GRAPHICS gs_init(WIDTH, HEIGHT); #endif sw_init(); sw_start(); RoadMap(); sw_stop(); sw_timeString(buf); printf("Time taken: %s\n",buf); #ifdef GRAPHICS gs_exit(); #else printf("CRC is %x\n",crc); #endif return 0; }
void Set_Comm_GatherBlockMatrices(Element *U, Bsystem *B){ register int i,j; int nes = B->ne_solve; int nfs = B->nf_solve; int nel = B->nel; int l, *map, start, one=1, Lskip, *pos, *Ledge, *Lface; double *edge, *face; Edge *e; Face *f; Element *E; extern Element_List *Mesh; int active_handle = get_active_handle(); if(LGmax <=2) return; switch(B->Precon){ case Pre_Block: Ledge = B->Pmat->info.block.Ledge; Lface = B->Pmat->info.block.Lface; break; case Pre_LEnergy: Ledge = B->Pmat->info.lenergy.Ledge; Lface = B->Pmat->info.lenergy.Lface; break; default: error_msg(Unknown preconditioner in GatherBlockMatrices); break; } pos = ivector(0,max(nes,nfs)); /* make up numbering list based upon solvemap */ /* assumed fixed L order */ pos[0] = 0; for(i = 1; i < nes+1; ++i) pos[i] = pos[i-1] + Ledge[i-1]*(Ledge[i-1]+1)/2; map = ivector(0,pos[nes]); Lskip = LGmax-2; Lskip = Lskip*(Lskip+1)/2; for(E=U; E; E = E->next) for(j = 0; j < E->Nedges; ++j){ e = E->edge + j; if(e->gid < nes){ /* allocate starting location based on global mesh */ start = Mesh->flist[pllinfo[active_handle].eloop[e->eid]]->edge[j].gid*Lskip; l = Ledge[e->gid]; l = l*(l+1)/2; iramp(l,&start,&one,map+pos[e->gid],1); } } #ifndef BUILD_EXE //B->egather = gs_init(map,pos[nes],option("GSLEVEL")); #endif free(map); #if 0 pos[0] = 0; for(i = 1; i < nfs+1; ++i) pos[i] = pos[i-1] + Lface[i-1]*(Lface[i-1]+1)/2; map = ivector(0,pos[nfs]); Lskip = (LGmax-2)*(LGmax-2); Lskip = Lskip*(Lskip+1)/2; for(E=U;E; E = E->next) for(j = 0; j < E->Nfaces; ++j){ f = E->face + j; if(f->gid < nfs){ /* allocate starting location based on global mesh */ start = Mesh->flist[pllinfo[active_handle].eloop[f->eid]]->face[j].gid*Lskip; l = Lface[f->gid]; l = l*(l+1)/2; iramp(l,&start,&one,map+pos[f->gid],1); } } #ifndef BUILD_EXE B->fgather = gs_init(map,pos[nfs],option("GSLEVEL")); #endif free(map); #endif free(pos); }
int main(int argc, char* argv[]) { CONFIGURATION config; config_parse(argc, argv, &config); if (config.action == NULL || strcmp("help", config.action) == 0) help(); enum platform system = platform_check(config.platform); if (system == 0) { fprintf(stderr, "Platform '%s' not found\n", config.platform); exit(-1); } if (strcmp("map", config.action) == 0) { if (config.address == NULL) { perror("No filename for mapping"); exit(-1); } udev_init(!inputAdded, config.mapping); for (int i=0;i<config.inputsCount;i++) evdev_create(config.inputs[i].path, config.inputs[i].mapping); evdev_map(config.address); exit(0); } if (config.address == NULL) { config.address = malloc(MAX_ADDRESS_SIZE); if (config.address == NULL) { perror("Not enough memory"); exit(-1); } config.address[0] = 0; gs_discover_server(config.address); if (config.address[0] == 0) { fprintf(stderr, "Autodiscovery failed. Specify an IP address next time.\n"); exit(-1); } } char host_config_file[128]; sprintf(host_config_file, "hosts/%s.conf", config.address); config_file_parse(host_config_file, &config); SERVER_DATA server; server.address = config.address; int ret; if ((ret = gs_init(&server, config.key_dir)) == GS_OUT_OF_MEMORY) { fprintf(stderr, "Not enough memory\n"); exit(-1); } else if (ret == GS_INVALID) { fprintf(stderr, "Invalid data received from server: %s\n", config.address, gs_error); exit(-1); } else if (ret != GS_OK) { fprintf(stderr, "Can't connect to server %s\n", config.address); exit(-1); } if (strcmp("list", config.action) == 0) { pair_check(&server); applist(&server); } else if (strcmp("stream", config.action) == 0) { pair_check(&server); if (IS_EMBEDDED(system)) { for (int i=0;i<config.inputsCount;i++) evdev_create(config.inputs[i].path, config.inputs[i].mapping); udev_init(!inputAdded, config.mapping); evdev_init(); #ifdef HAVE_LIBCEC cec_init(); #endif /* HAVE_LIBCEC */ } #ifdef HAVE_SDL else if (system == SDL) sdl_init(config.stream.width, config.stream.height); #endif stream(&server, &config, system); } else if (strcmp("pair", config.action) == 0) { char pin[5]; sprintf(pin, "%d%d%d%d", (int)random() % 10, (int)random() % 10, (int)random() % 10, (int)random() % 10); printf("Please enter the following PIN on the target PC: %s\n", pin); if (gs_pair(&server, &pin[0]) != GS_OK) { fprintf(stderr, "Failed to pair to server: %s\n", gs_error); } else { printf("Succesfully paired\n"); } } else if (strcmp("quit", config.action) == 0) { pair_check(&server); gs_quit_app(&server); } else fprintf(stderr, "%s is not a valid action\n", config.action); }
/* * main -- * This is the main loop for the standalone curses editor. */ int main(int argc, char *argv[]) { CL_PRIVATE *clp; GS *gp; size_t rows, cols; int rval; char *ttype; /* Create and initialize the global structure. */ __global_list = gp = gs_init(); /* Create and initialize the CL_PRIVATE structure. */ clp = cl_init(gp); /* * Initialize the terminal information. * * We have to know what terminal it is from the start, since we may * have to use termcap/terminfo to find out how big the screen is. */ if ((ttype = getenv("TERM")) == NULL) ttype = "unknown"; term_init(ttype); /* Add the terminal type to the global structure. */ if ((OG_D_STR(gp, GO_TERM) = OG_STR(gp, GO_TERM) = strdup(ttype)) == NULL) err(1, NULL); /* Figure out how big the screen is. */ if (cl_ssize(NULL, 0, &rows, &cols, NULL)) exit (1); /* Add the rows and columns to the global structure. */ OG_VAL(gp, GO_LINES) = OG_D_VAL(gp, GO_LINES) = rows; OG_VAL(gp, GO_COLUMNS) = OG_D_VAL(gp, GO_COLUMNS) = cols; /* Ex wants stdout to be buffered. */ (void)setvbuf(stdout, NULL, _IOFBF, 0); /* Start catching signals. */ if (sig_init(gp, NULL)) exit (1); /* Run ex/vi. */ rval = editor(gp, argc, argv); /* Clean up signals. */ sig_end(gp); /* Clean up the terminal. */ (void)cl_quit(gp); /* * XXX * Reset the O_MESG option. */ if (clp->tgw != TGW_UNKNOWN) (void)cl_omesg(NULL, clp, clp->tgw == TGW_SET); /* * XXX * Reset the X11 xterm icon/window name. */ if (F_ISSET(clp, CL_RENAME)) { (void)printf(XTERM_RENAME, ttype); (void)fflush(stdout); } /* If a killer signal arrived, pretend we just got it. */ if (clp->killersig) { (void)signal(clp->killersig, SIG_DFL); (void)kill(getpid(), clp->killersig); /* NOTREACHED */ } /* Free the global and CL private areas. */ #if defined(DEBUG) || defined(PURIFY) free(clp); free(gp); #endif exit (rval); }
/* * main -- * This is the main loop for the standalone curses editor. */ int main(int argc, char *argv[]) { static int reenter; CL_PRIVATE *clp; GS *gp; size_t rows, cols; int rval; char *ttype; #ifdef RUNNING_IP char *ip_arg; char **p_av, **t_av; #endif /* If loaded at 0 and jumping through a NULL pointer, stop. */ if (reenter++) abort(); /* Create and initialize the global structure. */ __global_list = gp = gs_init(argv[0]); /* * Strip out any arguments that vi isn't going to understand. There's * no way to portably call getopt twice, so arguments parsed here must * be removed from the argument list. */ #ifdef RUNNING_IP ip_arg = NULL; for (p_av = t_av = argv;;) { if (*t_av == NULL) { *p_av = NULL; break; } if (!strcmp(*t_av, "--")) { while ((*p_av++ = *t_av++) != NULL); break; } if (!memcmp(*t_av, "-I", sizeof("-I") - 1)) { if (t_av[0][2] != '\0') { ip_arg = t_av[0] + 2; ++t_av; --argc; continue; } if (t_av[1] != NULL) { ip_arg = t_av[1]; t_av += 2; argc -= 2; continue; } } *p_av++ = *t_av++; } /* * If we're being called as an editor library, we're done here, we * get loaded with the curses screen, we don't share much code. */ if (ip_arg != NULL) exit (ip_main(argc, argv, gp, ip_arg)); #endif /* Create and initialize the CL_PRIVATE structure. */ clp = cl_init(gp); /* * Initialize the terminal information. * * We have to know what terminal it is from the start, since we may * have to use termcap/terminfo to find out how big the screen is. */ if ((ttype = getenv("TERM")) == NULL) ttype = "unknown"; term_init(gp->progname, ttype); /* Add the terminal type to the global structure. */ if ((OG_D_STR(gp, GO_TERM) = OG_STR(gp, GO_TERM) = strdup(ttype)) == NULL) perr(gp->progname, NULL); /* Figure out how big the screen is. */ if (cl_ssize(NULL, 0, &rows, &cols, NULL)) exit (1); /* Add the rows and columns to the global structure. */ OG_VAL(gp, GO_LINES) = OG_D_VAL(gp, GO_LINES) = rows; OG_VAL(gp, GO_COLUMNS) = OG_D_VAL(gp, GO_COLUMNS) = cols; /* Ex wants stdout to be buffered. */ (void)setvbuf(stdout, NULL, _IOFBF, 0); /* Start catching signals. */ if (sig_init(gp, NULL)) exit (1); /* Run ex/vi. */ rval = editor(gp, argc, argv); /* Clean up signals. */ sig_end(gp); /* Clean up the terminal. */ (void)cl_quit(gp); /* * XXX * Reset the O_MESG option. */ if (clp->tgw != TGW_UNKNOWN) (void)cl_omesg(NULL, clp, clp->tgw == TGW_SET); /* * XXX * Reset the X11 xterm icon/window name. */ if (F_ISSET(clp, CL_RENAME)) { (void)printf(XTERM_RENAME, ttype); (void)fflush(stdout); } /* If a killer signal arrived, pretend we just got it. */ if (clp->killersig) { (void)signal(clp->killersig, SIG_DFL); (void)kill(getpid(), clp->killersig); /* NOTREACHED */ } /* Free the global and CL private areas. */ #if defined(DEBUG) || defined(PURIFY) || defined(LIBRARY) free(clp); free(gp); #endif exit (rval); }
static void test_send_packet(void) { struct gg_session gs; struct gg_session_private gsp; gs_init(&gs, &gsp, 1); /* Poprawne wysyłanie */ if (gg_send_packet(&gs, 0x1234, "ABC", 3, "DEF", 3, NULL) != 0) { if (!send_called) fprintf(stderr, "send hook not called\n"); else fprintf(stderr, "Expected success\n"); exit(1); } if (gs.send_buf != NULL || gs.send_left != 0) { fprintf(stderr, "Unexpected queue\n"); exit(1); } /* Błąd wysyłania */ if (gg_send_packet(&gs, 0x2345, "GHI", 3, NULL) != -1) { fprintf(stderr, "Expected failure\n"); exit(1); } if (gs.send_buf != NULL || gs.send_left != 0) { fprintf(stderr, "Unexpected queue\n"); exit(1); } /* EINTR na początek, niech wznowi i potem niekompletna transmisja */ if (gg_send_packet(&gs, 0x3456, "JKLMNO", 6, NULL) != 0) { fprintf(stderr, "Expected success\n"); exit(1); } if (gs.send_buf == NULL || gs.send_left != 6 || memcmp(gs.send_buf, "JKLMNO", 6) != 0) { fprintf(stderr, "Not queued properly\n"); exit(1); } free(gs.send_buf); /* EAGAIN na początek */ gs_init(&gs, &gsp, 1); if (gg_send_packet(&gs, 0x4567, "PQRSTU", 6, NULL) != 0) { fprintf(stderr, "Expected success\n"); exit(1); } if (gs.send_buf == NULL || gs.send_left != 14 || memcmp(gs.send_buf, "\x67\x45\x00\x00\x06\x00\x00\x00""PQRSTU", 14) != 0) { fprintf(stderr, "Not queued properly\n"); exit(1); } /* Wyślij jeszcze trochę, żeby dodało do kolejki */ if (gg_send_packet(&gs, 0x5678, "VWX", 3, NULL) != 0) { fprintf(stderr, "Expected success\n"); exit(1); } if (gs.send_buf == NULL || gs.send_left != 25 || memcmp(gs.send_buf, "\x67\x45\x00\x00\x06\x00\x00\x00""PQRSTU""\x78\x56\x00\x00\x03" "\x00\x00\x00""VWX", 25) != 0) { fprintf(stderr, "Not queued properly\n"); exit(1); } free(gs.send_buf); /* Sprawdź, czy wszystko już sprawdzone */ if (send_state != sizeof(send_list) / sizeof(send_list[0])) { fprintf(stderr, "More sends expected\n"); exit(1); } fprintf(stderr, "Test succeeded.\n"); }
/* TODO: napisać test na r1324 */ static void test_recv_packet(void) { struct gg_session gs; struct gg_session_private gsp; gg_debug_level = ~0; gs_init(&gs, &gsp, 0); for (state = 0; (size_t)state < sizeof(input) / sizeof(input[0]); ) { struct gg_header *gh; expected_packet = 0; gh = gg_recv_packet(&gs); if (!recv_called) { fprintf(stderr, "recv hook not called\n"); exit(1); } if (gh == NULL) { if (expected_packet) { fprintf(stderr, "Returned nothing, expected packet\n"); exit(1); } if (errno == EAGAIN) { if (input[state-1].expect != EXPECT_EAGAIN) { fprintf(stderr, "Returned no event, expected something\n"); exit(1); } } else { if (input[state-1].expect != EXPECT_ERROR) { fprintf(stderr, "Returned error (%s) " "when expected something\n", strerror(errno)); exit(1); } /* Posprzątaj, bo jedziemy dalej */ gs_init(&gs, &gsp, 0); } } else { if (input[state-1].expect != EXPECT_PACKET) { fprintf(stderr, "Returned packet, expected \n"); exit(1); } if (gh->type != input[state-1].type) { fprintf(stderr, "Expected type %d, received %d\n", input[state-1].type, gh->type); exit(1); } if (gh->length != input[state-1].length) { fprintf(stderr, "Expected length %d, received %d\n", input[state-1].length, gh->length); exit(1); } if (memcmp(((char*) gh) + sizeof(*gh), input[state-1].expected_data, input[state-1].length) != 0) { fprintf(stderr, "Invalid packet payload\n"); exit(1); } } free(gh); } fprintf(stderr, "Test succeeded.\n"); }
/* * main -- * This is the main loop for the standalone curses editor. */ int main(int argc, char **argv) { static int reenter; CL_PRIVATE *clp; GS *gp; WIN *wp; size_t rows, cols; int rval; char **p_av, **t_av; const char *ttype; /* If loaded at 0 and jumping through a NULL pointer, stop. */ if (reenter++) abort(); /* Create and initialize the global structure. */ __global_list = gp = gs_init(argv[0]); /* * Strip out any arguments that vi isn't going to understand. There's * no way to portably call getopt twice, so arguments parsed here must * be removed from the argument list. */ for (p_av = t_av = argv;;) { if (*t_av == NULL) { *p_av = NULL; break; } if (!strcmp(*t_av, "--")) { while ((*p_av++ = *t_av++) != NULL); break; } *p_av++ = *t_av++; } /* Create new window */ wp = gs_new_win(gp); /* Create and initialize the CL_PRIVATE structure. */ clp = cl_init(wp); /* * Initialize the terminal information. * * We have to know what terminal it is from the start, since we may * have to use termcap/terminfo to find out how big the screen is. */ if ((ttype = getenv("TERM")) == NULL) { if (isatty(STDIN_FILENO)) fprintf(stderr, "%s: warning: TERM is not set\n", gp->progname); ttype = "unknown"; } term_init(gp->progname, ttype); /* Add the terminal type to the global structure. */ if ((OG_D_STR(gp, GO_TERM) = OG_STR(gp, GO_TERM) = strdup(ttype)) == NULL) perr(gp->progname, NULL); /* Figure out how big the screen is. */ if (cl_ssize(NULL, 0, &rows, &cols, NULL)) exit (1); /* Add the rows and columns to the global structure. */ OG_VAL(gp, GO_LINES) = OG_D_VAL(gp, GO_LINES) = rows; OG_VAL(gp, GO_COLUMNS) = OG_D_VAL(gp, GO_COLUMNS) = cols; /* Ex wants stdout to be buffered. */ (void)setvbuf(stdout, NULL, _IOFBF, 0); /* Start catching signals. */ if (sig_init(gp, NULL)) exit (1); /* Run ex/vi. */ rval = editor(wp, argc, argv); /* Clean out the global structure. */ gs_end(gp); /* Clean up signals. */ sig_end(gp); /* Clean up the terminal. */ (void)cl_quit(gp); /* * XXX * Reset the O_MESG option. */ if (clp->tgw != TGW_UNKNOWN) (void)cl_omesg(NULL, clp, clp->tgw == TGW_SET); /* * XXX * Reset the X11 xterm icon/window name. */ if (F_ISSET(clp, CL_RENAME)) cl_setname(gp, clp->oname); /* If a killer signal arrived, pretend we just got it. */ if (clp->killersig) { (void)signal(clp->killersig, SIG_DFL); (void)kill(getpid(), clp->killersig); /* NOTREACHED */ } /* Free the global and CL private areas. */ #if defined(DEBUG) || defined(PURIFY) || defined(LIBRARY) cl_end(clp); free(gp); #endif exit (rval); }
/* * ip_main -- * This is the main loop for the vi-as-library editor. */ int main(int argc, char **argv) { IP_PRIVATE *ipp; int rval; char *ip_arg; char **p_av, **t_av; GS *gp; WIN *wp; int i_fd, o_fd, t_fd, main_ifd, main_ofd; /* Create and initialize the global structure. */ __global_list = gp = gs_init(argv[0]); /* * Strip out any arguments that vi isn't going to understand. There's * no way to portably call getopt twice, so arguments parsed here must * be removed from the argument list. */ ip_arg = NULL; for (p_av = t_av = argv;;) { if (*t_av == NULL) { *p_av = NULL; break; } if (!strcmp(*t_av, "--")) { while ((*p_av++ = *t_av++) != NULL); break; } if (!memcmp(*t_av, "-I", sizeof("-I") - 1)) { if (t_av[0][2] != '\0') { ip_arg = t_av[0] + 2; ++t_av; --argc; continue; } else if (t_av[1] != NULL) { ip_arg = t_av[1]; t_av += 2; argc -= 2; continue; } } *p_av++ = *t_av++; } if (get_fds(ip_arg, &main_ifd, &main_ofd)) return 1; wp = NULL; while (get_connection(wp, main_ifd, main_ofd, &i_fd, &o_fd, &t_fd, 1) == 0) { /* Create new window */ wp = gs_new_win(gp); /* Create and partially initialize the IP structure. */ if ((ipp = ip_init(wp, i_fd, o_fd, t_fd, argc, argv)) == NULL) return (1); gp->run(wp, run_editor, (void *)wp); } /* Clean out the global structure. */ gs_end(gp); /* Free the global and IP private areas. */ #if defined(DEBUG) || defined(PURIFY) || defined(LIBRARY) free(gp); #endif exit (rval); }
int main(int argc, char* argv[]) { printf("Moonlight Embedded %d.%d.%d (%s)\n", VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, COMPILE_OPTIONS); CONFIGURATION config; config_parse(argc, argv, &config); if (config.action == NULL || strcmp("help", config.action) == 0) help(); enum platform system = platform_check(config.platform); if (system == 0) { fprintf(stderr, "Platform '%s' not found\n", config.platform); exit(-1); } config.stream.supportsHevc = config.stream.supportsHevc || platform_supports_hevc(system); if (strcmp("map", config.action) == 0) { if (config.address == NULL) { perror("No filename for mapping"); exit(-1); } udev_init(!inputAdded, config.mapping); for (int i=0;i<config.inputsCount;i++) evdev_create(config.inputs[i].path, config.inputs[i].mapping); evdev_map(config.address); exit(0); } if (config.address == NULL) { config.address = malloc(MAX_ADDRESS_SIZE); if (config.address == NULL) { perror("Not enough memory"); exit(-1); } config.address[0] = 0; printf("Searching for server...\n"); gs_discover_server(config.address); if (config.address[0] == 0) { fprintf(stderr, "Autodiscovery failed. Specify an IP address next time.\n"); exit(-1); } } char host_config_file[128]; sprintf(host_config_file, "hosts/%s.conf", config.address); if (access(host_config_file, R_OK) != -1) config_file_parse(host_config_file, &config); SERVER_DATA server; server.address = config.address; printf("Connect to %s...\n", server.address); int ret; if ((ret = gs_init(&server, config.key_dir)) == GS_OUT_OF_MEMORY) { fprintf(stderr, "Not enough memory\n"); exit(-1); } else if (ret == GS_INVALID) { fprintf(stderr, "Invalid data received from server: %s\n", config.address, gs_error); exit(-1); } else if (ret == GS_UNSUPPORTED_VERSION) { if (!config.unsupported_version) { fprintf(stderr, "Unsupported version: %s\n", gs_error); exit(-1); } } else if (ret != GS_OK) { fprintf(stderr, "Can't connect to server %s\n", config.address); exit(-1); } printf("NVIDIA %s, GFE %s (protocol version %d)\n", server.gpuType, server.gfeVersion, server.serverMajorVersion); if (strcmp("list", config.action) == 0) { pair_check(&server); applist(&server); } else if (strcmp("stream", config.action) == 0) { pair_check(&server); if (IS_EMBEDDED(system)) { for (int i=0;i<config.inputsCount;i++) { printf("Add input %s (mapping %s)...\n", config.inputs[i].path, config.inputs[i].mapping); evdev_create(config.inputs[i].path, config.inputs[i].mapping); } udev_init(!inputAdded, config.mapping); evdev_init(); #ifdef HAVE_LIBCEC cec_init(); #endif /* HAVE_LIBCEC */ } #ifdef HAVE_SDL else if (system == SDL) sdl_init(config.stream.width, config.stream.height, config.fullscreen); #endif stream(&server, &config, system); } else if (strcmp("pair", config.action) == 0) { char pin[5]; sprintf(pin, "%d%d%d%d", (int)random() % 10, (int)random() % 10, (int)random() % 10, (int)random() % 10); printf("Please enter the following PIN on the target PC: %s\n", pin); if (gs_pair(&server, &pin[0]) != GS_OK) { fprintf(stderr, "Failed to pair to server: %s\n", gs_error); } else { printf("Succesfully paired\n"); } } else if (strcmp("unpair", config.action) == 0) { if (gs_unpair(&server) != GS_OK) { fprintf(stderr, "Failed to unpair to server: %s\n", gs_error); } else { printf("Succesfully unpaired\n"); } } else if (strcmp("quit", config.action) == 0) { pair_check(&server); gs_quit_app(&server); } else fprintf(stderr, "%s is not a valid action\n", config.action); }