mirror of
https://github.com/reactos/reactos.git
synced 2025-01-13 01:22:03 +00:00
use spaces instead of tabs (for real now)
svn path=/trunk/; revision=38815
This commit is contained in:
parent
e17583e14d
commit
11f4f3033d
1 changed files with 252 additions and 252 deletions
|
@ -61,7 +61,7 @@ FrLdrLoadDriver(PCHAR szFileName,
|
|||
|
||||
FinalSlash = strrchr(szFileName, '\\');
|
||||
if(FinalSlash)
|
||||
szFileName = FinalSlash + 1;
|
||||
szFileName = FinalSlash + 1;
|
||||
|
||||
/* Open the Driver */
|
||||
FilePointer = FsOpenFile(szFileName);
|
||||
|
@ -69,31 +69,31 @@ FrLdrLoadDriver(PCHAR szFileName,
|
|||
/* Try under the system root in the main dir and drivers */
|
||||
if (FilePointer == NULL)
|
||||
{
|
||||
strcpy(value, SystemRoot);
|
||||
if(value[strlen(value)-1] != '\\')
|
||||
strcat(value, "\\");
|
||||
strcat(value, szFileName);
|
||||
FilePointer = FsOpenFile(value);
|
||||
strcpy(value, SystemRoot);
|
||||
if(value[strlen(value)-1] != '\\')
|
||||
strcat(value, "\\");
|
||||
strcat(value, szFileName);
|
||||
FilePointer = FsOpenFile(value);
|
||||
}
|
||||
|
||||
if (FilePointer == NULL)
|
||||
{
|
||||
strcpy(value, SystemRoot);
|
||||
if(value[strlen(value)-1] != '\\')
|
||||
strcat(value, "\\");
|
||||
strcat(value, "SYSTEM32\\");
|
||||
strcat(value, szFileName);
|
||||
FilePointer = FsOpenFile(value);
|
||||
strcpy(value, SystemRoot);
|
||||
if(value[strlen(value)-1] != '\\')
|
||||
strcat(value, "\\");
|
||||
strcat(value, "SYSTEM32\\");
|
||||
strcat(value, szFileName);
|
||||
FilePointer = FsOpenFile(value);
|
||||
}
|
||||
|
||||
if (FilePointer == NULL)
|
||||
{
|
||||
strcpy(value, SystemRoot);
|
||||
if(value[strlen(value)-1] != '\\')
|
||||
strcat(value, "\\");
|
||||
strcat(value, "SYSTEM32\\DRIVERS\\");
|
||||
strcat(value, szFileName);
|
||||
FilePointer = FsOpenFile(value);
|
||||
strcpy(value, SystemRoot);
|
||||
if(value[strlen(value)-1] != '\\')
|
||||
strcat(value, "\\");
|
||||
strcat(value, "SYSTEM32\\DRIVERS\\");
|
||||
strcat(value, szFileName);
|
||||
FilePointer = FsOpenFile(value);
|
||||
}
|
||||
|
||||
/* Make sure we did */
|
||||
|
@ -438,7 +438,7 @@ FrLdrLoadBootDrivers(PCHAR szSystemRoot,
|
|||
/* open driver Key */
|
||||
rc = RegOpenKey(hServiceKey, ServiceName, &hDriverKey);
|
||||
if (rc == ERROR_SUCCESS)
|
||||
{
|
||||
{
|
||||
/* Read the Start Value */
|
||||
ValueSize = sizeof(ULONG);
|
||||
rc = RegQueryValue(hDriverKey, L"Start", &ValueType, (PUCHAR)&StartValue, &ValueSize);
|
||||
|
@ -570,41 +570,41 @@ FrLdrLoadBootDrivers(PCHAR szSystemRoot,
|
|||
VOID
|
||||
LoadAndBootReactOS(PCSTR OperatingSystemName)
|
||||
{
|
||||
PFILE FilePointer;
|
||||
CHAR name[255];
|
||||
CHAR value[255];
|
||||
CHAR SystemPath[255];
|
||||
PFILE FilePointer;
|
||||
CHAR name[255];
|
||||
CHAR value[255];
|
||||
CHAR SystemPath[255];
|
||||
CHAR LivePath[255];
|
||||
CHAR szKernelName[255];
|
||||
CHAR szFileName[255];
|
||||
CHAR MsgBuffer[256];
|
||||
ULONG_PTR SectionId;
|
||||
CHAR szKernelName[255];
|
||||
CHAR szFileName[255];
|
||||
CHAR MsgBuffer[256];
|
||||
ULONG_PTR SectionId;
|
||||
PIMAGE_NT_HEADERS NtHeader;
|
||||
PVOID LoadBase;
|
||||
ULONG_PTR Base;
|
||||
ULONG Size;
|
||||
ULONG_PTR Base;
|
||||
ULONG Size;
|
||||
|
||||
//
|
||||
// Backdrop
|
||||
//
|
||||
UiDrawBackdrop();
|
||||
|
||||
//
|
||||
// Open the operating system section
|
||||
// specified in the .ini file
|
||||
//
|
||||
if (!IniOpenSection(OperatingSystemName, &SectionId))
|
||||
{
|
||||
sprintf(MsgBuffer,"Operating System section '%s' not found in freeldr.ini", OperatingSystemName);
|
||||
UiMessageBox(MsgBuffer);
|
||||
return;
|
||||
}
|
||||
//
|
||||
// Open the operating system section
|
||||
// specified in the .ini file
|
||||
//
|
||||
if (!IniOpenSection(OperatingSystemName, &SectionId))
|
||||
{
|
||||
sprintf(MsgBuffer,"Operating System section '%s' not found in freeldr.ini", OperatingSystemName);
|
||||
UiMessageBox(MsgBuffer);
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
// Read the command line
|
||||
//
|
||||
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
||||
{
|
||||
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
||||
{
|
||||
//
|
||||
// Check if a ramdisk file was given
|
||||
//
|
||||
|
@ -627,18 +627,18 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
|||
//
|
||||
RamDiskLoadVirtualFile(szFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Setup multiboot information structure
|
||||
*/
|
||||
/*
|
||||
* Setup multiboot information structure
|
||||
*/
|
||||
UiDrawProgressBarCenter(1, 100, szLoadingMsg);
|
||||
UiDrawStatusText("Detecting Hardware...");
|
||||
LoaderBlock.CommandLine = reactos_kernel_cmdline;
|
||||
LoaderBlock.PageDirectoryStart = (ULONG_PTR)&PageDirectoryStart;
|
||||
LoaderBlock.PageDirectoryEnd = (ULONG_PTR)&PageDirectoryEnd;
|
||||
LoaderBlock.ModsCount = 0;
|
||||
LoaderBlock.ModsAddr = reactos_modules;
|
||||
UiDrawStatusText("Detecting Hardware...");
|
||||
LoaderBlock.CommandLine = reactos_kernel_cmdline;
|
||||
LoaderBlock.PageDirectoryStart = (ULONG_PTR)&PageDirectoryStart;
|
||||
LoaderBlock.PageDirectoryEnd = (ULONG_PTR)&PageDirectoryEnd;
|
||||
LoaderBlock.ModsCount = 0;
|
||||
LoaderBlock.ModsAddr = reactos_modules;
|
||||
LoaderBlock.DrivesAddr = reactos_arc_disk_info;
|
||||
LoaderBlock.RdAddr = (ULONG_PTR)gRamDiskBase;
|
||||
LoaderBlock.RdLength = gRamDiskSize;
|
||||
|
@ -688,220 +688,220 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the registry
|
||||
*/
|
||||
RegInitializeRegistry();
|
||||
/*
|
||||
* Initialize the registry
|
||||
*/
|
||||
RegInitializeRegistry();
|
||||
|
||||
/*
|
||||
* Make sure the system path is set in the .ini file
|
||||
*/
|
||||
if (!IniReadSettingByName(SectionId, "SystemPath", SystemPath, sizeof(SystemPath)))
|
||||
{
|
||||
UiMessageBox("System path not specified for selected operating system.");
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* Make sure the system path is set in the .ini file
|
||||
*/
|
||||
if (!IniReadSettingByName(SectionId, "SystemPath", SystemPath, sizeof(SystemPath)))
|
||||
{
|
||||
UiMessageBox("System path not specified for selected operating system.");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Special case for Live CD.
|
||||
*/
|
||||
if (!_strnicmp(SystemPath, "LiveCD", strlen("LiveCD")))
|
||||
{
|
||||
/*
|
||||
* Special case for Live CD.
|
||||
*/
|
||||
if (!_strnicmp(SystemPath, "LiveCD", strlen("LiveCD")))
|
||||
{
|
||||
/* Use everything following the "LiveCD" string as the path */
|
||||
strcpy(LivePath, SystemPath + strlen("LiveCD"));
|
||||
/* Normalize */
|
||||
MachDiskGetBootPath(SystemPath, sizeof(SystemPath));
|
||||
strcat(SystemPath, LivePath);
|
||||
strcat(strcpy(reactos_kernel_cmdline, SystemPath),
|
||||
" /MININT");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! MachDiskNormalizeSystemPath(SystemPath,
|
||||
sizeof(SystemPath)))
|
||||
{
|
||||
UiMessageBox("Invalid system path");
|
||||
return;
|
||||
}
|
||||
/* copy system path into kernel command line */
|
||||
strcpy(reactos_kernel_cmdline, SystemPath);
|
||||
}
|
||||
" /MININT");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (! MachDiskNormalizeSystemPath(SystemPath,
|
||||
sizeof(SystemPath)))
|
||||
{
|
||||
UiMessageBox("Invalid system path");
|
||||
return;
|
||||
}
|
||||
/* copy system path into kernel command line */
|
||||
strcpy(reactos_kernel_cmdline, SystemPath);
|
||||
}
|
||||
|
||||
/*
|
||||
* Read the optional kernel parameters (if any)
|
||||
*/
|
||||
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
||||
{
|
||||
strcat(reactos_kernel_cmdline, " ");
|
||||
strcat(reactos_kernel_cmdline, value);
|
||||
}
|
||||
/*
|
||||
* Read the optional kernel parameters (if any)
|
||||
*/
|
||||
if (IniReadSettingByName(SectionId, "Options", value, sizeof(value)))
|
||||
{
|
||||
strcat(reactos_kernel_cmdline, " ");
|
||||
strcat(reactos_kernel_cmdline, value);
|
||||
}
|
||||
|
||||
/*
|
||||
* Detect hardware
|
||||
*/
|
||||
LoaderBlock.ArchExtra = (ULONG_PTR)MachHwDetect();
|
||||
/*
|
||||
* Detect hardware
|
||||
*/
|
||||
LoaderBlock.ArchExtra = (ULONG_PTR)MachHwDetect();
|
||||
UiDrawProgressBarCenter(5, 100, szLoadingMsg);
|
||||
|
||||
LoaderBlock.DrivesCount = reactos_disk_count;
|
||||
|
||||
UiDrawStatusText("Loading...");
|
||||
UiDrawStatusText("Loading...");
|
||||
|
||||
//
|
||||
// If we have a ramdisk, this will switch to the ramdisk disk routines
|
||||
// which read from memory instead of using the firmware. This has to be done
|
||||
// after hardware detection, since hardware detection will require using the
|
||||
// real routines in order to perform disk-detection (just because we're on a
|
||||
// ram-boot doesn't mean the user doesn't have actual disks installed too!)
|
||||
//
|
||||
RamDiskSwitchFromBios();
|
||||
//
|
||||
// If we have a ramdisk, this will switch to the ramdisk disk routines
|
||||
// which read from memory instead of using the firmware. This has to be done
|
||||
// after hardware detection, since hardware detection will require using the
|
||||
// real routines in order to perform disk-detection (just because we're on a
|
||||
// ram-boot doesn't mean the user doesn't have actual disks installed too!)
|
||||
//
|
||||
RamDiskSwitchFromBios();
|
||||
|
||||
/*
|
||||
* Try to open system drive
|
||||
*/
|
||||
if (!FsOpenSystemVolume(SystemPath, szBootPath, &LoaderBlock.BootDevice))
|
||||
{
|
||||
UiMessageBox("Failed to open system drive.");
|
||||
return;
|
||||
}
|
||||
/*
|
||||
* Try to open system drive
|
||||
*/
|
||||
if (!FsOpenSystemVolume(SystemPath, szBootPath, &LoaderBlock.BootDevice))
|
||||
{
|
||||
UiMessageBox("Failed to open system drive.");
|
||||
return;
|
||||
}
|
||||
|
||||
/* append a backslash */
|
||||
if ((strlen(szBootPath)==0) ||
|
||||
szBootPath[strlen(szBootPath)] != '\\')
|
||||
strcat(szBootPath, "\\");
|
||||
/* append a backslash */
|
||||
if ((strlen(szBootPath)==0) ||
|
||||
szBootPath[strlen(szBootPath)] != '\\')
|
||||
strcat(szBootPath, "\\");
|
||||
|
||||
DbgPrint((DPRINT_REACTOS,"SystemRoot: '%s'\n", szBootPath));
|
||||
strcpy(SystemRoot, szBootPath);
|
||||
DbgPrint((DPRINT_REACTOS,"SystemRoot: '%s'\n", szBootPath));
|
||||
strcpy(SystemRoot, szBootPath);
|
||||
|
||||
/*
|
||||
* Find the kernel image name
|
||||
* and try to load the kernel off the disk
|
||||
*/
|
||||
if(IniReadSettingByName(SectionId, "Kernel", value, sizeof(value)))
|
||||
{
|
||||
/*
|
||||
* Set the name and
|
||||
*/
|
||||
if (value[0] == '\\')
|
||||
{
|
||||
strcpy(szKernelName, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(szKernelName, szBootPath);
|
||||
strcat(szKernelName, "SYSTEM32\\");
|
||||
strcat(szKernelName, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(value, "NTOSKRNL.EXE");
|
||||
strcpy(szKernelName, szBootPath);
|
||||
strcat(szKernelName, "SYSTEM32\\");
|
||||
strcat(szKernelName, value);
|
||||
}
|
||||
/*
|
||||
* Find the kernel image name
|
||||
* and try to load the kernel off the disk
|
||||
*/
|
||||
if(IniReadSettingByName(SectionId, "Kernel", value, sizeof(value)))
|
||||
{
|
||||
/*
|
||||
* Set the name and
|
||||
*/
|
||||
if (value[0] == '\\')
|
||||
{
|
||||
strcpy(szKernelName, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(szKernelName, szBootPath);
|
||||
strcat(szKernelName, "SYSTEM32\\");
|
||||
strcat(szKernelName, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(value, "NTOSKRNL.EXE");
|
||||
strcpy(szKernelName, szBootPath);
|
||||
strcat(szKernelName, "SYSTEM32\\");
|
||||
strcat(szKernelName, value);
|
||||
}
|
||||
|
||||
/*
|
||||
* Find the HAL image name
|
||||
* and try to load the kernel off the disk
|
||||
*/
|
||||
if(IniReadSettingByName(SectionId, "Hal", value, sizeof(value)))
|
||||
{
|
||||
/*
|
||||
* Set the name and
|
||||
*/
|
||||
if (value[0] == '\\')
|
||||
{
|
||||
strcpy(szHalName, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(szHalName, szBootPath);
|
||||
strcat(szHalName, "SYSTEM32\\");
|
||||
strcat(szHalName, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(value, "HAL.DLL");
|
||||
strcpy(szHalName, szBootPath);
|
||||
strcat(szHalName, "SYSTEM32\\");
|
||||
strcat(szHalName, value);
|
||||
}
|
||||
/*
|
||||
* Find the HAL image name
|
||||
* and try to load the kernel off the disk
|
||||
*/
|
||||
if(IniReadSettingByName(SectionId, "Hal", value, sizeof(value)))
|
||||
{
|
||||
/*
|
||||
* Set the name and
|
||||
*/
|
||||
if (value[0] == '\\')
|
||||
{
|
||||
strcpy(szHalName, value);
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(szHalName, szBootPath);
|
||||
strcat(szHalName, "SYSTEM32\\");
|
||||
strcat(szHalName, value);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(value, "HAL.DLL");
|
||||
strcpy(szHalName, szBootPath);
|
||||
strcat(szHalName, "SYSTEM32\\");
|
||||
strcat(szHalName, value);
|
||||
}
|
||||
|
||||
/* Load the kernel */
|
||||
LoadBase = FrLdrLoadImage(szKernelName, 5, 1);
|
||||
if (!LoadBase) return;
|
||||
/* Load the kernel */
|
||||
LoadBase = FrLdrLoadImage(szKernelName, 5, 1);
|
||||
if (!LoadBase) return;
|
||||
|
||||
/* Get the NT header, kernel base and kernel entry */
|
||||
NtHeader = RtlImageNtHeader(LoadBase);
|
||||
KernelBase = SWAPD(NtHeader->OptionalHeader.ImageBase);
|
||||
KernelEntryPoint = (ROS_KERNEL_ENTRY_POINT)(KernelBase + SWAPD(NtHeader->OptionalHeader.AddressOfEntryPoint));
|
||||
LoaderBlock.KernelBase = KernelBase;
|
||||
/* Get the NT header, kernel base and kernel entry */
|
||||
NtHeader = RtlImageNtHeader(LoadBase);
|
||||
KernelBase = SWAPD(NtHeader->OptionalHeader.ImageBase);
|
||||
KernelEntryPoint = (ROS_KERNEL_ENTRY_POINT)(KernelBase + SWAPD(NtHeader->OptionalHeader.AddressOfEntryPoint));
|
||||
LoaderBlock.KernelBase = KernelBase;
|
||||
|
||||
/*
|
||||
* Load the System hive from disk
|
||||
*/
|
||||
strcpy(szFileName, szBootPath);
|
||||
strcat(szFileName, "SYSTEM32\\CONFIG\\SYSTEM");
|
||||
/*
|
||||
* Load the System hive from disk
|
||||
*/
|
||||
strcpy(szFileName, szBootPath);
|
||||
strcat(szFileName, "SYSTEM32\\CONFIG\\SYSTEM");
|
||||
|
||||
DbgPrint((DPRINT_REACTOS, "SystemHive: '%s'", szFileName));
|
||||
DbgPrint((DPRINT_REACTOS, "SystemHive: '%s'", szFileName));
|
||||
|
||||
FilePointer = FsOpenFile(szFileName);
|
||||
if (FilePointer == NULL)
|
||||
{
|
||||
UiMessageBox("Could not find the System hive!");
|
||||
return;
|
||||
}
|
||||
FilePointer = FsOpenFile(szFileName);
|
||||
if (FilePointer == NULL)
|
||||
{
|
||||
UiMessageBox("Could not find the System hive!");
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* Update the status bar with the current file
|
||||
*/
|
||||
strcpy(name, "Reading ");
|
||||
strcat(name, value);
|
||||
while (strlen(name) < 80)
|
||||
strcat(name, " ");
|
||||
UiDrawStatusText(name);
|
||||
/*
|
||||
* Update the status bar with the current file
|
||||
*/
|
||||
strcpy(name, "Reading ");
|
||||
strcat(name, value);
|
||||
while (strlen(name) < 80)
|
||||
strcat(name, " ");
|
||||
UiDrawStatusText(name);
|
||||
|
||||
/*
|
||||
* Load the System hive
|
||||
*/
|
||||
Base = FrLdrLoadModule(FilePointer, szFileName, &Size);
|
||||
if (Base == 0 || Size == 0)
|
||||
{
|
||||
UiMessageBox("Could not load the System hive!\n");
|
||||
return;
|
||||
}
|
||||
DbgPrint((DPRINT_REACTOS, "SystemHive loaded at 0x%x size %u", (unsigned)Base, (unsigned)Size));
|
||||
/*
|
||||
* Load the System hive
|
||||
*/
|
||||
Base = FrLdrLoadModule(FilePointer, szFileName, &Size);
|
||||
if (Base == 0 || Size == 0)
|
||||
{
|
||||
UiMessageBox("Could not load the System hive!\n");
|
||||
return;
|
||||
}
|
||||
DbgPrint((DPRINT_REACTOS, "SystemHive loaded at 0x%x size %u", (unsigned)Base, (unsigned)Size));
|
||||
|
||||
/*
|
||||
* Import the loaded system hive
|
||||
*/
|
||||
RegImportBinaryHive((PCHAR)Base, Size);
|
||||
/*
|
||||
* Import the loaded system hive
|
||||
*/
|
||||
RegImportBinaryHive((PCHAR)Base, Size);
|
||||
|
||||
/*
|
||||
* Initialize the 'CurrentControlSet' link
|
||||
*/
|
||||
RegInitCurrentControlSet(FALSE);
|
||||
/*
|
||||
* Initialize the 'CurrentControlSet' link
|
||||
*/
|
||||
RegInitCurrentControlSet(FALSE);
|
||||
|
||||
UiDrawProgressBarCenter(15, 100, szLoadingMsg);
|
||||
UiDrawProgressBarCenter(15, 100, szLoadingMsg);
|
||||
|
||||
UiDrawProgressBarCenter(20, 100, szLoadingMsg);
|
||||
UiDrawProgressBarCenter(20, 100, szLoadingMsg);
|
||||
|
||||
/*
|
||||
* Load NLS files
|
||||
*/
|
||||
if (!FrLdrLoadNlsFiles(szBootPath, MsgBuffer))
|
||||
{
|
||||
UiMessageBox(MsgBuffer);
|
||||
return;
|
||||
}
|
||||
UiDrawProgressBarCenter(30, 100, szLoadingMsg);
|
||||
/*
|
||||
* Load NLS files
|
||||
*/
|
||||
if (!FrLdrLoadNlsFiles(szBootPath, MsgBuffer))
|
||||
{
|
||||
UiMessageBox(MsgBuffer);
|
||||
return;
|
||||
}
|
||||
UiDrawProgressBarCenter(30, 100, szLoadingMsg);
|
||||
|
||||
/*
|
||||
* Load boot drivers
|
||||
*/
|
||||
FrLdrLoadBootDrivers(szBootPath, 40);
|
||||
//UiUnInitialize("Booting ReactOS...");
|
||||
/*
|
||||
* Load boot drivers
|
||||
*/
|
||||
FrLdrLoadBootDrivers(szBootPath, 40);
|
||||
//UiUnInitialize("Booting ReactOS...");
|
||||
|
||||
//
|
||||
// Perform architecture-specific pre-boot configuration
|
||||
|
@ -911,38 +911,38 @@ LoadAndBootReactOS(PCSTR OperatingSystemName)
|
|||
//
|
||||
// Setup paging and jump to kernel
|
||||
//
|
||||
FrLdrStartup(0x2badb002);
|
||||
FrLdrStartup(0x2badb002);
|
||||
}
|
||||
|
||||
#undef DbgPrint
|
||||
ULONG
|
||||
DbgPrint(const char *Format, ...)
|
||||
{
|
||||
va_list ap;
|
||||
CHAR Buffer[512];
|
||||
ULONG Length;
|
||||
va_list ap;
|
||||
CHAR Buffer[512];
|
||||
ULONG Length;
|
||||
|
||||
va_start(ap, Format);
|
||||
va_start(ap, Format);
|
||||
|
||||
/* Construct a string */
|
||||
Length = _vsnprintf(Buffer, 512, Format, ap);
|
||||
/* Construct a string */
|
||||
Length = _vsnprintf(Buffer, 512, Format, ap);
|
||||
|
||||
/* Check if we went past the buffer */
|
||||
if (Length == -1U)
|
||||
{
|
||||
/* Terminate it if we went over-board */
|
||||
Buffer[sizeof(Buffer) - 1] = '\n';
|
||||
/* Check if we went past the buffer */
|
||||
if (Length == -1U)
|
||||
{
|
||||
/* Terminate it if we went over-board */
|
||||
Buffer[sizeof(Buffer) - 1] = '\n';
|
||||
|
||||
/* Put maximum */
|
||||
Length = sizeof(Buffer);
|
||||
}
|
||||
/* Put maximum */
|
||||
Length = sizeof(Buffer);
|
||||
}
|
||||
|
||||
/* Show it as a message box */
|
||||
UiMessageBox(Buffer);
|
||||
/* Show it as a message box */
|
||||
UiMessageBox(Buffer);
|
||||
|
||||
/* Cleanup and exit */
|
||||
va_end(ap);
|
||||
return 0;
|
||||
/* Cleanup and exit */
|
||||
va_end(ap);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
Loading…
Reference in a new issue