- Fix a PCH bug.
svn path=/trunk/; revision=19192
static char Path[] = "multi(0)disk(0)";
char Device[4];
- itoa(i386BootDrive, Device, 10);
+ _itoa(i386BootDrive, Device, 10);
if (Size <= sizeof(Path) + 6 + strlen(Device))
{
return FALSE;
}
p = SystemPath;
- while ('\0' != *p && 0 != strnicmp(p, "partition(", 10)) {
+ while ('\0' != *p && 0 != _strnicmp(p, "partition(", 10)) {
p++;
}
p = strchr(p, ')');
{
DbgPrint((DPRINT_UI, "VGA display adapter detected.\n"));
- if (0 == stricmp(DisplayModeName, "NORMAL_VGA"))
+ if (0 == _stricmp(DisplayModeName, "NORMAL_VGA"))
{
VideoMode = VIDEOMODE_NORMAL_TEXT;
}
- else if (0 == stricmp(DisplayModeName, "EXTENDED_VGA"))
+ else if (0 == _stricmp(DisplayModeName, "EXTENDED_VGA"))
{
VideoMode = VIDEOMODE_EXTENDED_TEXT;
}
// Install the drive mapper according to this sections drive mappings
DriveMapMapDrivesInSection(OperatingSystemSectionNames[SelectedOperatingSystem]);
- if (stricmp(SettingValue, "ReactOS") == 0)
+ if (_stricmp(SettingValue, "ReactOS") == 0)
{
LoadAndBootReactOS(OperatingSystemSectionNames[SelectedOperatingSystem]);
}
- else if (stricmp(SettingValue, "Linux") == 0)
+ else if (_stricmp(SettingValue, "Linux") == 0)
{
LoadAndBootLinux(OperatingSystemSectionNames[SelectedOperatingSystem], OperatingSystemDisplayNames[SelectedOperatingSystem]);
}
- else if (stricmp(SettingValue, "BootSector") == 0)
+ else if (_stricmp(SettingValue, "BootSector") == 0)
{
LoadAndBootBootSector(OperatingSystemSectionNames[SelectedOperatingSystem]);
}
- else if (stricmp(SettingValue, "Partition") == 0)
+ else if (_stricmp(SettingValue, "Partition") == 0)
{
LoadAndBootPartition(OperatingSystemSectionNames[SelectedOperatingSystem]);
}
- else if (stricmp(SettingValue, "Drive") == 0)
+ else if (_stricmp(SettingValue, "Drive") == 0)
{
LoadAndBootDrive(OperatingSystemSectionNames[SelectedOperatingSystem]);
}
{
for (Idx=0; Idx<OperatingSystemCount; Idx++)
{
- if (stricmp(DefaultOSName, OperatingSystemList[Idx]) == 0)
+ if (_stricmp(DefaultOSName, OperatingSystemList[Idx]) == 0)
{
DefaultOS = Idx;
break;
{
*s++ = '\0';
}
- if (0 == stricmp(Name, "defaultos"))
+ if (0 == _stricmp(Name, "defaultos"))
{
CmdLineInfo.DefaultOperatingSystem = Value;
}
- else if (0 == stricmp(Name, "timeout"))
+ else if (0 == _stricmp(Name, "timeout"))
{
CmdLineInfo.TimeOut = atoi(Value);
}
// Get the next setting from the .ini file section
if (IniReadSettingByNumber(SectionId, Index, SettingName, 80, SettingValue, 80))
{
- if (stricmp(SettingName, "DriveMap") == 0)
+ if (_stricmp(SettingName, "DriveMap") == 0)
{
// Make sure we haven't exceeded the drive map max count
if (DriveMapList.DriveMapCount >= 4)
<library>freeldr_base</library>
<library>freeldr_main</library>
<library>rossym</library>
+ <library>string</library>
+ <library>rtl</library>
</module>
<include base="freeldr_base">cache</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
- <compilerflag>-nostdlib</compilerflag>
<compilerflag>-ffreestanding</compilerflag>
<compilerflag>-fno-builtin</compilerflag>
<compilerflag>-fno-inline</compilerflag>
</directory>
<directory name="rtl">
<file>list.c</file>
- <file>memcmp.c</file>
- <file>memcpy.c</file>
- <file>memmove.c</file>
- <file>memset.c</file>
- <file>print.c</file>
- <file>stdlib.c</file>
- <file>string.c</file>
</directory>
<directory name="ui">
<file>gui.c</file>
<include base="freeldr_base64k">include</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
- <compilerflag>-nostdlib</compilerflag>
<compilerflag>-ffreestanding</compilerflag>
<compilerflag>-fno-builtin</compilerflag>
<compilerflag>-fno-inline</compilerflag>
<include base="freeldr_main">include</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
- <compilerflag>-nostdlib</compilerflag>
<compilerflag>-ffreestanding</compilerflag>
<compilerflag>-fno-builtin</compilerflag>
<compilerflag>-fno-inline</compilerflag>
<file>linuxboot.c</file>
<file>oslist.c</file>
<file>custom.c</file>
- <pch>include/freeldr.h</pch>
</module>
<include base="freeldr_startup">include</include>
<include base="ntoskrnl">include</include>
<define name="__USE_W32API" />
- <compilerflag>-nostdlib</compilerflag>
<compilerflag>-ffreestanding</compilerflag>
<compilerflag>-fno-builtin</compilerflag>
<compilerflag>-fno-inline</compilerflag>
DbgPrint((DPRINT_FILESYSTEM, "Dumping directory entry at offset %d:\n", CurrentOffset));
DbgDumpBuffer(DPRINT_FILESYSTEM, CurrentDirectoryEntry, CurrentDirectoryEntry->rec_len);
- if ((strnicmp(FileName, CurrentDirectoryEntry->name, CurrentDirectoryEntry->name_len) == 0) &&
+ if ((_strnicmp(FileName, CurrentDirectoryEntry->name, CurrentDirectoryEntry->name_len) == 0) &&
(strlen(FileName) == CurrentDirectoryEntry->name_len))
{
RtlCopyMemory(DirectoryEntry, CurrentDirectoryEntry, sizeof(EXT2_DIR_ENTRY));
//
// See if the file name matches either the short or long name
//
- if (((strlen(FileName) == strlen(LfnNameBuffer)) && (stricmp(FileName, LfnNameBuffer) == 0)) ||
- ((strlen(FileName) == strlen(ShortNameBuffer)) && (stricmp(FileName, ShortNameBuffer) == 0))) {
+ if (((strlen(FileName) == strlen(LfnNameBuffer)) && (_stricmp(FileName, LfnNameBuffer) == 0)) ||
+ ((strlen(FileName) == strlen(ShortNameBuffer)) && (_stricmp(FileName, ShortNameBuffer) == 0))) {
//
// We found the entry, now fill in the FAT_FILE_INFO struct
//
continue;
}
if (FileNameLen == DirEntry->FileNameSize &&
- 0 == strnicmp(FileName, DirEntry->FileName, FileNameLen))
+ 0 == _strnicmp(FileName, DirEntry->FileName, FileNameLen))
{
/*
* We found the entry, now fill in the FAT_FILE_INFO struct
Name[i] = 0;
DbgPrint((DPRINT_FILESYSTEM, "Name '%s'\n", Name));
- if (strlen(FileName) == strlen(Name) && stricmp(FileName, Name) == 0)
+ if (strlen(FileName) == strlen(Name) && _stricmp(FileName, Name) == 0)
{
IsoFileInfoPointer->FileStart = Record->ExtentLocationL;
IsoFileInfoPointer->FileSize = Record->DataLengthL;
Section = Cache->FirstSection;
while (Section != NULL)
{
- if (stricmp (Section->Name, Name) == 0)
+ if (_stricmp (Section->Name, Name) == 0)
{
return Section;
}
Line = Section->FirstLine;
while (Line != NULL)
{
- if (Line->Key != NULL && stricmp (Line->Key, Key) == 0)
+ if (Line->Key != NULL && _stricmp (Line->Key, Key) == 0)
{
return Line;
}
// DPRINT("Comparing '%S' and '%S'\n", CacheSection->Name, Section);
/* Are the section names the same? */
- if (stricmp(CacheSection->Name, Section) == 0)
+ if (_stricmp(CacheSection->Name, Section) == 0)
{
if (Key != NULL)
{
CacheLine = ((PINFCACHESECTION)(ContextIn->Section))->FirstLine;
while (CacheLine != NULL)
{
- if (CacheLine->Key != NULL && stricmp (CacheLine->Key, Key) == 0)
+ if (CacheLine->Key != NULL && _stricmp (CacheLine->Key, Key) == 0)
{
if (ContextIn != ContextOut)
CacheLine = (PINFCACHELINE)ContextIn->Line;
while (CacheLine != NULL)
{
- if (CacheLine->Key != NULL && stricmp (CacheLine->Key, Key) == 0)
+ if (CacheLine->Key != NULL && _stricmp (CacheLine->Key, Key) == 0)
{
if (ContextIn != ContextOut)
// DPRINT("Comparing '%S' and '%S'\n", CacheSection->Name, Section);
/* Are the section names the same? */
- if (stricmp(CacheSection->Name, Section) == 0)
+ if (_stricmp(CacheSection->Name, Section) == 0)
{
return CacheSection->LineCount;
}
while (Section != NULL)
{
// Compare against the section name
- if (stricmp(SectionName, Section->SectionName) == 0)
+ if (_stricmp(SectionName, Section->SectionName) == 0)
{
// We found it
*SectionId = (ULONG)Section;
while (SectionItem != NULL)
{
// Check to see if this is the setting they want
- if (stricmp(SettingName, SectionItem->ItemName) == 0)
+ if (_stricmp(SettingName, SectionItem->ItemName) == 0)
{
DbgPrint((DPRINT_INIFILE, "IniReadSettingByName() Setting \'%s\' found.\n", SettingName));
DbgPrint((DPRINT_INIFILE, "IniReadSettingByName() Setting value = %s\n", SectionItem->ItemValue));
{
char *p;
- if (strnicmp(ArcPath, "multi(0)disk(0)", 15) != 0)
+ if (_strnicmp(ArcPath, "multi(0)disk(0)", 15) != 0)
return FALSE;
p = ArcPath + 15;
- if (strnicmp(p, "fdisk(", 6) == 0)
+ if (_strnicmp(p, "fdisk(", 6) == 0)
{
/*
* floppy disk path:
p++;
*BootPartition = 0xff;
}
- else if (strnicmp(p, "cdrom(", 6) == 0)
+ else if (_strnicmp(p, "cdrom(", 6) == 0)
{
/*
* cdrom path:
p++;
*BootPartition = 0xff;
}
- else if (strnicmp(p, "rdisk(", 6) == 0)
+ else if (_strnicmp(p, "rdisk(", 6) == 0)
{
/*
* hard disk path:
p = p + 6;
*BootDrive = atoi(p) + 0x80;
p = strchr(p, ')');
- if ((p == NULL) || (strnicmp(p, ")partition(", 11) != 0))
+ if ((p == NULL) || (_strnicmp(p, ")partition(", 11) != 0))
return FALSE;
p = p + 11;
*BootPartition = atoi(p);
char * p;
ULONG DriveNumber = 0;
- if (strnicmp(ArcPath, "multi(0)disk(0)", 15) != 0)
+ if (_strnicmp(ArcPath, "multi(0)disk(0)", 15) != 0)
return 0;
p = ArcPath + 15;
- if (strnicmp(p, "fdisk(", 6) == 0)
+ if (_strnicmp(p, "fdisk(", 6) == 0)
{
/*
* floppy disk path:
p = p + 6;
DriveNumber = atoi(p);
}
- else if (strnicmp(p, "rdisk(", 6) == 0)
+ else if (_strnicmp(p, "rdisk(", 6) == 0)
{
/*
* hard disk path:
while ((p = strchr(p, '/')) != NULL) {
/* Find "/3GB" */
- if (!strnicmp(p + 1, "3GB", 3)) {
+ if (!_strnicmp(p + 1, "3GB", 3)) {
/* Make sure there's nothing following it */
if (p[4] == ' ' || p[4] == 0) {
p++;
/* Find "PAE" */
- if (!strnicmp(p, "PAE", 3)) {
+ if (!_strnicmp(p, "PAE", 3)) {
/* Make sure there's nothing following it */
if (p[3] == ' ' || p[3] == 0) {
/* Make sure it should be started */
if ((StartValue == 0) &&
(TagValue == OrderList[TagIndex]) &&
- (stricmp(DriverGroup, GroupName) == 0)) {
+ (_stricmp(DriverGroup, GroupName) == 0)) {
/* Get the Driver's Location */
ValueSize = 256;
if ((StartValue == 0) &&
(TagIndex > OrderList[0]) &&
- (stricmp(DriverGroup, GroupName) == 0)) {
+ (_stricmp(DriverGroup, GroupName) == 0)) {
ValueSize = 256;
rc = RegQueryValue(hDriverKey, "ImagePath", NULL, (PUCHAR)TempImagePath, &ValueSize);
/*
* Special case for Live CD.
*/
- if (!stricmp(SystemPath, "LiveCD"))
+ if (!_stricmp(SystemPath, "LiveCD"))
{
/* Normalize */
MachDiskGetBootPath(SystemPath, sizeof(SystemPath));
KeyList);
DbgPrint((DPRINT_REGISTRY, "SearchKey 0x%x\n", SearchKey));
DbgPrint((DPRINT_REGISTRY, "Searching '%s'\n", SearchKey->Name));
- if (strnicmp(SearchKey->Name, name, subkeyLength) == 0)
+ if (_strnicmp(SearchKey->Name, name, subkeyLength) == 0)
break;
Ptr = Ptr->Flink;
DbgPrint((DPRINT_REGISTRY, "SearchKey 0x%x\n", SearchKey));
DbgPrint((DPRINT_REGISTRY, "Searching '%s'\n", SearchKey->Name));
- if (strnicmp(SearchKey->Name, name, subkeyLength) == 0)
+ if (_strnicmp(SearchKey->Name, name, subkeyLength) == 0)
break;
Ptr = Ptr->Flink;
DbgPrint((DPRINT_REGISTRY, "Value->Name '%s'\n", Value->Name));
- if (stricmp(Value->Name, ValueName) == 0)
+ if (_stricmp(Value->Name, ValueName) == 0)
break;
Ptr = Ptr->Flink;
DbgPrint((DPRINT_REGISTRY, "Searching for '%s'. Value name '%s'\n", ValueName, Value->Name));
- if (stricmp(Value->Name, ValueName) == 0)
+ if (_stricmp(Value->Name, ValueName) == 0)
break;
Ptr = Ptr->Flink;
Value = CONTAINING_RECORD(Ptr,
VALUE,
ValueList);
- if (stricmp(Value->Name, ValueName) == 0)
+ if (_stricmp(Value->Name, ValueName) == 0)
break;
Ptr = Ptr->Flink;
RtlListRemoveEntry(ListEntry);
RtlListInsertEntry(ListNext, ListEntry);
}
+
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-int memcmp(const void *buf1, const void *buf2, size_t count)
-{
- unsigned int i;
- const char* buffer1 = buf1;
- const char* buffer2 = buf2;
-
- for (i=0; i<count; i++)
- {
- if(buffer1[i] == buffer2[i])
- continue;
- else
- return (buffer1[i] - buffer2[i]);
- }
-
- return 0;
-}
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-#ifdef __i386__
-void *memcpy(void *to, const void *from, size_t count)
-{
- __asm__( \
- "or %%ecx,%%ecx\n\t"\
- "jz .L1\n\t" \
- "cld\n\t" \
- "rep\n\t" \
- "movsb\n\t" \
- ".L1:\n\t"
- :
- : "D" (to), "S" (from), "c" (count));
- return to;
-}
-#else
-void *memcpy(void *to, const void *from, size_t count)
-{
- unsigned int i;
- char* buf1 = to;
- const char* buf2 = from;
-
- for (i=0; i<count; i++)
- {
- buf1[i] = buf2[i];
- }
-
- return to;
-}
-#endif
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-void *memmove(void *dest, const void *src, size_t count)
-{
- char *char_dest = (char *)dest;
- char *char_src = (char *)src;
-
- if ((char_dest <= char_src) || (char_dest >= (char_src+count)))
- {
- /* non-overlapping buffers */
- while(count > 0)
- {
- *char_dest = *char_src;
- char_dest++;
- char_src++;
- count--;
- }
- }
- else
- {
- /* overlaping buffers */
- char_dest = (char *)dest + count - 1;
- char_src = (char *)src + count - 1;
-
- while(count > 0)
- {
- *char_dest = *char_src;
- char_dest--;
- char_src--;
- count--;
- }
- }
-
- return dest;
-}
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-#ifdef __i386__
-void *memset(void *src, int val, size_t count)
-{
- __asm__( \
- "or %%ecx,%%ecx\n\t"\
- "jz .L1\n\t" \
- "cld\t\n" \
- "rep\t\n" \
- "stosb\t\n" \
- ".L1:\n\t"
- :
- : "D" (src), "c" (count), "a" (val));
- return src;
-}
-#else
-void *memset(void *src, int val, size_t count)
-{
- unsigned int i;
- unsigned char* buf1 = src;
-
- for (i=0; i<count; i++)
- {
- buf1[i] = val;
- }
-
- return src;
-}
-#endif
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-/*
- * print() - prints unformatted text to stdout
- */
-void print(char *str)
-{
- size_t i;
-
- for (i = 0; i < strlen(str); i++)
- MachConsPutChar(str[i]);
-}
-
-/*
- * printf() - prints formatted text to stdout
- * originally from GRUB
- */
-int printf(const char *format, ... )
-{
- va_list ap;
- va_start(ap,format);
- char c, *ptr, str[16];
- int ll;
-
- while ((c = *(format++)))
- {
- if (c != '%')
- {
- MachConsPutChar(c);
- }
- else
- {
- if (*format == 'I' && *(format+1) == '6' && *(format+2) == '4')
- {
- ll = 1;
- format += 3;
- }
- else
- {
- ll = 0;
- }
- switch (c = *(format++))
- {
- case 'd': case 'u': case 'x':
- if (ll)
- {
- *convert_i64_to_ascii(str, c, va_arg(ap, unsigned long long)) = 0;
- }
- else
- {
- *convert_to_ascii(str, c, va_arg(ap, unsigned long)) = 0;
- }
-
- ptr = str;
-
- while (*ptr)
- {
- MachConsPutChar(*(ptr++));
- }
- break;
-
- case 'c': MachConsPutChar((va_arg(ap,int))&0xff); break;
-
- case 's':
- ptr = va_arg(ap,char *);
-
- while ((c = *(ptr++)))
- {
- MachConsPutChar(c);
- }
- break;
- case '%':
- MachConsPutChar(c);
- break;
- default:
- printf("\nprintf() invalid format specifier - %%%c\n", c);
- break;
- }
- }
- }
-
- va_end(ap);
-
- return 0;
-}
-
-int sprintf(char *buffer, const char *format, ... )
-{
- va_list ap;
- char c, *ptr, str[16];
- char *p = buffer;
- int ll;
-
- va_start(ap,format);
-
- while ((c = *(format++)))
- {
- if (c != '%')
- {
- *p = c;
- p++;
- }
- else
- {
- if (*format == 'I' && *(format+1) == '6' && *(format+2) == '4')
- {
- ll = 1;
- format += 3;
- }
- else
- {
- ll = 0;
- }
- switch (c = *(format++))
- {
- case 'd': case 'u': case 'x':
- if (ll)
- {
- *convert_i64_to_ascii(str, c, va_arg(ap, unsigned long long)) = 0;
- }
- else
- {
- *convert_to_ascii(str, c, va_arg(ap, unsigned long)) = 0;
- }
-
- ptr = str;
-
- while (*ptr)
- {
- *p = *(ptr++);
- p++;
- }
- break;
-
- case 'c':
- *p = va_arg(ap,int)&0xff;
- p++;
- break;
-
- case 's':
- ptr = va_arg(ap,char *);
-
- while ((c = *(ptr++)))
- {
- *p = c;
- p++;
- }
- break;
- case '%':
- *p = c;
- p++;
- break;
- default:
- printf("\nsprintf() invalid format specifier - %%%c\n", c);
- break;
- }
- }
- }
- va_end(ap);
- *p=0;
-
- return 0;
-}
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-/*
- * convert_to_ascii() - converts a number to it's ascii equivalent
- * from:
- * GRUB -- GRand Unified Bootloader
- * Copyright (C) 1996 Erich Boleyn <erich@uruk.org>
- */
-char *convert_to_ascii(char *buf, int c, int num)
-{
- unsigned long mult = 10;
- char *ptr = buf;
-
- if (c == 'x')
- mult = 16;
-
- if ((num & 0x80000000uL) && c == 'd')
- {
- num = (~num)+1;
- *(ptr++) = '-';
- buf++;
- }
-
- do
- {
- int dig = num % mult;
- *(ptr++) = ( (dig > 9) ? dig + 'a' - 10 : '0' + dig );
- }
- while (num /= mult);
-
- /* reorder to correct direction!! */
- {
- char *ptr1 = ptr-1;
- char *ptr2 = buf;
- while (ptr1 > ptr2)
- {
- int c = *ptr1;
- *ptr1 = *ptr2;
- *ptr2 = c;
- ptr1--;
- ptr2++;
- }
- }
-
- return ptr;
-}
-
-char *convert_i64_to_ascii(char *buf, int c, unsigned long long num)
-{
- int mult = 10;
- char *ptr = buf;
-
- if (c == 'x')
- mult = 16;
-
- if ((num & 0x8000000000000000uLL) && c == 'd')
- {
- num = (~num)+1;
- *(ptr++) = '-';
- buf++;
- }
-
- do
- {
- int dig = num % mult;
- *(ptr++) = ( (dig > 9) ? dig + 'a' - 10 : '0' + dig );
- }
- while (num /= mult);
-
- /* reorder to correct direction!! */
- {
- char *ptr1 = ptr-1;
- char *ptr2 = buf;
- while (ptr1 > ptr2)
- {
- int c = *ptr1;
- *ptr1 = *ptr2;
- *ptr2 = c;
- ptr1--;
- ptr2++;
- }
- }
-
- return ptr;
-}
-
-char *itoa(int value, char *string, int radix)
-{
- if(radix == 16)
- *convert_to_ascii(string, 'x', value) = 0;
- else
- *convert_to_ascii(string, 'd', value) = 0;
-
- return string;
-}
-
-int toupper(int c)
-{
- if((c >= 'a') && (c <= 'z'))
- c -= 32;
-
- return c;
-}
-
-int tolower(int c)
-{
- if((c >= 'A') && (c <= 'Z'))
- c += 32;
-
- return c;
-}
-
-int atoi(const char *string)
-{
- int base;
- int result = 0;
- const char *str;
-
- if((string[0] == '0') && (string[1] == 'x'))
- {
- base = 16;
- str = string + 2;
- }
- else
- {
- base = 10;
- str = string;
- }
-
- while(1)
- {
- if(base == 16)
- {
- if(((*str < '0') || (*str > '9')) && ((*str < 'a') || (*str > 'f')) && ((*str < 'A') || (*str > 'F')))
- break;
-
- result *= base;
- if((*str >= '0') && (*str <= '9'))
- result += (*str - '0');
- if((*str >= 'a') && (*str <= 'f'))
- result += (*str - 'a') + 10;
- if((*str >= 'A') && (*str <= 'F'))
- result += (*str - 'A') + 10;
- str++;
- }
- else //if(base == 10)
- {
- if((*str < '0') || (*str > '9'))
- break;
-
- result *= base;
- result += (*str - '0');
- str++;
- }
- }
-
- return result;
-}
-
-int isspace(int c)
-{
- return(c == ' ' || (c >= 0x09 && c <= 0x0D));
-}
-
-int isdigit(int c)
-{
- return(c >= '0' && c <= '9');
-}
-
-int isxdigit(int c)
-{
- return((c >= '0' && c <= '9')||(c >= 'a' && c <= 'f')||(c >= 'A' && c <= 'F'));
-}
+++ /dev/null
-/*
- * FreeLoader
- * Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-
-#include <freeldr.h>
-
-size_t strlen(const char *str)
-{
- int len;
-
- for(len=0; str[len] != '\0'; len++);
-
- return len;
-}
-
-char *strcpy(char *dest, const char *src)
-{
- char *ret = dest;
-
- while(*src)
- *dest++ = *src++;
- *dest = 0;
-
- return ret;
-}
-
-char *strncpy(char *dest, const char *src, size_t count)
-{
- char *ret = dest;
-
- while((*src) && (count--))
- *dest++ = *src++;
-
- if (count)
- *dest = 0;
-
- return ret;
-}
-
-char *strcat(char *dest, const char *src)
-{
- char *ret = dest;
-
- while(*dest)
- dest++;
-
- while(*src)
- *dest++ = *src++;
- *dest = 0;
-
- return ret;
-}
-
-char *strncat(char *dst, const char *src, size_t n)
-{
- if (n != 0)
- {
- char *d = dst;
- const char *s = src;
-
- while (*d != 0)
- d++;
- do
- {
- if ((*d = *s++) == 0)
- break;
- d++;
- }
- while (--n != 0);
- *d = 0;
- }
-
- return dst;
-}
-
-char *strchr(const char *s, int c)
-{
- char cc = c;
- while (*s)
- {
- if (*s == cc)
- return (char *)s;
- s++;
- }
- if (cc == 0)
- return (char *)s;
- return 0;
-}
-
-char *strrchr(const char *s, int c)
-{
- char cc = c;
- const char *sp=(char *)0;
- while (*s)
- {
- if (*s == cc)
- sp = s;
- s++;
- }
- if (cc == 0)
- sp = s;
- return (char *)sp;
-}
-
-int strcmp(const char *string1, const char *string2)
-{
- while(*string1 == *string2)
- {
- if(*string1 == 0)
- return 0;
-
- string1++;
- string2++;
- }
-
- return *(unsigned const char *)string1 - *(unsigned const char *)(string2);
-}
-
-int stricmp(const char *string1, const char *string2)
-{
- while(tolower(*string1) == tolower(*string2))
- {
- if(*string1 == 0)
- return 0;
-
- string1++;
- string2++;
- }
-
- return (int)tolower(*string1) - (int)tolower(*string2);
-}
-
-int strnicmp(const char *string1, const char *string2, size_t length)
-{
- if (length == 0)
- return 0;
- do
- {
- if (toupper(*string1) != toupper(*string2++))
- return toupper(*(unsigned const char *)string1) - toupper(*(unsigned const char *)--string2);
- if (*string1++ == 0)
- break;
- }
- while (--length != 0);
- return 0;
-}
-
-int strncmp(const char *string1, const char *string2, size_t length)
-{
- if (length == 0)
- return 0;
- do
- {
- if (*string1 != *string2++)
- return *(unsigned const char *)string1 - *(unsigned const char *)--string2;
- if (*string1++ == 0)
- break;
- }
- while (--length != 0);
- return 0;
-}
PVOID TextVideoBuffer = NULL;
+/*
+ * printf() - prints formatted text to stdout
+ * originally from GRUB
+ */
+int printf(const char *format, ... )
+{
+ va_list ap;
+ va_start(ap,format);
+ char c, *ptr, str[16];
+
+ while ((c = *(format++)))
+ {
+ if (c != '%')
+ {
+ MachConsPutChar(c);
+ }
+ else
+ {
+ switch (c = *(format++))
+ {
+ case 'd': case 'u': case 'x':
+ *_itoa(va_arg(ap, unsigned long), str, 10) = 0;
+
+ ptr = str;
+
+ while (*ptr)
+ {
+ MachConsPutChar(*(ptr++));
+ }
+ break;
+
+ case 'c': MachConsPutChar((va_arg(ap,int))&0xff); break;
+
+ case 's':
+ ptr = va_arg(ap,char *);
+
+ while ((c = *(ptr++)))
+ {
+ MachConsPutChar(c);
+ }
+ break;
+ case '%':
+ MachConsPutChar(c);
+ break;
+ default:
+ printf("\nprintf() invalid format specifier - %%%c\n", c);
+ break;
+ }
+ }
+ }
+
+ va_end(ap);
+
+ return 0;
+}
+
BOOL TuiInitialize(VOID)
{
MachVideoClearScreen(ATTR(COLOR_WHITE, COLOR_BLACK));
// Get the month name
strcpy(DateString, UiMonthNames[Month - 1]);
// Get the day
- itoa(Day, TempString, 10);
+ _itoa(Day, TempString, 10);
// Get the day postfix
if (1 == Day || 21 == Day || 31 == Day)
{
strcat(DateString, " ");
// Get the year and add it to the date
- itoa(Year, TempString, 10);
+ _itoa(Year, TempString, 10);
strcat(DateString, TempString);
// Draw the date
{
Hour = 12;
}
- itoa(Hour, TempString, 10);
+ _itoa(Hour, TempString, 10);
strcpy(TimeString, " ");
strcat(TimeString, TempString);
strcat(TimeString, ":");
- itoa(Minute, TempString, 10);
+ _itoa(Minute, TempString, 10);
if (Minute < 10)
{
strcat(TimeString, "0");
}
strcat(TimeString, TempString);
strcat(TimeString, ":");
- itoa(Second, TempString, 10);
+ _itoa(Second, TempString, 10);
if (Second < 10)
{
strcat(TimeString, "0");
UCHAR TuiTextToColor(PCSTR ColorText)
{
- if (stricmp(ColorText, "Black") == 0)
+ if (_stricmp(ColorText, "Black") == 0)
return COLOR_BLACK;
- else if (stricmp(ColorText, "Blue") == 0)
+ else if (_stricmp(ColorText, "Blue") == 0)
return COLOR_BLUE;
- else if (stricmp(ColorText, "Green") == 0)
+ else if (_stricmp(ColorText, "Green") == 0)
return COLOR_GREEN;
- else if (stricmp(ColorText, "Cyan") == 0)
+ else if (_stricmp(ColorText, "Cyan") == 0)
return COLOR_CYAN;
- else if (stricmp(ColorText, "Red") == 0)
+ else if (_stricmp(ColorText, "Red") == 0)
return COLOR_RED;
- else if (stricmp(ColorText, "Magenta") == 0)
+ else if (_stricmp(ColorText, "Magenta") == 0)
return COLOR_MAGENTA;
- else if (stricmp(ColorText, "Brown") == 0)
+ else if (_stricmp(ColorText, "Brown") == 0)
return COLOR_BROWN;
- else if (stricmp(ColorText, "Gray") == 0)
+ else if (_stricmp(ColorText, "Gray") == 0)
return COLOR_GRAY;
- else if (stricmp(ColorText, "DarkGray") == 0)
+ else if (_stricmp(ColorText, "DarkGray") == 0)
return COLOR_DARKGRAY;
- else if (stricmp(ColorText, "LightBlue") == 0)
+ else if (_stricmp(ColorText, "LightBlue") == 0)
return COLOR_LIGHTBLUE;
- else if (stricmp(ColorText, "LightGreen") == 0)
+ else if (_stricmp(ColorText, "LightGreen") == 0)
return COLOR_LIGHTGREEN;
- else if (stricmp(ColorText, "LightCyan") == 0)
+ else if (_stricmp(ColorText, "LightCyan") == 0)
return COLOR_LIGHTCYAN;
- else if (stricmp(ColorText, "LightRed") == 0)
+ else if (_stricmp(ColorText, "LightRed") == 0)
return COLOR_LIGHTRED;
- else if (stricmp(ColorText, "LightMagenta") == 0)
+ else if (_stricmp(ColorText, "LightMagenta") == 0)
return COLOR_LIGHTMAGENTA;
- else if (stricmp(ColorText, "Yellow") == 0)
+ else if (_stricmp(ColorText, "Yellow") == 0)
return COLOR_YELLOW;
- else if (stricmp(ColorText, "White") == 0)
+ else if (_stricmp(ColorText, "White") == 0)
return COLOR_WHITE;
return COLOR_BLACK;
UCHAR TuiTextToFillStyle(PCSTR FillStyleText)
{
- if (stricmp(FillStyleText, "Light") == 0)
+ if (_stricmp(FillStyleText, "Light") == 0)
{
return LIGHT_FILL;
}
- else if (stricmp(FillStyleText, "Medium") == 0)
+ else if (_stricmp(FillStyleText, "Medium") == 0)
{
return MEDIUM_FILL;
}
- else if (stricmp(FillStyleText, "Dark") == 0)
+ else if (_stricmp(FillStyleText, "Dark") == 0)
{
return DARK_FILL;
}
if (MenuInfo->MenuTimeRemaining >= 0)
{
strcpy(MenuLineText, "[ Time Remaining: ");
- itoa(MenuInfo->MenuTimeRemaining, TempString, 10);
+ _itoa(MenuInfo->MenuTimeRemaining, TempString, 10);
strcat(MenuLineText, TempString);
strcat(MenuLineText, " ]");
//
for (Idx=0; Idx<MenuInfo->MenuItemCount; Idx++)
{
- if (stricmp(MenuInfo->MenuItemList[Idx], "SEPARATOR") == 0)
+ if (_stricmp(MenuInfo->MenuItemList[Idx], "SEPARATOR") == 0)
{
UiDrawText(MenuInfo->Left, MenuInfo->Top + Idx + 1, "\xC7", ATTR(UiMenuFgColor, UiMenuBgColor));
UiDrawText(MenuInfo->Right, MenuInfo->Top + Idx + 1, "\xB6", ATTR(UiMenuFgColor, UiMenuBgColor));
//
// If it is a separator then adjust the text accordingly
//
- if (stricmp(MenuInfo->MenuItemList[MenuItemNumber], "SEPARATOR") == 0)
+ if (_stricmp(MenuInfo->MenuItemList[MenuItemNumber], "SEPARATOR") == 0)
{
memset(MenuLineText, 0, 80);
memset(MenuLineText, 0xC4, (MenuInfo->Right - MenuInfo->Left - 1));
TuiDrawMenuItem(MenuInfo, MenuInfo->SelectedMenuItem + 1); // Deselect previous item
// Skip past any separators
- if (MenuInfo->SelectedMenuItem > 0 && stricmp(MenuInfo->MenuItemList[MenuInfo->SelectedMenuItem], "SEPARATOR") == 0)
+ if (MenuInfo->SelectedMenuItem > 0 && _stricmp(MenuInfo->MenuItemList[MenuInfo->SelectedMenuItem], "SEPARATOR") == 0)
{
MenuInfo->SelectedMenuItem--;
}
TuiDrawMenuItem(MenuInfo, MenuInfo->SelectedMenuItem - 1); // Deselect previous item
// Skip past any separators
- if (MenuInfo->SelectedMenuItem < (MenuInfo->MenuItemCount - 1) && stricmp(MenuInfo->MenuItemList[MenuInfo->SelectedMenuItem], "SEPARATOR") == 0)
+ if (MenuInfo->SelectedMenuItem < (MenuInfo->MenuItemCount - 1) && _stricmp(MenuInfo->MenuItemList[MenuInfo->SelectedMenuItem], "SEPARATOR") == 0)
{
MenuInfo->SelectedMenuItem++;
}
}
if (IniReadSettingByName(SectionId, "SpecialEffects", SettingText, 260))
{
- if (stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
+ if (_stricmp(SettingText, "Yes") == 0 && strlen(SettingText) == 3)
{
UiUseSpecialEffects = TRUE;
}
{
IniReadSettingByNumber(SectionId, Idx, SettingName, 79, SettingValue, 79);
- if (stricmp(SettingName, "MessageBox") == 0)
+ if (_stricmp(SettingName, "MessageBox") == 0)
{
// Get the real length of the MessageBox text
MessageBoxTextSize = IniGetSectionSettingValueSize(SectionId, Idx);