mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-22 00:38:06 +08:00
* dcrt0.cc: Include string.h.
(initial_env): Use small_printf's %P specifier. * dll_init.cc (dll_list::alloc): Use PATH_MAX instead of CYG_MAX_PATH for path name buffer size. * dll_init.h (struct dll): Ditto. * environ.cc: Include string.h. (win_env::add_cache): Use temporary local buffer for path conversion. (posify): Ditto. * exceptions.cc (try_to_debug): Use CreateProcessW to allow long path names. * miscfuncs.cc: Drop unused implementations of strcasematch and strncasematch. (ch_case_eq): Drop. (strcasestr): Drop. (cygwin_wcscasecmp): New function. (cygwin_wcsncasecmp): New function. (cygwin_strcasecmp): New function. (cygwin_strncasecmp): New function. (cygwin_wcslwr): New function. (cygwin_wcsupr): New function. (cygwin_strlwr): New function. (cygwin_strupr): New function. * ntdll.h (RtlDowncaseUnicodeString): Declare. (RtlUpcaseUnicodeString): Declare. (RtlInt64ToHexUnicodeString): Fix typo in comment. * string.h: Disable not NLS aware implementations of strcasematch and strncasematch. (cygwin_strcasecmp): Declare. (strcasecmp): Define as cygwin_strcasecmp. (cygwin_strncasecmp): Declare. (strncasecmp): Define as cygwin_strncasecmp. (strcasematch):Define using cygwin_strcasecmp. (strncasematch):Define using cygwin_strncasecmp. (cygwin_strlwr): Declare. (strlwr): Define as cygwin_strlwr. (cygwin_strupr): Declare. (strupr): Define as cygwin_strupr. * wchar.h: New file. * wincap.cc (wincapc::init): Use "NT" as fix OS string. * winsup.h (strcasematch): Drop declaration. (strncasematch): Ditto. (strcasestr): Ditto.
This commit is contained in:
parent
5c80ea0230
commit
1feea0bfd7
@ -1,3 +1,48 @@
|
|||||||
|
2007-12-12 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* dcrt0.cc: Include string.h.
|
||||||
|
(initial_env): Use small_printf's %P specifier.
|
||||||
|
* dll_init.cc (dll_list::alloc): Use PATH_MAX instead of CYG_MAX_PATH
|
||||||
|
for path name buffer size.
|
||||||
|
* dll_init.h (struct dll): Ditto.
|
||||||
|
* environ.cc: Include string.h.
|
||||||
|
(win_env::add_cache): Use temporary local buffer for path conversion.
|
||||||
|
(posify): Ditto.
|
||||||
|
* exceptions.cc (try_to_debug): Use CreateProcessW to allow long path
|
||||||
|
names.
|
||||||
|
* miscfuncs.cc: Drop unused implementations of strcasematch and
|
||||||
|
strncasematch.
|
||||||
|
(ch_case_eq): Drop.
|
||||||
|
(strcasestr): Drop.
|
||||||
|
(cygwin_wcscasecmp): New function.
|
||||||
|
(cygwin_wcsncasecmp): New function.
|
||||||
|
(cygwin_strcasecmp): New function.
|
||||||
|
(cygwin_strncasecmp): New function.
|
||||||
|
(cygwin_wcslwr): New function.
|
||||||
|
(cygwin_wcsupr): New function.
|
||||||
|
(cygwin_strlwr): New function.
|
||||||
|
(cygwin_strupr): New function.
|
||||||
|
* ntdll.h (RtlDowncaseUnicodeString): Declare.
|
||||||
|
(RtlUpcaseUnicodeString): Declare.
|
||||||
|
(RtlInt64ToHexUnicodeString): Fix typo in comment.
|
||||||
|
* string.h: Disable not NLS aware implementations of strcasematch
|
||||||
|
and strncasematch.
|
||||||
|
(cygwin_strcasecmp): Declare.
|
||||||
|
(strcasecmp): Define as cygwin_strcasecmp.
|
||||||
|
(cygwin_strncasecmp): Declare.
|
||||||
|
(strncasecmp): Define as cygwin_strncasecmp.
|
||||||
|
(strcasematch):Define using cygwin_strcasecmp.
|
||||||
|
(strncasematch):Define using cygwin_strncasecmp.
|
||||||
|
(cygwin_strlwr): Declare.
|
||||||
|
(strlwr): Define as cygwin_strlwr.
|
||||||
|
(cygwin_strupr): Declare.
|
||||||
|
(strupr): Define as cygwin_strupr.
|
||||||
|
* wchar.h: New file.
|
||||||
|
* wincap.cc (wincapc::init): Use "NT" as fix OS string.
|
||||||
|
* winsup.h (strcasematch): Drop declaration.
|
||||||
|
(strncasematch): Ditto.
|
||||||
|
(strcasestr): Ditto.
|
||||||
|
|
||||||
2007-12-11 Corinna Vinschen <corinna@vinschen.de>
|
2007-12-11 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix R/O bit
|
* fhandler_disk_file.cc (fhandler_base::fstat_helper): Fix R/O bit
|
||||||
|
@ -13,6 +13,7 @@ details. */
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
#include "glob.h"
|
#include "glob.h"
|
||||||
#include "exceptions.h"
|
#include "exceptions.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -552,9 +553,7 @@ initial_env ()
|
|||||||
if (GetEnvironmentVariable ("CYGWIN_SLEEP", buf, sizeof (buf) - 1))
|
if (GetEnvironmentVariable ("CYGWIN_SLEEP", buf, sizeof (buf) - 1))
|
||||||
{
|
{
|
||||||
DWORD ms = atoi (buf);
|
DWORD ms = atoi (buf);
|
||||||
buf[0] = '\0';
|
console_printf ("Sleeping %d, pid %u %P\n", ms, GetCurrentProcessId ());
|
||||||
len = GetModuleFileName (NULL, buf, PATH_MAX);
|
|
||||||
console_printf ("Sleeping %d, pid %u %s\n", ms, GetCurrentProcessId (), buf);
|
|
||||||
Sleep (ms);
|
Sleep (ms);
|
||||||
if (!strace.active () && !dynamically_loaded)
|
if (!strace.active () && !dynamically_loaded)
|
||||||
strace.hello ();
|
strace.hello ();
|
||||||
|
@ -106,7 +106,7 @@ dll_list::operator[] (const char *name)
|
|||||||
dll *
|
dll *
|
||||||
dll_list::alloc (HINSTANCE h, per_process *p, dll_type type)
|
dll_list::alloc (HINSTANCE h, per_process *p, dll_type type)
|
||||||
{
|
{
|
||||||
char name[CYG_MAX_PATH];
|
char name[PATH_MAX];
|
||||||
DWORD namelen = GetModuleFileName (h, name, sizeof (name));
|
DWORD namelen = GetModuleFileName (h, name, sizeof (name));
|
||||||
|
|
||||||
/* Already loaded? */
|
/* Already loaded? */
|
||||||
|
@ -51,7 +51,7 @@ struct dll
|
|||||||
int count;
|
int count;
|
||||||
dll_type type;
|
dll_type type;
|
||||||
int namelen;
|
int namelen;
|
||||||
char name[CYG_MAX_PATH];
|
char name[PATH_MAX];
|
||||||
void detach ();
|
void detach ();
|
||||||
int init ();
|
int init ();
|
||||||
};
|
};
|
||||||
|
@ -11,6 +11,7 @@ details. */
|
|||||||
#include "winsup.h"
|
#include "winsup.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <sys/cygwin.h>
|
#include <sys/cygwin.h>
|
||||||
@ -114,9 +115,12 @@ win_env::add_cache (const char *in_posix, const char *in_native)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
native = (char *) realloc (native, namelen + 1 + win32_len (in_posix));
|
char buf[PATH_MAX];
|
||||||
|
strcpy (buf, name + namelen);
|
||||||
|
towin32 (in_posix, buf);
|
||||||
|
native = (char *) realloc (native, namelen + 1 + strlen (buf));
|
||||||
strcpy (native, name);
|
strcpy (native, name);
|
||||||
towin32 (in_posix, native + namelen);
|
strcpy (native + namelen, buf);
|
||||||
}
|
}
|
||||||
MALLOC_CHECK;
|
MALLOC_CHECK;
|
||||||
if (immediate && cygwin_finished_initializing)
|
if (immediate && cygwin_finished_initializing)
|
||||||
@ -180,7 +184,7 @@ posify (char **here, const char *value)
|
|||||||
/* Turn all the items from c:<foo>;<bar> into their
|
/* Turn all the items from c:<foo>;<bar> into their
|
||||||
mounted equivalents - if there is one. */
|
mounted equivalents - if there is one. */
|
||||||
|
|
||||||
char *outenv = (char *) malloc (1 + len + conv->posix_len (value));
|
char outenv[1 + len + PATH_MAX];
|
||||||
memcpy (outenv, src, len);
|
memcpy (outenv, src, len);
|
||||||
char *newvalue = outenv + len;
|
char *newvalue = outenv + len;
|
||||||
if (!conv->toposix (value, newvalue) || _impure_ptr->_errno != EIDRM)
|
if (!conv->toposix (value, newvalue) || _impure_ptr->_errno != EIDRM)
|
||||||
@ -195,7 +199,7 @@ posify (char **here, const char *value)
|
|||||||
}
|
}
|
||||||
|
|
||||||
debug_printf ("env var converted to %s", outenv);
|
debug_printf ("env var converted to %s", outenv);
|
||||||
*here = outenv;
|
*here = strdup (outenv);
|
||||||
free (src);
|
free (src);
|
||||||
MALLOC_CHECK;
|
MALLOC_CHECK;
|
||||||
}
|
}
|
||||||
|
@ -331,6 +331,8 @@ cygwin_stackdump ()
|
|||||||
extern "C" int
|
extern "C" int
|
||||||
try_to_debug (bool waitloop)
|
try_to_debug (bool waitloop)
|
||||||
{
|
{
|
||||||
|
WCHAR dbg_cmd[sizeof debugger_command];
|
||||||
|
|
||||||
debug_printf ("debugger_command '%s'", debugger_command);
|
debug_printf ("debugger_command '%s'", debugger_command);
|
||||||
if (*debugger_command == '\0')
|
if (*debugger_command == '\0')
|
||||||
return 0;
|
return 0;
|
||||||
@ -347,7 +349,7 @@ try_to_debug (bool waitloop)
|
|||||||
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_HIGHEST);
|
SetThreadPriority (GetCurrentThread (), THREAD_PRIORITY_HIGHEST);
|
||||||
PROCESS_INFORMATION pi = {NULL, 0, 0, 0};
|
PROCESS_INFORMATION pi = {NULL, 0, 0, 0};
|
||||||
|
|
||||||
STARTUPINFO si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL};
|
STARTUPINFOW si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL};
|
||||||
si.lpReserved = NULL;
|
si.lpReserved = NULL;
|
||||||
si.lpDesktop = NULL;
|
si.lpDesktop = NULL;
|
||||||
si.dwFlags = 0;
|
si.dwFlags = 0;
|
||||||
@ -382,16 +384,17 @@ try_to_debug (bool waitloop)
|
|||||||
console_printf ("*** starting debugger for pid %u, tid %u\n",
|
console_printf ("*** starting debugger for pid %u, tid %u\n",
|
||||||
cygwin_pid (GetCurrentProcessId ()), GetCurrentThreadId ());
|
cygwin_pid (GetCurrentProcessId ()), GetCurrentThreadId ());
|
||||||
BOOL dbg;
|
BOOL dbg;
|
||||||
dbg = CreateProcess (NULL,
|
sys_mbstowcs (dbg_cmd, debugger_command, sizeof debugger_command);
|
||||||
debugger_command,
|
dbg = CreateProcessW (NULL,
|
||||||
NULL,
|
dbg_cmd,
|
||||||
NULL,
|
NULL,
|
||||||
FALSE,
|
NULL,
|
||||||
CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP,
|
FALSE,
|
||||||
NULL,
|
CREATE_NEW_CONSOLE | CREATE_NEW_PROCESS_GROUP,
|
||||||
NULL,
|
NULL,
|
||||||
&si,
|
NULL,
|
||||||
&pi);
|
&si,
|
||||||
|
&pi);
|
||||||
|
|
||||||
if (!dbg)
|
if (!dbg)
|
||||||
system_printf ("Failed to start debugger, %E");
|
system_printf ("Failed to start debugger, %E");
|
||||||
|
@ -14,9 +14,12 @@ details. */
|
|||||||
#include <sys/errno.h>
|
#include <sys/errno.h>
|
||||||
#include <sys/uio.h>
|
#include <sys/uio.h>
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <alloca.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
#include <wchar.h>
|
||||||
#include "cygthread.h"
|
#include "cygthread.h"
|
||||||
#include "cygtls.h"
|
#include "cygtls.h"
|
||||||
|
#include "ntdll.h"
|
||||||
|
|
||||||
long tls_ix = -1;
|
long tls_ix = -1;
|
||||||
|
|
||||||
@ -77,70 +80,112 @@ const char isalpha_array[] NO_COPY = {
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
#define ch_case_eq(ch1, ch2) (cyg_tolower(ch1) == cyg_tolower(ch2))
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
|
|
||||||
/* Return TRUE if two strings match up to length n */
|
|
||||||
extern "C" int __stdcall
|
extern "C" int __stdcall
|
||||||
strncasematch (const char *s1, const char *s2, size_t n)
|
cygwin_wcscasecmp (const wchar_t *ws, const wchar_t *wt)
|
||||||
{
|
{
|
||||||
if (s1 == s2)
|
UNICODE_STRING us, ut;
|
||||||
return 1;
|
|
||||||
|
|
||||||
n++;
|
RtlInitUnicodeString (&us, ws);
|
||||||
while (--n && *s1)
|
RtlInitUnicodeString (&ut, wt);
|
||||||
{
|
return RtlCompareUnicodeString (&us, &ut, TRUE);
|
||||||
if (!ch_case_eq (*s1, *s2))
|
|
||||||
return 0;
|
|
||||||
s1++; s2++;
|
|
||||||
}
|
|
||||||
return !n || *s2 == '\0';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return TRUE if two strings match */
|
|
||||||
extern "C" int __stdcall
|
extern "C" int __stdcall
|
||||||
strcasematch (const char *s1, const char *s2)
|
cygwin_wcsncasecmp (const wchar_t *ws, const wchar_t *wt, size_t n)
|
||||||
{
|
{
|
||||||
if (s1 == s2)
|
UNICODE_STRING us, ut;
|
||||||
return 1;
|
|
||||||
|
|
||||||
while (*s1)
|
n *= sizeof (WCHAR);
|
||||||
{
|
RtlInitUnicodeString (&us, ws);
|
||||||
if (!ch_case_eq (*s1, *s2))
|
if (us.Length > n)
|
||||||
return 0;
|
us.Length = n;
|
||||||
s1++; s2++;
|
RtlInitUnicodeString (&ut, wt);
|
||||||
}
|
if (ut.Length > n)
|
||||||
return *s2 == '\0';
|
ut.Length = n;
|
||||||
|
return RtlCompareUnicodeString (&us, &ut, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int __stdcall
|
||||||
|
cygwin_strcasecmp (const char *cs, const char *ct)
|
||||||
|
{
|
||||||
|
UNICODE_STRING us, ut;
|
||||||
|
ULONG len;
|
||||||
|
|
||||||
|
len = (strlen (cs) + 1) * sizeof (WCHAR);
|
||||||
|
RtlInitEmptyUnicodeString (&us, (PWCHAR) alloca (len), len);
|
||||||
|
us.Length = sys_mbstowcs (us.Buffer, cs, us.MaximumLength) * sizeof (WCHAR);
|
||||||
|
len = (strlen (ct) + 1) * sizeof (WCHAR);
|
||||||
|
RtlInitEmptyUnicodeString (&ut, (PWCHAR) alloca (len), len);
|
||||||
|
ut.Length = sys_mbstowcs (ut.Buffer, ct, ut.MaximumLength) * sizeof (WCHAR);
|
||||||
|
return RtlCompareUnicodeString (&us, &ut, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" int __stdcall
|
||||||
|
cygwin_strncasecmp (const char *cs, const char *ct, size_t n)
|
||||||
|
{
|
||||||
|
UNICODE_STRING us, ut;
|
||||||
|
ULONG len;
|
||||||
|
|
||||||
|
n *= sizeof (WCHAR);
|
||||||
|
len = (strlen (cs) + 1) * sizeof (WCHAR);
|
||||||
|
RtlInitEmptyUnicodeString (&us, (PWCHAR) alloca (len), len);
|
||||||
|
us.Length = sys_mbstowcs (us.Buffer, cs, us.MaximumLength) * sizeof (WCHAR);
|
||||||
|
if (us.Length > n)
|
||||||
|
us.Length = n;
|
||||||
|
len = (strlen (ct) + 1) * sizeof (WCHAR);
|
||||||
|
RtlInitEmptyUnicodeString (&ut, (PWCHAR) alloca (len), len);
|
||||||
|
ut.Length = sys_mbstowcs (ut.Buffer, ct, ut.MaximumLength) * sizeof (WCHAR);
|
||||||
|
if (ut.Length > n)
|
||||||
|
ut.Length = n;
|
||||||
|
return RtlCompareUnicodeString (&us, &ut, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" wchar_t * __stdcall
|
||||||
|
cygwin_wcslwr (wchar_t *string)
|
||||||
|
{
|
||||||
|
UNICODE_STRING us;
|
||||||
|
|
||||||
|
RtlInitUnicodeString (&us, string);
|
||||||
|
RtlDowncaseUnicodeString (&us, &us, FALSE);
|
||||||
|
return string;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" wchar_t * __stdcall
|
||||||
|
cygwin_wcsupr (wchar_t *string)
|
||||||
|
{
|
||||||
|
UNICODE_STRING us;
|
||||||
|
|
||||||
|
RtlInitUnicodeString (&us, string);
|
||||||
|
RtlUpcaseUnicodeString (&us, &us, FALSE);
|
||||||
|
return string;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
extern "C" char * __stdcall
|
extern "C" char * __stdcall
|
||||||
strcasestr (const char *searchee, const char *lookfor)
|
cygwin_strlwr (char *string)
|
||||||
{
|
{
|
||||||
if (*searchee == 0)
|
UNICODE_STRING us;
|
||||||
{
|
size_t len = (strlen (string) + 1) * sizeof (WCHAR);
|
||||||
if (*lookfor)
|
|
||||||
return NULL;
|
|
||||||
return (char *) searchee;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (*searchee)
|
us.MaximumLength = len; us.Buffer = (PWCHAR) alloca (len);
|
||||||
{
|
us.Length = sys_mbstowcs (us.Buffer, string, len) * sizeof (WCHAR)
|
||||||
int i = 0;
|
- sizeof (WCHAR);
|
||||||
while (1)
|
RtlDowncaseUnicodeString (&us, &us, FALSE);
|
||||||
{
|
sys_wcstombs (string, len / sizeof (WCHAR), us.Buffer);
|
||||||
if (lookfor[i] == 0)
|
return string;
|
||||||
return (char *) searchee;
|
}
|
||||||
|
|
||||||
if (!ch_case_eq (lookfor[i], searchee[i]))
|
extern "C" char * __stdcall
|
||||||
break;
|
cygwin_strupr (char *string)
|
||||||
lookfor++;
|
{
|
||||||
}
|
UNICODE_STRING us;
|
||||||
searchee++;
|
size_t len = (strlen (string) + 1) * sizeof (WCHAR);
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
us.MaximumLength = len; us.Buffer = (PWCHAR) alloca (len);
|
||||||
|
us.Length = sys_mbstowcs (us.Buffer, string, len) * sizeof (WCHAR)
|
||||||
|
- sizeof (WCHAR);
|
||||||
|
RtlUpcaseUnicodeString (&us, &us, FALSE);
|
||||||
|
sys_wcstombs (string, len / sizeof (WCHAR), us.Buffer);
|
||||||
|
return string;
|
||||||
}
|
}
|
||||||
|
|
||||||
int __stdcall
|
int __stdcall
|
||||||
|
@ -857,6 +857,8 @@ extern "C"
|
|||||||
NTSTATUS NTAPI RtlConvertSidToUnicodeString (PUNICODE_STRING, PSID, BOOLEAN);
|
NTSTATUS NTAPI RtlConvertSidToUnicodeString (PUNICODE_STRING, PSID, BOOLEAN);
|
||||||
VOID NTAPI RtlCopyUnicodeString (PUNICODE_STRING, PUNICODE_STRING);
|
VOID NTAPI RtlCopyUnicodeString (PUNICODE_STRING, PUNICODE_STRING);
|
||||||
BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz (PUNICODE_STRING, PCSTR);
|
BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz (PUNICODE_STRING, PCSTR);
|
||||||
|
NTSTATUS NTAPI RtlDowncaseUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
|
||||||
|
BOOLEAN);
|
||||||
BOOLEAN NTAPI RtlEqualUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
|
BOOLEAN NTAPI RtlEqualUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
|
||||||
BOOLEAN);
|
BOOLEAN);
|
||||||
VOID NTAPI RtlFreeAnsiString (PANSI_STRING);
|
VOID NTAPI RtlFreeAnsiString (PANSI_STRING);
|
||||||
@ -878,6 +880,8 @@ extern "C"
|
|||||||
NTSTATUS NTAPI RtlUnicodeStringToOemString (PANSI_STRING, PUNICODE_STRING,
|
NTSTATUS NTAPI RtlUnicodeStringToOemString (PANSI_STRING, PUNICODE_STRING,
|
||||||
BOOLEAN);
|
BOOLEAN);
|
||||||
WCHAR NTAPI RtlUpcaseUnicodeChar (WCHAR);
|
WCHAR NTAPI RtlUpcaseUnicodeChar (WCHAR);
|
||||||
|
NTSTATUS NTAPI RtlUpcaseUnicodeString (PUNICODE_STRING, PUNICODE_STRING,
|
||||||
|
BOOLEAN);
|
||||||
|
|
||||||
/* A few Rtl functions are either actually macros, or they just don't
|
/* A few Rtl functions are either actually macros, or they just don't
|
||||||
exist even though they would be a big help. We implement them here,
|
exist even though they would be a big help. We implement them here,
|
||||||
@ -958,7 +962,7 @@ extern "C"
|
|||||||
}
|
}
|
||||||
/* Implemented in strfuncs.cc. Create a Hex UNICODE_STRING from a given
|
/* Implemented in strfuncs.cc. Create a Hex UNICODE_STRING from a given
|
||||||
64 bit integer value. If append is TRUE, append the hex string,
|
64 bit integer value. If append is TRUE, append the hex string,
|
||||||
otherwise overwrite dest. Returns either STAUTUS_SUCCESS, or
|
otherwise overwrite dest. Returns either STATUS_SUCCESS, or
|
||||||
STATUS_BUFFER_OVERFLOW, if the unicode buffer is too small (hasn't
|
STATUS_BUFFER_OVERFLOW, if the unicode buffer is too small (hasn't
|
||||||
room for 16 WCHARs). */
|
room for 16 WCHARs). */
|
||||||
NTSTATUS NTAPI RtlInt64ToHexUnicodeString (ULONGLONG value,
|
NTSTATUS NTAPI RtlInt64ToHexUnicodeString (ULONGLONG value,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* string.h: Extra string defs
|
/* string.h: Extra string defs
|
||||||
|
|
||||||
Copyright 2001 Red Hat, Inc.
|
Copyright 2001, 2007 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
@ -59,6 +59,8 @@ strechr (const char *s, int c)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Don't use. Not NLS aware. */
|
||||||
|
#if 0 // Not NLS aware
|
||||||
extern const char isalpha_array[];
|
extern const char isalpha_array[];
|
||||||
|
|
||||||
#undef strcasematch
|
#undef strcasematch
|
||||||
@ -122,6 +124,26 @@ cygwin_strncasematch (const char *cs, const char *ct, size_t n)
|
|||||||
|
|
||||||
return __res;
|
return __res;
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#undef strcasecmp
|
||||||
|
#define strcasecmp cygwin_strcasecmp
|
||||||
|
int __stdcall cygwin_strcasecmp (const char *, const char *);
|
||||||
|
|
||||||
|
#undef strncasecmp
|
||||||
|
#define strncasecmp cygwin_strncasecmp
|
||||||
|
int __stdcall cygwin_strncasecmp (const char *, const char *, size_t);
|
||||||
|
|
||||||
|
#define strcasematch(s1,s2) (!cygwin_strcasecmp ((s1),(s2)))
|
||||||
|
#define strncasematch(s1,s2,n) (!cygwin_strncasecmp ((s1),(s2),(n)))
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef strlwr
|
||||||
|
#define strlwr cygwin_strlwr
|
||||||
|
char * __stdcall cygwin_strlwr (char *);
|
||||||
|
|
||||||
|
#undef strupr
|
||||||
|
#define strupr cygwin_strupr
|
||||||
|
char * __stdcall cygwin_strupr (char *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
39
winsup/cygwin/wchar.h
Normal file
39
winsup/cygwin/wchar.h
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
/* wchar.h: Extra wchar defs
|
||||||
|
|
||||||
|
Copyright 2007 Red Hat, Inc.
|
||||||
|
|
||||||
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
This software is a copyrighted work licensed under the terms of the
|
||||||
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
||||||
|
details. */
|
||||||
|
|
||||||
|
#ifndef _CYGWIN_WCHAR_H
|
||||||
|
#define _CYGWIN_WCHAR_H
|
||||||
|
|
||||||
|
#include_next <wchar.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef wcscasecmp
|
||||||
|
#define wcscasecmp cygwin_wcscasecmp
|
||||||
|
int __stdcall cygwin_wcscasecmp (const wchar_t *, const wchar_t *);
|
||||||
|
|
||||||
|
#undef wcsncasecmp
|
||||||
|
#define wcsncasecmp cygwin_wcsncasecmp
|
||||||
|
int __stdcall cygwin_wcsncasecmp (const wchar_t *, const wchar_t *, size_t);
|
||||||
|
|
||||||
|
#undef wcslwr
|
||||||
|
#define wcslwr cygwin_wcslwr
|
||||||
|
wchar_t * __stdcall cygwin_wcslwr (wchar_t *);
|
||||||
|
|
||||||
|
#undef wcsupr
|
||||||
|
#define wcsupr cygwin_wcsupr
|
||||||
|
wchar_t * __stdcall cygwin_wcsupr (wchar_t *);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif /* _CYGWIN_WCHAR_H */
|
@ -308,7 +308,6 @@ wincapc wincap __attribute__((section (".cygwin_dll_common"), shared));
|
|||||||
void
|
void
|
||||||
wincapc::init ()
|
wincapc::init ()
|
||||||
{
|
{
|
||||||
const char *os;
|
|
||||||
bool has_osversioninfoex = true;
|
bool has_osversioninfoex = true;
|
||||||
|
|
||||||
if (caps)
|
if (caps)
|
||||||
@ -331,7 +330,6 @@ wincapc::init ()
|
|||||||
switch (version.dwMajorVersion)
|
switch (version.dwMajorVersion)
|
||||||
{
|
{
|
||||||
case 4:
|
case 4:
|
||||||
os = "NT";
|
|
||||||
if (!has_osversioninfoex
|
if (!has_osversioninfoex
|
||||||
&& strcmp (version.szCSDVersion, "Service Pack 4") < 0)
|
&& strcmp (version.szCSDVersion, "Service Pack 4") < 0)
|
||||||
caps = &wincap_nt4;
|
caps = &wincap_nt4;
|
||||||
@ -339,7 +337,6 @@ wincapc::init ()
|
|||||||
caps = &wincap_nt4sp4;
|
caps = &wincap_nt4sp4;
|
||||||
break;
|
break;
|
||||||
case 5:
|
case 5:
|
||||||
os = "NT";
|
|
||||||
switch (version.dwMinorVersion)
|
switch (version.dwMinorVersion)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
@ -367,11 +364,9 @@ wincapc::init ()
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
os = "NT";
|
|
||||||
caps = &wincap_vista;
|
caps = &wincap_vista;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
os = "??";
|
|
||||||
caps = &wincap_unknown;
|
caps = &wincap_unknown;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -382,7 +377,6 @@ wincapc::init ()
|
|||||||
api_fatal ("Windows 95/98/Me are not supported.");
|
api_fatal ("Windows 95/98/Me are not supported.");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
os = "??";
|
|
||||||
caps = &wincap_unknown;
|
caps = &wincap_unknown;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -396,7 +390,7 @@ wincapc::init ()
|
|||||||
else
|
else
|
||||||
((wincaps *)this->caps)->needs_count_in_si_lpres2 = false;
|
((wincaps *)this->caps)->needs_count_in_si_lpres2 = false;
|
||||||
|
|
||||||
__small_sprintf (osnam, "%s-%d.%d", os, version.dwMajorVersion,
|
__small_sprintf (osnam, "NT-%d.%d", version.dwMajorVersion,
|
||||||
version.dwMinorVersion);
|
version.dwMinorVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -264,9 +264,6 @@ void __stdcall nofinalslash (const char *src, char *dst) __attribute__ ((regparm
|
|||||||
|
|
||||||
/* String manipulation */
|
/* String manipulation */
|
||||||
extern "C" char *__stdcall strccpy (char *s1, const char **s2, char c);
|
extern "C" char *__stdcall strccpy (char *s1, const char **s2, char c);
|
||||||
extern "C" int __stdcall strcasematch (const char *s1, const char *s2) __attribute__ ((regparm(2)));
|
|
||||||
extern "C" int __stdcall strncasematch (const char *s1, const char *s2, size_t n) __attribute__ ((regparm(3)));
|
|
||||||
extern "C" char *__stdcall strcasestr (const char *searchee, const char *lookfor) __attribute__ ((regparm(2)));
|
|
||||||
|
|
||||||
void *hook_or_detect_cygwin (const char *, const void *, WORD&) __attribute__ ((regparm (3)));
|
void *hook_or_detect_cygwin (const char *, const void *, WORD&) __attribute__ ((regparm (3)));
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user