annotate rvinterf/etmsync/tmsmain.c @ 1011:6d9b10633f10 default tip

etmsync Pirelli IMEI retrieval: fix poor use of printf() Bug reported by Vadim Yanitskiy <fixeria@osmocom.org>: the construct where a static-allocated string was passed to printf() without any format arguments causes newer compilers to report a security problem. Given that formatted output is not needed here, just fixed string output, change printf() to fputs(), and direct the error message to stderr while at it.
author Mychaela Falconia <falcon@freecalypso.org>
date Thu, 23 May 2024 17:29:57 +0000
parents e40bb5a6c6b9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }