FreeCalypso > hg > freecalypso-sw
view rvinterf/g23sh/main.c @ 441:b23743555ca8
OSL: os_sem_fl.c started
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Mon, 23 Jun 2014 00:23:49 +0000 |
parents | 922efdd65dce |
children |
line wrap: on
line source
/* * This module contains the main() function for g23sh. */ #include <sys/types.h> #include <sys/errno.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> char *socket_pathname = "/tmp/rvinterf_socket"; int ttyhacks, dflag; int sock; extern char *rvinterf_Bopt, *rvinterf_lopt, *rvinterf_wopt; main(argc, argv) char **argv; { extern int optind; extern char *optarg; int c; fd_set fds; while ((c = getopt(argc, argv, "B:dl:s:w:")) != EOF) switch (c) { case 'B': rvinterf_Bopt = optarg; continue; case 'd': dflag++; continue; case 'l': rvinterf_lopt = optarg; continue; case 's': socket_pathname = optarg; continue; case 'w': rvinterf_wopt = optarg; continue; case '?': default: usage: fprintf(stderr, "usage: %s [options] [ttyport]\n", argv[0]); exit(1); } switch (argc - optind) { case 0: if (rvinterf_Bopt || rvinterf_lopt || rvinterf_wopt) { fprintf(stderr, "%s: -B, -l and -w options are meaningful only when launching rvinterf\n", argv[0]); exit(1); } break; case 1: launch_rvinterf(argv[optind]); break; default: goto usage; } ttyhacks = isatty(0) && !dflag; init(); tty_init(); for (;;) { FD_ZERO(&fds); FD_SET(0, &fds); FD_SET(sock, &fds); c = select(sock+1, &fds, 0, 0, 0); if (c < 0) { if (errno == EINTR) continue; tty_cleanup(); perror("select"); exit(1); } if (FD_ISSET(0, &fds)) handle_tty_input(); if (FD_ISSET(sock, &fds)) handle_rvinterf_input(); fflush(stdout); } }