Do not use TCHAR string functions as they are not available on cygwin.
This commit is contained in:
parent
4bad23a15f
commit
6d3cfe5063
3 changed files with 41 additions and 15 deletions
|
@ -1,3 +1,7 @@
|
||||||
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
Do not use TCHAR string functions as they are not available on cygwin.
|
||||||
|
|
||||||
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
2013-12-14 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
Workaround windows bug when querying EFI system partition parameters.
|
Workaround windows bug when querying EFI system partition parameters.
|
||||||
|
|
|
@ -49,12 +49,6 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
|
|
||||||
#if SIZEOF_TCHAR == 1
|
|
||||||
#define tcsnicmp strncasecmp
|
|
||||||
#elif SIZEOF_TCHAR == 2
|
|
||||||
#define tcsnicmp wcsnicmp
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TCHAR *
|
TCHAR *
|
||||||
grub_get_mount_point (const TCHAR *path)
|
grub_get_mount_point (const TCHAR *path)
|
||||||
{
|
{
|
||||||
|
@ -191,6 +185,31 @@ grub_guess_root_devices (const char *dir)
|
||||||
return os_dev;
|
return os_dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int tcharncasecmp (LPCTSTR a, const char *b, size_t sz)
|
||||||
|
{
|
||||||
|
for (; sz; sz--, a++, b++)
|
||||||
|
{
|
||||||
|
char ac, bc;
|
||||||
|
if(*a >= 0x80)
|
||||||
|
return +1;
|
||||||
|
if (*b & 0x80)
|
||||||
|
return -1;
|
||||||
|
if (*a == '\0' && *b == '\0')
|
||||||
|
return 0;
|
||||||
|
ac = *a;
|
||||||
|
bc = *b;
|
||||||
|
if (ac >= 'A' && ac <= 'Z')
|
||||||
|
ac -= 'A' - 'a';
|
||||||
|
if (bc >= 'A' && bc <= 'Z')
|
||||||
|
bc -= 'A' - 'a';
|
||||||
|
if (ac > bc)
|
||||||
|
return +1;
|
||||||
|
if (ac < bc)
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
grub_util_part_to_disk (const char *os_dev,
|
grub_util_part_to_disk (const char *os_dev,
|
||||||
struct stat *st __attribute__ ((unused)),
|
struct stat *st __attribute__ ((unused)),
|
||||||
|
@ -206,8 +225,8 @@ grub_util_part_to_disk (const char *os_dev,
|
||||||
((name[1] == '/') || (name[1] == '\\')) &&
|
((name[1] == '/') || (name[1] == '\\')) &&
|
||||||
((name[2] == '.') || (name[2] == '?')) &&
|
((name[2] == '.') || (name[2] == '?')) &&
|
||||||
((name[3] == '/') || (name[3] == '\\'))
|
((name[3] == '/') || (name[3] == '\\'))
|
||||||
&& (tcsnicmp (name + 4, TEXT("PhysicalDrive"), sizeof ("PhysicalDrive") - 1) == 0
|
&& (tcharncasecmp (name + 4, "PhysicalDrive", sizeof ("PhysicalDrive") - 1) == 0
|
||||||
|| tcsnicmp (name + 4, TEXT("Harddisk"), sizeof ("Harddisk") - 1) == 0
|
|| tcharncasecmp (name + 4, "Harddisk", sizeof ("Harddisk") - 1) == 0
|
||||||
|| ((name[4] == 'A' || name[4] == 'a' || name[4] == 'B' || name[4] == 'b')
|
|| ((name[4] == 'A' || name[4] == 'a' || name[4] == 'B' || name[4] == 'b')
|
||||||
&& name[5] == ':' && name[6] == '\0')))
|
&& name[5] == ':' && name[6] == '\0')))
|
||||||
{
|
{
|
||||||
|
@ -277,8 +296,8 @@ grub_util_find_partition_start_os (const char *os_dev)
|
||||||
((name[1] == '/') || (name[1] == '\\')) &&
|
((name[1] == '/') || (name[1] == '\\')) &&
|
||||||
((name[2] == '.') || (name[2] == '?')) &&
|
((name[2] == '.') || (name[2] == '?')) &&
|
||||||
((name[3] == '/') || (name[3] == '\\'))
|
((name[3] == '/') || (name[3] == '\\'))
|
||||||
&& (tcsnicmp (name + 4, TEXT("PhysicalDrive"), sizeof ("PhysicalDrive") - 1) == 0
|
&& (tcharncasecmp (name + 4, "PhysicalDrive", sizeof ("PhysicalDrive") - 1) == 0
|
||||||
|| tcsnicmp (name + 4, TEXT("Harddisk"), sizeof ("Harddisk") - 1) == 0
|
|| tcharncasecmp (name + 4, "Harddisk", sizeof ("Harddisk") - 1) == 0
|
||||||
|| ((name[4] == 'A' || name[4] == 'a' || name[4] == 'B' || name[4] == 'b')
|
|| ((name[4] == 'A' || name[4] == 'a' || name[4] == 'B' || name[4] == 'b')
|
||||||
&& name[5] == ':' && name[6] == '\0')))
|
&& name[5] == ':' && name[6] == '\0')))
|
||||||
{
|
{
|
||||||
|
|
|
@ -33,11 +33,14 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
|
|
||||||
#if SIZEOF_TCHAR == 1
|
static size_t
|
||||||
#define tclen strlen
|
tclen (const TCHAR *s)
|
||||||
#elif SIZEOF_TCHAR == 2
|
{
|
||||||
#define tclen wcslen
|
const TCHAR *s0 = s;
|
||||||
#endif
|
while (*s)
|
||||||
|
s++;
|
||||||
|
return s - s0;
|
||||||
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
grub_make_system_path_relative_to_its_root (const char *path)
|
grub_make_system_path_relative_to_its_root (const char *path)
|
||||||
|
|
Loading…
Reference in a new issue