Release 960824
Sat Aug 24 13:57:01 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [controls/scroll.c]
Renamed SCROLLINFO to SCROLLBAR_INFO to avoid conflict with Win32.
* [graphics/driver.c] [include/x11drv.h]
New files for graphics driver handling.
* [if1632/relay.c] [include/registers.h] [tools/build.c]
Implemented Win32 register functions. Not really tested yet.
* [include/gdi.h]
Added a lot of functions to the DC func table.
* [loader/pe_image.c]
Initialise %fs before calling out to 32-bit code.
* [windows/hook.c]
Fixed bug in HOOK_GetHook().
* [windows/win.c]
Fixed FindWindow to return an error if the class name doesn't exist.
Wed Aug 21 15:15:53 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [if1632/Makefile.in] [misc/mpr.c] [if1632/mpr.spec]
mpr.dll specs added.
* [if1632/kernel32.spec] [win32/newfns.c] [memory/global.c]
QueryPerformanceCounter(), GlobalMemoryStatus() added.
* [if1632/user32.spec] [win32/error.c]
SetLastErrorEx() added.
* [misc/commdlg.c]
lpstrFilter might be NULL in FILE_WMInitDialog (NS 3.0 setup).
* [misc/registry.c]
Some missing NULL ptr checks added, misc clean up.
Tue Aug 20 21:00:00 1996 Alex Korobka <alex@pharm.sunysb.edu>
* [controls/menu.c]
Adjust popup menu coordinates so that it always stays within
the desktop.
* [misc/main.c]
Fixed GetEnvironment() return value for lpEnv == NULL case.
Mon Aug 19 22:48:36 1996 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [misc/crtdll.c] [if1632/crtdll.spec]
Added some is* functions, strlen and tolower.
Mon Aug 19 13:33:13 1996 Stephen Simmons <ssimmons@vitsemi.com>
* [tools/wineconf]
New perl script to generate the wine.conf file.
Fri Aug 16 15:31:44 1996 John Harvey <john@division.co.uk>
* [if1632/gdi.spec]
Lots of printer functions.
* [include/callback.h]
New functions for printer driver support.
* [include/gdi.h]
New/changed structures to support printer driver.
* [misc/escape.c]
New version that uses function table in DC structure.
* [objects/dc.c]
CreateDC copes with things other than Display.
X code for CreateDC moved to graphics/x11drv directory.
CreateCompatibleDC copies func table from original DC.
* [objects/font.c]
GetTextExtentPoint32A,GetTextMetrics16 use function table in
DC and code moved to drivers directory.
* [misc/printdrv.c] [graphics/*/*] [include/win16drv.h]
New files for printer support.
Fri Aug 16 12:33:00 1996 Bruce Milner <Bruce.Milner@genetics.utah.edu>
* [controls/scroll.c]
Added SetScrollInfo32 and GetScrollInfo32. These just call existing
code. There are a few options in which I'm probably the wrong person
for the job (page size and disable bar). There are comments in the
code as to what they should do.
* [objects/gdiobj.c] [objects/font.c] [include/font.h]
Added 32 bit version of FONT_GetObject.
diff --git a/misc/registry.c b/misc/registry.c
index 6064937..62bc558 100644
--- a/misc/registry.c
+++ b/misc/registry.c
@@ -83,10 +83,8 @@
#define strdupA2W(x) STRING32_DupAnsiToUni(x)
#define strdupW2A(x) STRING32_DupUniToAnsi(x)
#define strdupW(x) STRING32_strdupW(x)
-#define strcmpW(a,b) lstrcmp32W(a,b)
#define strcmpniW(a,b) STRING32_lstrcmpniW(a,b)
#define strchrW(a,c) STRING32_lstrchrW(a,c)
-#define strlenW(a) lstrlen32W(a)
#define strcpyWA(a,b) STRING32_UniToAnsi(a,b)
static struct openhandle {
@@ -466,7 +464,7 @@
lplpkey= &(lpkey->nextsub);
lpxkey = *lplpkey;
while (lpxkey) {
- if (!strcmpW(lpxkey->keyname,keyname))
+ if (!lstrcmp32W(lpxkey->keyname,keyname))
break;
lplpkey = &(lpxkey->next);
lpxkey = *lplpkey;
@@ -496,7 +494,7 @@
break;
} else {
if ( val->name!=NULL &&
- !strcmpW(val->name,name)
+ !lstrcmp32W(val->name,name)
)
break;
}
@@ -676,7 +674,7 @@
if ((1<<type) & UNICONVMASK) {
s=_wine_read_USTRING(s,(LPWSTR*)&data);
if (data)
- len = strlenW((LPWSTR)data)*2+2;
+ len = lstrlen32W((LPWSTR)data)*2+2;
else
len = 0;
} else {
@@ -931,7 +929,7 @@
data = key->values[i].data;
if ((1<<key->values[i].type) & UNICONVMASK) {
data = (BYTE*)strdupA2W(data);
- len = strlenW((LPWSTR)data)*2+2;
+ len = lstrlen32W((LPWSTR)data)*2+2;
free(key->values[i].data);
}
_find_or_add_value(
@@ -1367,7 +1365,7 @@
while (i<wpc) {
lpxkey=lpNextKey->nextsub;
while (lpxkey) {
- if (!strcmpW(wps[i],lpxkey->keyname))
+ if (!lstrcmp32W(wps[i],lpxkey->keyname))
break;
lpxkey=lpxkey->next;
}
@@ -1502,7 +1500,7 @@
while (i<wpc) {
lpxkey=lpNextKey->nextsub;
while (lpxkey) {
- if (!strcmpW(wps[i],lpxkey->keyname))
+ if (!lstrcmp32W(wps[i],lpxkey->keyname))
break;
lpxkey=lpxkey->next;
}
@@ -1710,7 +1708,9 @@
break;
} else {
for (i=0;i<lpkey->nrofvalues;i++)
- if (!strcmpW(lpszValueName,lpkey->values[i].name))
+ if ( lpkey->values[i].name &&
+ !lstrcmp32W(lpszValueName,lpkey->values[i].name)
+ )
break;
}
if (i==lpkey->nrofvalues) {
@@ -1972,7 +1972,9 @@
break;
} else {
for (i=0;i<lpkey->nrofvalues;i++)
- if (!strcmpW(lpszValueName,lpkey->values[i].name))
+ if ( lpkey->values[i].name &&
+ !lstrcmp32W(lpszValueName,lpkey->values[i].name)
+ )
break;
}
if (i==lpkey->nrofvalues) {
@@ -2070,11 +2072,11 @@
fprintf(stddeb,"RegSetValueX called with dwType=%ld!\n",dwType);
dwType=REG_SZ;
}
- if (cbData!=2*strlenW(lpszData)+2) {
+ if (cbData!=2*lstrlen32W(lpszData)+2) {
dprintf_reg(stddeb,"RegSetValueX called with len=%ld != strlen(%s)+1=%d!\n",
- cbData,W2C(lpszData,0),2*strlenW(lpszData)+2
+ cbData,W2C(lpszData,0),2*lstrlen32W(lpszData)+2
);
- cbData=2*strlenW(lpszData)+2;
+ cbData=2*lstrlen32W(lpszData)+2;
}
ret=RegSetValueEx32W(xhkey,NULL,0,dwType,(LPBYTE)lpszData,cbData);
if (hkey!=xhkey)
@@ -2167,9 +2169,9 @@
}
if (iSubkey || !lpxkey)
return ERROR_NO_MORE_ITEMS;
- if (2*strlenW(lpxkey->keyname)+2>*lpcchName)
+ if (2*lstrlen32W(lpxkey->keyname)+2>*lpcchName)
return ERROR_MORE_DATA;
- memcpy(lpszName,lpxkey->keyname,strlenW(lpxkey->keyname)*2+2);
+ memcpy(lpszName,lpxkey->keyname,lstrlen32W(lpxkey->keyname)*2+2);
if (lpszClass) {
/* what should we write into it? */
*lpszClass = 0;
@@ -2319,12 +2321,12 @@
val = lpkey->values+iValue;
if (val->name) {
- if (strlenW(val->name)*2+2>*lpcchValue) {
- *lpcchValue = strlenW(val->name)*2+2;
+ if (lstrlen32W(val->name)*2+2>*lpcchValue) {
+ *lpcchValue = lstrlen32W(val->name)*2+2;
return ERROR_MORE_DATA;
}
- memcpy(lpszValue,val->name,2*strlenW(val->name)+2);
- *lpcchValue=strlenW(val->name)*2+2;
+ memcpy(lpszValue,val->name,2*lstrlen32W(val->name)+2);
+ *lpcchValue=lstrlen32W(val->name)*2+2;
} else {
/* how to handle NULL value? */
*lpszValue = 0;
@@ -2459,7 +2461,7 @@
while (i<wpc-1) {
lpxkey=lpNextKey->nextsub;
while (lpxkey) {
- if (!strcmpW(wps[i],lpxkey->keyname))
+ if (!lstrcmp32W(wps[i],lpxkey->keyname))
break;
lpxkey=lpxkey->next;
}
@@ -2474,7 +2476,7 @@
lpxkey = lpNextKey->nextsub;
lplpPrevKey = &(lpNextKey->nextsub);
while (lpxkey) {
- if (!strcmpW(wps[i],lpxkey->keyname))
+ if (!lstrcmp32W(wps[i],lpxkey->keyname))
break;
lplpPrevKey = &(lpxkey->next);
lpxkey = lpxkey->next;
@@ -2536,7 +2538,9 @@
return SHELL_ERROR_BADKEY;
if (lpszValue) {
for (i=0;i<lpkey->nrofvalues;i++)
- if (!strcmpW(lpkey->values[i].name,lpszValue))
+ if ( lpkey->values[i].name &&
+ !lstrcmp32W(lpkey->values[i].name,lpszValue)
+ )
break;
} else {
for (i=0;i<lpkey->nrofvalues;i++)
@@ -2616,35 +2620,35 @@
return SHELL_ERROR_BADKEY;
if (lpszClass) {
if (lpkey->class) {
- if (strlenW(lpkey->class)*2+2>*lpcchClass) {
- *lpcchClass=strlenW(lpkey->class)*2;
+ if (lstrlen32W(lpkey->class)*2+2>*lpcchClass) {
+ *lpcchClass=lstrlen32W(lpkey->class)*2;
return ERROR_MORE_DATA;
}
- *lpcchClass=strlenW(lpkey->class)*2;
- memcpy(lpszClass,lpkey->class,strlenW(lpkey->class));
+ *lpcchClass=lstrlen32W(lpkey->class)*2;
+ memcpy(lpszClass,lpkey->class,lstrlen32W(lpkey->class));
} else {
*lpszClass = 0;
*lpcchClass = 0;
}
} else {
if (lpcchClass)
- *lpcchClass = strlenW(lpkey->class)*2;
+ *lpcchClass = lstrlen32W(lpkey->class)*2;
}
lpxkey=lpkey->nextsub;
nrofkeys=maxsubkey=maxclass=maxvalues=maxvname=maxvdata=0;
while (lpxkey) {
nrofkeys++;
- if (strlenW(lpxkey->keyname)>maxsubkey)
- maxsubkey=strlenW(lpxkey->keyname);
- if (lpxkey->class && strlenW(lpxkey->class)>maxclass)
- maxclass=strlenW(lpxkey->class);
+ if (lstrlen32W(lpxkey->keyname)>maxsubkey)
+ maxsubkey=lstrlen32W(lpxkey->keyname);
+ if (lpxkey->class && lstrlen32W(lpxkey->class)>maxclass)
+ maxclass=lstrlen32W(lpxkey->class);
if (lpxkey->nrofvalues>maxvalues)
maxvalues=lpxkey->nrofvalues;
for (i=0;i<lpxkey->nrofvalues;i++) {
LPKEYVALUE val=lpxkey->values+i;
- if (val->name && strlenW(val->name)>maxvname)
- maxvname=strlenW(val->name);
+ if (val->name && lstrlen32W(val->name)>maxvname)
+ maxvname=lstrlen32W(val->name);
if (val->len>maxvdata)
maxvdata=val->len;
}