FreeCalypso > hg > freecalypso-tools
annotate rvinterf/etmsync/tmsmain.c @ 980:0a4d19aab608
PL129N lock-state cosmetic: 256 KiB blocks are single sectors
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 02 Dec 2023 04:31:58 +0000 |
parents | e40bb5a6c6b9 |
children |
rev | line source |
---|---|
269
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This module contains the main() function for fc-tmsync. |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <stdio.h> |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <stdlib.h> |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <unistd.h> |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include "exitcodes.h" |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 extern char *socket_pathname; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 extern char *rvinterf_ttyport, *rvinterf_Bopt, *rvinterf_lopt, *rvinterf_wopt; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 main(argc, argv) |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
14 char **argv; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 extern int optind; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 extern char *optarg; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 int c, sopt = 0; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
19 char command[512]; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 while ((c = getopt(argc, argv, "+B:l:p:s:w:")) != EOF) |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 switch (c) { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 case 'B': |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 rvinterf_Bopt = optarg; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 continue; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 case 'l': |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
27 rvinterf_lopt = optarg; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 continue; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 case 'p': |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 rvinterf_ttyport = optarg; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 continue; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 case 's': |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 socket_pathname = optarg; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 sopt++; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 continue; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 case 'w': |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
37 rvinterf_wopt = optarg; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
38 continue; |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
39 case '?': |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 default: |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 /* error msg already printed */ |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 exit(ERROR_USAGE); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 } |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 if (rvinterf_ttyport) { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 if (sopt) { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 fprintf(stderr, |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 "%s error: -p and -s options are mutually exclusive\n", |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 argv[0]); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 exit(ERROR_USAGE); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 } |
423
e40bb5a6c6b9
rvinterf clients: implemented 30 ms delay for batch ops with -p
Mychaela Falconia <falcon@freecalypso.org>
parents:
269
diff
changeset
|
51 launch_rvinterf(argv[optind] || !isatty(0)); |
269
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
52 } else { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
53 if (rvinterf_Bopt || rvinterf_lopt || rvinterf_wopt) { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
54 fprintf(stderr, |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
55 "%s error: -B, -l and -w options are meaningful only when launching rvinterf\n", |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 argv[0]); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 exit(ERROR_USAGE); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 } |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 connect_local_socket(); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 } |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 setlinebuf(stdout); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 if (argv[optind]) |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 return dispatch_ready_argv(argc - optind, argv + optind); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 for (;;) { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 if (isatty(0)) { |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 rx_control(0); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 fputs("tmsync> ", stdout); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 fflush(stdout); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 } |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 if (!fgets(command, sizeof command, stdin)) |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 exit(0); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 parse_and_dispatch_cmd(command, 0); |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 } |
20ed7a320b12
fc-tmsync skeleton started
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 } |