strings: Remove vim_strbyte

Ref #1476
This commit is contained in:
ZyX 2017-04-06 21:31:37 +03:00
parent 19044a15f9
commit 171baaee93
6 changed files with 29 additions and 67 deletions

View File

@ -5087,14 +5087,13 @@ static void helptags_one(char_u *dir, char_u *ext, char_u *tagfname,
} }
p1 = vim_strchr(IObuff, '*'); /* find first '*' */ p1 = vim_strchr(IObuff, '*'); /* find first '*' */
while (p1 != NULL) { while (p1 != NULL) {
/* Use vim_strbyte() instead of vim_strchr() so that when p2 = (char_u *)strchr((const char *)p1 + 1, '*'); // Find second '*'.
* 'encoding' is dbcs it still works, don't find '*' in the if (p2 != NULL && p2 > p1 + 1) { // Skip "*" and "**".
* second byte. */ for (s = p1 + 1; s < p2; s++) {
p2 = vim_strbyte(p1 + 1, '*'); /* find second '*' */ if (*s == ' ' || *s == '\t' || *s == '|') {
if (p2 != NULL && p2 > p1 + 1) { /* skip "*" and "**" */
for (s = p1 + 1; s < p2; ++s)
if (*s == ' ' || *s == '\t' || *s == '|')
break; break;
}
}
/* /*
* Only accept a *tag* when it consists of valid * Only accept a *tag* when it consists of valid

View File

@ -3588,8 +3588,8 @@ int check_abbr(int c, char_u *ptr, int col, int mincol)
char_u *q = mp->m_keys; char_u *q = mp->m_keys;
int match; int match;
if (vim_strbyte(mp->m_keys, K_SPECIAL) != NULL) { if (strchr((const char *)mp->m_keys, K_SPECIAL) != NULL) {
/* might have CSI escaped mp->m_keys */ // Might have CSI escaped mp->m_keys.
q = vim_strsave(mp->m_keys); q = vim_strsave(mp->m_keys);
vim_unescape_csi(q); vim_unescape_csi(q);
qlen = (int)STRLEN(q); qlen = (int)STRLEN(q);

View File

@ -356,10 +356,10 @@ int bomb_size(void)
*/ */
void remove_bom(char_u *s) void remove_bom(char_u *s)
{ {
char_u *p = s; char *p = (char *)s;
while ((p = vim_strbyte(p, 0xef)) != NULL) { while ((p = strchr(p, 0xef)) != NULL) {
if (p[1] == 0xbb && p[2] == 0xbf) { if ((uint8_t)p[1] == 0xbb && (uint8_t)p[2] == 0xbf) {
STRMOVE(p, p + 3); STRMOVE(p, p + 3);
} else { } else {
p++; p++;

View File

@ -3429,32 +3429,26 @@ static long bt_regexec_both(char_u *line,
c = *prog->regmust; c = *prog->regmust;
s = line + col; s = line + col;
/* // This is used very often, esp. for ":global". Use two versions of
* This is used very often, esp. for ":global". Use three versions of // the loop to avoid overhead of conditions.
* the loop to avoid overhead of conditions. if (!ireg_ic) {
*/
if (!ireg_ic
&& !has_mbyte
)
while ((s = vim_strbyte(s, c)) != NULL) {
if (cstrncmp(s, prog->regmust, &prog->regmlen) == 0)
break; /* Found it. */
++s;
}
else if (!ireg_ic || (!enc_utf8 && mb_char2len(c) > 1))
while ((s = vim_strchr(s, c)) != NULL) { while ((s = vim_strchr(s, c)) != NULL) {
if (cstrncmp(s, prog->regmust, &prog->regmlen) == 0) if (cstrncmp(s, prog->regmust, &prog->regmlen) == 0) {
break; /* Found it. */ break; // Found it.
}
mb_ptr_adv(s); mb_ptr_adv(s);
} }
else } else {
while ((s = cstrchr(s, c)) != NULL) { while ((s = cstrchr(s, c)) != NULL) {
if (cstrncmp(s, prog->regmust, &prog->regmlen) == 0) if (cstrncmp(s, prog->regmust, &prog->regmlen) == 0) {
break; /* Found it. */ break; // Found it.
}
mb_ptr_adv(s); mb_ptr_adv(s);
} }
if (s == NULL) /* Not present. */ }
if (s == NULL) { // Not present.
goto theend; goto theend;
}
} }
regline = line; regline = line;
@ -3484,14 +3478,8 @@ static long bt_regexec_both(char_u *line,
/* Messy cases: unanchored match. */ /* Messy cases: unanchored match. */
while (!got_int) { while (!got_int) {
if (prog->regstart != NUL) { if (prog->regstart != NUL) {
/* Skip until the char we know it must start with. // Skip until the char we know it must start with.
* Used often, do some work to avoid call overhead. */ s = cstrchr(regline + col, prog->regstart);
if (!ireg_ic
&& !has_mbyte
)
s = vim_strbyte(regline + col, prog->regstart);
else
s = cstrchr(regline + col, prog->regstart);
if (s == NULL) { if (s == NULL) {
retval = 0; retval = 0;
break; break;

View File

@ -4855,17 +4855,10 @@ static int failure_chance(nfa_state_T *state, int depth)
*/ */
static int skip_to_start(int c, colnr_T *colp) static int skip_to_start(int c, colnr_T *colp)
{ {
char_u *s; const char_u *const s = cstrchr(regline + *colp, c);
if (s == NULL) {
/* Used often, do some work to avoid call overhead. */
if (!ireg_ic
&& !has_mbyte
)
s = vim_strbyte(regline + *colp, c);
else
s = cstrchr(regline + *colp, c);
if (s == NULL)
return FAIL; return FAIL;
}
*colp = (int)(s - regline); *colp = (int)(s - regline);
return OK; return OK;
} }

View File

@ -425,24 +425,6 @@ char_u *vim_strchr(const char_u *const string, const int c)
} }
} }
/*
* Version of strchr() that only works for bytes and handles unsigned char
* strings with characters above 128 correctly. It also doesn't return a
* pointer to the NUL at the end of the string.
*/
char_u *vim_strbyte(const char_u *string, int c)
FUNC_ATTR_NONNULL_ALL FUNC_ATTR_PURE
{
const char_u *p = string;
while (*p != NUL) {
if (*p == c)
return (char_u *) p;
++p;
}
return NULL;
}
/* /*
* Search for last occurrence of "c" in "string". * Search for last occurrence of "c" in "string".
* Return NULL if not found. * Return NULL if not found.