mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-02-12 08:38:47 +00:00
entered into RCS
This commit is contained in:
parent
5d3189c952
commit
227cffec2b
1 changed files with 18 additions and 7 deletions
25
function.c
25
function.c
|
@ -1,5 +1,5 @@
|
||||||
/* Variable function expansion for GNU Make.
|
/* Variable function expansion for GNU Make.
|
||||||
Copyright (C) 1988, 1989, 1991, 1992, 1993 Free Software Foundation, Inc.
|
Copyright (C) 1988, 1989, 1991, 1992, 1993, 1994 Free Software Foundation, Inc.
|
||||||
This file is part of GNU Make.
|
This file is part of GNU Make.
|
||||||
|
|
||||||
GNU Make is free software; you can redistribute it and/or modify
|
GNU Make is free software; you can redistribute it and/or modify
|
||||||
|
@ -51,8 +51,23 @@ subst_expand (o, text, subst, replace, slen, rlen, by_word, suffix_only)
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((p = sindex (t, 0, subst, slen)) != 0)
|
do
|
||||||
{
|
{
|
||||||
|
if ((by_word | suffix_only) && slen == 0)
|
||||||
|
/* When matching by words, the empty string should match
|
||||||
|
the end of each word, rather than the end of the whole text. */
|
||||||
|
p = end_of_token (next_token (t));
|
||||||
|
else
|
||||||
|
{
|
||||||
|
p = sindex (t, 0, subst, slen);
|
||||||
|
if (p == 0)
|
||||||
|
{
|
||||||
|
/* No more matches. Output everything left on the end. */
|
||||||
|
o = variable_buffer_output (o, t, strlen (t));
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Output everything before this occurrence of the string to replace. */
|
/* Output everything before this occurrence of the string to replace. */
|
||||||
if (p > t)
|
if (p > t)
|
||||||
o = variable_buffer_output (o, t, p - t);
|
o = variable_buffer_output (o, t, p - t);
|
||||||
|
@ -73,11 +88,7 @@ subst_expand (o, text, subst, replace, slen, rlen, by_word, suffix_only)
|
||||||
|
|
||||||
/* Advance T past the string to be replaced. */
|
/* Advance T past the string to be replaced. */
|
||||||
t = p + slen;
|
t = p + slen;
|
||||||
}
|
} while (*t != '\0');
|
||||||
|
|
||||||
/* Output everything left on the end. */
|
|
||||||
if (*t != '\0')
|
|
||||||
o = variable_buffer_output (o, t, strlen (t));
|
|
||||||
|
|
||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue