/* Handle stings for SFO Output with escape character ^ in a string */
EFI_STRING HandleStringWithEscapeCharForParse(IN CHAR16 *String)
/* Handle stings for SFO Output with escape character ^ in a string */
EFI_STRING HandleStringWithEscapeCharForParse(IN CHAR16 *String)
{
  EFI_STRING  NewStr;
  EFI_STRING  StrWalker;
  EFI_STRING  ReturnStr;
  if (String == NULL) {
    return NULL;
  }
  NewStr = AllocateZeroPool (StrSize (String));
  if (NewStr == NULL) {
    return NULL;
  }
  ReturnStr = NewStr;
  StrWalker = String;
  while (*StrWalker != CHAR_NULL) {
    if ((*StrWalker == L'^') && ((*(StrWalker + 1) == L'^') || (*(StrWalker + 1) == L'"'))) {
      *NewStr = *(StrWalker + 1);
      StrWalker++;
    } else {
      *NewStr = *StrWalker;
    }
    StrWalker++;
    NewStr++;
  }
  return ReturnStr;
}