275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 1 /*
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 2 * This module contains the main() function for fc-fsio.
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 3 */
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 4
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 5 #include <stdio.h>
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 6 #include <stdlib.h>
276
+ − 7 #include <unistd.h>
+ − 8 #include "exitcodes.h"
275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 9
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 10 char *socket_pathname = "/tmp/rvinterf_socket";
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 11 int sock;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 12
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 13 extern char *rvinterf_ttyport, *rvinterf_Bopt, *rvinterf_lopt, *rvinterf_wopt;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 14
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 15 main(argc, argv)
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 16 char **argv;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 17 {
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 18 extern int optind;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 19 extern char *optarg;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 20 int c, sopt = 0;
276
+ − 21 char command[512];
275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 22
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 23 while ((c = getopt(argc, argv, "B:l:p:s:w:")) != EOF)
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 24 switch (c) {
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 25 case 'B':
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 26 rvinterf_Bopt = optarg;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 27 continue;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 28 case 'l':
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 29 rvinterf_lopt = optarg;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 30 continue;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 31 case 'p':
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 32 rvinterf_ttyport = optarg;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 33 continue;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 34 case 's':
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 35 socket_pathname = optarg;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 36 sopt++;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 37 continue;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 38 case 'w':
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 39 rvinterf_wopt = optarg;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 40 continue;
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 41 case '?':
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 42 default:
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 43 usage: fprintf(stderr,
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 44 "usage: %s [options] [command]\n", argv[0]);
276
+ − 45 exit(ERROR_USAGE);
275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 46 }
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 47 if (rvinterf_ttyport) {
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 48 if (sopt) {
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 49 fprintf(stderr,
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 50 "%s error: -p and -s options are mutually exclusive\n",
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 51 argv[0]);
276
+ − 52 exit(ERROR_USAGE);
275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 53 }
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 54 launch_rvinterf();
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 55 } else {
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 56 if (rvinterf_Bopt || rvinterf_lopt || rvinterf_wopt) {
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 57 fprintf(stderr,
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 58 "%s error: -B, -l and -w options are meaningful only when launching rvinterf\n",
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 59 argv[0]);
276
+ − 60 exit(ERROR_USAGE);
275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 61 }
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 62 connect_local_socket();
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 63 }
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 64
296
+ − 65 setlinebuf(stdout);
280
+ − 66 if (argv[optind])
+ − 67 return dispatch_ready_argv(argc - optind, argv + optind);
276
+ − 68 for (;;) {
+ − 69 if (isatty(0)) {
277
+ − 70 rx_control(0);
276
+ − 71 fputs("fsio> ", stdout);
+ − 72 fflush(stdout);
+ − 73 }
+ − 74 if (!fgets(command, sizeof command, stdin))
+ − 75 exit(0);
+ − 76 parse_and_dispatch_cmd(command, 0);
+ − 77 }
275
cedf09b6b5ac
started laying the foundation for fc-fsio host utility
Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
parents:
diff
changeset
+ − 78 }