vm_connection_t vm_connect() { unsigned long port; char* host = NULL; char* inet = NULL; vm_connection_t con = VOICEMAN_BAD_CONNECTION; char* vm=getenv("VOICEMAN"); if (vm == NULL || vm[0] == '\0') return vm_connect_unix(VOICEMAN_DEFAULT_SOCKET); inet=check_inet_prefix(vm); if (inet == NULL) return vm_connect_unix(vm); host = (char*)malloc(strlen(inet) + 1); if (host == NULL) return VOICEMAN_BAD_CONNECTION; if (!parse_inet_str(inet, host, &port)) { free(host); return VOICEMAN_BAD_CONNECTION; } con = vm_connect_inet(host, port); free(host); return con; }
int main(int argc, char **argv) { struct sigaction action; char *filepath = NULL; struct in_addr srv_inetaddr; int port = DEFAULT_SERVER_SID; int family = AF_SERVAL; server_srvid.s_sid32[0] = htonl(DEFAULT_SERVER_SID); memset (&action, 0, sizeof(struct sigaction)); action.sa_handler = signal_handler; /* This server should shut down on these signals. */ sigaction(SIGTERM, &action, 0); sigaction(SIGHUP, &action, 0); sigaction(SIGINT, &action, 0); progname = argv[0]; argc--; argv++; while (argc && argv) { if (strcmp("-f", argv[0]) == 0 || strcmp("--file", argv[0]) == 0) { if (argv[1]) { filepath = argv[1]; argc--; argv++; } } else if (strcmp("-i", argv[0]) == 0 || strcmp("--inet", argv[0]) == 0) { if (argv[1] && parse_inet_str(argv[1], &srv_inetaddr, &port) == 1) { family = AF_INET; argc--; argv++; } } else if (strcmp("-h", argv[0]) == 0 || strcmp("--help", argv[0]) == 0) { print_help(); return EXIT_SUCCESS; } else if (strcmp("-s", argv[0]) == 0 || strcmp("--serviceid", argv[0]) == 0) { char *endptr = NULL; unsigned long sid = strtoul(argv[1], &endptr, 10); if (*endptr != '\0') { fprintf(stderr, "invalid service id %s", argv[1]); return EXIT_FAILURE; } else { server_srvid.s_sid32[0] = htonl(sid); } argc--; argv++; } else { print_help(); return EXIT_FAILURE; } argc--; argv++; } return client(filepath, family == AF_INET ? &srv_inetaddr : NULL, port); }