| 228 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 #include <sys/types.h> | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 #include <sys/errno.h> | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 #include <stdio.h> | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 #include <stdlib.h> | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 #include <unistd.h> | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 #include <rvinterf/exitcodes.h> | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 char *socket_pathname = "/tmp/rvinterf_socket"; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 int sock; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 int adccal_a, adccal_b; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 main(argc, argv) | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 	char **argv; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 { | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 	extern int optind; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 	extern char *optarg; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 	int c, sopt = 0; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 	fd_set fds; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 	while ((c = getopt(argc, argv, "s:")) != EOF) | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 		switch (c) { | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 		case 's': | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 			socket_pathname = optarg; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 			sopt++; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 			continue; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 		case '?': | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 		default: | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 			/* error msg already printed */ | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 			exit(ERROR_USAGE); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 		} | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 	if (argc != optind + 2) { | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 		fprintf(stderr, "usage: %s adccal-a adccal-b\n", argv[0]); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 		exit(ERROR_USAGE); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 	} | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 	adccal_a = atoi(argv[optind]); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 	adccal_b = atoi(argv[optind+1]); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 	connect_local_socket(); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 	init(); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 	for (;;) { | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 		FD_ZERO(&fds); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 		FD_SET(sock, &fds); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 		c = select(sock+1, &fds, 0, 0, 0); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 		if (c < 0) { | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 			if (errno == EINTR) | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 				continue; | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 			perror("select"); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 			exit(ERROR_UNIX); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 		} | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 		if (FD_ISSET(sock, &fds)) | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 			handle_rvinterf_input(); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 		fflush(stdout); | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 	} | 
| 
Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 } |