#include EFI_PROTOCOL_DEFINITION (Hii)\r
#endif\r
\r
-STATIC\r
-CHAR_W *\r
-GetFlagsAndWidth (\r
- IN CHAR_W *Format,\r
- OUT UINTN *Flags,\r
- OUT UINTN *Width,\r
- IN OUT VA_LIST *Marker\r
- );\r
\r
STATIC\r
UINTN\r
UINTN BufferLeft;\r
UINT64 Value;\r
EFI_GUID *TmpGUID;\r
+ BOOLEAN Done;\r
\r
//\r
// Process the format string. Stop if Buffer is over run.\r
//\r
// Now it's time to parse what follows after %\r
//\r
- Format = GetFlagsAndWidth (Format, &Flags, &Width, &Marker);\r
+ Flags = 0;\r
+ Width = 0;\r
+ for (Done = FALSE; !Done;) {\r
+ Format++;\r
+ \r
+ switch (*Format) {\r
+ \r
+ case '-':\r
+ Flags |= LEFT_JUSTIFY;\r
+ break;\r
+ \r
+ case '+':\r
+ Flags |= PREFIX_SIGN;\r
+ break;\r
+ \r
+ case ' ':\r
+ Flags |= PREFIX_BLANK;\r
+ break;\r
+ \r
+ case ',':\r
+ Flags |= COMMA_TYPE;\r
+ break;\r
+ \r
+ case 'L':\r
+ case 'l':\r
+ Flags |= LONG_TYPE;\r
+ break;\r
+ \r
+ case '*':\r
+ Width = VA_ARG (Marker, UINTN);\r
+ break;\r
+ \r
+ case '0':\r
+ Flags |= PREFIX_ZERO;\r
+ \r
+ case '1':\r
+ case '2':\r
+ case '3':\r
+ case '4':\r
+ case '5':\r
+ case '6':\r
+ case '7':\r
+ case '8':\r
+ case '9':\r
+ Count = 0;\r
+ do {\r
+ Count = (Count * 10) +*Format - '0';\r
+ Format++;\r
+ } while ((*Format >= '0') && (*Format <= '9'));\r
+ Format--;\r
+ Width = Count;\r
+ break;\r
+ \r
+ default:\r
+ Done = TRUE;\r
+ }\r
+ }\r
+\r
switch (*Format) {\r
case 'p':\r
//\r
return &Buffer[Index] - StartOfBuffer;\r
}\r
\r
-STATIC\r
-CHAR_W *\r
-GetFlagsAndWidth (\r
- IN CHAR_W *Format,\r
- OUT UINTN *Flags,\r
- OUT UINTN *Width,\r
- IN OUT VA_LIST *Marker\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- VSPrint worker function that parses flag and width information from the \r
- Format string and returns the next index into the Format string that needs\r
- to be parsed. See file headed for details of Flag and Width.\r
-\r
-Arguments:\r
-\r
- Format - Current location in the VSPrint format string.\r
-\r
- Flags - Returns flags\r
-\r
- Width - Returns width of element\r
-\r
- Marker - Vararg list that may be paritally consumed and returned.\r
-\r
-Returns: \r
-\r
- Pointer indexed into the Format string for all the information parsed\r
- by this routine.\r
-\r
---*/\r
-{\r
- UINTN Count;\r
- BOOLEAN Done;\r
-\r
- *Flags = 0;\r
- *Width = 0;\r
- for (Done = FALSE; !Done;) {\r
- Format++;\r
-\r
- switch (*Format) {\r
-\r
- case '-':\r
- *Flags |= LEFT_JUSTIFY;\r
- break;\r
-\r
- case '+':\r
- *Flags |= PREFIX_SIGN;\r
- break;\r
-\r
- case ' ':\r
- *Flags |= PREFIX_BLANK;\r
- break;\r
-\r
- case ',':\r
- *Flags |= COMMA_TYPE;\r
- break;\r
-\r
- case 'L':\r
- case 'l':\r
- *Flags |= LONG_TYPE;\r
- break;\r
-\r
- case '*':\r
- *Width = VA_ARG (*Marker, UINTN);\r
- break;\r
-\r
- case '0':\r
- *Flags |= PREFIX_ZERO;\r
-\r
- case '1':\r
- case '2':\r
- case '3':\r
- case '4':\r
- case '5':\r
- case '6':\r
- case '7':\r
- case '8':\r
- case '9':\r
- Count = 0;\r
- do {\r
- Count = (Count * 10) +*Format - '0';\r
- Format++;\r
- } while ((*Format >= '0') && (*Format <= '9'));\r
- Format--;\r
- *Width = Count;\r
- break;\r
-\r
- default:\r
- Done = TRUE;\r
- }\r
- }\r
-\r
- return Format;\r
-}\r
-\r
STATIC\r
UINTN\r
GuidToString (\r