Introduction
Introduction Statistics Contact Development Disclaimer Help
expr: don't evaluate matched substr as a number - sbase - suckless unix tools
git clone git://git.suckless.org/sbase
Log
Files
Refs
README
LICENSE
---
commit 270ca025ce236885e3177cd7acfd2cfbdf6e36a5
parent e50d533d598dbe284e225e2ee52ed5f76a6e6f6a
Author: Randy Palamar <[email protected]>
Date: Sun, 7 Jan 2024 11:02:18 -0700
expr: don't evaluate matched substr as a number
POSIX specifies that if the pattern contains a subexpression then
the first matched subexpression should be returned if it exists.
This fixes things like the following:
./expr 00003 : '\(.*\)'
Before: 3
After: 00003
Diffstat:
M expr.c | 13 ++-----------
1 file changed, 2 insertions(+), 11 deletions(-)
---
diff --git a/expr.c b/expr.c
@@ -59,11 +59,9 @@ match(struct val *vstr, struct val *vregx, struct val *ret)
{
regex_t re;
regmatch_t matches[2];
- long long d;
size_t anchlen;
char *s, *p, *anchreg;
char *str = vstr->str, *regx = vregx->str;
- const char *errstr;
/* anchored regex */
anchlen = strlen(regx) + 1 + 1;
@@ -83,15 +81,8 @@ match(struct val *vstr, struct val *vregx, struct val *ret)
s = str + matches[1].rm_so;
p = str + matches[1].rm_eo;
*p = '\0';
-
- d = strtonum(s, LLONG_MIN, LLONG_MAX, &errstr);
- if (!errstr) {
- ret->num = d;
- return;
- } else {
- ret->str = enstrdup(3, s);
- return;
- }
+ ret->str = enstrdup(3, s);
+ return;
} else {
regfree(&re);
str += matches[0].rm_so;
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.