return NULL;
}
+static char *
+findchar2(char *str, int c1, int c2)
+{
+ while (*str)
+ {
+ if (t_iseq(str, c1) || t_iseq(str, c2))
+ return str;
+ str += pg_mblen(str);
+ }
+
+ return NULL;
+}
+
/* backward string compare for suffix tree operations */
static int
if (flag == 0)
goto nextline;
+ /* Get flags after '/' (flags are case sensitive) */
+ if ((ptr = strchr(repl, '/')) != NULL)
+ aflg |= getFlagValues(Conf, getFlags(Conf, ptr + 1));
+ /* Get lowercased version of string before '/' */
prepl = lowerstr_ctx(Conf, repl);
- /* Find position of '/' in lowercased string "prepl" */
if ((ptr = strchr(prepl, '/')) != NULL)
- {
- /*
- * Here we use non-lowercased string "repl". We need position
- * of '/' in "repl".
- */
*ptr = '\0';
- ptr = repl + (ptr - prepl) + 1;
- aflg |= getFlagValues(Conf, getFlags(Conf, ptr));
- }
pfind = lowerstr_ctx(Conf, find);
pmask = lowerstr_ctx(Conf, mask);
if (t_iseq(find, '0'))
if (STRNCMP(pstr, "compoundwords") == 0)
{
- /* Find position in lowercased string "pstr" */
- s = findchar(pstr, 'l');
+ /* Find case-insensitive L flag in non-lowercased string */
+ s = findchar2(recoded, 'l', 'L');
if (s)
{
- /* Here we use non-lowercased string "recoded" */
- s = recoded + (s - pstr);
while (*s && !t_isspace(s))
s += pg_mblen(s);
while (*s && t_isspace(s))