BUG: Fix previous change to file(STRINGS) command.

- Previous change added form-feed as a string terminator.
  - Instead it should just be recognized as a valid string character.
This commit is contained in:
Brad King 2008-05-17 11:42:11 -04:00
parent 7ed8deeac2
commit b9ede3c86d
1 changed files with 6 additions and 10 deletions

View File

@ -533,16 +533,12 @@ bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args)
(limit_input < 0 || static_cast<int>(fin.tellg()) < limit_input) && (limit_input < 0 || static_cast<int>(fin.tellg()) < limit_input) &&
(c = fin.get(), fin)) (c = fin.get(), fin))
{ {
if(c == '\0' || c == '\f') if(c == '\0')
{ {
// A terminating character has been found. In most cases it is // A terminating null character has been found. Check if the
// a NULL character, but at least one compiler (Portland Group // current string matches the requirements. Since it was
// Fortran) produces binaries that terminate strings with a form // terminated by a null character, we require that the length be
// feed. // at least one no matter what the user specified.
// Check if the current string matches the requirements. Since
// it was terminated by a null character, we require that the
// length be at least one no matter what the user specified.
if(s.length() >= minlen && s.length() >= 1 && if(s.length() >= minlen && s.length() >= 1 &&
(!have_regex || regex.find(s.c_str()))) (!have_regex || regex.find(s.c_str())))
{ {
@ -582,7 +578,7 @@ bool cmFileCommand::HandleStringsCommand(std::vector<std::string> const& args)
{ {
// Ignore CR character to make output always have UNIX newlines. // Ignore CR character to make output always have UNIX newlines.
} }
else if(c >= 0x20 && c < 0x7F || c == '\t' || else if(c >= 0x20 && c < 0x7F || c == '\t' || c == '\f' ||
(c == '\n' && newline_consume)) (c == '\n' && newline_consume))
{ {
// This is an ASCII character that may be part of a string. // This is an ASCII character that may be part of a string.