From e649b6ee2a20c5c7ad3e270b24a813f1a78d1a46 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Fri, 4 Jan 2019 12:56:18 +0100 Subject: [PATCH] libj1939: add libj1939_parse_canaddr and reuse it by testj1939 this function will be needed jcat Signed-off-by: Oleksij Rempel --- libj1939.c | 21 +++++++++++++++++++++ libj1939.h | 1 + testj1939.c | 25 ++----------------------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/libj1939.c b/libj1939.c index dc515821..9bb6fe5c 100644 --- a/libj1939.c +++ b/libj1939.c @@ -92,6 +92,27 @@ static int libj1939_ifindex(const char *str) return 0; } +void libj1939_parse_canaddr(char *spec, struct sockaddr_can *paddr) +{ + char *str; + + str = strsep(&spec, ":"); + if (strlen(str)) + paddr->can_ifindex = if_nametoindex(str); + + str = strsep(&spec, ","); + if (str && strlen(str)) + paddr->can_addr.j1939.addr = strtoul(str, NULL, 0); + + str = strsep(&spec, ","); + if (str && strlen(str)) + paddr->can_addr.j1939.pgn = strtoul(str, NULL, 0); + + str = strsep(&spec, ","); + if (str && strlen(str)) + paddr->can_addr.j1939.name = strtoul(str, NULL, 0); +} + int libj1939_str2addr(const char *str, char **endp, struct sockaddr_can *can) { char *p; diff --git a/libj1939.h b/libj1939.h index 46e22771..64d28b17 100644 --- a/libj1939.h +++ b/libj1939.h @@ -9,6 +9,7 @@ extern "C" { #endif +void libj1939_parse_canaddr(char *spec, struct sockaddr_can *paddr); extern int libj1939_str2addr(const char *str, char **endp, struct sockaddr_can *can); extern const char *libj1939_addr2str(const struct sockaddr_can *can); diff --git a/testj1939.c b/testj1939.c index f2856209..91ec0ba0 100644 --- a/testj1939.c +++ b/testj1939.c @@ -50,27 +50,6 @@ static const char help_msg[] = static const char optstring[] = "?vbos::rep:cnw::"; -static void parse_canaddr(char *spec, struct sockaddr_can *paddr) -{ - char *str; - - str = strsep(&spec, ":"); - if (strlen(str)) - paddr->can_ifindex = if_nametoindex(str); - - str = strsep(&spec, ","); - if (str && strlen(str)) - paddr->can_addr.j1939.addr = strtoul(str, NULL, 0); - - str = strsep(&spec, ","); - if (str && strlen(str)) - paddr->can_addr.j1939.pgn = strtoul(str, NULL, 0); - - str = strsep(&spec, ","); - if (str && strlen(str)) - paddr->can_addr.j1939.name = strtoul(str, NULL, 0); -} - static void onsigalrm(int sig) { error(0, 0, "exit as requested"); @@ -157,7 +136,7 @@ int main(int argc, char *argv[]) if (argv[optind]) { if (strcmp("-", argv[optind])) - parse_canaddr(argv[optind], &sockname); + libj1939_parse_canaddr(argv[optind], &sockname); ++optind; } @@ -166,7 +145,7 @@ int main(int argc, char *argv[]) if (argv[optind]) { if (strcmp("-", argv[optind])) { - parse_canaddr(argv[optind], &peername); + libj1939_parse_canaddr(argv[optind], &peername); valid_peername = 1; } ++optind;