int open_socket ( char *name, int default_port ) { int fd ; struct sockaddr_in serv_addr ; char server[256] ; char ipc[32] ; int port ; memset ( (char *) &serv_addr, 0, sizeof(serv_addr) ) ; parsename ( name, default_port, server, &port ) ; name2ip(server, (struct in_addr *)&serv_addr.sin_addr.s_addr, ipc ) ; serv_addr.sin_family = AF_INET ; serv_addr.sin_port = htons ( port ) ; if ( (fd = socket(PF_INET, SOCK_STREAM, 0 )) < 0 ) { register_error ( 1, "Can't open stream socket\n" ) ; fd = -1 ; } else if ( connect(fd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0 ) { close ( fd ) ; fd = -1 ; } else { ignoreSIGPIPE() ; } return fd ; }
int main(int argc, char *argv[]) { eBoxType vBoxType = LircdName; Context_t context; /* Dagobert: if tuxtxt closes the socket while * we are writing a sigpipe occures which kills * evremote/wait4button. so lets ignore it ... */ ignoreSIGPIPE(); if (argc >= 2 && (!strncmp(argv[1], "-h", 2) || !strncmp(argv[1], "--help", 6))) { printf("USAGE:\n"); printf("wait4button [<button code>] returns code of pressed button on RC.\n"); printf("Parameter(s) description:\n"); printf("<button code> - defines specific button code to wait for\n"); return 0; } selectRemote(&context, vBoxType); if (argc >= 2) { wait4KeyCode = atoi(argv[1]); printf("Waiting for %i on %s\n", wait4KeyCode, ((RemoteControl_t *)context.r)->Name); } else printf("Using %s\n", ((RemoteControl_t *)context.r)->Name); if (((RemoteControl_t *)context.r)->RemoteControl != NULL) { printf("RemoteControl Map:\n"); printKeyMap((tButton *)((RemoteControl_t *)context.r)->RemoteControl); } if (((RemoteControl_t *)context.r)->Frontpanel != NULL) { printf("Frontpanel Map:\n"); printKeyMap((tButton *)((RemoteControl_t *)context.r)->Frontpanel); } processSimple(&context, argc, argv); return vCurrentCode; }