diff options
author | mdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-06-30 23:13:06 +0000 |
---|---|---|
committer | mdkinney <mdkinney@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-06-30 23:13:06 +0000 |
commit | c553db4b78024d7b3a14c0224c750976f4062585 (patch) | |
tree | b21f7824c9c798eebcf1ed64b662a9ddd96a1ee8 /MdePkg | |
parent | 40f2c454343be84ab3bacf9955cc8d7842c70b5c (diff) | |
download | edk2-c553db4b78024d7b3a14c0224c750976f4062585.zip edk2-c553db4b78024d7b3a14c0224c750976f4062585.tar.gz edk2-c553db4b78024d7b3a14c0224c750976f4062585.tar.bz2 |
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
Diffstat (limited to 'MdePkg')
-rw-r--r-- | MdePkg/Include/Library/PrintLib.h | 17 | ||||
-rw-r--r-- | MdePkg/Library/BasePrintLib/PrintLibInternal.c | 54 |
2 files changed, 64 insertions, 7 deletions
diff --git a/MdePkg/Include/Library/PrintLib.h b/MdePkg/Include/Library/PrintLib.h index 207d33c..9aca725 100644 --- a/MdePkg/Include/Library/PrintLib.h +++ b/MdePkg/Include/Library/PrintLib.h @@ -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
diff --git a/MdePkg/Library/BasePrintLib/PrintLibInternal.c b/MdePkg/Library/BasePrintLib/PrintLibInternal.c index ef006bb..cf5c28e 100644 --- a/MdePkg/Library/BasePrintLib/PrintLibInternal.c +++ b/MdePkg/Library/BasePrintLib/PrintLibInternal.c @@ -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:
|