void rov_main(int argc, char **argv) { int sockfd = -1, jsfd; FILE *config; struct js_layout layout; Bstrlib::CBString conf_path; int opt; conf_path = "joystick.conf"; /* handle opts */ while (opt = getopt(argc, argv, "hsCc:"), opt != -1) { switch(opt) { case 'h': print_help(argv[0]); exit(0); case 's': sockfd = 0; break; case 'C': //conf-mode break; case 'c': conf_path = optarg; break; case '?': throw_js_exception("unknown option"); } } if (sockfd) { int port; const char *msg = enough_args(argc); if (msg) throw_js_exception(msg); port = atoi(argv[argc - optind + 2]); const char *ip = argv[argc - optind + 3]; sockfd = cli_sock(port, ip); } else { if (argc - optind == 0) throw_js_exception("Missing js_path"); } /* open joystick */ if (jsfd = open(argv[argc - optind + 1], O_RDONLY ), jsfd < 0) throw_sys_exception("open %s", argv[argc - optind + 1]); /* read config */ config = fopen(conf_path, "r"); if (!config) throw_sys_exception("fopen"); js_load_config(config, layout); loop(sockfd, jsfd, layout); close(sockfd); close(jsfd); fclose(config); }
int main(int argc, char * const *argv) { const char *T_arg = NULL; const char *S_arg = NULL; const char *n_arg = NULL; int opt, sock; while ((opt = getopt(argc, argv, "n:S:T:t:")) != -1) { switch (opt) { case 'n': n_arg = optarg; break; case 'S': S_arg = optarg; break; case 'T': T_arg = optarg; break; case 't': timeout = strtod(optarg, NULL); break; default: usage(); } } argc -= optind; argv += optind; if (n_arg != NULL) { if (T_arg != NULL || S_arg != NULL) { usage(); } sock = n_arg_sock(n_arg); } else if (T_arg == NULL) { sock = n_arg_sock(""); } else { assert(T_arg != NULL); sock = cli_sock(T_arg, S_arg); } if (sock < 0) exit(2); if (argc > 0) do_args(sock, argc, argv); else { if (isatty(0)) { interactive(sock); } else { pass(sock); } } exit(0); }
static int n_arg_sock(const char *n_arg) { char *T_arg = NULL, *T_start = NULL; char *S_arg = NULL; struct VSM_data *vsm; char *p; int sock; struct VSM_fantom vt; vsm = VSM_New(); AN(vsm); if (VSM_n_Arg(vsm, n_arg) < 0) { fprintf(stderr, "%s\n", VSM_Error(vsm)); VSM_Delete(vsm); return (-1); } if (VSM_Open(vsm)) { fprintf(stderr, "%s\n", VSM_Error(vsm)); VSM_Delete(vsm); return (-1); } if (!VSM_Get(vsm, &vt, "Arg", "-T", "")) { fprintf(stderr, "No -T arg in shared memory\n"); VSM_Delete(vsm); return (-1); } AN(vt.b); T_start = T_arg = strdup(vt.b); if (VSM_Get(vsm, &vt, "Arg", "-S", "")) { AN(vt.b); S_arg = strdup(vt.b); } VSM_Delete(vsm); sock = -1; while (*T_arg) { p = strchr(T_arg, '\n'); AN(p); *p = '\0'; sock = cli_sock(T_arg, S_arg); if (sock >= 0) break; T_arg = p + 1; } free(T_start); free(S_arg); return (sock); }
int main(int argc, char **argv) { int fd; if (argc < 3) return -1; fd = cli_sock(atoi(argv[1]), argv[2]); const char *msg = "Test msg"; send (fd, (const char *)msg, sizeof(msg), 0); return 0; }
static int n_arg_sock(const char *n_arg) { char *T_arg = NULL, *T_start = NULL; char *S_arg = NULL; struct VSM_data *vsd; char *p; int sock; vsd = VSM_New(); assert(VSL_Arg(vsd, 'n', n_arg)); if (VSM_Open(vsd, 1)) { fprintf(stderr, "Could not open shared memory\n"); return (-1); } if (T_arg == NULL) { p = VSM_Find_Chunk(vsd, "Arg", "-T", "", NULL); if (p == NULL) { fprintf(stderr, "No -T arg in shared memory\n"); return (-1); } T_start = T_arg = strdup(p); } if (S_arg == NULL) { p = VSM_Find_Chunk(vsd, "Arg", "-S", "", NULL); if (p != NULL) S_arg = strdup(p); } sock = -1; while (*T_arg) { p = strchr(T_arg, '\n'); AN(p); *p = '\0'; sock = cli_sock(T_arg, S_arg); if (sock >= 0) break; T_arg = p + 1; } free(T_start); free(S_arg); return (sock); }
int main(int argc, char * const *argv) { const char *T_arg = NULL; const char *S_arg = NULL; const char *n_arg = NULL; int opt, sock; /* * By default linux::getopt(3) mangles the argv order, such that * varnishadm -n bla param.set foo -bar * gets interpreted as * varnishadm -n bla -bar param.set foo * The '+' stops that from happening * See #1496 */ while ((opt = getopt(argc, argv, "+n:S:T:t:")) != -1) { switch (opt) { case 'n': n_arg = optarg; break; case 'S': S_arg = optarg; break; case 'T': T_arg = optarg; break; case 't': timeout = VNUM(optarg); if (isnan(timeout)) usage(); break; default: usage(); } } argc -= optind; argv += optind; if (n_arg != NULL) { if (T_arg != NULL || S_arg != NULL) { usage(); } sock = n_arg_sock(n_arg); } else if (T_arg == NULL) { sock = n_arg_sock(""); } else { assert(T_arg != NULL); sock = cli_sock(T_arg, S_arg); } if (sock < 0) exit(2); if (argc > 0) do_args(sock, argc, argv); else { if (isatty(0)) { interactive(sock); } else { pass(sock); } } exit(0); }