mirror of https://github.com/acidanthera/audk.git
Adjust the behavior of the MdePkg Print Library class to produce a consistent style of EOL characters.
Previously, the Print Library class would translate '\n' to '\n\r'. With this update, the following EOL translations are performed: 1) '\r' to '\r' 2) '\r\n' to '\r\n' 3) '\n' to '\r\n' 4) '\n\r' to '\r\n' git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8692 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
40f2c45434
commit
c553db4b78
|
@ -15,11 +15,18 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
|||
strings. Many of the output functions use a format string to describe how to
|
||||
format the output of variable arguments. The format string consists of normal
|
||||
text and argument descriptors. There are no restrictions for how the normal
|
||||
text and argument descriptors can be mixed. A normal text character '\n' must
|
||||
always be converted to '\n\r'. This does not follow the ANSI C standard for
|
||||
sprint(). The format of argument descriptors is described below. The ANSI C
|
||||
standard for sprint() has been followed for some of the format types, and has
|
||||
not been followed for others. The exceptions are noted below.
|
||||
text and argument descriptors can be mixed. The following end of line(EOL)
|
||||
translations must be performed on the contents of the format string:
|
||||
|
||||
- '\\r' is translated to '\\r'
|
||||
- '\\r\\n' is translated to '\\r\\n'
|
||||
- '\\n' is translated to '\\r\\n'
|
||||
- '\\n\\r' is translated to '\\r\\n'
|
||||
|
||||
This does not follow the ANSI C standard for sprint(). The format of argument
|
||||
descriptors is described below. The ANSI C standard for sprint() has been
|
||||
followed for some of the format types, and has not been followed for others.
|
||||
The exceptions are noted below.
|
||||
|
||||
%[flags][width][.precision]type
|
||||
|
||||
|
|
|
@ -702,8 +702,33 @@ BasePrintLibSPrintMarker (
|
|||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
Format += BytesPerFormatCharacter;
|
||||
FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask;
|
||||
if (FormatCharacter == '\n') {
|
||||
//
|
||||
// Translate '\r\n' to '\r\n'
|
||||
//
|
||||
ArgumentString = "\r\n";
|
||||
} else {
|
||||
//
|
||||
// Translate '\r' to '\r'
|
||||
//
|
||||
ArgumentString = "\r";
|
||||
Format -= BytesPerFormatCharacter;
|
||||
}
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
ArgumentString = "\n\r";
|
||||
//
|
||||
// Translate '\n' to '\r\n' and '\n\r' to '\r\n'
|
||||
//
|
||||
ArgumentString = "\r\n";
|
||||
Format += BytesPerFormatCharacter;
|
||||
FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask;
|
||||
if (FormatCharacter != '\r') {
|
||||
Format -= BytesPerFormatCharacter;
|
||||
}
|
||||
break;
|
||||
|
||||
case '%':
|
||||
|
@ -717,8 +742,33 @@ BasePrintLibSPrintMarker (
|
|||
}
|
||||
break;
|
||||
|
||||
case '\r':
|
||||
Format += BytesPerFormatCharacter;
|
||||
FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask;
|
||||
if (FormatCharacter == '\n') {
|
||||
//
|
||||
// Translate '\r\n' to '\r\n'
|
||||
//
|
||||
ArgumentString = "\r\n";
|
||||
} else {
|
||||
//
|
||||
// Translate '\r' to '\r'
|
||||
//
|
||||
ArgumentString = "\r";
|
||||
Format -= BytesPerFormatCharacter;
|
||||
}
|
||||
break;
|
||||
|
||||
case '\n':
|
||||
ArgumentString = "\n\r";
|
||||
//
|
||||
// Translate '\n' to '\r\n' and '\n\r' to '\r\n'
|
||||
//
|
||||
ArgumentString = "\r\n";
|
||||
Format += BytesPerFormatCharacter;
|
||||
FormatCharacter = ((*Format & 0xff) | (*(Format + 1) << 8)) & FormatMask;
|
||||
if (FormatCharacter != '\r') {
|
||||
Format -= BytesPerFormatCharacter;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue