From ef65274d43e7ab1d8a7f4fce353bb6a173bda987 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Fri, 30 Jun 2017 17:40:22 +0200 Subject: seq: parse_relnum: fix for thread message syntax relative to . or $ With a message such as .^ specified, strtol() was used on the caret. On Linux this worked by accident because strtol() doesn't return an error but it fails on, e.g. FreeBSD. Furthermore, it was not possible to specify relative offsets after $. --- seq.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'seq.c') diff --git a/seq.c b/seq.c index 95fca91..c1b51bd 100644 --- a/seq.c +++ b/seq.c @@ -185,10 +185,11 @@ parse_relnum(char *a, long cur, long last, long *out) a = ".-1"; else if (strcmp(a, ".") == 0) a = ".+0"; - else if (strcmp(a, "$") == 0) - a = "-1"; - if (*a == '.') { + if (*a == '$') { + a++; + base = last; + } else if (*a == '.') { a++; base = cur; } else if (*a == '-') { @@ -198,7 +199,7 @@ parse_relnum(char *a, long cur, long last, long *out) } long d; - if (*a == ':') { + if (strchr(":=_^", *a)) { d = 0; b = a; } else { -- cgit 1.4.1