gbranden pushed a commit to branch branden-2023-07-05 in repository groff. commit fe94c19c3db2b19fae012bb0b53a757886b65680 Author: G. Branden Robinson <g.branden.robin...@gmail.com> AuthorDate: Fri Jun 2 18:41:20 2023 -0500
Slightly refactor. [grodvi, grops, xditview, libbib, libgroff, eqn, pre-grohtml, preconv, refer, troff, tfmtodit]: Store return value of `strlen()` in a `size_t` (or `ptrdiff_t` if we're performing subtraction on it) instead of an `int`. Change temporaries (loop indices and similar) to use the same types. * src/devices/grodvi/dvi.cpp (dvi_printer::do_special): * src/devices/grops/ps.cpp (ps_output::comment_arg): (ps_output::put_string, ps_output::put_number, ps_output::put_float) (ps_output::put_color): * src/devices/grops/ps.cpp (class ps_output) <put_string, col>: <max_line_length>: * src/devices/xditview/Dvi.c (ClassInitialize): * src/include/symbol.h (class symbol) <block_size>: * src/libs/libbib/index.cpp (index_search_item::munge_filename): (index_search_item::search_item): * src/libs/libgroff/fontfile.cpp (font::open_file): * src/libs/libgroff/string.cpp (string::operator=, string::operator+): * src/libs/libgroff/symbol.cpp (symbol::symbol, symbol::block_size): * src/preproc/eqn/delim.cpp (define_extensible_string): * src/preproc/html/pre-html.cpp (char_buffer::can_see): * src/preproc/html/pushback.cpp (pushBackBuffer::isString): * src/preproc/preconv/preconv.cpp (emacs2mine): * src/preproc/refer/label.ypp (format_expr::evaluate): * src/roff/troff/input.cpp (make_temp_iterator, pipe_source): * src/utils/tfmtodit/tfmtodit.cpp (main): Do it. * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Drop `while` loop that is now tautologically true due to comparison of unsigned types. Also update editor aid comments; drop old style Emacs file-local variable setting. --- ChangeLog | 37 +++++++++++++++++++++++++++++++++++++ src/devices/grodvi/dvi.cpp | 2 +- src/devices/grops/ps.cpp | 20 ++++++++++---------- src/devices/grops/ps.h | 13 +++++++++---- src/devices/xditview/Dvi.c | 6 +++--- src/include/symbol.h | 2 +- src/libs/libbib/index.cpp | 4 ++-- src/libs/libgroff/fontfile.cpp | 5 +++-- src/libs/libgroff/string.cpp | 4 ++-- src/libs/libgroff/symbol.cpp | 11 ++++++++--- src/preproc/eqn/delim.cpp | 2 +- src/preproc/html/pre-html.cpp | 4 ++-- src/preproc/html/pushback.cpp | 11 ++++------- src/preproc/preconv/preconv.cpp | 2 +- src/preproc/refer/label.ypp | 2 +- src/roff/troff/input.cpp | 10 +++++----- src/utils/tfmtodit/tfmtodit.cpp | 2 +- 17 files changed, 91 insertions(+), 46 deletions(-) diff --git a/ChangeLog b/ChangeLog index a48a8b728..8d439a639 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,40 @@ +2023-06-02 G. Branden Robinson <g.branden.robin...@gmail.com> + + Slightly refactor. + + [grodvi, grops, xditview, libbib, libgroff, eqn, pre-grohtml, + preconv, refer, troff, tfmtodit]: Store return value of + `strlen()` in a `size_t` (or `ptrdiff_t` if we're performing + subtraction on it) instead of an `int`. Change temporaries + {loop indices and similar} to use the same types. + + * src/devices/grodvi/dvi.cpp (dvi_printer::do_special): + * src/devices/grops/ps.cpp (ps_output::comment_arg): + (ps_output::put_string, ps_output::put_number): + (ps_output::put_float, ps_output::put_color): + * src/devices/grops/ps.cpp (class ps_output) <put_string, col>: + <max_line_length>: + * src/devices/xditview/Dvi.c (ClassInitialize): + * src/include/symbol.h (class symbol) <block_size>: + * src/libs/libbib/index.cpp (index_search_item::munge_filename): + (index_search_item::search_item): + * src/libs/libgroff/fontfile.cpp (font::open_file): + * src/libs/libgroff/string.cpp (string::operator=): + (string::operator+): + * src/libs/libgroff/symbol.cpp (symbol::symbol): + (symbol::block_size): + * src/preproc/eqn/delim.cpp (define_extensible_string): + * src/preproc/html/pre-html.cpp (char_buffer::can_see): + * src/preproc/html/pushback.cpp (pushBackBuffer::isString): + * src/preproc/preconv/preconv.cpp (emacs2mine): + * src/preproc/refer/label.ypp (format_expr::evaluate): + * src/roff/troff/input.cpp (make_temp_iterator, pipe_source): + * src/utils/tfmtodit/tfmtodit.cpp (main): Do it. + + * src/preproc/html/pushback.cpp (pushBackBuffer::isString): Drop + `while` loop that is now tautologically true due to comparison + of unsigned types. + 2023-05-30 G. Branden Robinson <g.branden.robin...@gmail.com> * src/roff/troff/env.cpp (font_change): Trivially refactor. diff --git a/src/devices/grodvi/dvi.cpp b/src/devices/grodvi/dvi.cpp index f9e8a5769..8e285ea30 100644 --- a/src/devices/grodvi/dvi.cpp +++ b/src/devices/grodvi/dvi.cpp @@ -542,7 +542,7 @@ void draw_dvi_printer::end_page(int len) void dvi_printer::do_special(const char *s) { - int len = strlen(s); + size_t len = strlen(s); if (len == 0) return; possibly_begin_line(); diff --git a/src/devices/grops/ps.cpp b/src/devices/grops/ps.cpp index 807945f97..d2b608d61 100644 --- a/src/devices/grops/ps.cpp +++ b/src/devices/grops/ps.cpp @@ -169,7 +169,7 @@ ps_output &ps_output::end_comment() ps_output &ps_output::comment_arg(const char *s) { - int len = strlen(s); + size_t len = strlen(s); if (col + len + 1 > max_line_length) { putc('\n', fp); fputs("%%+", fp); @@ -200,10 +200,10 @@ ps_output &ps_output::put_delimiter(char c) return *this; } -ps_output &ps_output::put_string(const char *s, int n) +ps_output &ps_output::put_string(const char *s, size_t n) { - int len = 0; - int i; + size_t len = 0; + size_t i; for (i = 0; i < n; i++) { char c = s[i]; if (is_ascii(c) && csprint(c)) { @@ -290,7 +290,7 @@ ps_output &ps_output::put_number(int n) { char buf[1 + INT_DIGITS + 1]; sprintf(buf, "%d", n); - int len = strlen(buf); + size_t len = strlen(buf); if (col > 0 && col + len + need_space > max_line_length) { putc('\n', fp); col = 0; @@ -309,7 +309,7 @@ ps_output &ps_output::put_number(int n) ps_output &ps_output::put_fix_number(int i) { const char *p = if_to_a(i, fixed_point); - int len = strlen(p); + size_t len = strlen(p); if (col > 0 && col + len + need_space > max_line_length) { putc('\n', fp); col = 0; @@ -329,7 +329,7 @@ ps_output &ps_output::put_float(double d) { char buf[128]; sprintf(buf, "%.4f", d); - int last = strlen(buf) - 1; + ptrdiff_t last = strlen(buf) - 1; while (buf[last] == '0') last--; if (buf[last] == '.') @@ -352,7 +352,7 @@ ps_output &ps_output::put_float(double d) ps_output &ps_output::put_symbol(const char *s) { - int len = strlen(s); + size_t len = strlen(s); if (col > 0 && col + len + need_space > max_line_length) { putc('\n', fp); col = 0; @@ -372,7 +372,7 @@ ps_output &ps_output::put_color(unsigned int c) { char buf[128]; sprintf(buf, "%.3g", double(c) / double(color::MAX_COLOR_VAL)); - int len = strlen(buf); + size_t len = strlen(buf); if (col > 0 && col + len + need_space > max_line_length) { putc('\n', fp); col = 0; @@ -390,7 +390,7 @@ ps_output &ps_output::put_color(unsigned int c) ps_output &ps_output::put_literal_symbol(const char *s) { - int len = strlen(s); + size_t len = strlen(s); if (col > 0 && col + len + 1 > max_line_length) { putc('\n', fp); col = 0; diff --git a/src/devices/grops/ps.h b/src/devices/grops/ps.h index 5cef694f0..d2e0fb347 100644 --- a/src/devices/grops/ps.h +++ b/src/devices/grops/ps.h @@ -1,4 +1,3 @@ -// -*- C++ -*- /* Copyright (C) 1989-2020 Free Software Foundation, Inc. Written by James Clark (j...@jclark.com) @@ -20,7 +19,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. */ class ps_output { public: ps_output(FILE *, int max_line_length); - ps_output &put_string(const char *, int); + ps_output &put_string(const char *, size_t n); ps_output &put_number(int); ps_output &put_fix_number(int); ps_output &put_float(double); @@ -41,8 +40,8 @@ public: FILE *get_file(); private: FILE *fp; - int col; - int max_line_length; // not including newline + size_t col; + size_t max_line_length; // not including newline int need_space; int fixed_point; }; @@ -127,3 +126,9 @@ enum { #include "searchpath.h" extern search_path include_search_path; + +// Local Variables: +// fill-column: 72 +// mode: C++ +// End: +// vim: set cindent noexpandtab shiftwidth=2 textwidth=72: diff --git a/src/devices/xditview/Dvi.c b/src/devices/xditview/Dvi.c index 3520676ff..bc62386cd 100644 --- a/src/devices/xditview/Dvi.c +++ b/src/devices/xditview/Dvi.c @@ -165,9 +165,9 @@ WidgetClass dviWidgetClass = (WidgetClass) &dviClassRec; static void ClassInitialize (void) { - int len1 = strlen(default_font_map_1); - int len2 = strlen(default_font_map_2); - int len3 = strlen(default_font_map_3); + size_t len1 = strlen(default_font_map_1); + size_t len2 = strlen(default_font_map_2); + size_t len3 = strlen(default_font_map_3); char *dfm = XtMalloc(len1 + len2 + len3 + 1); char *ptr = dfm; strcpy(ptr, default_font_map_1); ptr += len1; diff --git a/src/include/symbol.h b/src/include/symbol.h index 047255d3b..bafee4c9a 100644 --- a/src/include/symbol.h +++ b/src/include/symbol.h @@ -26,7 +26,7 @@ class symbol { static int table_used; static int table_size; static char *block; - static int block_size; + static size_t block_size; const char *s; public: symbol(const char *p, int how = 0); diff --git a/src/libs/libbib/index.cpp b/src/libs/libbib/index.cpp index aebcbbfdd..0664746ae 100644 --- a/src/libs/libbib/index.cpp +++ b/src/libs/libbib/index.cpp @@ -61,7 +61,7 @@ class index_search_item : public search_item { char *pool; char *key_buffer; char *filename_buffer; - int filename_buflen; + size_t filename_buflen; char **common_words_table; int common_words_table_size; const char *ignore_fields; @@ -486,7 +486,7 @@ const char *index_search_item::munge_filename(const char *filename) const char *cwd = pool; int need_slash = (cwd[0] != 0 && strchr(DIR_SEPS, strchr(cwd, '\0')[-1]) == 0); - int len = strlen(cwd) + strlen(filename) + need_slash + 1; + size_t len = strlen(cwd) + strlen(filename) + need_slash + 1; if (len > filename_buflen) { delete[] filename_buffer; filename_buflen = len; diff --git a/src/libs/libgroff/fontfile.cpp b/src/libs/libgroff/fontfile.cpp index 898797146..1c2fe027d 100644 --- a/src/libs/libgroff/fontfile.cpp +++ b/src/libs/libgroff/fontfile.cpp @@ -62,9 +62,10 @@ FILE *font::open_file(const char *nm, char **pathp) // Do not traverse user-specified directories; Savannah #61424. if (0 /* nullptr */ == strchr(nm, '/')) { // Allocate enough for nm + device + 'dev' '/' '\0'. - int expected_size = strlen(nm) + strlen(device) + 5; + size_t expected_size = strlen(nm) + strlen(device) + 5; char *filename = new char[expected_size]; - const int actual_size = sprintf(filename, "dev%s/%s", device, nm); + const size_t actual_size = sprintf(filename, "dev%s/%s", device, + nm); expected_size--; // sprintf() doesn't count the null terminator. if (actual_size == expected_size) fp = font_path.open_file(filename, pathp); diff --git a/src/libs/libgroff/string.cpp b/src/libs/libgroff/string.cpp index 33c0565c2..a939b24d6 100644 --- a/src/libs/libgroff/string.cpp +++ b/src/libs/libgroff/string.cpp @@ -144,7 +144,7 @@ string &string::operator=(const char *p) sz = 0; } else { - int slen = strlen(p); + size_t slen = strlen(p); ptr = sfree_alloc(ptr, sz, slen, &sz); len = slen; if (len != 0) @@ -180,7 +180,7 @@ void string::grow1() string &string::operator+=(const char *p) { if (p != 0) { - int n = strlen(p); + size_t n = strlen(p); int newlen = len + n; if (newlen > sz) ptr = srealloc(ptr, sz, len, newlen, &sz); diff --git a/src/libs/libgroff/symbol.cpp b/src/libs/libgroff/symbol.cpp index 4f5062741..085f2acda 100644 --- a/src/libs/libgroff/symbol.cpp +++ b/src/libs/libgroff/symbol.cpp @@ -1,4 +1,3 @@ -// -*- C++ -*- /* Copyright (C) 1989-2020 Free Software Foundation, Inc. Written by James Clark (j...@jclark.com) @@ -27,7 +26,7 @@ const char **symbol::table = 0; int symbol::table_used = 0; int symbol::table_size = 0; char *symbol::block = 0; -int symbol::block_size = 0; +size_t symbol::block_size = 0; const symbol NULL_SYMBOL; const symbol EMPTY_SYMBOL(""); @@ -132,7 +131,7 @@ symbol::symbol(const char *p, int how) s = *pp = p; } else { - int len = strlen(p)+1; + size_t len = strlen(p) + 1; if (block == 0 || block_size < len) { block_size = len > BLOCK_SIZE ? len : BLOCK_SIZE; block = new char [block_size]; @@ -155,3 +154,9 @@ symbol concat(symbol s1, symbol s2) } symbol default_symbol("default"); + +// Local Variables: +// fill-column: 72 +// mode: C++ +// End: +// vim: set cindent noexpandtab shiftwidth=2 textwidth=72: diff --git a/src/preproc/eqn/delim.cpp b/src/preproc/eqn/delim.cpp index 43cfe4996..56519f188 100644 --- a/src/preproc/eqn/delim.cpp +++ b/src/preproc/eqn/delim.cpp @@ -295,7 +295,7 @@ static void define_extensible_string(char *delim, int uid, { printf(".ds " DELIM_STRING "\n"); delimiter *d = delim_table; - int delim_len = strlen(delim); + size_t delim_len = strlen(delim); int i; for (i = 0; i < DELIM_TABLE_SIZE; i++, d++) if (strncmp(delim, d->name, delim_len) == 0 diff --git a/src/preproc/html/pre-html.cpp b/src/preproc/html/pre-html.cpp index 6bfab94b0..537efe3c3 100644 --- a/src/preproc/html/pre-html.cpp +++ b/src/preproc/html/pre-html.cpp @@ -702,8 +702,8 @@ void char_buffer::write_upto_newline(char_block **t, int *i, bool char_buffer::can_see(char_block **t, int *i, const char *str) { - int j = 0; - int l = strlen(str); + size_t j = 0; + size_t l = strlen(str); int k = *i; char_block *s = *t; diff --git a/src/preproc/html/pushback.cpp b/src/preproc/html/pushback.cpp index 100ac0bac..f1172ef5b 100644 --- a/src/preproc/html/pushback.cpp +++ b/src/preproc/html/pushback.cpp @@ -190,8 +190,8 @@ void pushBackBuffer::skipUntilToken (void) int pushBackBuffer::isString (const char *s) { - int length=strlen(s); - int i=0; + size_t length=strlen(s); + size_t i=0; while ((i<length) && (putPB(getPB())==s[i])) { if (getPB() != s[i]) { @@ -203,11 +203,8 @@ int pushBackBuffer::isString (const char *s) return( TRUE ); } else { i--; - while (i>=0) { - if (putPB(s[i]) != s[i]) { - ERROR("assert failed"); - } - i--; + if (putPB(s[i]) != s[i]) { + ERROR("assert failed"); } } return( FALSE ); diff --git a/src/preproc/preconv/preconv.cpp b/src/preproc/preconv/preconv.cpp index d403425ee..485574dda 100644 --- a/src/preproc/preconv/preconv.cpp +++ b/src/preproc/preconv/preconv.cpp @@ -380,7 +380,7 @@ emacs_to_mime[] = { char * emacs2mime(char *emacs_enc) { - int emacs_enc_len = strlen(emacs_enc); + size_t emacs_enc_len = strlen(emacs_enc); if (emacs_enc_len > 4 && !strcasecmp(emacs_enc + emacs_enc_len - 4, "-dos")) emacs_enc[emacs_enc_len - 4] = 0; diff --git a/src/preproc/refer/label.ypp b/src/preproc/refer/label.ypp index f5210d573..3536ae503 100644 --- a/src/preproc/refer/label.ypp +++ b/src/preproc/refer/label.ypp @@ -521,7 +521,7 @@ void format_expr::evaluate(int tentative, const reference &ref, result += format_serial(type, num + 1); else { const char *ptr = i_to_a(num + first_number); - int pad = width - strlen(ptr); + ptrdiff_t pad = width - strlen(ptr); while (--pad >= 0) result += '0'; result += ptr; diff --git a/src/roff/troff/input.cpp b/src/roff/troff/input.cpp index ca01569ff..ce5966c86 100644 --- a/src/roff/troff/input.cpp +++ b/src/roff/troff/input.cpp @@ -3749,7 +3749,7 @@ input_iterator *make_temp_iterator(const char *s) if (s == 0) return new temp_iterator(s, 0); else { - int n = strlen(s); + size_t n = strlen(s); return new temp_iterator(s, n); } } @@ -6170,15 +6170,15 @@ void pipe_source() int c; while ((c = get_copy(0)) == ' ' || c == '\t') ; - int buf_size = 24; + size_t buf_size = 24; char *buf = new char[buf_size]; - int buf_used = 0; + size_t buf_used = 0; for (; c != '\n' && c != EOF; c = get_copy(0)) { const char *s = asciify(c); - int slen = strlen(s); + size_t slen = strlen(s); if (buf_used + slen + 1> buf_size) { char *old_buf = buf; - int old_buf_size = buf_size; + size_t old_buf_size = buf_size; buf_size *= 2; buf = new char[buf_size]; memcpy(buf, old_buf, old_buf_size); diff --git a/src/utils/tfmtodit/tfmtodit.cpp b/src/utils/tfmtodit/tfmtodit.cpp index 300373379..437e47e08 100644 --- a/src/utils/tfmtodit/tfmtodit.cpp +++ b/src/utils/tfmtodit/tfmtodit.cpp @@ -764,7 +764,7 @@ int main(int argc, char **argv) if (special_flag) fputs("special\n", stdout); char *internal_name = strsave(argv[optind]); - int len = strlen(internal_name); + size_t len = strlen(internal_name); if (len > 4 && strcmp(internal_name + len - 4, ".tfm") == 0) internal_name[len - 4] = '\0'; // DIR_SEPS[] are possible directory separator characters, see _______________________________________________ Groff-commit mailing list Groff-commit@gnu.org https://lists.gnu.org/mailman/listinfo/groff-commit