version 1.9, 2001/05/23 12:34:52 |
version 1.10, 2001/09/07 12:19:46 |
|
|
static void free_stringarg(void *); |
static void free_stringarg(void *); |
static void *get_patternarg(const char **, SymTable *, bool, int); |
static void *get_patternarg(const char **, SymTable *, bool, int); |
static void *get_spatternarg(const char **, SymTable *, bool, int); |
static void *get_spatternarg(const char **, SymTable *, bool, int); |
|
static void *common_get_patternarg(const char **, SymTable *, bool, int, bool); |
static void free_patternarg(void *); |
static void free_patternarg(void *); |
static void free_looparg(void *); |
static void free_looparg(void *); |
static void *get_sysvpattern(const char **, SymTable *, bool, int); |
static void *get_sysvpattern(const char **, SymTable *, bool, int); |
|
|
return t; |
return t; |
} |
} |
|
|
|
static void * |
|
get_patternarg(p, ctxt, err, endc) |
|
const char **p; |
|
SymTable *ctxt; |
|
bool err; |
|
int endc; |
|
{ |
|
return common_get_patternarg(p, ctxt, err, endc, false); |
|
} |
|
|
/* Extract anchors */ |
/* Extract anchors */ |
static void * |
static void * |
get_spatternarg(p, ctxt, err, endc) |
get_spatternarg(p, ctxt, err, endc) |
|
|
{ |
{ |
VarPattern *pattern; |
VarPattern *pattern; |
|
|
pattern = get_patternarg(p, ctxt, err, endc); |
pattern = common_get_patternarg(p, ctxt, err, endc, true); |
if (pattern != NULL && pattern->leftLen > 0) { |
if (pattern != NULL && pattern->leftLen > 0) { |
if (pattern->lhs[pattern->leftLen-1] == '$') { |
if (pattern->lhs[pattern->leftLen-1] == '$') { |
pattern->leftLen--; |
pattern->leftLen--; |
|
|
} |
} |
|
|
static void * |
static void * |
get_patternarg(p, ctxt, err, endc) |
common_get_patternarg(p, ctxt, err, endc, dosubst) |
const char **p; |
const char **p; |
SymTable *ctxt; |
SymTable *ctxt; |
bool err; |
bool err; |
int endc; |
int endc; |
|
bool dosubst; |
{ |
{ |
VarPattern *pattern; |
VarPattern *pattern; |
char delim; |
char delim; |
|
|
pattern->lbuffer = pattern->lhs; |
pattern->lbuffer = pattern->lhs; |
if (pattern->lhs != NULL) { |
if (pattern->lhs != NULL) { |
pattern->rhs = VarGetPattern(ctxt, err, &s, delim, delim, |
pattern->rhs = VarGetPattern(ctxt, err, &s, delim, delim, |
&pattern->rightLen, pattern); |
&pattern->rightLen, dosubst ? pattern: NULL); |
if (pattern->rhs != NULL) { |
if (pattern->rhs != NULL) { |
/* Check for global substitution. If 'g' after the final |
/* Check for global substitution. If 'g' after the final |
* delimiter, substitution is global and is marked that |
* delimiter, substitution is global and is marked that |