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)\|[/][^"'/*]\|[/]"\([^\"]\|[\].\)*"\|[/]'\([^\']\|[\].\)*'\)*
^(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)$$
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);
}
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;
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;
}
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;
}
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);
}
{
/* 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 */
/* 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
/* 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);
/* 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);
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);
}
}
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]);
}
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;
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);
{
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"));
}
}
}