mirror of
git://projects.qi-hardware.com/eda-tools.git
synced 2024-11-23 01:51:33 +02:00
b2/: regexec puts first substring into pmatch[1] and not pmatch[0]
Also clean up the hard-coded number of matches.
This commit is contained in:
parent
3d2eca34ff
commit
148d5e85ac
12
b2/subex.c
12
b2/subex.c
@ -26,7 +26,7 @@
|
|||||||
#include "subex.h"
|
#include "subex.h"
|
||||||
|
|
||||||
|
|
||||||
#define FIELDS 10
|
#define FIELDS 10 /* fields in KiCad schematics */
|
||||||
|
|
||||||
|
|
||||||
static const char *fn = NULL, *f[FIELDS];
|
static const char *fn = NULL, *f[FIELDS];
|
||||||
@ -116,11 +116,11 @@ static char *compose(const struct chunk *c,
|
|||||||
append(&res, &res_len, s);
|
append(&res, &res_len, s);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (match[n-1].rm_so == -1)
|
if (match[n].rm_so == -1)
|
||||||
break;
|
break;
|
||||||
len = match[n-1].rm_eo-match[n-1].rm_so;
|
len = match[n].rm_eo-match[n].rm_so;
|
||||||
tmp = alloc_size(len);
|
tmp = alloc_size(len);
|
||||||
memcpy(tmp, s+match[n-1].rm_so, len);
|
memcpy(tmp, s+match[n].rm_so, len);
|
||||||
tmp[len] = 0;
|
tmp[len] = 0;
|
||||||
tmp2 = canonicalize(tmp, units ? units[n-1] : 0);
|
tmp2 = canonicalize(tmp, units ? units[n-1] : 0);
|
||||||
append(&res, &res_len, tmp2);
|
append(&res, &res_len, tmp2);
|
||||||
@ -160,7 +160,7 @@ static int do_match_1(const char *var, const regex_t *re,
|
|||||||
*val = var_lookup(in, var);
|
*val = var_lookup(in, var);
|
||||||
if (!*val)
|
if (!*val)
|
||||||
return -1;
|
return -1;
|
||||||
return regexec(re, *val, 10, match, 0);
|
return regexec(re, *val, NMATCH, match, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ static const struct subst *recurse_sub(const struct subst *sub,
|
|||||||
const regmatch_t *match, const char *units, struct param **out)
|
const regmatch_t *match, const char *units, struct param **out)
|
||||||
{
|
{
|
||||||
const struct subst *jump;
|
const struct subst *jump;
|
||||||
regmatch_t m_tmp[10];
|
regmatch_t m_tmp[NMATCH];
|
||||||
const char *var, *val;
|
const char *var, *val;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
|
@ -20,6 +20,9 @@
|
|||||||
#include "relop.h"
|
#include "relop.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define NMATCH 10 /* $0 (not used), $1...$9 */
|
||||||
|
|
||||||
|
|
||||||
enum chunk_type {
|
enum chunk_type {
|
||||||
ct_string,
|
ct_string,
|
||||||
ct_var,
|
ct_var,
|
||||||
@ -52,7 +55,7 @@ struct subst {
|
|||||||
const char *src;
|
const char *src;
|
||||||
regex_t re;
|
regex_t re;
|
||||||
struct subst *block;
|
struct subst *block;
|
||||||
char units[10];
|
char units[NMATCH-1];
|
||||||
int parens; /* number of parentheses */
|
int parens; /* number of parentheses */
|
||||||
} match;
|
} match;
|
||||||
struct {
|
struct {
|
||||||
|
Loading…
Reference in New Issue
Block a user