Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/indent indent: fix Clang-Tidy warnings, clean up bak...
details: https://anonhg.NetBSD.org/src/rev/a4df1f0c8eb3
branches: trunk
changeset: 1023956:a4df1f0c8eb3
user: rillig <rillig%NetBSD.org@localhost>
date: Tue Oct 05 06:55:24 2021 +0000
description:
indent: fix Clang-Tidy warnings, clean up bakcopy
The comment above and inside bakcopy had been outdated for at least the
last 28 years, the backup file is named "%s.BAK", not ".B%s".
Prevent buffer overflow for very long filenames (sprintf -> snprintf).
diffstat:
usr.bin/indent/indent.c | 41 +++++++++++++++++------------------------
usr.bin/indent/parse.c | 12 ++++++------
2 files changed, 23 insertions(+), 30 deletions(-)
diffs (142 lines):
diff -r 460132ddbbe2 -r a4df1f0c8eb3 usr.bin/indent/indent.c
--- a/usr.bin/indent/indent.c Tue Oct 05 06:49:19 2021 +0000
+++ b/usr.bin/indent/indent.c Tue Oct 05 06:55:24 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: indent.c,v 1.102 2021/10/05 06:49:19 rillig Exp $ */
+/* $NetBSD: indent.c,v 1.103 2021/10/05 06:55:24 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -43,7 +43,7 @@
#include <sys/cdefs.h>
#if defined(__NetBSD__)
-__RCSID("$NetBSD: indent.c,v 1.102 2021/10/05 06:49:19 rillig Exp $");
+__RCSID("$NetBSD: indent.c,v 1.103 2021/10/05 06:55:24 rillig Exp $");
#elif defined(__FreeBSD__)
__FBSDID("$FreeBSD: head/usr.bin/indent/indent.c 340138 2018-11-04 19:24:49Z oshogbo $");
#endif
@@ -607,7 +607,6 @@
static void
process_lparen_or_lbracket(int dec_ind, bool tabs_to_var, bool sp_sw)
{
- /* count parens to make Healy happy */
if (++ps.p_l_follow == nitems(ps.paren_indents)) {
diag(0, "Reached internal limit of %zu unclosed parens",
nitems(ps.paren_indents));
@@ -625,13 +624,13 @@
*code.e++ = token.s[0];
ps.paren_indents[ps.p_l_follow - 1] =
- indentation_after_range(0, code.s, code.e);
+ (short)indentation_after_range(0, code.s, code.e);
debug_println("paren_indent[%d] is now %d",
ps.p_l_follow - 1, ps.paren_indents[ps.p_l_follow - 1]);
if (sp_sw && ps.p_l_follow == 1 && opt.extra_expression_indent
&& ps.paren_indents[0] < 2 * opt.indent_size) {
- ps.paren_indents[0] = 2 * opt.indent_size;
+ ps.paren_indents[0] = (short)(2 * opt.indent_size);
debug_println("paren_indent[0] is now %d", ps.paren_indents[0]);
}
if (ps.in_or_st && *token.s == '(' && ps.tos <= 2) {
@@ -733,7 +732,7 @@
process_question(int *inout_squest)
{
(*inout_squest)++; /* this will be used when a later colon
- * appears so we can distinguish the
+ * appears, so we can distinguish the
* <c>?<n>:<n> construct */
if (ps.want_blank)
*code.e++ = ' ';
@@ -1425,37 +1424,31 @@
}
/*
- * copy input file to backup file if in_name is /blah/blah/blah/file, then
- * backup file will be ".Bfile" then make the backup file the input and
- * original input file the output
+ * Copy the input file to the backup file, then make the backup file the input
+ * and the original input file the output.
*/
static void
bakcopy(void)
{
ssize_t n;
- int bakchn;
+ int bak_fd;
char buff[8 * 1024];
- const char *p;
- /* construct file name .Bfile */
- for (p = in_name; *p != '\0'; p++); /* skip to end of string */
- while (p > in_name && *p != '/') /* find last '/' */
- p--;
- if (*p == '/')
- p++;
- sprintf(bakfile, "%s%s", p, backup_suffix);
+ const char *last_slash = strrchr(in_name, '/');
+ snprintf(bakfile, sizeof(bakfile), "%s%s",
+ last_slash != NULL ? last_slash + 1 : in_name, backup_suffix);
/* copy in_name to backup file */
- bakchn = creat(bakfile, 0600);
- if (bakchn < 0)
+ bak_fd = creat(bakfile, 0600);
+ if (bak_fd < 0)
err(1, "%s", bakfile);
while ((n = read(fileno(input), buff, sizeof(buff))) > 0)
- if (write(bakchn, buff, (size_t)n) != n)
+ if (write(bak_fd, buff, (size_t)n) != n)
err(1, "%s", bakfile);
if (n < 0)
err(1, "%s", in_name);
- close(bakchn);
- fclose(input);
+ close(bak_fd);
+ (void)fclose(input);
/* re-open backup file as the input file */
input = fopen(bakfile, "r");
@@ -1492,7 +1485,7 @@
pos = tpos;
}
}
- check_size_code((size_t)(cur_dec_ind - pos + 1));
+ check_size_code((size_t)(cur_dec_ind - pos) + 1);
while (pos < cur_dec_ind) {
*code.e++ = ' ';
pos++;
diff -r 460132ddbbe2 -r a4df1f0c8eb3 usr.bin/indent/parse.c
--- a/usr.bin/indent/parse.c Tue Oct 05 06:49:19 2021 +0000
+++ b/usr.bin/indent/parse.c Tue Oct 05 06:55:24 2021 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: parse.c,v 1.28 2021/10/05 06:24:06 rillig Exp $ */
+/* $NetBSD: parse.c,v 1.29 2021/10/05 06:55:24 rillig Exp $ */
/*-
* SPDX-License-Identifier: BSD-4-Clause
@@ -189,10 +189,10 @@
ps.cstk[ps.tos] = case_ind;
/* save current case indent level */
ps.il[ps.tos] = ps.ind_level_follow;
- case_ind = ps.ind_level_follow + opt.case_indent; /* cases should be
- * one level deeper than the switch */
- ps.ind_level_follow += opt.case_indent + 1; /* statements should be
- * two levels deeper */
+ /* cases should be one level deeper than the switch */
+ case_ind = (float)ps.ind_level_follow + opt.case_indent;
+ /* statements should be two levels deeper */
+ ps.ind_level_follow += (int)opt.case_indent + 1;
ps.search_brace = opt.btype_2;
break;
@@ -258,7 +258,7 @@
ps.ind_level_follow = ps.il[i];
/*
* for the time being, we will assume that there is no else on this
- * if, and set the indentation level accordingly. If an else is
+ * if, and set the indentation level accordingly. If an 'else' is
* scanned, it will be fixed up later
*/
return true;
Home |
Main Index |
Thread Index |
Old Index