mirror of
https://github.com/CloverHackyColor/CloverBootloader.git
synced 2025-02-23 02:11:54 +01:00
merge master and c++_globals
Signed-off-by: Sergey Isakov <isakov-sl@bk.ru>
This commit is contained in:
parent
28ad1105d3
commit
d2ac4d7de9
1
.gitignore
vendored
1
.gitignore
vendored
@ -108,6 +108,7 @@ build/
|
||||
!default.mode2v3
|
||||
!default.perspectivev3
|
||||
xcuserdata/
|
||||
xcshareddata/
|
||||
|
||||
# Translation files
|
||||
CloverUpdater.strings
|
||||
|
@ -51,6 +51,12 @@ SECTIONS {
|
||||
KEEP (*(.eh_frame))
|
||||
}
|
||||
|
||||
.ctorss ALIGN(CONSTANT(COMMONPAGESIZE)) : {
|
||||
__beginning_of_section_ctors = .; /* create symbol for start of section */
|
||||
KEEP (*(.ctors))
|
||||
__end_of_section_ctors = .; /* create symbol for end of section */
|
||||
}
|
||||
|
||||
.rela (INFO) : {
|
||||
*(.rela .rela.*)
|
||||
}
|
||||
|
@ -50,11 +50,11 @@
|
||||
"false" = "ложь";
|
||||
|
||||
"Theme:" = "Тема:";
|
||||
"Themes" = "Themes"; // window title
|
||||
"No themes found" = "No themes found";
|
||||
"Manager" = "Manager"; // Theme manager
|
||||
"Can't remove the theme" = "Can't remove the theme";
|
||||
"Show installed" = "Show installed";
|
||||
"Themes" = "Темы"; // window title
|
||||
"No themes found" = "Темы не найдены";
|
||||
"Manager" = "Менеджер"; // Theme manager
|
||||
"Can't remove the theme" = "Не возможно удалить тему";
|
||||
"Show installed" = "Показать установленные";
|
||||
"Sound:" = "Звук:";
|
||||
"*Make filesystem read-write" = "*Открыть файловую систему на запись";
|
||||
"*Disable Sleep Proxy Client" = "*Отключение Sleep Proxy Client";
|
||||
|
@ -1421,7 +1421,7 @@ BiosVideoCheckForVbe (
|
||||
}
|
||||
|
||||
if (ModeNumber > 1) {
|
||||
gBS->CopyMem (
|
||||
CopyMem (
|
||||
ModeBuffer,
|
||||
BiosVideoPrivate->ModeData,
|
||||
(ModeNumber - 1) * sizeof (BIOS_VIDEO_MODE_DATA)
|
||||
@ -2121,7 +2121,7 @@ BiosVideoGraphicsOutputVbeBlt (
|
||||
VbeBuffer = ((UINT8 *) VbeFrameBuffer + DstY * BytesPerScanLine + DestinationX * VbePixelWidth);
|
||||
VbeBuffer1 = ((UINT8 *) VbeFrameBuffer + SrcY * BytesPerScanLine + SourceX * VbePixelWidth);
|
||||
|
||||
gBS->CopyMem (
|
||||
CopyMem (
|
||||
VbeBuffer,
|
||||
VbeBuffer1,
|
||||
TotalBytes
|
||||
@ -2157,7 +2157,7 @@ BiosVideoGraphicsOutputVbeBlt (
|
||||
((Blt->Blue & Mode->Blue.Mask) << Mode->Blue.Position);
|
||||
|
||||
for (Index = 0; Index < Width; Index++) {
|
||||
gBS->CopyMem (
|
||||
CopyMem (
|
||||
VbeBuffer,
|
||||
&Pixel,
|
||||
VbePixelWidth
|
||||
@ -2167,7 +2167,7 @@ BiosVideoGraphicsOutputVbeBlt (
|
||||
|
||||
VbeBuffer = (UINT8 *) ((UINTN) VbeFrameBuffer + (DestinationY * BytesPerScanLine) + DestinationX * VbePixelWidth);
|
||||
for (DstY = DestinationY + 1; DstY < (Height + DestinationY); DstY++) {
|
||||
gBS->CopyMem (
|
||||
CopyMem (
|
||||
(VOID *) ((UINTN) VbeFrameBuffer + (DstY * BytesPerScanLine) + DestinationX * VbePixelWidth),
|
||||
VbeBuffer,
|
||||
TotalBytes
|
||||
@ -2201,7 +2201,7 @@ BiosVideoGraphicsOutputVbeBlt (
|
||||
Pixel = ((Blt->Red & Mode->Red.Mask) << Mode->Red.Position) |
|
||||
((Blt->Green & Mode->Green.Mask) << Mode->Green.Position) |
|
||||
((Blt->Blue & Mode->Blue.Mask) << Mode->Blue.Position);
|
||||
gBS->CopyMem (
|
||||
CopyMem (
|
||||
VbeBuffer,
|
||||
&Pixel,
|
||||
VbePixelWidth
|
||||
|
@ -107,7 +107,7 @@ InitializeInterruptRedirection (
|
||||
//
|
||||
// Copy code to legacy region
|
||||
//
|
||||
gBS->CopyMem ((VOID *)(UINTN)LegacyRegionBase, (VOID *)&InterruptRedirectionCode[0], sizeof (InterruptRedirectionCode));
|
||||
CopyMem ((VOID *)(UINTN)LegacyRegionBase, (VOID *)&InterruptRedirectionCode[0], sizeof (InterruptRedirectionCode));
|
||||
|
||||
//
|
||||
// Get VectorBase, it should be 0x68
|
||||
|
@ -106,15 +106,36 @@
|
||||
# build_rule_version=0.1
|
||||
#
|
||||
|
||||
[Cxx-Code-File]
|
||||
<InputFile>
|
||||
?.cpp
|
||||
?.Cpp
|
||||
?.CPP
|
||||
|
||||
<ExtraDependency>
|
||||
$(MAKE_FILE)
|
||||
|
||||
<OutputFile>
|
||||
$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj
|
||||
|
||||
<Command.MSFT, Command.INTEL>
|
||||
"$(CC)" /Fo${dst} $(CC_FLAGS) $(INC) ${src}
|
||||
|
||||
<Command.GCC, Command.RVCT>
|
||||
# For RVCTCYGWIN CC_FLAGS must be first to work around pathing issues
|
||||
@"$(CC)" $(CXX_FLAGS) -c -o ${dst} $(INC) ${src}
|
||||
@"echo" [CC] ${s_base}
|
||||
|
||||
<Command.XCODE>
|
||||
@"$(CC)" $(CC_FLAGS) -o ${dst} $(INC) ${src}
|
||||
@"echo" [CC] ${s_base}
|
||||
|
||||
[C-Code-File]
|
||||
<InputFile>
|
||||
?.c
|
||||
?.C
|
||||
?.cc
|
||||
?.CC
|
||||
?.cpp
|
||||
?.Cpp
|
||||
?.CPP
|
||||
|
||||
<ExtraDependency>
|
||||
$(MAKE_FILE)
|
||||
|
@ -2408,6 +2408,7 @@ RELEASE_GCC48_AARCH64_CC_FLAGS = DEF(GCC48_AARCH64_CC_FLAGS) -Wno-unused-but-s
|
||||
*_GCC53_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS),-m,elf_x86_64
|
||||
*_GCC53_X64_ASM_FLAGS = DEF(GCC53_ASM_FLAGS) -m64
|
||||
*_GCC53_X64_CC_FLAGS = DEF(GCC53_X64_CC_FLAGS) ENV(GCC53_X64_EXTRA_CC_FLAGS)
|
||||
*_GCC53_X64_CXX_FLAGS = DEF(GCC53_X64_CC_FLAGS) ENV(GCC53_X64_EXTRA_CC_FLAGS)
|
||||
*_GCC53_X64_DLINK_FLAGS = DEF(GCC53_X64_DLINK_FLAGS) DEF(GCC53_X64_CC_FLAGS) ENV(GCC53_X64_EXTRA_CC_FLAGS)
|
||||
*_GCC53_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS)
|
||||
*_GCC53_X64_OBJCOPY_FLAGS =
|
||||
|
@ -77,7 +77,7 @@ HdaControllerStreamPollTimerHandler(
|
||||
// Have we reached the end of the source buffer? If so the stream will stop on the next block.
|
||||
if (HdaStream->BufferSourcePosition >= HdaStream->BufferSourceLength) {
|
||||
// Zero out next block.
|
||||
gBS->SetMem(HdaStream->BufferData + (HdaNextBlock * HDA_BDL_BLOCKSIZE), HDA_BDL_BLOCKSIZE, 0);
|
||||
SetMem(HdaStream->BufferData + (HdaNextBlock * HDA_BDL_BLOCKSIZE), HDA_BDL_BLOCKSIZE, 0);
|
||||
|
||||
// Set flag to stop stream on the next block.
|
||||
HdaStream->BufferSourceDone = TRUE;
|
||||
@ -95,7 +95,7 @@ HdaControllerStreamPollTimerHandler(
|
||||
if (HdaStream->Output) {
|
||||
// Copy data to DMA buffer.
|
||||
if (HdaSourceLength < HDA_BDL_BLOCKSIZE)
|
||||
gBS->SetMem(HdaStream->BufferData + (HdaNextBlock * HDA_BDL_BLOCKSIZE), HDA_BDL_BLOCKSIZE, 0);
|
||||
SetMem(HdaStream->BufferData + (HdaNextBlock * HDA_BDL_BLOCKSIZE), HDA_BDL_BLOCKSIZE, 0);
|
||||
CopyMem(HdaStream->BufferData + (HdaNextBlock * HDA_BDL_BLOCKSIZE), HdaStream->BufferSource + HdaStream->BufferSourcePosition, HdaSourceLength);
|
||||
} else { // Input stream (copy data from).
|
||||
// Copy data from DMA buffer.
|
||||
@ -294,7 +294,7 @@ HdaControllerScanCodecs(
|
||||
|
||||
// Create verb list with single item.
|
||||
VendorVerb = HDA_CODEC_VERB(HDA_VERB_GET_PARAMETER, HDA_PARAMETER_VENDOR_ID);
|
||||
gBS->SetMem(&HdaCodecVerbList, sizeof(EFI_HDA_IO_VERB_LIST), 0);
|
||||
SetMem(&HdaCodecVerbList, sizeof(EFI_HDA_IO_VERB_LIST), 0);
|
||||
HdaCodecVerbList.Count = 1;
|
||||
HdaCodecVerbList.Verbs = &VendorVerb;
|
||||
HdaCodecVerbList.Responses = &VendorResponse;
|
||||
|
@ -400,7 +400,7 @@ HdaControllerHdaIoStartStream(
|
||||
HdaStream->CallbackContext3 = Context3;
|
||||
|
||||
// Zero out buffer.
|
||||
gBS->SetMem(HdaStream->BufferData, HDA_STREAM_BUF_SIZE, 0);
|
||||
SetMem(HdaStream->BufferData, HDA_STREAM_BUF_SIZE, 0);
|
||||
|
||||
// Fill rest of current block.
|
||||
HdaStreamDmaRemainingLength = HDA_BDL_BLOCKSIZE - (HdaStreamDmaPos - (HdaStreamCurrentBlock * HDA_BDL_BLOCKSIZE));
|
||||
|
@ -75,7 +75,7 @@ HdaControllerInitCorb(
|
||||
Status = PciIo->AllocateBuffer(PciIo, AllocateAnyPages, EfiBootServicesData, EFI_SIZE_TO_PAGES(CorbLength), &CorbBuffer, 0);
|
||||
if (EFI_ERROR(Status))
|
||||
return Status;
|
||||
gBS->SetMem(CorbBuffer, CorbLength, 0);
|
||||
SetMem(CorbBuffer, CorbLength, 0);
|
||||
|
||||
// Map outbound buffer.
|
||||
CorbLengthActual = CorbLength;
|
||||
@ -464,7 +464,7 @@ HdaControllerInitStreams(
|
||||
(VOID**)&HdaStream->BufferList, 0);
|
||||
if (EFI_ERROR(Status))
|
||||
goto FREE_BUFFER;
|
||||
gBS->SetMem(HdaStream->BufferList, HDA_BDL_SIZE, 0);
|
||||
SetMem(HdaStream->BufferList, HDA_BDL_SIZE, 0);
|
||||
|
||||
// Map buffer descriptor list.
|
||||
BdlLengthActual = HDA_BDL_SIZE;
|
||||
@ -487,7 +487,7 @@ HdaControllerInitStreams(
|
||||
(VOID**)&HdaStream->BufferData, 0);
|
||||
if (EFI_ERROR(Status))
|
||||
goto FREE_BUFFER;
|
||||
gBS->SetMem(HdaStream->BufferData, HDA_STREAM_BUF_SIZE, 0);
|
||||
SetMem(HdaStream->BufferData, HDA_STREAM_BUF_SIZE, 0);
|
||||
|
||||
// Map buffer descriptor list.
|
||||
DataLengthActual = HDA_STREAM_BUF_SIZE;
|
||||
@ -517,7 +517,7 @@ HdaControllerInitStreams(
|
||||
EFI_SIZE_TO_PAGES(HdaControllerDev->DmaPositionsSize), (VOID**)&HdaControllerDev->DmaPositions, 0);
|
||||
if (EFI_ERROR(Status))
|
||||
goto FREE_BUFFER;
|
||||
gBS->SetMem(HdaControllerDev->DmaPositions, HdaControllerDev->DmaPositionsSize, 0);
|
||||
SetMem(HdaControllerDev->DmaPositions, HdaControllerDev->DmaPositionsSize, 0);
|
||||
|
||||
// Map buffer descriptor list.
|
||||
DmaPositionsLengthActual = HdaControllerDev->DmaPositionsSize;
|
||||
|
@ -197,7 +197,7 @@ int EFIAPI tfp_sprintf(char *str, const char *fmt, ...) __printflike(2, 3);
|
||||
do { vprintf (f, v); do { } while (1); } while (0)
|
||||
|
||||
// Avoid implementing memcpy as a function to avoid LTO conflicts.
|
||||
#define memcpy(Dst, Src, Size) do { gBS->CopyMem(Dst, Src, Size); } while (0)
|
||||
#define memcpy(Dst, Src, Size) do { CopyMem(Dst, Src, Size); } while (0)
|
||||
|
||||
// Forcing VOID for those as the return types actually differ.
|
||||
#define strlcpy(Dst, Src, Size) do { AsciiStrnCpyS (Dst, Size, Src, AsciiStrLen (Src)); } while (0)
|
||||
|
@ -370,7 +370,11 @@ struct _LIST_ENTRY {
|
||||
///
|
||||
/// NULL pointer (VOID *)
|
||||
///
|
||||
#ifdef __cplusplus
|
||||
#define NULL nullptr
|
||||
#else
|
||||
#define NULL ((VOID *) 0)
|
||||
#endif
|
||||
|
||||
//
|
||||
// Null character
|
||||
|
@ -200,7 +200,11 @@
|
||||
/// 2-byte Character. Unless otherwise specified all strings are stored in the
|
||||
/// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards.
|
||||
///
|
||||
#ifdef __cplusplus
|
||||
#define CHAR16 wchar_t
|
||||
#else
|
||||
typedef unsigned short CHAR16;
|
||||
#endif
|
||||
///
|
||||
/// 2-byte signed value
|
||||
///
|
||||
|
@ -150,8 +150,6 @@ DecodeImageData (//IN APPLE_IMAGE_CODEC_PROTOCOL* This,
|
||||
EFI_STATUS Status;
|
||||
EG_IMAGE *Image;
|
||||
INTN Index;
|
||||
// UINT32 ImageDataSize;
|
||||
|
||||
//automatic choose format
|
||||
if (!RawImageData || !RawImageDataSize) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
|
@ -8,8 +8,13 @@
|
||||
*/
|
||||
|
||||
#include <Protocol/MsgLog.h>
|
||||
#include <Library/PrintLib.h>
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/UefiRuntimeServicesTableLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/PrintLib.h>
|
||||
|
||||
MESSAGE_LOG_PROTOCOL MsgLogProtocol;
|
||||
EFI_HANDLE mHandle = NULL;
|
||||
|
@ -18,9 +18,9 @@
|
||||
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/UefiBootServicesTableLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/DevicePathLib.h>
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Protocol/LoadedImage.h>
|
||||
#include <Protocol/LoadFile.h>
|
||||
#include <Protocol/SimpleFileSystem.h>
|
||||
@ -310,6 +310,10 @@ OvrLoadImage(IN BOOLEAN BootPolicy,
|
||||
gBS->FreePool(SourceBuffer);
|
||||
}
|
||||
|
||||
if (FileInfo) {
|
||||
gBS->FreePool(FileInfo);
|
||||
}
|
||||
|
||||
//
|
||||
// dmazar: some boards do not put device handle to EfiLoadedImageProtocol->DeviceHandle
|
||||
// when image is loaded from SrcBuffer, and then boot.efi fails.
|
||||
|
@ -393,7 +393,7 @@ checkCmdlineArguments() {
|
||||
done
|
||||
|
||||
# Update variables
|
||||
PLATFORMFILE="${PLATFORMFILE:-Clover.dsc}"
|
||||
PLATFORMFILE="${PLATFORMFILE:-Clover_cpp.dsc}"
|
||||
if [ ! -z "${MODULEFILE}" ]; then
|
||||
MODULEFILE=" -m $MODULEFILE"
|
||||
fi
|
||||
|
@ -10,6 +10,9 @@ Headers collection for procedures
|
||||
// Comment to use source debug options
|
||||
//#define DEBUG_ALL 2
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <Uefi.h>
|
||||
|
||||
@ -2541,4 +2544,8 @@ YesNoMessage (
|
||||
IN CHAR16 *Message);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -679,9 +679,6 @@ VOID SetDMISettingsForModel(MACHINE_TYPES Model, BOOLEAN Redefine)
|
||||
case iMac143:
|
||||
gFwFeatures = 0xE00FE137;
|
||||
break;
|
||||
case MacPro61:
|
||||
gFwFeatures = 0xE80FE176;
|
||||
break;
|
||||
case MacBookPro111:
|
||||
case MacBookPro112:
|
||||
case MacBookPro113:
|
||||
@ -718,24 +715,17 @@ VOID SetDMISettingsForModel(MACHINE_TYPES Model, BOOLEAN Redefine)
|
||||
case iMac192:
|
||||
gFwFeatures = 0xFD8FF576;
|
||||
break;
|
||||
case MacPro71:
|
||||
gFwFeatures = 0xFDAFF066;
|
||||
break;
|
||||
|
||||
// Verified list from Users
|
||||
case MacBookPro61:
|
||||
case MacBookPro62:
|
||||
case MacBookPro71:
|
||||
case MacBookPro81:
|
||||
case MacBookPro82:
|
||||
case MacBookPro83:
|
||||
gFwFeatures = 0xC00DE137;
|
||||
break;
|
||||
case MacBookAir31:
|
||||
case MacBookAir32:
|
||||
case MacMini41:
|
||||
gFwFeatures = 0xD00DE137;
|
||||
break;
|
||||
case MacBookAir71:
|
||||
case MacBookAir72:
|
||||
gFwFeatures = 0xE00FE137;
|
||||
break;
|
||||
case iMac101:
|
||||
case iMac111:
|
||||
case iMac112:
|
||||
@ -745,13 +735,23 @@ VOID SetDMISettingsForModel(MACHINE_TYPES Model, BOOLEAN Redefine)
|
||||
case MacMini71:
|
||||
gFwFeatures = 0xE00DE137;
|
||||
break;
|
||||
case MacBookAir71:
|
||||
case MacBookAir72:
|
||||
gFwFeatures = 0xE00FE137;
|
||||
break;
|
||||
case MacPro51:
|
||||
gFwFeatures = 0xE80FE137;
|
||||
break;
|
||||
case MacPro61:
|
||||
gFwFeatures = 0xE80FE176;
|
||||
break;
|
||||
case MacPro71:
|
||||
gFwFeatures = 0xFD8FF53F;
|
||||
break;
|
||||
case MacBookPro61:
|
||||
case MacBookPro62:
|
||||
case MacBookPro71:
|
||||
case MacBookPro81:
|
||||
case MacBookPro82:
|
||||
case MacBookPro83:
|
||||
gFwFeatures = 0xC00DE137;
|
||||
break;
|
||||
case MacBookPro121:
|
||||
case MacBookPro151:
|
||||
case MacBookPro152:
|
||||
@ -832,9 +832,6 @@ VOID SetDMISettingsForModel(MACHINE_TYPES Model, BOOLEAN Redefine)
|
||||
case MacMini81:
|
||||
gFwFeaturesMask = 0xFFDFFF7F;
|
||||
break;
|
||||
case MacPro71:
|
||||
gFwFeaturesMask = 0xFFFFFF7F;
|
||||
break;
|
||||
|
||||
// Verified list from Users
|
||||
case MacBook61:
|
||||
@ -872,6 +869,10 @@ VOID SetDMISettingsForModel(MACHINE_TYPES Model, BOOLEAN Redefine)
|
||||
gFwFeaturesMask = 0xFF1FFF3F;
|
||||
break;
|
||||
|
||||
case MacPro71:
|
||||
gFwFeaturesMask = 0xFF9FFF3F;
|
||||
break;
|
||||
|
||||
default:
|
||||
gFwFeaturesMask = 0xFFFFFFFF; //unknown - use oem SMBIOS value to be default
|
||||
break;
|
||||
|
@ -90,7 +90,6 @@ void* lodepng_realloc(void* ptr, size_t new_size)
|
||||
#define memset(dest,ch,count) SetMem(dest,(UINTN)(count),(UINT8)(ch))
|
||||
|
||||
|
||||
|
||||
//MODSNI ^
|
||||
|
||||
|
||||
|
@ -28,61 +28,6 @@ Revision History
|
||||
#define PRINT_ITEM_BUFFER_LEN 100
|
||||
#define PRINT_JOINT_BUFFER_LEN 4
|
||||
|
||||
typedef struct {
|
||||
BOOLEAN Ascii;
|
||||
UINTN Index;
|
||||
union {
|
||||
CONST CHAR16 *pw;
|
||||
CHAR8 *pc;
|
||||
} u;
|
||||
} POINTER;
|
||||
|
||||
typedef struct _pitem {
|
||||
|
||||
POINTER Item;
|
||||
CHAR16 *Scratch;
|
||||
UINTN Width;
|
||||
UINTN FieldWidth;
|
||||
UINTN *WidthParse;
|
||||
CHAR16 Pad;
|
||||
BOOLEAN PadBefore;
|
||||
BOOLEAN Comma;
|
||||
BOOLEAN Long;
|
||||
} PRINT_ITEM;
|
||||
|
||||
typedef struct _pstate {
|
||||
//
|
||||
// Input
|
||||
//
|
||||
POINTER fmt;
|
||||
VA_LIST args;
|
||||
|
||||
//
|
||||
// Output
|
||||
//
|
||||
CHAR16 *Buffer;
|
||||
CHAR16 *End;
|
||||
CHAR16 *Pos;
|
||||
UINTN Len;
|
||||
|
||||
UINTN Attr;
|
||||
UINTN RestoreAttr;
|
||||
|
||||
UINTN AttrNorm;
|
||||
UINTN AttrHighlight;
|
||||
UINTN AttrError;
|
||||
UINTN AttrBlueColor;
|
||||
UINTN AttrGreenColor;
|
||||
|
||||
EFI_STATUS (EFIAPI *Output) (VOID *context, CHAR16 *str);
|
||||
EFI_STATUS (EFIAPI *SetAttr) (VOID *context, UINTN attr);
|
||||
VOID *Context;
|
||||
|
||||
//
|
||||
// Current item being formatted
|
||||
//
|
||||
struct _pitem *Item;
|
||||
} PRINT_STATE;
|
||||
|
||||
typedef struct {
|
||||
BOOLEAN PageBreak;
|
||||
|
@ -47,6 +47,86 @@ Revision History
|
||||
#define IS_PUNCT(x) ((x == '.') || (x == '-'))
|
||||
|
||||
|
||||
|
||||
// jief move struct definition to here to be accessible from XStringW
|
||||
typedef struct {
|
||||
BOOLEAN Ascii;
|
||||
UINTN Index;
|
||||
union {
|
||||
CONST CHAR16 *pw;
|
||||
CHAR8 *pc;
|
||||
} u;
|
||||
} POINTER;
|
||||
|
||||
typedef struct _pitem {
|
||||
|
||||
POINTER Item;
|
||||
CHAR16 *Scratch;
|
||||
UINTN Width;
|
||||
UINTN FieldWidth;
|
||||
UINTN *WidthParse;
|
||||
CHAR16 Pad;
|
||||
BOOLEAN PadBefore;
|
||||
BOOLEAN Comma;
|
||||
BOOLEAN Long;
|
||||
} PRINT_ITEM;
|
||||
|
||||
typedef struct _pstate {
|
||||
//
|
||||
// Input
|
||||
//
|
||||
POINTER fmt;
|
||||
VA_LIST args;
|
||||
|
||||
//
|
||||
// Output
|
||||
//
|
||||
CHAR16 *Buffer;
|
||||
CHAR16 *End;
|
||||
CHAR16 *Pos;
|
||||
UINTN Len;
|
||||
|
||||
UINTN Attr;
|
||||
UINTN RestoreAttr;
|
||||
|
||||
UINTN AttrNorm;
|
||||
UINTN AttrHighlight;
|
||||
UINTN AttrError;
|
||||
UINTN AttrBlueColor;
|
||||
UINTN AttrGreenColor;
|
||||
|
||||
EFI_STATUS (EFIAPI *Output) (VOID *context, CHAR16 *str);
|
||||
EFI_STATUS (EFIAPI *SetAttr) (VOID *context, UINTN attr);
|
||||
VOID *Context;
|
||||
|
||||
//
|
||||
// Current item being formatted
|
||||
//
|
||||
struct _pitem *Item;
|
||||
} PRINT_STATE;
|
||||
|
||||
|
||||
extern
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
_PoolPrint (
|
||||
IN POOL_PRINT *Context,
|
||||
IN CHAR16 *Buffer
|
||||
);
|
||||
|
||||
extern
|
||||
UINTN
|
||||
_PPrint (
|
||||
IN PRINT_STATE *ps
|
||||
);
|
||||
|
||||
// jief
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
typedef struct {
|
||||
CHAR16 *Str;
|
||||
|
Loading…
Reference in New Issue
Block a user