jscript: Build with msvcrt.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2019-06-06 09:17:49 +02:00
parent 0af6002a3b
commit 29ea8b42db
22 changed files with 145 additions and 170 deletions

View File

@ -1,6 +1,8 @@
MODULE = jscript.dll
IMPORTS = oleaut32 ole32 user32 advapi32
EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \
activex.c \
array.c \

View File

@ -16,8 +16,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include "jscript.h"
#include "objsafe.h"

View File

@ -16,8 +16,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include <assert.h>
@ -356,7 +354,7 @@ static HRESULT Array_join(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigne
jsstr_release(sep_str);
}else {
hres = array_join(ctx, jsthis, length, default_separatorW, strlenW(default_separatorW), r);
hres = array_join(ctx, jsthis, length, default_separatorW, lstrlenW(default_separatorW), r);
}
return hres;
@ -939,7 +937,7 @@ static HRESULT Array_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, un
return throw_type_error(ctx, JS_E_ARRAY_EXPECTED, NULL);
return array_join(ctx, &array->dispex, array->length, default_separatorW,
strlenW(default_separatorW), r);
lstrlenW(default_separatorW), r);
}
static HRESULT Array_toLocaleString(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, unsigned argc, jsval_t *argv,
@ -1179,7 +1177,7 @@ static HRESULT Array_get_value(script_ctx_t *ctx, jsdisp_t *jsthis, jsval_t *r)
TRACE("\n");
return array_join(ctx, &array->dispex, array->length, default_separatorW,
strlenW(default_separatorW), r);
lstrlenW(default_separatorW), r);
}
static void Array_destructor(jsdisp_t *dispex)
@ -1193,10 +1191,10 @@ static void Array_on_put(jsdisp_t *dispex, const WCHAR *name)
const WCHAR *ptr = name;
DWORD id = 0;
if(!isdigitW(*ptr))
if(!iswdigit(*ptr))
return;
while(*ptr && isdigitW(*ptr)) {
while(*ptr && iswdigit(*ptr)) {
id = id*10 + (*ptr-'0');
ptr++;
}

View File

@ -160,7 +160,7 @@ jsstr_t *compiler_alloc_string_len(compiler_ctx_t *ctx, const WCHAR *str, unsign
static jsstr_t *compiler_alloc_string(compiler_ctx_t *ctx, const WCHAR *str)
{
return compiler_alloc_string_len(ctx, str, strlenW(str));
return compiler_alloc_string_len(ctx, str, lstrlenW(str));
}
static BOOL ensure_bstr_slot(compiler_ctx_t *ctx)
@ -1419,7 +1419,7 @@ static HRESULT compile_continue_statement(compiler_ctx_t *ctx, branch_statement_
for(iter = ctx->stat_ctx; iter; iter = iter->next) {
if(iter->continue_label)
pop_ctx = iter;
if(iter->labelled_stat && !strcmpW(iter->labelled_stat->identifier, stat->identifier))
if(iter->labelled_stat && !lstrcmpW(iter->labelled_stat->identifier, stat->identifier))
break;
}
@ -1465,7 +1465,7 @@ static HRESULT compile_break_statement(compiler_ctx_t *ctx, branch_statement_t *
if(stat->identifier) {
for(pop_ctx = ctx->stat_ctx; pop_ctx; pop_ctx = pop_ctx->next) {
if(pop_ctx->labelled_stat && !strcmpW(pop_ctx->labelled_stat->identifier, stat->identifier)) {
if(pop_ctx->labelled_stat && !lstrcmpW(pop_ctx->labelled_stat->identifier, stat->identifier)) {
assert(pop_ctx->break_label);
break;
}
@ -1549,7 +1549,7 @@ static HRESULT compile_labelled_statement(compiler_ctx_t *ctx, labelled_statemen
HRESULT hres;
for(iter = ctx->stat_ctx; iter; iter = iter->next) {
if(iter->labelled_stat && !strcmpW(iter->labelled_stat->identifier, stat->identifier)) {
if(iter->labelled_stat && !lstrcmpW(iter->labelled_stat->identifier, stat->identifier)) {
WARN("Label %s redefined\n", debugstr_w(stat->identifier));
return JS_E_LABEL_REDEFINED;
}
@ -1825,7 +1825,7 @@ static HRESULT compile_statement(compiler_ctx_t *ctx, statement_ctx_t *stat_ctx,
static int function_local_cmp(const void *key, const struct wine_rb_entry *entry)
{
function_local_t *local = WINE_RB_ENTRY_VALUE(entry, function_local_t, entry);
return strcmpW(key, local->name);
return CompareStringOrdinal(key, -1, local->name, -1, FALSE) - 2;
}
static inline function_local_t *find_local(compiler_ctx_t *ctx, const WCHAR *name)
@ -2382,7 +2382,7 @@ static HRESULT parse_arguments(compiler_ctx_t *ctx, const WCHAR *args, BSTR *arg
const WCHAR *ptr = args, *ptr2;
unsigned arg_cnt = 0;
while(isspaceW(*ptr))
while(iswspace(*ptr))
ptr++;
if(!*ptr) {
if(args_size)
@ -2391,16 +2391,16 @@ static HRESULT parse_arguments(compiler_ctx_t *ctx, const WCHAR *args, BSTR *arg
}
while(1) {
if(!isalphaW(*ptr) && *ptr != '_') {
if(!iswalpha(*ptr) && *ptr != '_') {
FIXME("expected alpha or '_': %s\n", debugstr_w(ptr));
return E_FAIL;
}
ptr2 = ptr;
while(isalnumW(*ptr) || *ptr == '_')
while(iswalnum(*ptr) || *ptr == '_')
ptr++;
if(*ptr && *ptr != ',' && !isspaceW(*ptr)) {
if(*ptr && *ptr != ',' && !iswspace(*ptr)) {
FIXME("unexpected har %s\n", debugstr_w(ptr));
return E_FAIL;
}
@ -2412,7 +2412,7 @@ static HRESULT parse_arguments(compiler_ctx_t *ctx, const WCHAR *args, BSTR *arg
}
arg_cnt++;
while(isspaceW(*ptr))
while(iswspace(*ptr))
ptr++;
if(!*ptr)
break;
@ -2422,7 +2422,7 @@ static HRESULT parse_arguments(compiler_ctx_t *ctx, const WCHAR *args, BSTR *arg
}
ptr++;
while(isspaceW(*ptr))
while(iswspace(*ptr))
ptr++;
}

View File

@ -17,8 +17,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <limits.h>
#include <math.h>
@ -542,16 +540,16 @@ static inline HRESULT date_to_string(DOUBLE time, BOOL show_offset, int offset,
}
if(!show_offset)
sprintfW(buf, formatNoOffsetW, week, month, day,
swprintf(buf, ARRAY_SIZE(buf), formatNoOffsetW, week, month, day,
(int)hour_from_time(time), (int)min_from_time(time),
(int)sec_from_time(time), year, formatAD?ADW:BCW);
else if(offset)
sprintfW(buf, formatW, week, month, day,
swprintf(buf, ARRAY_SIZE(buf), formatW, week, month, day,
(int)hour_from_time(time), (int)min_from_time(time),
(int)sec_from_time(time), sign, offset/60, offset%60,
year, formatAD?ADW:BCW);
else
sprintfW(buf, formatUTCW, week, month, day,
swprintf(buf, ARRAY_SIZE(buf), formatUTCW, week, month, day,
(int)hour_from_time(time), (int)min_from_time(time),
(int)sec_from_time(time), year, formatAD?ADW:BCW);
@ -658,15 +656,16 @@ static HRESULT Date_toISOString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
if(year < 0) {
*p++ = '-';
p += sprintfW(p, long_year_formatW, -(int)year);
p += swprintf(p, ARRAY_SIZE(buf) - 1, long_year_formatW, -(int)year);
}else if(year > 9999) {
*p++ = '+';
p += sprintfW(p, long_year_formatW, (int)year);
p += swprintf(p, ARRAY_SIZE(buf) - 1, long_year_formatW, (int)year);
}else {
p += sprintfW(p, short_year_formatW, (int)year);
p += swprintf(p, ARRAY_SIZE(buf), short_year_formatW, (int)year);
}
sprintfW(p, formatW, (int)month_from_time(date->time) + 1, (int)date_from_time(date->time),
swprintf(p, ARRAY_SIZE(buf) - (p - buf), formatW,
(int)month_from_time(date->time) + 1, (int)date_from_time(date->time),
(int)hour_from_time(date->time), (int)min_from_time(date->time),
(int)sec_from_time(date->time), (int)ms_from_time(date->time));
@ -745,7 +744,7 @@ static inline HRESULT create_utc_string(script_ctx_t *ctx, vdisp_t *jsthis, jsva
day = date_from_time(date->time);
sprintfW(buf, formatAD ? formatADW : formatBCW, week, day, month, year,
swprintf(buf, ARRAY_SIZE(buf), formatAD ? formatADW : formatBCW, week, day, month, year,
(int)hour_from_time(date->time), (int)min_from_time(date->time),
(int)sec_from_time(date->time));
@ -822,7 +821,7 @@ static HRESULT dateobj_to_date_string(DateInstance *date, jsval_t *r)
day = date_from_time(time);
sprintfW(buf, formatAD ? formatADW : formatBCW, week, month, day, year);
swprintf(buf, ARRAY_SIZE(buf), formatAD ? formatADW : formatBCW, week, month, day, year);
date_str = jsstr_alloc(buf);
if(!date_str)
@ -883,11 +882,11 @@ static HRESULT Date_toTimeString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
else sign = '-';
if(offset)
sprintfW(buf, formatW, (int)hour_from_time(time),
swprintf(buf, ARRAY_SIZE(buf), formatW, (int)hour_from_time(time),
(int)min_from_time(time), (int)sec_from_time(time),
sign, offset/60, offset%60);
else
sprintfW(buf, formatUTCW, (int)hour_from_time(time),
swprintf(buf, ARRAY_SIZE(buf), formatUTCW, (int)hour_from_time(time),
(int)min_from_time(time), (int)sec_from_time(time));
date_str = jsstr_alloc(buf);
@ -2075,7 +2074,7 @@ static inline HRESULT date_parse(jsstr_t *input_str, double *ret) {
for(i=0; i<input_len; i++) {
if(input[i] == '(') nest_level++;
else if(input[i] == ')') nest_level--;
else if(!nest_level) parse[parse_len++] = toupperW(input[i]);
else if(!nest_level) parse[parse_len++] = towupper(input[i]);
}
parse[parse_len] = 0;
@ -2102,16 +2101,16 @@ static inline HRESULT date_parse(jsstr_t *input_str, double *ret) {
}
for(i=0; i<parse_len;) {
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i] == ',') {
while(parse[i] == ',') i++;
continue;
}
if(parse[i]>='0' && parse[i]<='9') {
int tmp = atoiW(&parse[i]);
int tmp = wcstol(&parse[i], NULL, 10);
while(parse[i]>='0' && parse[i]<='9') i++;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i] == ':') {
/* Time */
@ -2121,17 +2120,17 @@ static inline HRESULT date_parse(jsstr_t *input_str, double *ret) {
hour = tmp;
while(parse[i] == ':') i++;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i]>='0' && parse[i]<='9') {
min = atoiW(&parse[i]);
min = wcstol(&parse[i], NULL, 10);
while(parse[i]>='0' && parse[i]<='9') i++;
}
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
while(parse[i] == ':') i++;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i]>='0' && parse[i]<='9') {
sec = atoiW(&parse[i]);
sec = wcstol(&parse[i], NULL, 10);
while(parse[i]>='0' && parse[i]<='9') i++;
}
}
@ -2144,17 +2143,17 @@ static inline HRESULT date_parse(jsstr_t *input_str, double *ret) {
month = tmp-1;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
while(parse[i]=='-' || parse[i]=='/') i++;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i]<'0' || parse[i]>'9') break;
day = atoiW(&parse[i]);
day = wcstol(&parse[i], NULL, 10);
while(parse[i]>='0' && parse[i]<='9') i++;
while(parse[i]=='-' || parse[i]=='/') i++;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i]<'0' || parse[i]>'9') break;
year = atoiW(&parse[i]);
year = wcstol(&parse[i], NULL, 10);
while(parse[i]>='0' && parse[i]<='9') i++;
if(tmp >= 70){
@ -2189,9 +2188,9 @@ static inline HRESULT date_parse(jsstr_t *input_str, double *ret) {
if(parse[i] == '-') positive = FALSE;
i++;
while(isspaceW(parse[i])) i++;
while(iswspace(parse[i])) i++;
if(parse[i]<'0' || parse[i]>'9') break;
offset = atoiW(&parse[i]);
offset = wcstol(&parse[i], NULL, 10);
while(parse[i]>='0' && parse[i]<='9') i++;
if(offset<24) offset *= 60;
@ -2270,7 +2269,7 @@ static inline HRESULT date_parse(jsstr_t *input_str, double *ret) {
size -= i;
for(j=0; j<ARRAY_SIZE(string_ids); j++)
if(!strncmpiW(&parse[i], strings[j], size)) break;
if(!wcsnicmp(&parse[i], strings[j], size)) break;
if(j < 12) {
if(set_month) break;

View File

@ -117,7 +117,7 @@ HRESULT decode_source(WCHAR *code)
static const WCHAR decode_endW[] = {'^','#','~','@'};
while(*src) {
if(!strncmpW(src, decode_beginW, ARRAY_SIZE(decode_beginW))) {
if(!wcsncmp(src, decode_beginW, ARRAY_SIZE(decode_beginW))) {
DWORD len, i, j=0, csum, s=0;
src += ARRAY_SIZE(decode_beginW);
@ -165,7 +165,7 @@ HRESULT decode_source(WCHAR *code)
return JS_E_INVALID_CHAR;
src += 8;
if(strncmpW(src, decode_endW, ARRAY_SIZE(decode_endW)))
if(wcsncmp(src, decode_endW, ARRAY_SIZE(decode_endW)))
return JS_E_INVALID_CHAR;
src += ARRAY_SIZE(decode_endW);
}else {

View File

@ -20,7 +20,6 @@
#include "jscript.h"
#include "wine/unicode.h"
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(jscript);
@ -94,7 +93,7 @@ static const builtin_prop_t *find_builtin_prop(jsdisp_t *This, const WCHAR *name
while(min <= max) {
i = (min+max)/2;
r = strcmpW(name, This->builtin_info->props[i].name);
r = CompareStringOrdinal(name, -1, This->builtin_info->props[i].name, -1, FALSE) - 2;
if(!r) {
/* Skip prop if it's available only in higher compatibility mode. */
unsigned version = (This->builtin_info->props[i].flags & PROPF_VERSION_MASK)
@ -122,7 +121,7 @@ static inline unsigned string_hash(const WCHAR *name)
{
unsigned h = 0;
for(; *name; name++)
h = (h>>(sizeof(unsigned)*8-4)) ^ (h<<4) ^ tolowerW(*name);
h = (h>>(sizeof(unsigned)*8-4)) ^ (h<<4) ^ towlower(*name);
return h;
}
@ -204,7 +203,7 @@ static HRESULT find_prop_name(jsdisp_t *This, unsigned hash, const WCHAR *name,
bucket = get_props_idx(This, hash);
pos = This->props[bucket].bucket_head;
while(pos != 0) {
if(!strcmpW(name, This->props[pos].name)) {
if(!lstrcmpW(name, This->props[pos].name)) {
if(prev != 0) {
This->props[prev].bucket_next = This->props[pos].bucket_next;
This->props[pos].bucket_next = This->props[bucket].bucket_head;
@ -240,7 +239,7 @@ static HRESULT find_prop_name(jsdisp_t *This, unsigned hash, const WCHAR *name,
const WCHAR *ptr;
unsigned idx = 0;
for(ptr = name; isdigitW(*ptr) && idx < 0x10000; ptr++)
for(ptr = name; iswdigit(*ptr) && idx < 0x10000; ptr++)
idx = idx*10 + (*ptr-'0');
if(!*ptr && idx < This->builtin_info->idx_length(This)) {
prop = alloc_prop(This, name, PROP_IDX, This->builtin_info->idx_put ? PROPF_WRITABLE : 0);
@ -1373,7 +1372,7 @@ HRESULT jsdisp_propput_idx(jsdisp_t *obj, DWORD idx, jsval_t val)
static const WCHAR formatW[] = {'%','d',0};
sprintfW(buf, formatW, idx);
swprintf(buf, ARRAY_SIZE(buf), formatW, idx);
return jsdisp_propput_name(obj, buf, val);
}
@ -1451,7 +1450,7 @@ HRESULT jsdisp_get_idx(jsdisp_t *obj, DWORD idx, jsval_t *r)
static const WCHAR formatW[] = {'%','d',0};
sprintfW(name, formatW, idx);
swprintf(name, ARRAY_SIZE(name), formatW, idx);
hres = find_prop_name_prot(obj, string_hash(name), name, &prop);
if(FAILED(hres))
@ -1520,7 +1519,7 @@ HRESULT jsdisp_delete_idx(jsdisp_t *obj, DWORD idx)
BOOL b;
HRESULT hres;
sprintfW(buf, formatW, idx);
swprintf(buf, ARRAY_SIZE(buf), formatW, idx);
hres = find_prop_name(obj, string_hash(buf), buf, &prop);
if(FAILED(hres) || !prop)

View File

@ -16,8 +16,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include <assert.h>
@ -616,7 +614,7 @@ static BOOL lookup_global_members(script_ctx_t *ctx, BSTR identifier, exprval_t
static int local_ref_cmp(const void *key, const void *ref)
{
return strcmpW((const WCHAR*)key, ((const local_ref_t*)ref)->name);
return CompareStringOrdinal((const WCHAR*)key, -1, ((const local_ref_t*)ref)->name, -1, FALSE) - 2;
}
local_ref_t *lookup_local(const function_code_t *function, const WCHAR *identifier)
@ -648,7 +646,7 @@ static HRESULT identifier_eval(script_ctx_t *ctx, BSTR identifier, exprval_t *re
return S_OK;
}
if(!strcmpW(identifier, argumentsW)) {
if(!lstrcmpW(identifier, argumentsW)) {
hres = detach_variable_object(ctx, scope->frame, FALSE);
if(FAILED(hres))
return hres;
@ -672,7 +670,7 @@ static HRESULT identifier_eval(script_ctx_t *ctx, BSTR identifier, exprval_t *re
}
for(item = ctx->named_items; item; item = item->next) {
if((item->flags & SCRIPTITEM_ISVISIBLE) && !strcmpW(item->name, identifier)) {
if((item->flags & SCRIPTITEM_ISVISIBLE) && !lstrcmpW(item->name, identifier)) {
if(!item->disp) {
IUnknown *unk;

View File

@ -16,8 +16,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
@ -387,10 +385,10 @@ static HRESULT throw_error(script_ctx_t *ctx, HRESULT error, const WCHAR *str, j
buf[0] = '\0';
LoadStringW(jscript_hinstance, HRESULT_CODE(error), buf, ARRAY_SIZE(buf));
if(str) pos = strchrW(buf, '|');
if(str) pos = wcschr(buf, '|');
if(pos) {
int len = strlenW(str);
memmove(pos+len, pos+1, (strlenW(pos+1)+1)*sizeof(WCHAR));
int len = lstrlenW(str);
memmove(pos+len, pos+1, (lstrlenW(pos+1)+1)*sizeof(WCHAR));
memcpy(pos, str, len*sizeof(WCHAR));
}

View File

@ -303,7 +303,7 @@ static HRESULT function_to_string(FunctionInstance *function, jsstr_t **ret)
DWORD name_len;
WCHAR *ptr;
name_len = strlenW(function->name);
name_len = lstrlenW(function->name);
str = jsstr_alloc_buf(ARRAY_SIZE(native_prefixW) + ARRAY_SIZE(native_suffixW) + name_len, &ptr);
if(!str)
return E_OUTOFMEMORY;

View File

@ -16,8 +16,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include <limits.h>
@ -312,7 +310,7 @@ static HRESULT JSGlobal_parseInt(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags,
if(FAILED(hres))
return hres;
while(isspaceW(*ptr))
while(iswspace(*ptr))
ptr++;
switch(*ptr) {
@ -380,7 +378,7 @@ static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flag
if(FAILED(hres))
return hres;
while(isspaceW(*str)) str++;
while(iswspace(*str)) str++;
if(*str == '+')
str++;
@ -389,10 +387,10 @@ static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flag
str++;
}
if(isdigitW(*str))
if(iswdigit(*str))
ret_nan = FALSE;
while(isdigitW(*str)) {
while(iswdigit(*str)) {
hlp = d*10 + *(str++) - '0';
if(d>MAXLONGLONG/10 || hlp<0) {
exp++;
@ -401,17 +399,17 @@ static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flag
else
d = hlp;
}
while(isdigitW(*str)) {
while(iswdigit(*str)) {
exp++;
str++;
}
if(*str == '.') str++;
if(isdigitW(*str))
if(iswdigit(*str))
ret_nan = FALSE;
while(isdigitW(*str)) {
while(iswdigit(*str)) {
hlp = d*10 + *(str++) - '0';
if(d>MAXLONGLONG/10 || hlp<0)
break;
@ -419,7 +417,7 @@ static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flag
d = hlp;
exp--;
}
while(isdigitW(*str))
while(iswdigit(*str))
str++;
if(*str && !ret_nan && (*str=='e' || *str=='E')) {
@ -433,7 +431,7 @@ static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flag
str++;
}
while(isdigitW(*str)) {
while(iswdigit(*str)) {
if(e>INT_MAX/10 || (e = e*10 + *str++ - '0')<0)
e = INT_MAX;
}
@ -460,8 +458,8 @@ static HRESULT JSGlobal_parseFloat(script_ctx_t *ctx, vdisp_t *jsthis, WORD flag
}
static inline int hex_to_int(const WCHAR wch) {
if(toupperW(wch)>='A' && toupperW(wch)<='F') return toupperW(wch)-'A'+10;
if(isdigitW(wch)) return wch-'0';
if(towupper(wch)>='A' && towupper(wch)<='F') return towupper(wch)-'A'+10;
if(iswdigit(wch)) return wch-'0';
return -1;
}

View File

@ -18,6 +18,7 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdint.h>
#define COBJMACROS
@ -30,7 +31,6 @@
#include "resource.h"
#include "wine/unicode.h"
#include "wine/heap.h"
#include "wine/list.h"
@ -75,7 +75,7 @@ static inline LPWSTR heap_strdupW(LPCWSTR str)
if(str) {
DWORD size;
size = (strlenW(str)+1)*sizeof(WCHAR);
size = (lstrlenW(str)+1)*sizeof(WCHAR);
ret = heap_alloc(size);
if(ret)
memcpy(ret, str, size);
@ -505,14 +505,6 @@ static inline BOOL is_vclass(vdisp_t *vdisp, jsclass_t class)
return is_jsdisp(vdisp) && is_class(vdisp->u.jsdisp, class);
}
#ifndef INT32_MIN
#define INT32_MIN (-2147483647-1)
#endif
#ifndef INT32_MAX
#define INT32_MAX (2147483647)
#endif
static inline BOOL is_int32(double d)
{
return INT32_MIN <= d && d <= INT32_MAX && (double)(int)d == d;

View File

@ -23,7 +23,6 @@
#include "parser.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(jscript);
@ -261,7 +260,7 @@ static HRESULT parse_json_value(json_parse_ctx_t *ctx, jsval_t *r)
skip_spaces(ctx);
}
if(*ctx->ptr == '0' && ctx->ptr + 1 < ctx->end && isdigitW(ctx->ptr[1]))
if(*ctx->ptr == '0' && ctx->ptr + 1 < ctx->end && iswdigit(ctx->ptr[1]))
break;
hres = parse_decimal(&ctx->ptr, ctx->end, &n);
@ -395,7 +394,7 @@ static BOOL append_string_len(stringify_ctx_t *ctx, const WCHAR *str, size_t len
static inline BOOL append_string(stringify_ctx_t *ctx, const WCHAR *str)
{
return append_string_len(ctx, str, strlenW(str));
return append_string_len(ctx, str, lstrlenW(str));
}
static inline BOOL append_char(stringify_ctx_t *ctx, WCHAR c)
@ -482,7 +481,7 @@ static HRESULT json_quote(stringify_ctx_t *ctx, const WCHAR *ptr, size_t len)
if(*ptr < ' ') {
static const WCHAR formatW[] = {'\\','u','%','0','4','x',0};
WCHAR buf[7];
sprintfW(buf, formatW, *ptr);
swprintf(buf, ARRAY_SIZE(buf), formatW, *ptr);
if(!append_string(ctx, buf))
return E_OUTOFMEMORY;
}else {

View File

@ -99,7 +99,7 @@ jsstr_t *jsstr_alloc_buf(unsigned,WCHAR**) DECLSPEC_HIDDEN;
static inline jsstr_t *jsstr_alloc(const WCHAR *str)
{
return jsstr_alloc_len(str, strlenW(str));
return jsstr_alloc_len(str, lstrlenW(str));
}
void jsstr_free(jsstr_t*) DECLSPEC_HIDDEN;

View File

@ -16,8 +16,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include <assert.h>
@ -516,7 +514,7 @@ static HRESULT str_to_number(jsstr_t *str, double *ret)
if(!ptr)
return E_OUTOFMEMORY;
while(isspaceW(*ptr))
while(iswspace(*ptr))
ptr++;
if(*ptr == '-') {
@ -526,9 +524,9 @@ static HRESULT str_to_number(jsstr_t *str, double *ret)
ptr++;
}
if(!strncmpW(ptr, infinityW, ARRAY_SIZE(infinityW))) {
if(!wcsncmp(ptr, infinityW, ARRAY_SIZE(infinityW))) {
ptr += ARRAY_SIZE(infinityW);
while(*ptr && isspaceW(*ptr))
while(*ptr && iswspace(*ptr))
ptr++;
if(*ptr)
@ -551,7 +549,7 @@ static HRESULT str_to_number(jsstr_t *str, double *ret)
return S_OK;
}
while(isdigitW(*ptr))
while(iswdigit(*ptr))
d = d*10 + (*ptr++ - '0');
if(*ptr == 'e' || *ptr == 'E') {
@ -566,7 +564,7 @@ static HRESULT str_to_number(jsstr_t *str, double *ret)
ptr++;
}
while(isdigitW(*ptr))
while(iswdigit(*ptr))
l = l*10 + (*ptr++ - '0');
if(eneg)
l = -l;
@ -576,13 +574,13 @@ static HRESULT str_to_number(jsstr_t *str, double *ret)
DOUBLE dec = 0.1;
ptr++;
while(isdigitW(*ptr)) {
while(iswdigit(*ptr)) {
d += dec * (*ptr++ - '0');
dec *= 0.1;
}
}
while(isspaceW(*ptr))
while(iswspace(*ptr))
ptr++;
if(*ptr) {

View File

@ -16,10 +16,9 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <limits.h>
#include <math.h>
#include "jscript.h"
#include "activscp.h"
@ -30,7 +29,6 @@
#include "parser.tab.h"
#include "wine/debug.h"
#include "wine/unicode.h"
WINE_DEFAULT_DEBUG_CHANNEL(jscript);
@ -116,12 +114,12 @@ static int lex_error(parser_ctx_t *ctx, HRESULT hres)
/* ECMA-262 3rd Edition 7.6 */
BOOL is_identifier_char(WCHAR c)
{
return isalnumW(c) || c == '$' || c == '_' || c == '\\';
return iswalnum(c) || c == '$' || c == '_' || c == '\\';
}
static BOOL is_identifier_first_char(WCHAR c)
{
return isalphaW(c) || c == '$' || c == '_' || c == '\\';
return iswalpha(c) || c == '$' || c == '_' || c == '\\';
}
static int check_keyword(parser_ctx_t *ctx, const WCHAR *word, const WCHAR **lval)
@ -177,7 +175,7 @@ static int check_keywords(parser_ctx_t *ctx, const WCHAR **lval)
if(ctx->script->version < keywords[i].min_version) {
TRACE("ignoring keyword %s in incompatible mode\n",
debugstr_w(keywords[i].word));
ctx->ptr -= strlenW(keywords[i].word);
ctx->ptr -= lstrlenW(keywords[i].word);
return 0;
}
ctx->implicit_nl_semicolon = keywords[i].no_nl;
@ -252,7 +250,7 @@ static BOOL skip_comment(parser_ctx_t *ctx)
static BOOL skip_spaces(parser_ctx_t *ctx)
{
while(ctx->ptr < ctx->end && (isspaceW(*ctx->ptr) || *ctx->ptr == 0xFEFF /* UTF16 BOM */)) {
while(ctx->ptr < ctx->end && (iswspace(*ctx->ptr) || *ctx->ptr == 0xFEFF /* UTF16 BOM */)) {
if(is_endline(*ctx->ptr++))
ctx->nl = TRUE;
}
@ -333,11 +331,11 @@ BOOL unescape(WCHAR *str, size_t *len)
c += i;
break;
default:
if(isdigitW(*p)) {
if(iswdigit(*p)) {
c = *p++ - '0';
if(p < end && isdigitW(*p)) {
if(p < end && iswdigit(*p)) {
c = c*8 + (*p++ - '0');
if(p < end && isdigitW(*p))
if(p < end && iswdigit(*p))
c = c*8 + (*p++ - '0');
}
p--;
@ -436,7 +434,7 @@ HRESULT parse_decimal(const WCHAR **iter, const WCHAR *end, double *ret)
LONGLONG d = 0, hlp;
int exp = 0;
while(ptr < end && isdigitW(*ptr)) {
while(ptr < end && iswdigit(*ptr)) {
hlp = d*10 + *(ptr++) - '0';
if(d>MAXLONGLONG/10 || hlp<0) {
exp++;
@ -445,7 +443,7 @@ HRESULT parse_decimal(const WCHAR **iter, const WCHAR *end, double *ret)
else
d = hlp;
}
while(ptr < end && isdigitW(*ptr)) {
while(ptr < end && iswdigit(*ptr)) {
exp++;
ptr++;
}
@ -453,7 +451,7 @@ HRESULT parse_decimal(const WCHAR **iter, const WCHAR *end, double *ret)
if(*ptr == '.') {
ptr++;
while(ptr < end && isdigitW(*ptr)) {
while(ptr < end && iswdigit(*ptr)) {
hlp = d*10 + *(ptr++) - '0';
if(d>MAXLONGLONG/10 || hlp<0)
break;
@ -461,7 +459,7 @@ HRESULT parse_decimal(const WCHAR **iter, const WCHAR *end, double *ret)
d = hlp;
exp--;
}
while(ptr < end && isdigitW(*ptr))
while(ptr < end && iswdigit(*ptr))
ptr++;
}
@ -474,7 +472,7 @@ HRESULT parse_decimal(const WCHAR **iter, const WCHAR *end, double *ret)
}else if(*ptr == '-') {
sign = -1;
ptr++;
}else if(!isdigitW(*ptr)) {
}else if(!iswdigit(*ptr)) {
WARN("Expected exponent part\n");
return E_FAIL;
}
@ -485,7 +483,7 @@ HRESULT parse_decimal(const WCHAR **iter, const WCHAR *end, double *ret)
return E_FAIL;
}
while(ptr < end && isdigitW(*ptr)) {
while(ptr < end && iswdigit(*ptr)) {
if(e > INT_MAX/10 || (e = e*10 + *ptr++ - '0')<0)
e = INT_MAX;
}
@ -536,12 +534,12 @@ static BOOL parse_numeric_literal(parser_ctx_t *ctx, double *ret)
return TRUE;
}
if(isdigitW(*ctx->ptr)) {
if(iswdigit(*ctx->ptr)) {
unsigned base = 8;
const WCHAR *ptr;
double val = 0;
for(ptr = ctx->ptr; ptr < ctx->end && isdigitW(*ptr); ptr++) {
for(ptr = ctx->ptr; ptr < ctx->end && iswdigit(*ptr); ptr++) {
if(*ptr > '7') {
base = 10;
break;
@ -550,7 +548,7 @@ static BOOL parse_numeric_literal(parser_ctx_t *ctx, double *ret)
do {
val = val*base + *ctx->ptr-'0';
}while(++ctx->ptr < ctx->end && isdigitW(*ctx->ptr));
}while(++ctx->ptr < ctx->end && iswdigit(*ctx->ptr));
/* FIXME: Do we need it here? */
if(ctx->ptr < ctx->end && (is_identifier_char(*ctx->ptr) || *ctx->ptr == '.')) {
@ -592,7 +590,7 @@ static int next_token(parser_ctx_t *ctx, void *lval)
ctx->implicit_nl_semicolon = FALSE;
}
if(isalphaW(*ctx->ptr)) {
if(iswalpha(*ctx->ptr)) {
int ret = check_keywords(ctx, lval);
if(ret)
return ret;
@ -600,7 +598,7 @@ static int next_token(parser_ctx_t *ctx, void *lval)
return parse_identifier(ctx, lval);
}
if(isdigitW(*ctx->ptr)) {
if(iswdigit(*ctx->ptr)) {
double n;
if(!parse_numeric_literal(ctx, &n))
@ -627,7 +625,7 @@ static int next_token(parser_ctx_t *ctx, void *lval)
return '}';
case '.':
if(ctx->ptr+1 < ctx->end && isdigitW(ctx->ptr[1])) {
if(ctx->ptr+1 < ctx->end && iswdigit(ctx->ptr[1])) {
double n;
HRESULT hres;
hres = parse_decimal(&ctx->ptr, ctx->end, &n);
@ -867,7 +865,7 @@ static BOOL new_cc_var(cc_ctx_t *cc, const WCHAR *name, int len, ccval_t v)
cc_var_t *new_v;
if(len == -1)
len = strlenW(name);
len = lstrlenW(name);
new_v = heap_alloc(sizeof(cc_var_t) + (len+1)*sizeof(WCHAR));
if(!new_v)
@ -953,7 +951,7 @@ int try_parse_ccval(parser_ctx_t *ctx, ccval_t *r)
if(!skip_spaces(ctx))
return -1;
if(isdigitW(*ctx->ptr)) {
if(iswdigit(*ctx->ptr)) {
double n;
if(!parse_numeric_literal(ctx, &n))
@ -995,7 +993,7 @@ static int skip_code(parser_ctx_t *ctx, BOOL exec_else)
const WCHAR *ptr;
while(1) {
ptr = strchrW(ctx->ptr, '@');
ptr = wcschr(ctx->ptr, '@');
if(!ptr) {
WARN("No @end\n");
return lex_error(ctx, JS_E_EXPECTED_CCEND);
@ -1200,7 +1198,7 @@ literal_t *parse_regexp(parser_ctx_t *ctx)
re_len = ctx->ptr-re;
flags_ptr = ++ctx->ptr;
while(ctx->ptr < ctx->end && isalnumW(*ctx->ptr))
while(ctx->ptr < ctx->end && iswalnum(*ctx->ptr))
ctx->ptr++;
hres = parse_regexp_flags(flags_ptr, ctx->ptr-flags_ptr, &flags);

View File

@ -17,8 +17,6 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include <limits.h>

View File

@ -332,7 +332,7 @@ static HRESULT Number_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, u
ch = '-';
}
else ch = '+';
sprintfW(&buf[idx], formatW, ch, (int)log_radix);
swprintf(&buf[idx], ARRAY_SIZE(buf) - idx, formatW, ch, (int)log_radix);
}
}
else buf[idx] = '\0';

View File

@ -89,11 +89,11 @@ static HRESULT Object_toString(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, u
jsstr_t *ret;
WCHAR *ptr;
ret = jsstr_alloc_buf(9+strlenW(str), &ptr);
ret = jsstr_alloc_buf(9+lstrlenW(str), &ptr);
if(!ret)
return E_OUTOFMEMORY;
sprintfW(ptr, formatW, str);
swprintf(ptr, 9 + lstrlenW(str), formatW, str);
*r = jsval_string(ret);
}

View File

@ -813,7 +813,7 @@ GetterSetterMethod
/* Ecma-262 3rd Edition 11.1.5 */
PropertyName
: IdentifierName { $$ = new_string_literal(ctx, compiler_alloc_string_len(ctx->compiler, $1, strlenW($1))); }
: IdentifierName { $$ = new_string_literal(ctx, compiler_alloc_string_len(ctx->compiler, $1, lstrlenW($1))); }
| tStringLiteral { $$ = new_string_literal(ctx, $1); }
| tNumericLiteral { $$ = $1; }
@ -1580,10 +1580,10 @@ HRESULT script_parse(script_ctx_t *ctx, struct _compiler_ctx_t *compiler, const
return E_OUTOFMEMORY;
parser_ctx->hres = JS_E_SYNTAX;
parser_ctx->is_html = delimiter && !strcmpiW(delimiter, html_tagW);
parser_ctx->is_html = delimiter && !wcsicmp(delimiter, html_tagW);
parser_ctx->begin = parser_ctx->ptr = code;
parser_ctx->end = parser_ctx->begin + strlenW(parser_ctx->begin);
parser_ctx->end = parser_ctx->begin + lstrlenW(parser_ctx->begin);
script_addref(ctx);
parser_ctx->script = ctx;

View File

@ -1142,8 +1142,8 @@ lexHex:
for (i = rangeStart; i <= localMax; i++) {
WCHAR uch, dch;
uch = toupperW(i);
dch = tolowerW(i);
uch = towupper(i);
dch = towlower(i);
if(maxch < uch)
maxch = uch;
if(maxch < dch)
@ -1988,7 +1988,7 @@ FlatNIMatcher(REGlobalData *gData, match_state_t *x, const WCHAR *matchChars,
if (length > (size_t)(gData->cpend - x->cp))
return NULL;
for (i = 0; i != length; i++) {
if (toupperW(matchChars[i]) != toupperW(x->cp[i]))
if (towupper(matchChars[i]) != towupper(x->cp[i]))
return NULL;
}
x->cp += length;
@ -2035,7 +2035,7 @@ BackrefMatcher(REGlobalData *gData, match_state_t *x, size_t parenIndex)
parenContent = &gData->cpbegin[cap->index];
if (gData->regexp->flags & REG_FOLD) {
for (i = 0; i < len; i++) {
if (toupperW(parenContent[i]) != toupperW(x->cp[i]))
if (towupper(parenContent[i]) != towupper(x->cp[i]))
return NULL;
}
} else {
@ -2226,12 +2226,12 @@ ProcessCharSet(REGlobalData *gData, RECharSet *charSet)
continue;
case 's':
for (i = (INT)charSet->length; i >= 0; i--)
if (isspaceW(i))
if (iswspace(i))
AddCharacterToCharSet(charSet, (WCHAR)i);
continue;
case 'S':
for (i = (INT)charSet->length; i >= 0; i--)
if (!isspaceW(i))
if (!iswspace(i))
AddCharacterToCharSet(charSet, (WCHAR)i);
continue;
case 'w':
@ -2263,8 +2263,8 @@ ProcessCharSet(REGlobalData *gData, RECharSet *charSet)
WCHAR uch, dch;
AddCharacterToCharSet(charSet, i);
uch = toupperW(i);
dch = tolowerW(i);
uch = towupper(i);
dch = towlower(i);
if (i != uch)
AddCharacterToCharSet(charSet, uch);
if (i != dch)
@ -2276,8 +2276,8 @@ ProcessCharSet(REGlobalData *gData, RECharSet *charSet)
inRange = FALSE;
} else {
if (gData->regexp->flags & REG_FOLD) {
AddCharacterToCharSet(charSet, toupperW(thisCh));
AddCharacterToCharSet(charSet, tolowerW(thisCh));
AddCharacterToCharSet(charSet, towupper(thisCh));
AddCharacterToCharSet(charSet, towlower(thisCh));
} else {
AddCharacterToCharSet(charSet, thisCh);
}
@ -2411,13 +2411,13 @@ SimpleMatch(REGlobalData *gData, match_state_t *x, REOp op,
}
break;
case REOP_SPACE:
if (x->cp != gData->cpend && isspaceW(*x->cp)) {
if (x->cp != gData->cpend && iswspace(*x->cp)) {
result = x;
result->cp++;
}
break;
case REOP_NONSPACE:
if (x->cp != gData->cpend && !isspaceW(*x->cp)) {
if (x->cp != gData->cpend && !iswspace(*x->cp)) {
result = x;
result->cp++;
}
@ -2463,7 +2463,7 @@ SimpleMatch(REGlobalData *gData, match_state_t *x, REOp op,
break;
case REOP_FLAT1i:
matchCh = *pc++;
if (x->cp != gData->cpend && toupperW(*x->cp) == toupperW(matchCh)) {
if (x->cp != gData->cpend && towupper(*x->cp) == towupper(matchCh)) {
result = x;
result->cp++;
}
@ -2480,7 +2480,7 @@ SimpleMatch(REGlobalData *gData, match_state_t *x, REOp op,
case REOP_UCFLAT1i:
matchCh = GET_ARG(pc);
pc += ARG_LEN;
if (x->cp != gData->cpend && toupperW(*x->cp) == toupperW(matchCh)) {
if (x->cp != gData->cpend && towupper(*x->cp) == towupper(matchCh)) {
result = x;
result->cp++;
}

View File

@ -16,8 +16,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
#include "config.h"
#include "wine/port.h"
#include <math.h>
#include "jscript.h"
#include "regexp.h"
@ -168,7 +168,7 @@ static HRESULT do_attributeless_tag_format(script_ctx_t *ctx, vdisp_t *jsthis, j
return S_OK;
}
tagname_len = strlenW(tagname);
tagname_len = lstrlenW(tagname);
ret = jsstr_alloc_buf(jsstr_length(str) + 2*tagname_len + 5, &ptr);
if(!ret) {
@ -215,8 +215,8 @@ static HRESULT do_attribute_tag_format(script_ctx_t *ctx, vdisp_t *jsthis, unsig
}
if(r) {
unsigned attrname_len = strlenW(attrname);
unsigned tagname_len = strlenW(tagname);
unsigned attrname_len = lstrlenW(attrname);
unsigned tagname_len = lstrlenW(tagname);
jsstr_t *ret;
WCHAR *ptr;
@ -853,7 +853,7 @@ static HRESULT String_replace(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, un
match->cp = str;
}
match->cp = strstrW(match->cp, match_str);
match->cp = wcsstr(match->cp, match_str);
if(!match->cp)
break;
match->match_len = jsstr_length(match_jsstr);
@ -879,7 +879,7 @@ static HRESULT String_replace(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, un
}else if(rep_str && regexp) {
const WCHAR *ptr = rep_str, *ptr2;
while((ptr2 = strchrW(ptr, '$'))) {
while((ptr2 = wcschr(ptr, '$'))) {
hres = strbuf_append(&ret, ptr, ptr2-ptr);
if(FAILED(hres))
break;
@ -904,14 +904,14 @@ static HRESULT String_replace(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, un
default: {
DWORD idx;
if(!isdigitW(ptr2[1])) {
if(!iswdigit(ptr2[1])) {
hres = strbuf_append(&ret, ptr2, 1);
ptr = ptr2+1;
break;
}
idx = ptr2[1] - '0';
if(isdigitW(ptr2[2]) && idx*10 + (ptr2[2]-'0') <= match->paren_count) {
if(iswdigit(ptr2[2]) && idx*10 + (ptr2[2]-'0') <= match->paren_count) {
idx = idx*10 + (ptr[2]-'0');
ptr = ptr2+3;
}else if(idx && idx <= match->paren_count) {
@ -1227,7 +1227,7 @@ static HRESULT String_split(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsi
}
ptr2 = match_result.cp - match_result.match_len;
}else if(match_str) {
ptr2 = strstrW(ptr, match_str);
ptr2 = wcsstr(ptr, match_str);
if(!ptr2)
break;
}else {
@ -1446,7 +1446,7 @@ static HRESULT String_toLowerCase(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags
}
jsstr_flush(str, buf);
for (; len--; buf++) *buf = tolowerW(*buf);
for (; len--; buf++) *buf = towlower(*buf);
*r = jsval_string(ret);
}
@ -1478,7 +1478,7 @@ static HRESULT String_toUpperCase(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags
}
jsstr_flush(str, buf);
for (; len--; buf++) *buf = toupperW(*buf);
for (; len--; buf++) *buf = towupper(*buf);
*r = jsval_string(ret);
}
@ -1516,8 +1516,8 @@ static HRESULT String_trim(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, unsig
len = jsstr_length(jsstr);
TRACE("%s\n", debugstr_wn(str, len));
for(begin = str, end = str + len; begin < end && isspaceW(*begin); begin++);
while(end > begin + 1 && isspaceW(*(end-1))) end--;
for(begin = str, end = str + len; begin < end && iswspace(*begin); begin++);
while(end > begin + 1 && iswspace(*(end-1))) end--;
if(r) {
jsstr_t *ret;