annotate rvinterf/tmsh/audioresp.c @ 465:003e48f8ebe1

rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel I generally don't use NULL and use plain 0 instead, based on a "NULL considered harmful" discussion on the classiccmp mailing list many aeons ago (I couldn't find it, and I reason that it must have been 2005 or earlier), but a recent complaint by a packager sent me searching, and I found this: https://ewontfix.com/11/ While I don't give a @#$% about "modern" systems and code-nazi tools, I realized that passing a plain 0 as a pointer sentinel in execl is wrong because it will break on systems where pointers are longer than the plain int type. Again, I don't give a @#$% about the abomination of x86_64 and the like, but if anyone ever manages to port my code to something like a PDP-11 (16-bit int, 32-bit long and pointers), then passing a plain 0 as a function argument where a pointer is expected most definitely won't work: if the most natural stack slot and SP alignment unit is 16 bits, fitting an int, with longs and pointers taking up two such slots, then the call stack will be totally wrong with a plain 0 passed for a pointer. Casting the 0 to (char *) ought to be the most kosher solution for the most retro systems possible.
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 11 Feb 2019 00:00:19 +0000
parents ce7479d28b02
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /*
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2 * In this module we are going to implement the handling of ETM_AUDIO responses.
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 */
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include <sys/types.h>
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6 #include <stdio.h>
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 #include <string.h>
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 #include <strings.h>
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 #include <stdlib.h>
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 #include "pktmux.h"
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 #include "limits.h"
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 #include "localtypes.h"
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 #include "etm.h"
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 extern u_char rvi_msg[];
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16 extern int rvi_msg_len;
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 static void
160
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
19 aul_aus_response(op)
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
20 char *op;
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 {
160
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
22 char buf[80];
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23
160
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
24 if (rvi_msg_len != 6) {
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
25 sprintf(buf, "%s response wrong length", op);
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
26 print_etm_pkt_raw(buf);
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
27 return;
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
28 }
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
29 if (rvi_msg[3])
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
30 sprintf(buf, "%s error %u (0x%02X)", op,
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
31 rvi_msg[3], rvi_msg[3]);
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
32 else
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
33 sprintf(buf, "%s OK", op);
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
34 async_msg_output(buf);
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 }
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 static void
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 aur_response()
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 {
162
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
40 char buf[80], *dp;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
41 unsigned i, j, l, size;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
42
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
43 if (rvi_msg_len < 7) {
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
44 tooshort: print_etm_pkt_raw("aur response too short");
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
45 return;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
46 }
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
47 if (rvi_msg[3]) {
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
48 if (rvi_msg_len == 7) {
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
49 sprintf(buf, "aur %u error %u (0x%02X)", rvi_msg[5],
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
50 rvi_msg[3], rvi_msg[3]);
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
51 async_msg_output(buf);
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
52 } else
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
53 print_etm_pkt_raw("aur long error response");
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
54 return;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
55 }
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
56 if (rvi_msg_len < 8)
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
57 goto tooshort;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
58 size = rvi_msg_len - 7;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
59 sprintf(buf, "aur %u: %u byte%s", rvi_msg[5], size,
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
60 size != 1 ? "s" : "");
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
61 async_msg_output(buf);
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
62 for (i = 0; i < size; ) {
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
63 l = size - i;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
64 if (l > 16)
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
65 l = 16;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
66 sprintf(buf, "offset %02X:", i);
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
67 dp = index(buf, '\0');
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
68 for (j = 0; j < l; j++) {
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
69 if (j == 0 || j == 8)
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
70 *dp++ = ' ';
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
71 sprintf(dp, " %02X", rvi_msg[i + 6]);
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
72 i++;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
73 dp += 3;
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
74 }
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
75 async_msg_output(buf);
ce7479d28b02 fc-tmsh: aur response handling implemented
Mychaela Falconia <falcon@freecalypso.org>
parents: 161
diff changeset
76 }
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
77 }
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
78
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
79 static void
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
80 auw_response()
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
81 {
161
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
82 char buf[80];
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
83
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
84 if (rvi_msg_len != 7) {
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
85 print_etm_pkt_raw("auw response wrong length");
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
86 return;
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
87 }
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
88 if (rvi_msg[3])
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
89 sprintf(buf, "auw %u error %u (0x%02X)", rvi_msg[5],
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
90 rvi_msg[3], rvi_msg[3]);
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
91 else
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
92 sprintf(buf, "auw %u OK", rvi_msg[5]);
da6950e936bf fc-tmsh: proper handling of auw responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 160
diff changeset
93 async_msg_output(buf);
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
94 }
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
95
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
96 void
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
97 etm_audio_msg_rx()
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
98 {
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
99 switch (rvi_msg[4]) {
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
100 case 'L':
160
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
101 aul_aus_response("aul");
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
102 return;
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
103 case 'S':
160
e4c98a2c1673 fc-tmsh: implemented proper handling of aul and aus responses
Mychaela Falconia <falcon@freecalypso.org>
parents: 159
diff changeset
104 aul_aus_response("aus");
159
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
105 return;
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
106 case 'R':
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
107 aur_response();
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
108 return;
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
109 case 'W':
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
110 auw_response();
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
111 return;
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
112 default:
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
113 unknown:
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
114 print_etm_pkt_raw("ETM_AUDIO");
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
115 }
8fac4aaec230 fc-tmsh: beginning of intelligent ETM_AUDIO response handling
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
116 }