summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cfg.mk23
-rw-r--r--src/dircolors.c4
-rw-r--r--src/od.c15
-rw-r--r--src/seq.c4
-rw-r--r--src/stat.c33
-rw-r--r--src/tr.c20
6 files changed, 60 insertions, 39 deletions
diff --git a/cfg.mk b/cfg.mk
index 9e45dafb8..ecb260227 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -289,6 +289,26 @@ sc_prohibit_framework_failure:
halt='use framework_failure_ instead' \
$(_sc_search_regexp)
+# Exempt the contents of any usage function from the following.
+_continued_string_col_1 = \
+s/^usage .*?\n}//ms;/\\\n\w/ and print ("$$ARGV\n"),$$e=1;END{$$e||=0;exit $$e}
+# Ding any source file that has a continued string with an alphabetic in the
+# first column of the following line. We prohibit them because they usually
+# trigger false positives in tools that try to map an arbitrary line number
+# to the enclosing function name. Of course, very many strings do precisely
+# this, *when they are part of the usage function*. That is why we exempt
+# the contents of any function named "usage".
+sc_prohibit_continued_string_alpha_in_column_1:
+ @perl -0777 -ne '$(_continued_string_col_1)' \
+ $$($(VC_LIST_EXCEPT) | grep '\.[ch]$$') \
+ || { echo '$(ME): continued string with word in first column' \
+ 1>&2; exit 1; } || :
+# Use this to list offending lines:
+# git ls-files |grep '\.[ch]$' | xargs \
+# perl -n -0777 -e 's/^usage.*?\n}//ms;/\\\n\w/ and print "$ARGV\n"' \
+# | xargs grep -A1 '\\$'|grep '\.[ch][:-][_a-zA-Z]'
+
+
###########################################################
_p0 = \([^"'/]\|"\([^\"]\|[\].\)*"\|'\([^\']\|[\].\)*'
_pre = $(_p0)\|[/][^"'/*]\|[/]"\([^\"]\|[\].\)*"\|[/]'\([^\']\|[\].\)*'\)*
@@ -409,3 +429,6 @@ exclude_file_name_regexp--sc_preprocessor_indentation = \
^(gl/lib/rand-isaac\.[ch]|gl/tests/test-rand-isaac\.c)$$
exclude_file_name_regexp--sc_prohibit_stat_st_blocks = \
^(src/system\.h|tests/du/2g)$$
+
+exclude_file_name_regexp--sc_prohibit_continued_string_alpha_in_column_1 = \
+ ^src/(system\.h|od\.c|printf\.c)$$
diff --git a/src/dircolors.c b/src/dircolors.c
index 06c97844a..cc68d6faa 100644
--- a/src/dircolors.c
+++ b/src/dircolors.c
@@ -437,8 +437,8 @@ main (int argc, char **argv)
if (print_database && syntax != SHELL_SYNTAX_UNKNOWN)
{
error (0, 0,
- _("the options to output dircolors' internal database and\n\
-to select a shell syntax are mutually exclusive"));
+ _("the options to output dircolors' internal database and\n"
+ "to select a shell syntax are mutually exclusive"));
usage (EXIT_FAILURE);
}
diff --git a/src/od.c b/src/od.c
index 68368d9e9..e5d2d7e97 100644
--- a/src/od.c
+++ b/src/od.c
@@ -640,8 +640,9 @@ decode_one_format (const char *s_orig, const char *s, const char **next,
if (MAX_INTEGRAL_TYPE_SIZE < size
|| integral_type_size[size] == NO_SIZE)
{
- error (0, 0, _("invalid type string %s;\n\
-this system doesn't provide a %lu-byte integral type"), quote (s_orig), size);
+ error (0, 0, _("invalid type string %s;\nthis system"
+ " doesn't provide a %lu-byte integral type"),
+ quote (s_orig), size);
return false;
}
s = p;
@@ -759,8 +760,10 @@ this system doesn't provide a %lu-byte integral type"), quote (s_orig), size);
if (size > MAX_FP_TYPE_SIZE
|| fp_type_size[size] == NO_SIZE)
{
- error (0, 0, _("invalid type string %s;\n\
-this system doesn't provide a %lu-byte floating point type"),
+ error (0, 0,
+ _("invalid type string %s;\n"
+ "this system doesn't provide a %lu-byte"
+ " floating point type"),
quote (s_orig), size);
return false;
}
@@ -1598,8 +1601,8 @@ main (int argc, char **argv)
break;
default:
error (EXIT_FAILURE, 0,
- _("invalid output address radix '%c'; \
-it must be one character from [doxn]"),
+ _("invalid output address radix '%c';\
+ it must be one character from [doxn]"),
optarg[0]);
break;
}
diff --git a/src/seq.c b/src/seq.c
index ea901b85f..90e9fc156 100644
--- a/src/seq.c
+++ b/src/seq.c
@@ -428,8 +428,8 @@ main (int argc, char **argv)
if (format_str != NULL && equal_width)
{
- error (0, 0, _("\
-format string may not be specified when printing equal width strings"));
+ error (0, 0, _("format string may not be specified"
+ " when printing equal width strings"));
usage (EXIT_FAILURE);
}
diff --git a/src/stat.c b/src/stat.c
index 0da21d7d7..8254ccc0f 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -1236,13 +1236,11 @@ default_format (bool fs, bool terse, bool device)
{
/* TRANSLATORS: This string uses format specifiers from
'stat --help' with --file-system, and NOT from printf. */
- format = xstrdup (_("\
- File: \"%n\"\n\
- ID: %-8i Namelen: %-7l Type: %T\n\
-Block size: %-10s Fundamental block size: %S\n\
-Blocks: Total: %-10b Free: %-10f Available: %a\n\
-Inodes: Total: %-10c Free: %d\n\
-"));
+ format = xstrdup (_(" File: \"%n\"\n"
+ " ID: %-8i Namelen: %-7l Type: %T\n"
+ "Block size: %-10s Fundamental block size: %S\n"
+ "Blocks: Total: %-10b Free: %-10f Available: %a\n"
+ "Inodes: Total: %-10c Free: %d\n"));
}
}
else /* ! fs */
@@ -1272,7 +1270,7 @@ Inodes: Total: %-10c Free: %d\n\
/* TRANSLATORS: This string uses format specifiers from
'stat --help' without --file-system, and NOT from printf. */
format = xasprintf ("%s%s", format, _("\
-Device: %Dh/%dd\tInode: %-10i Links: %-5h Device type: %t,%T\n\
+" "Device: %Dh/%dd\tInode: %-10i Links: %-5h Device type: %t,%T\n\
"));
}
else
@@ -1280,7 +1278,7 @@ Device: %Dh/%dd\tInode: %-10i Links: %-5h Device type: %t,%T\n\
/* TRANSLATORS: This string uses format specifiers from
'stat --help' without --file-system, and NOT from printf. */
format = xasprintf ("%s%s", format, _("\
-Device: %Dh/%dd\tInode: %-10i Links: %h\n\
+" "Device: %Dh/%dd\tInode: %-10i Links: %h\n\
"));
}
free (temp);
@@ -1289,7 +1287,7 @@ Device: %Dh/%dd\tInode: %-10i Links: %h\n\
/* TRANSLATORS: This string uses format specifiers from
'stat --help' without --file-system, and NOT from printf. */
format = xasprintf ("%s%s", format, _("\
-Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n\
+" "Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n\
"));
free (temp);
@@ -1298,21 +1296,18 @@ Access: (%04a/%10.10A) Uid: (%5u/%8U) Gid: (%5g/%8G)\n\
temp = format;
/* TRANSLATORS: This string uses format specifiers from
'stat --help' without --file-system, and NOT from printf. */
- format = xasprintf ("%s%s", format, _("\
-Context: %C\n\
-"));
+ format = xasprintf ("%s%s", format, _("Context: %C\n"));
free (temp);
}
temp = format;
/* TRANSLATORS: This string uses format specifiers from
'stat --help' without --file-system, and NOT from printf. */
- format = xasprintf ("%s%s", format, _("\
-Access: %x\n\
-Modify: %y\n\
-Change: %z\n\
- Birth: %w\n\
-"));
+ format = xasprintf ("%s%s", format,
+ _("Access: %x\n"
+ "Modify: %y\n"
+ "Change: %z\n"
+ "Birth: %w\n"));
free (temp);
}
}
diff --git a/src/tr.c b/src/tr.c
index 4332d9f3f..329d8141b 100644
--- a/src/tr.c
+++ b/src/tr.c
@@ -506,8 +506,8 @@ unquote (char const *s, struct E_string *es)
lack of clarity as meaning the resulting behavior
is undefined, which means we're allowed to issue
a warning. */
- error (0, 0, _("warning: the ambiguous octal escape \
-\\%c%c%c is being\n\tinterpreted as the 2-byte sequence \\0%c%c, %c"),
+ error (0, 0, _("warning: the ambiguous octal escape\
+ \\%c%c%c is being\n\tinterpreted as the 2-byte sequence \\0%c%c, %c"),
s[i], s[i + 1], s[i + 2],
s[i], s[i + 1], s[i + 2]);
}
@@ -1417,8 +1417,8 @@ string2_extend (const struct Spec_list *s1, struct Spec_list *s2)
That's not portable however, contradicts POSIX and is dependent
on your collating sequence. */
error (EXIT_FAILURE, 0,
- _("when translating with string1 longer than string2,\n\
-the latter string must not end with a character class"));
+ _("when translating with string1 longer than string2,\nthe \
+ latter string must not end with a character class"));
abort (); /* inform gcc that the above use of error never returns. */
break;
@@ -1495,15 +1495,15 @@ validate (struct Spec_list *s1, struct Spec_list *s2)
if (s2->has_equiv_class)
{
error (EXIT_FAILURE, 0,
- _("[=c=] expressions may not appear in string2 \
-when translating"));
+ _("[=c=] expressions may not appear in string2\
+ when translating"));
}
if (s2->has_restricted_char_class)
{
error (EXIT_FAILURE, 0,
- _("when translating, the only character classes that may \
-appear in\nstring2 are 'upper' and 'lower'"));
+ _("when translating, the only character classes that may\
+ appear in\nstring2 are 'upper' and 'lower'"));
}
validate_case_classes (s1, s2);
@@ -1535,8 +1535,8 @@ appear in\nstring2 are 'upper' and 'lower'"));
{
if (s2->n_indefinite_repeats > 0)
error (EXIT_FAILURE, 0,
- _("the [c*] construct may appear in string2 only \
-when translating"));
+ _("the [c*] construct may appear in string2 only\
+ when translating"));
}
}
}