From fa88fcc8f2da9f0d643ab7da22cc62d00beafb81 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Mon, 21 Oct 2019 12:35:14 +0200 Subject: [PATCH] tweaks: rename a function, and elide a parameter that is always NULL After the previous change, all remaining calls of parse_mbchar() have NULL as their third parameter. So, drop that parameter and remove the chunk of code that handles it. Also rename the function, as there are already too many functions that start with "parse". --- src/chars.c | 31 +++++-------------------------- src/files.c | 4 ++-- src/nano.c | 2 +- src/prompt.c | 2 +- src/proto.h | 2 +- src/text.c | 14 +++++++------- src/utils.c | 4 ++-- src/winio.c | 2 +- 8 files changed, 20 insertions(+), 41 deletions(-) diff --git a/src/chars.c b/src/chars.c index 5ff07386..aec44db9 100644 --- a/src/chars.c +++ b/src/chars.c @@ -160,7 +160,7 @@ bool is_word_mbchar(const char *c, bool allow_punct) if (word_chars != NULL && *word_chars != '\0') { char symbol[MAXCHARLEN + 1]; - int symlen = parse_mbchar(c, symbol, NULL); + int symlen = collect_char(c, symbol); symbol[symlen] = '\0'; return (strstr(word_chars, symbol) != NULL); @@ -287,9 +287,8 @@ size_t mbstrlen(const char *pointer) } /* Parse a multibyte character from buf. Return the number of bytes - * used. If chr isn't NULL, store the multibyte character in it. If - * col isn't NULL, add the character's width (in columns) to it. */ -int parse_mbchar(const char *buf, char *chr, size_t *col) + * used, and store the multibyte character in *chr. */ +int collect_char(const char *buf, char *chr) { int length; @@ -305,30 +304,10 @@ int parse_mbchar(const char *buf, char *chr, size_t *col) #endif length = 1; - /* When requested, store the multibyte character in chr. */ - if (chr != NULL) + /* Store the multibyte character in chr. */ for (int i = 0; i < length; i++) chr[i] = buf[i]; - /* When requested, add the width of the character to col. */ - if (col != NULL) { - /* If we have a tab, compute its width in columns based on the - * current value of col. */ - if (*buf == '\t') - *col += tabsize - *col % tabsize; - /* If we have a control character, it's two columns wide: one - * column for the "^", and one for the visible character. */ - else if (is_cntrl_mbchar(buf)) - *col += 2; - /* If we have a normal character, get its width normally. */ - else if (length == 1) - *col += 1; -#ifdef ENABLE_UTF8 - else - *col += mbwidth(buf); -#endif - } - return length; } @@ -622,7 +601,7 @@ bool has_blank_char(const char *string) char symbol[MAXCHARLEN]; while (*string != '\0') { - string += parse_mbchar(string, symbol, NULL); + string += collect_char(string, symbol); if (is_blank_mbchar(symbol)) return TRUE; diff --git a/src/files.c b/src/files.c index 5a0ee0f3..8d6cd0bb 100644 --- a/src/files.c +++ b/src/files.c @@ -2489,10 +2489,10 @@ char *input_tab(char *buf, bool allow_files, size_t *place, /* Get the number of characters that all matches have in common. */ while (TRUE) { - len1 = parse_mbchar(matches[0] + common_len, char1, NULL); + len1 = collect_char(matches[0] + common_len, char1); for (match = 1; match < num_matches; match++) { - len2 = parse_mbchar(matches[match] + common_len, char2, NULL); + len2 = collect_char(matches[match] + common_len, char2); if (len1 != len2 || strncmp(char1, char2, len2) != 0) break; diff --git a/src/nano.c b/src/nano.c index a12b49cd..ef391256 100644 --- a/src/nano.c +++ b/src/nano.c @@ -1813,7 +1813,7 @@ void do_output(char *output, size_t output_len, bool allow_cntrls) output[i] = '\n'; /* Get the next multibyte character. */ - charlen = parse_mbchar(output + i, onechar, NULL); + charlen = collect_char(output + i, onechar); i += charlen; diff --git a/src/prompt.c b/src/prompt.c index 3e75cb3a..8695ed1d 100644 --- a/src/prompt.c +++ b/src/prompt.c @@ -203,7 +203,7 @@ void do_statusbar_output(int *the_input, size_t input_len, output[j] = '\n'; /* Interpret the next multibyte character. */ - charlen = parse_mbchar(output + j, onechar, NULL); + charlen = collect_char(output + j, onechar); j += charlen; diff --git a/src/proto.h b/src/proto.h index 5e6aa345..8e4f753d 100644 --- a/src/proto.h +++ b/src/proto.h @@ -216,7 +216,7 @@ int mbwidth(const char *c); char *make_mbchar(long chr, int *chr_mb_len); int char_length(const char *pointer); size_t mbstrlen(const char *s); -int parse_mbchar(const char *buf, char *chr, size_t *col); +int collect_char(const char *buf, char *chr); int advance_over(const char *string, size_t *column); size_t step_left(const char *buf, size_t pos); size_t step_right(const char *buf, size_t pos); diff --git a/src/text.c b/src/text.c index 499597c3..60a1cf8f 100644 --- a/src/text.c +++ b/src/text.c @@ -1178,8 +1178,8 @@ void add_undo(undo_type action, const char *message) * else purposely fall into the line-joining code. */ if (openfile->current->data[openfile->current_x] != '\0') { char *char_buf = charalloc(MAXCHARLEN + 1); - int charlen = parse_mbchar(&openfile->current->data[u->begin], - char_buf, NULL); + int charlen = collect_char(&openfile->current->data[u->begin], + char_buf); char_buf[charlen] = '\0'; u->strdata = char_buf; if (u->type == BACK) @@ -1300,8 +1300,8 @@ void update_undo(undo_type action) switch (u->type) { case ADD: char_buf = charalloc(MAXCHARLEN); - charlen = parse_mbchar(&openfile->current->data[u->mark_begin_x], - char_buf, NULL); + charlen = collect_char(&openfile->current->data[u->mark_begin_x], + char_buf); u->strdata = addstrings(u->strdata, u->strdata ? strlen(u->strdata) : 0, char_buf, charlen); u->mark_begin_lineno = openfile->current->lineno; @@ -1314,8 +1314,8 @@ void update_undo(undo_type action) case BACK: case DEL: char_buf = charalloc(MAXCHARLEN); - charlen = parse_mbchar(&openfile->current->data[openfile->current_x], - char_buf, NULL); + charlen = collect_char(&openfile->current->data[openfile->current_x], + char_buf); if (openfile->current_x == u->begin) { /* They deleted more: add removed character after earlier stuff. */ u->strdata = addstrings(u->strdata, strlen(u->strdata), char_buf, charlen); @@ -1637,7 +1637,7 @@ size_t indent_length(const char *line) int charlen; while (*line != '\0') { - charlen = parse_mbchar(line, onechar, NULL); + charlen = collect_char(line, onechar); if (!is_blank_mbchar(onechar)) break; diff --git a/src/utils.c b/src/utils.c index d1f80eb8..02eba0b6 100644 --- a/src/utils.c +++ b/src/utils.c @@ -203,8 +203,8 @@ bool is_separate_word(size_t position, size_t length, const char *buf) size_t word_end = position + length; /* Get the characters before and after the word, if any. */ - parse_mbchar(buf + step_left(buf, position), before, NULL); - parse_mbchar(buf + word_end, after, NULL); + collect_char(buf + step_left(buf, position), before); + collect_char(buf + word_end, after); /* If the word starts at the beginning of the line OR the character before * the word isn't a letter, and if the word ends at the end of the line OR diff --git a/src/winio.c b/src/winio.c index f315f64b..92679666 100644 --- a/src/winio.c +++ b/src/winio.c @@ -2686,7 +2686,7 @@ void draw_row(int row, const char *converted, linestruct *line, size_t from_col) size_t charlen = 1; if (*(converted + target_x) != '\0') { - charlen = parse_mbchar(converted + target_x, striped_char, NULL); + charlen = collect_char(converted + target_x, striped_char); target_column = wideness(converted, target_x); } else if (target_column + 1 == editwincols) { /* Defeat a VTE bug -- see https://sv.gnu.org/bugs/?55896. */