Compare commits

..

1 Commits

Author SHA1 Message Date
James 6245ad6de9
Merge 87cdf4dc84 into 44e6eb45e3 2026-03-09 12:30:12 +01:00
1 changed files with 9 additions and 29 deletions

View File

@ -153,7 +153,7 @@ int main(void)
char buf[MAXLEN]; char buf[MAXLEN];
char format[FORMATSZ]; char format[FORMATSZ];
char rxmsg[64]; char rxmsg[50];
#pragma GCC diagnostic push #pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wpragmas" #pragma GCC diagnostic ignored "-Wpragmas"
@ -234,7 +234,7 @@ int main(void)
} }
while (1) { while (1) {
again:
FD_ZERO(&readfds); FD_ZERO(&readfds);
FD_SET(sc, &readfds); FD_SET(sc, &readfds);
FD_SET(sa, &readfds); FD_SET(sa, &readfds);
@ -242,8 +242,6 @@ again:
select((sc > sa)?sc+1:sa+1, &readfds, NULL, NULL, NULL); select((sc > sa)?sc+1:sa+1, &readfds, NULL, NULL, NULL);
if (FD_ISSET(sc, &readfds)) { if (FD_ISSET(sc, &readfds)) {
size_t size = sizeof(rxmsg);
int len = 0, res;
recvfrom(sc, &msg, sizeof(msg), 0, recvfrom(sc, &msg, sizeof(msg), 0,
(struct sockaddr*)&caddr, &caddrlen); (struct sockaddr*)&caddr, &caddrlen);
@ -251,35 +249,17 @@ again:
ifr.ifr_ifindex = caddr.can_ifindex; ifr.ifr_ifindex = caddr.can_ifindex;
ioctl(sc, SIOCGIFNAME, &ifr); ioctl(sc, SIOCGIFNAME, &ifr);
res = snprintf(rxmsg, size, "< %s %03X %d ", ifr.ifr_name, sprintf(rxmsg, "< %s %03X %d ", ifr.ifr_name,
msg.msg_head.can_id, msg.frame.can_dlc); msg.msg_head.can_id, msg.frame.can_dlc);
if (res < 0 || (size_t)res >= size) {
printf("Error: rxmsg buffer (size %zu) too small for data.\n", size);
continue;
}
len += res; for ( i = 0; i < msg.frame.can_dlc; i++)
sprintf(rxmsg + strlen(rxmsg), "%02X ",
for (i = 0; i < msg.frame.can_dlc; i++) { msg.frame.data[i]);
res = snprintf(rxmsg + len, size - len, "%02X ", msg.frame.data[i]);
if (res < 0 || (size_t)res >= (size - len)) {
printf("Error: rxmsg buffer (size %zu) too small for data.\n", size);
goto again;
}
len += res;
}
/* delimiter '\0' for Adobe(TM) Flash(TM) XML sockets */ /* delimiter '\0' for Adobe(TM) Flash(TM) XML sockets */
res = snprintf(rxmsg + len, size - len, ">"); strcat(rxmsg, ">\0");
if (res < 0 || (size_t)res >= (size - len)) {
printf("Error: rxmsg buffer (size %zu) too small for data.\n", size);
continue;
}
len += res; send(sa, rxmsg, strlen(rxmsg) + 1, 0);
send(sa, rxmsg, len + 1, 0);
} }