|
@ -1,581 +0,0 @@ |
|
|
From 791b6de78673f005e9748983231f7260f6b69e99 Mon Sep 17 00:00:00 2001 |
|
|
|
|
|
From: Marc Kleine-Budde <mkl@pengutronix.de> |
|
|
|
|
|
Date: Wed, 30 Oct 2019 11:59:49 +0100 |
|
|
|
|
|
Subject: [PATCH] treewide: Fix compilation on libmusl, replace error() by |
|
|
|
|
|
err() |
|
|
|
|
|
|
|
|
|
|
|
Reported-by: Brandon Ros <brandonros1@gmail.com> |
|
|
|
|
|
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> |
|
|
|
|
|
---
|
|
|
|
|
|
jacd.c | 56 ++++++++++++++++++++++++++--------------------------- |
|
|
|
|
|
jspy.c | 26 ++++++++++++------------- |
|
|
|
|
|
jsr.c | 28 +++++++++++++-------------- |
|
|
|
|
|
libj1939.c | 4 ++-- |
|
|
|
|
|
testj1939.c | 23 +++++++++++----------- |
|
|
|
|
|
5 files changed, 68 insertions(+), 69 deletions(-) |
|
|
|
|
|
|
|
|
|
|
|
diff --git a/jacd.c b/jacd.c
|
|
|
|
|
|
index 83275e2..0b7469b 100644
|
|
|
|
|
|
--- a/jacd.c
|
|
|
|
|
|
+++ b/jacd.c
|
|
|
|
|
|
@@ -19,7 +19,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include <unistd.h> |
|
|
|
|
|
#include <getopt.h> |
|
|
|
|
|
-#include <error.h>
|
|
|
|
|
|
+#include <err.h>
|
|
|
|
|
|
#include <sys/time.h> |
|
|
|
|
|
#include <sys/socket.h> |
|
|
|
|
|
#include <net/if.h> |
|
|
|
|
|
@@ -154,12 +154,12 @@ static int parse_range(char *str)
|
|
|
|
|
|
for (tok = strtok(str, ",;"); tok; tok = strtok(NULL, ",;")) { |
|
|
|
|
|
a0 = ae = strtoul(tok, &endp, 0); |
|
|
|
|
|
if (endp <= tok) |
|
|
|
|
|
- error(1, 0, "parsing range '%s'", tok);
|
|
|
|
|
|
+ err(1, "parsing range '%s'", tok);
|
|
|
|
|
|
if (*endp == '-') { |
|
|
|
|
|
tok = endp+1; |
|
|
|
|
|
ae = strtoul(tok, &endp, 0); |
|
|
|
|
|
if (endp <= tok) |
|
|
|
|
|
- error(1, 0, "parsing addr '%s'", tok);
|
|
|
|
|
|
+ err(1, "parsing addr '%s'", tok);
|
|
|
|
|
|
if (ae < a0) |
|
|
|
|
|
ae = a0; |
|
|
|
|
|
} |
|
|
|
|
|
@@ -204,21 +204,21 @@ static int open_socket(const char *device, uint64_t name)
|
|
|
|
|
|
fprintf(stderr, "- socket(PF_CAN, SOCK_DGRAM, CAN_J1939);\n"); |
|
|
|
|
|
sock = ret = socket(PF_CAN, SOCK_DGRAM, CAN_J1939); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "socket(j1939)");
|
|
|
|
|
|
+ err(1, "socket(j1939)");
|
|
|
|
|
|
|
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
fprintf(stderr, "- setsockopt(, SOL_SOCKET, SO_BINDTODEVICE, %s, %zd);\n", device, strlen(device)); |
|
|
|
|
|
ret = setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, |
|
|
|
|
|
device, strlen(device)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "bindtodevice %s", device);
|
|
|
|
|
|
+ err(1, "bindtodevice %s", device);
|
|
|
|
|
|
|
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
fprintf(stderr, "- setsockopt(, SOL_CAN_J1939, SO_J1939_FILTER, <filter>, %zd);\n", sizeof(filt)); |
|
|
|
|
|
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_FILTER, |
|
|
|
|
|
&filt, sizeof(filt)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt filter");
|
|
|
|
|
|
+ err(1, "setsockopt filter");
|
|
|
|
|
|
|
|
|
|
|
|
value = 1; |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
@@ -226,13 +226,13 @@ static int open_socket(const char *device, uint64_t name)
|
|
|
|
|
|
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_RECV_OWN, |
|
|
|
|
|
&value, sizeof(value)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt receive own msgs");
|
|
|
|
|
|
+ err(1, "setsockopt receive own msgs");
|
|
|
|
|
|
|
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
fprintf(stderr, "- bind(, %s, %zi);\n", libj1939_addr2str(&saddr), sizeof(saddr)); |
|
|
|
|
|
ret = bind(sock, (void *)&saddr, sizeof(saddr)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "bind()");
|
|
|
|
|
|
+ err(1, "bind()");
|
|
|
|
|
|
return sock; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@@ -249,7 +249,7 @@ static int repeat_address(int sock, uint64_t name)
|
|
|
|
|
|
fprintf(stderr, "- send(, %" PRId64 ", 8, 0);\n", name); |
|
|
|
|
|
ret = send(sock, dat, 8, 0); |
|
|
|
|
|
if (must_warn(ret)) |
|
|
|
|
|
- error(1, errno, "send address claim for 0x%02x", s.last_sa);
|
|
|
|
|
|
+ err(1, "send address claim for 0x%02x", s.last_sa);
|
|
|
|
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
static int claim_address(int sock, uint64_t name, int sa) |
|
|
|
|
|
@@ -269,7 +269,7 @@ static int claim_address(int sock, uint64_t name, int sa)
|
|
|
|
|
|
fprintf(stderr, "- bind(, %s, %zi);\n", libj1939_addr2str(&saddr), sizeof(saddr)); |
|
|
|
|
|
ret = bind(sock, (void *)&saddr, sizeof(saddr)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "rebind with sa 0x%02x", sa);
|
|
|
|
|
|
+ err(1, "rebind with sa 0x%02x", sa);
|
|
|
|
|
|
s.last_sa = sa; |
|
|
|
|
|
return repeat_address(sock, name); |
|
|
|
|
|
} |
|
|
|
|
|
@@ -288,7 +288,7 @@ static int request_addresses(int sock)
|
|
|
|
|
|
fprintf(stderr, "- sendto(, { 0, 0xee, 0, }, %zi, 0, %s, %zi);\n", sizeof(dat), libj1939_addr2str(&saddr), sizeof(saddr)); |
|
|
|
|
|
ret = sendto(sock, dat, sizeof(dat), 0, (void *)&saddr, sizeof(saddr)); |
|
|
|
|
|
if (must_warn(ret)) |
|
|
|
|
|
- error(1, errno, "send request for address claims");
|
|
|
|
|
|
+ err(1, "send request for address claims");
|
|
|
|
|
|
return ret; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@@ -356,7 +356,7 @@ static void install_signal(int sig)
|
|
|
|
|
|
sigfillset(&sigact.sa_mask); |
|
|
|
|
|
ret = sigaction(sig, &sigact, NULL); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "sigaction for signal %i", sig);
|
|
|
|
|
|
+ err(1, "sigaction for signal %i", sig);
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void schedule_itimer(int msec) |
|
|
|
|
|
@@ -372,7 +372,7 @@ static void schedule_itimer(int msec)
|
|
|
|
|
|
ret = setitimer(ITIMER_REAL, &val, NULL); |
|
|
|
|
|
} while ((ret < 0) && (errno == EINTR)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setitimer %i msec", msec);
|
|
|
|
|
|
+ err(1, "setitimer %i msec", msec);
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* dump status */ |
|
|
|
|
|
@@ -413,7 +413,7 @@ static void save_cache(void)
|
|
|
|
|
|
return; |
|
|
|
|
|
fp = fopen(s.cachefile, "w"); |
|
|
|
|
|
if (!fp) |
|
|
|
|
|
- error(1, errno, "fopen %s, w", s.cachefile);
|
|
|
|
|
|
+ err(1, "fopen %s, w", s.cachefile);
|
|
|
|
|
|
|
|
|
|
|
|
time(&t); |
|
|
|
|
|
fprintf(fp, "# saved on %s\n", ctime(&t)); |
|
|
|
|
|
@@ -436,7 +436,7 @@ static void restore_cache(void)
|
|
|
|
|
|
if (!fp) { |
|
|
|
|
|
if (ENOENT == errno) |
|
|
|
|
|
return; |
|
|
|
|
|
- error(1, errno, "fopen %s, r", s.cachefile);
|
|
|
|
|
|
+ err(1, "fopen %s, r", s.cachefile);
|
|
|
|
|
|
} |
|
|
|
|
|
while (!feof(fp)) { |
|
|
|
|
|
ret = getline(&line, &sz, fp); |
|
|
|
|
|
@@ -486,7 +486,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
#ifdef _GNU_SOURCE |
|
|
|
|
|
asprintf(&program_invocation_name, "%s.%s", program_invocation_short_name, optarg); |
|
|
|
|
|
#else |
|
|
|
|
|
- error(0, 0, "compile with -D_GNU_SOURCE to use -p");
|
|
|
|
|
|
+ err(0, "compile with -D_GNU_SOURCE to use -p");
|
|
|
|
|
|
#endif |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
@@ -505,18 +505,18 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
|
|
|
|
|
|
ret = parse_range(s.ranges); |
|
|
|
|
|
if (!ret) |
|
|
|
|
|
- error(1, 0, "no addresses in range");
|
|
|
|
|
|
+ err(1, "no addresses in range");
|
|
|
|
|
|
|
|
|
|
|
|
if ((s.current_sa < J1939_IDLE_ADDR) && !(addr[s.current_sa].flags & F_USE)) { |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "forget saved address 0x%02x", s.current_sa);
|
|
|
|
|
|
+ err(0, "forget saved address 0x%02x", s.current_sa);
|
|
|
|
|
|
s.current_sa = J1939_IDLE_ADDR; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "ready for %s:%016llx", s.intf, (long long)s.name);
|
|
|
|
|
|
+ err(0, "ready for %s:%016llx", s.intf, (long long)s.name);
|
|
|
|
|
|
if (!s.intf || !s.name) |
|
|
|
|
|
- error(1, 0, "bad arguments");
|
|
|
|
|
|
+ err(1, "bad arguments");
|
|
|
|
|
|
ret = sock = open_socket(s.intf, s.name); |
|
|
|
|
|
|
|
|
|
|
|
install_signal(SIGTERM); |
|
|
|
|
|
@@ -534,7 +534,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
case STATE_INITIAL: |
|
|
|
|
|
ret = request_addresses(sock); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "could not sent initial request");
|
|
|
|
|
|
+ err(1, "could not sent initial request");
|
|
|
|
|
|
s.state = STATE_REQ_SENT; |
|
|
|
|
|
break; |
|
|
|
|
|
case STATE_REQ_PENDING: |
|
|
|
|
|
@@ -544,7 +544,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
/* claim addr */ |
|
|
|
|
|
sa = choose_new_sa(s.name, s.current_sa); |
|
|
|
|
|
if (sa == J1939_IDLE_ADDR) |
|
|
|
|
|
- error(1, 0, "no free address to use");
|
|
|
|
|
|
+ err(1, "no free address to use");
|
|
|
|
|
|
ret = claim_address(sock, s.name, sa); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
schedule_itimer(50); |
|
|
|
|
|
@@ -565,7 +565,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
if (EINTR == errno) |
|
|
|
|
|
continue; |
|
|
|
|
|
- error(1, errno, "recvfrom()");
|
|
|
|
|
|
+ err(1, "recvfrom()");
|
|
|
|
|
|
} |
|
|
|
|
|
switch (saddr.can_addr.j1939.pgn) { |
|
|
|
|
|
case 0x0ea00: |
|
|
|
|
|
@@ -577,7 +577,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
break; |
|
|
|
|
|
if (s.state == STATE_REQ_SENT) { |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "request sent, pending for 1250 ms");
|
|
|
|
|
|
+ err(0, "request sent, pending for 1250 ms");
|
|
|
|
|
|
schedule_itimer(1250); |
|
|
|
|
|
s.state = STATE_REQ_PENDING; |
|
|
|
|
|
} else if (s.state == STATE_OPERATIONAL) { |
|
|
|
|
|
@@ -607,14 +607,14 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
/* ourselve, disable itimer */ |
|
|
|
|
|
s.current_sa = sa; |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "claimed 0x%02x", sa);
|
|
|
|
|
|
+ err(0, "claimed 0x%02x", sa);
|
|
|
|
|
|
} else if (sa == s.current_sa) { |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "address collision for 0x%02x", sa);
|
|
|
|
|
|
+ err(0, "address collision for 0x%02x", sa);
|
|
|
|
|
|
if (s.name > saddr.can_addr.j1939.name) { |
|
|
|
|
|
sa = choose_new_sa(s.name, sa); |
|
|
|
|
|
if (sa == J1939_IDLE_ADDR) { |
|
|
|
|
|
- error(0, 0, "no address left");
|
|
|
|
|
|
+ err(0, "no address left");
|
|
|
|
|
|
/* put J1939_IDLE_ADDR in cache file */ |
|
|
|
|
|
s.current_sa = sa; |
|
|
|
|
|
goto done; |
|
|
|
|
|
@@ -639,7 +639,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
} |
|
|
|
|
|
done: |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "shutdown");
|
|
|
|
|
|
+ err(0, "shutdown");
|
|
|
|
|
|
claim_address(sock, s.name, J1939_IDLE_ADDR); |
|
|
|
|
|
save_cache(); |
|
|
|
|
|
return 0; |
|
|
|
|
|
diff --git a/jspy.c b/jspy.c
|
|
|
|
|
|
index 6ae34d8..64bef2a 100644
|
|
|
|
|
|
--- a/jspy.c
|
|
|
|
|
|
+++ b/jspy.c
|
|
|
|
|
|
@@ -18,7 +18,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include <unistd.h> |
|
|
|
|
|
#include <getopt.h> |
|
|
|
|
|
-#include <error.h>
|
|
|
|
|
|
+#include <err.h>
|
|
|
|
|
|
#include <sys/socket.h> |
|
|
|
|
|
#include <sys/ioctl.h> |
|
|
|
|
|
#include <sys/time.h> |
|
|
|
|
|
@@ -122,7 +122,7 @@ int main(int argc, char **argv)
|
|
|
|
|
|
case 't': |
|
|
|
|
|
if (optarg) { |
|
|
|
|
|
if (!strchr("adzA", optarg[0])) |
|
|
|
|
|
- error(1, 0, "unknown time option '%c'", optarg[0]);
|
|
|
|
|
|
+ err(1, "unknown time option '%c'", optarg[0]);
|
|
|
|
|
|
s.time = optarg[0]; |
|
|
|
|
|
} else { |
|
|
|
|
|
s.time = 'z'; |
|
|
|
|
|
@@ -137,19 +137,19 @@ int main(int argc, char **argv)
|
|
|
|
|
|
optarg = argv[optind]; |
|
|
|
|
|
ret = libj1939_str2addr(optarg, 0, &s.addr); |
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
- error(0, 0, "bad URI %s", optarg);
|
|
|
|
|
|
+ err(0, "bad URI %s", optarg);
|
|
|
|
|
|
return 1; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
buf = malloc(s.pkt_len); |
|
|
|
|
|
if (!buf) |
|
|
|
|
|
- error(1, errno, "malloc %u", s.pkt_len);
|
|
|
|
|
|
+ err(1, "malloc %u", s.pkt_len);
|
|
|
|
|
|
|
|
|
|
|
|
/* setup socket */ |
|
|
|
|
|
sock = socket(PF_CAN, SOCK_DGRAM, CAN_J1939); |
|
|
|
|
|
if (sock < 0) |
|
|
|
|
|
- error(1, errno, "socket(can, dgram, j1939)");
|
|
|
|
|
|
+ err(1, "socket(can, dgram, j1939)");
|
|
|
|
|
|
|
|
|
|
|
|
memset(&filt, 0, sizeof(filt)); |
|
|
|
|
|
if (s.addr.can_addr.j1939.name) { |
|
|
|
|
|
@@ -170,23 +170,23 @@ int main(int argc, char **argv)
|
|
|
|
|
|
if (filter) { |
|
|
|
|
|
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_FILTER, &filt, sizeof(filt)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt filter");
|
|
|
|
|
|
+ err(1, "setsockopt filter");
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (s.promisc) { |
|
|
|
|
|
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_PROMISC, &ival_1, sizeof(ival_1)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt promisc");
|
|
|
|
|
|
+ err(1, "setsockopt promisc");
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (s.time) { |
|
|
|
|
|
ret = setsockopt(sock, SOL_SOCKET, SO_TIMESTAMP, &ival_1, sizeof(ival_1)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt timestamp");
|
|
|
|
|
|
+ err(1, "setsockopt timestamp");
|
|
|
|
|
|
} |
|
|
|
|
|
ret = setsockopt(sock, SOL_SOCKET, SO_RCVBUF, &s.pkt_len, sizeof(s.pkt_len)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt rcvbuf %u", s.pkt_len);
|
|
|
|
|
|
+ err(1, "setsockopt rcvbuf %u", s.pkt_len);
|
|
|
|
|
|
|
|
|
|
|
|
/* bind(): to default, only ifindex is used. */ |
|
|
|
|
|
memset(&src, 0, sizeof(src)); |
|
|
|
|
|
@@ -197,7 +197,7 @@ int main(int argc, char **argv)
|
|
|
|
|
|
src.can_addr.j1939.pgn = J1939_NO_PGN; |
|
|
|
|
|
ret = bind(sock, (void *)&src, sizeof(src)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "bind(%s)", argv[1]);
|
|
|
|
|
|
+ err(1, "bind(%s)", argv[1]);
|
|
|
|
|
|
|
|
|
|
|
|
/* these settings are static and can be held out of the hot path */ |
|
|
|
|
|
iov.iov_base = &buf[0]; |
|
|
|
|
|
@@ -208,7 +208,7 @@ int main(int argc, char **argv)
|
|
|
|
|
|
|
|
|
|
|
|
memset(&tref, 0, sizeof(tref)); |
|
|
|
|
|
if (s.verbose) |
|
|
|
|
|
- error(0, 0, "listening");
|
|
|
|
|
|
+ err(0, "listening");
|
|
|
|
|
|
while (1) { |
|
|
|
|
|
/* these settings may be modified by recvmsg() */ |
|
|
|
|
|
iov.iov_len = s.pkt_len; |
|
|
|
|
|
@@ -221,12 +221,12 @@ int main(int argc, char **argv)
|
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
switch (errno) { |
|
|
|
|
|
case ENETDOWN: |
|
|
|
|
|
- error(0, errno, "ifindex %i", s.addr.can_ifindex);
|
|
|
|
|
|
+ err(0, "ifindex %i", s.addr.can_ifindex);
|
|
|
|
|
|
continue; |
|
|
|
|
|
case EINTR: |
|
|
|
|
|
continue; |
|
|
|
|
|
default: |
|
|
|
|
|
- error(1, errno, "recvmsg(ifindex %i)", s.addr.can_ifindex);
|
|
|
|
|
|
+ err(1, "recvmsg(ifindex %i)", s.addr.can_ifindex);
|
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
diff --git a/jsr.c b/jsr.c
|
|
|
|
|
|
index 20ea99c..3b84f0d 100644
|
|
|
|
|
|
--- a/jsr.c
|
|
|
|
|
|
+++ b/jsr.c
|
|
|
|
|
|
@@ -17,7 +17,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include <unistd.h> |
|
|
|
|
|
#include <getopt.h> |
|
|
|
|
|
-#include <error.h>
|
|
|
|
|
|
+#include <err.h>
|
|
|
|
|
|
#include <poll.h> |
|
|
|
|
|
#include <sys/types.h> |
|
|
|
|
|
#include <sys/socket.h> |
|
|
|
|
|
@@ -105,7 +105,7 @@ int main(int argc, char **argv)
|
|
|
|
|
|
case 's': |
|
|
|
|
|
s.pkt_len = strtoul(optarg, 0, 0); |
|
|
|
|
|
if (!s.pkt_len) |
|
|
|
|
|
- error(1, EINVAL, "packet size of %s", optarg);
|
|
|
|
|
|
+ err(1, "packet size of %s", optarg);
|
|
|
|
|
|
break; |
|
|
|
|
|
case 'p': |
|
|
|
|
|
s.priority = strtoul(optarg, 0, 0); |
|
|
|
|
|
@@ -124,14 +124,14 @@ int main(int argc, char **argv)
|
|
|
|
|
|
optarg = argv[optind++]; |
|
|
|
|
|
ret = libj1939_str2addr(optarg, 0, &s.src); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, 0, "bad address spec [%s]", optarg);
|
|
|
|
|
|
+ err(1, "bad address spec [%s]", optarg);
|
|
|
|
|
|
s.defined |= DEF_SRC; |
|
|
|
|
|
} |
|
|
|
|
|
if (argv[optind]) { |
|
|
|
|
|
optarg = argv[optind++]; |
|
|
|
|
|
ret = libj1939_str2addr(optarg, 0, &s.dst); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, 0, "bad address spec [%s]", optarg);
|
|
|
|
|
|
+ err(1, "bad address spec [%s]", optarg);
|
|
|
|
|
|
s.defined |= DEF_DST; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@@ -139,36 +139,36 @@ int main(int argc, char **argv)
|
|
|
|
|
|
struct stat st; |
|
|
|
|
|
|
|
|
|
|
|
if (fstat(STDIN_FILENO, &st) < 0) |
|
|
|
|
|
- error(1, errno, "stat stdin, could not determine buffer size");
|
|
|
|
|
|
+ err(1, "stat stdin, could not determine buffer size");
|
|
|
|
|
|
s.pkt_len = st.st_size ?: 1024; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* prepare */ |
|
|
|
|
|
buf = malloc(s.pkt_len); |
|
|
|
|
|
if (!buf) |
|
|
|
|
|
- error(1, errno, "malloc %u", s.pkt_len);
|
|
|
|
|
|
+ err(1, "malloc %u", s.pkt_len);
|
|
|
|
|
|
|
|
|
|
|
|
sock = socket(PF_CAN, SOCK_DGRAM, CAN_J1939); |
|
|
|
|
|
if (sock < 0) |
|
|
|
|
|
- error(1, errno, "socket(can, dgram, j1939)");
|
|
|
|
|
|
+ err(1, "socket(can, dgram, j1939)");
|
|
|
|
|
|
|
|
|
|
|
|
if (s.defined & DEF_PRIO) { |
|
|
|
|
|
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_SEND_PRIO, &s.priority, sizeof(s.priority)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "setsockopt priority");
|
|
|
|
|
|
+ err(1, "setsockopt priority");
|
|
|
|
|
|
} |
|
|
|
|
|
if (s.defined & DEF_SRC) { |
|
|
|
|
|
s.src.can_family = AF_CAN; |
|
|
|
|
|
ret = bind(sock, (void *)&s.src, sizeof(s.src)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "bind(%s), %i", libj1939_addr2str(&s.src), -errno);
|
|
|
|
|
|
+ err(1, "bind(%s), %i", libj1939_addr2str(&s.src), -errno);
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (s.defined & DEF_DST) { |
|
|
|
|
|
s.dst.can_family = AF_CAN; |
|
|
|
|
|
ret = connect(sock, (void *)&s.dst, sizeof(s.dst)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "connect(%s), %i", libj1939_addr2str(&s.dst), -errno);
|
|
|
|
|
|
+ err(1, "connect(%s), %i", libj1939_addr2str(&s.dst), -errno);
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
pfd[0].fd = STDIN_FILENO; |
|
|
|
|
|
@@ -182,19 +182,19 @@ int main(int argc, char **argv)
|
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
if (errno == EINTR) |
|
|
|
|
|
continue; |
|
|
|
|
|
- error(1, errno, "poll()");
|
|
|
|
|
|
+ err(1, "poll()");
|
|
|
|
|
|
} |
|
|
|
|
|
if (pfd[0].revents) { |
|
|
|
|
|
ret = read(pfd[0].fd, buf, s.pkt_len); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "read(stdin)");
|
|
|
|
|
|
+ err(1, "read(stdin)");
|
|
|
|
|
|
if (!ret) |
|
|
|
|
|
break; |
|
|
|
|
|
len = ret; |
|
|
|
|
|
do { |
|
|
|
|
|
ret = send(pfd[1].fd, buf, len, s.sendflags); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(errno != ENOBUFS, errno, "write(%s)",
|
|
|
|
|
|
+ err(errno != ENOBUFS, "write(%s)",
|
|
|
|
|
|
libj1939_addr2str(&s.src)); |
|
|
|
|
|
} while (ret < 0); |
|
|
|
|
|
} |
|
|
|
|
|
@@ -202,7 +202,7 @@ int main(int argc, char **argv)
|
|
|
|
|
|
ret = read(pfd[1].fd, buf, s.pkt_len); |
|
|
|
|
|
if (ret < 0) { |
|
|
|
|
|
ret = errno; |
|
|
|
|
|
- error(0, errno, "read(%s)", libj1939_addr2str(&s.dst));
|
|
|
|
|
|
+ err(0, "read(%s)", libj1939_addr2str(&s.dst));
|
|
|
|
|
|
switch (ret) { |
|
|
|
|
|
case EHOSTDOWN: |
|
|
|
|
|
break; |
|
|
|
|
|
diff --git a/libj1939.c b/libj1939.c
|
|
|
|
|
|
index 5970d02..a710b73 100644
|
|
|
|
|
|
--- a/libj1939.c
|
|
|
|
|
|
+++ b/libj1939.c
|
|
|
|
|
|
@@ -15,7 +15,7 @@
|
|
|
|
|
|
#include <errno.h> |
|
|
|
|
|
#include <inttypes.h> |
|
|
|
|
|
|
|
|
|
|
|
-#include <error.h>
|
|
|
|
|
|
+#include <err.h>
|
|
|
|
|
|
#include <unistd.h> |
|
|
|
|
|
#include <fcntl.h> |
|
|
|
|
|
#include <net/if.h> |
|
|
|
|
|
@@ -41,7 +41,7 @@ static inline void fetch_names(void)
|
|
|
|
|
|
if (!saved) { |
|
|
|
|
|
saved = if_nameindex(); |
|
|
|
|
|
if (!saved) |
|
|
|
|
|
- error(1, errno, "if_nameindex()");
|
|
|
|
|
|
+ err(1, "if_nameindex()");
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
diff --git a/testj1939.c b/testj1939.c
|
|
|
|
|
|
index 83df1d2..82d3266 100644
|
|
|
|
|
|
--- a/testj1939.c
|
|
|
|
|
|
+++ b/testj1939.c
|
|
|
|
|
|
@@ -19,7 +19,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
#include <unistd.h> |
|
|
|
|
|
#include <getopt.h> |
|
|
|
|
|
-#include <error.h>
|
|
|
|
|
|
+#include <err.h>
|
|
|
|
|
|
#include <sys/time.h> |
|
|
|
|
|
#include <sys/socket.h> |
|
|
|
|
|
#include <net/if.h> |
|
|
|
|
|
@@ -71,7 +71,7 @@ static void parse_canaddr(char *spec, struct sockaddr_can *paddr)
|
|
|
|
|
|
|
|
|
|
|
|
static void onsigalrm(int sig) |
|
|
|
|
|
{ |
|
|
|
|
|
- error(0, 0, "exit as requested");
|
|
|
|
|
|
+ err(0, "exit as requested");
|
|
|
|
|
|
exit(0); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@@ -82,7 +82,7 @@ static void schedule_oneshot_itimer(double delay)
|
|
|
|
|
|
it.it_value.tv_sec = delay; |
|
|
|
|
|
it.it_value.tv_usec = (long)(delay * 1e6) % 1000000; |
|
|
|
|
|
if (setitimer(ITIMER_REAL, &it, NULL) < 0) |
|
|
|
|
|
- error(1, errno, "schedule itimer %.3lfs", delay);
|
|
|
|
|
|
+ err(1, "schedule itimer %.3lfs", delay);
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* main */ |
|
|
|
|
|
@@ -165,7 +165,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
fprintf(stderr, "- socket(PF_CAN, SOCK_DGRAM, CAN_J1939);\n"); |
|
|
|
|
|
sock = ret = socket(PF_CAN, SOCK_DGRAM, CAN_J1939); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "socket(j1939)");
|
|
|
|
|
|
+ err(1, "socket(j1939)");
|
|
|
|
|
|
|
|
|
|
|
|
if (todo_prio >= 0) { |
|
|
|
|
|
if (verbose) |
|
|
|
|
|
@@ -173,23 +173,22 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
ret = setsockopt(sock, SOL_CAN_J1939, SO_J1939_SEND_PRIO, |
|
|
|
|
|
&todo_prio, sizeof(todo_prio)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "set priority %i", todo_prio);
|
|
|
|
|
|
+ err(1, "set priority %i", todo_prio);
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (verbose) |
|
|
|
|
|
fprintf(stderr, "- bind(, %s, %zi);\n", libj1939_addr2str(&sockname), sizeof(sockname)); |
|
|
|
|
|
ret = bind(sock, (void *)&sockname, sizeof(sockname)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "bind()");
|
|
|
|
|
|
-
|
|
|
|
|
|
+ err(1, "bind()");
|
|
|
|
|
|
if (todo_connect) { |
|
|
|
|
|
if (!valid_peername) |
|
|
|
|
|
- error(1, 0, "no peername supplied");
|
|
|
|
|
|
+ err(1, "no peername supplied");
|
|
|
|
|
|
if (verbose) |
|
|
|
|
|
fprintf(stderr, "- connect(, %s, %zi);\n", libj1939_addr2str(&peername), sizeof(peername)); |
|
|
|
|
|
ret = connect(sock, (void *)&peername, sizeof(peername)); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "connect()");
|
|
|
|
|
|
+ err(1, "connect()");
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (todo_send) { |
|
|
|
|
|
@@ -218,7 +217,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "sendto");
|
|
|
|
|
|
+ err(1, "sendto");
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* main loop */ |
|
|
|
|
|
@@ -240,7 +239,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
fprintf(stderr, "-\t<interrupted>\n"); |
|
|
|
|
|
continue; |
|
|
|
|
|
} |
|
|
|
|
|
- error(1, errno, "recvfrom()");
|
|
|
|
|
|
+ err(1, "recvfrom()");
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (todo_echo) { |
|
|
|
|
|
@@ -249,7 +248,7 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
ret = sendto(sock, dat, ret, 0, |
|
|
|
|
|
(void *)&peername, peernamelen); |
|
|
|
|
|
if (ret < 0) |
|
|
|
|
|
- error(1, errno, "sendto");
|
|
|
|
|
|
+ err(1, "sendto");
|
|
|
|
|
|
} |
|
|
|
|
|
if (todo_recv) { |
|
|
|
|
|
if (todo_names && peername.can_addr.j1939.name) |
|
|
|
|
|
|
|
|
|