Release 960818
Sun Aug 18 12:17:54 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [files/drive.c]
Added 'Filesystem' option in drives configuration.
* [files/dos_fs.c]
Added handling of case-insensitive filesystems.
* [memory/selector.c] [include/stackframe.h]
Removed MAKE_SEGPTR.
* [misc/commdlg.c] [multimedia/mcistring.c]
Replaced MAKE_SEGPTR by the SEGPTR_* macros.
* [objects/bitblt.c] [windows/graphics.c]
Use an intermediary pixmap to avoid some BadMatch errors on
XGetImage().
Sun Aug 18 09:21:27 1996 Albrecht Kleine <kleine@ak.sax.de>
* [windows/message.c]
Added handling of WM_NC...mouse messages in JOURNALRECORD hook.
* [misc/ver.c]
Fixed a bad string result in VerQueryValue[16|32A|32W].
Fri Aug 16 19:55:04 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [if1632/crtdll.spec] [misc/crtdll.c]
More additions to get win95 programs further down the road.
* [if1632/kernel.spec] [loader/module.c]
GetModuleName() added.
LoadModule(): params->showCmd can be NULL.
* [if1632/kernel32.spec] [if1632/thunk.c]
ThunkConnect32() stub added.
* [loader/resource.c]
Entries include lastentry.
* [misc/shell.c] [files/file.c]
Made progman work again.
Fri Aug 16 09:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/defwnd.c] [windows/winpos.c] [windows/painting.c]
Icon painting fixes.
* [windows/winpos.c] [windows/painting.c]
Enforce and follow hrgnUpdate more closely to cut down on
redundant RedrawWindow() calls.
* [windows/event.c]
Process ConfigureNotify only for managed windows.
* [windows/winpos.c]
Do not redraw parent if the window was hidden before SetWindowPos().
* [windows/nonclient.c]
Omit some nonclient decoration painting for managed windows.
* [controls/menu.c] [windows/mdi.c] [windows/nonclient.c]
Implemented WM_NEXTMENU.
* [controls/listbox.c]
Multicolumn listboxes return WVR_VREDRAW on WM_NCCALCSIZE.
* [misc/shell.c]
Added .ICO file handling to ExtractIcon().
diff --git a/misc/commdlg.c b/misc/commdlg.c
index bc1a62e..43ca13d 100644
--- a/misc/commdlg.c
+++ b/misc/commdlg.c
@@ -9,7 +9,7 @@
#include <stdlib.h>
#include <string.h>
#include "win.h"
-#include "user.h"
+#include "heap.h"
#include "message.h"
#include "commdlg.h"
#include "dlgs.h"
@@ -17,7 +17,6 @@
#include "resource.h"
#include "dos_fs.h"
#include "drive.h"
-#include "stackframe.h"
#include "stddebug.h"
#include "debug.h"
@@ -165,15 +164,22 @@
*/
static BOOL FILEDLG_ScanDir(HWND hWnd, LPSTR newPath)
{
- char str[512],str2[512];
+ BOOL32 ret = FALSE;
+ int len;
+ char *str = SEGPTR_ALLOC(512);
+ if (!str) return TRUE;
- strncpy(str,newPath,511); str[511]=0;
- GetDlgItemText32A( hWnd, edt1, str2, sizeof(str2) );
- strncat(str,str2,511-strlen(str)); str[511]=0;
- if (!DlgDirList(hWnd, MAKE_SEGPTR(str), lst1, 0, 0x0000)) return FALSE;
- strcpy( str, "*.*" );
- DlgDirList(hWnd, MAKE_SEGPTR(str), lst2, stc1, 0x8010);
- return TRUE;
+ lstrcpyn32A( str, newPath, 512 );
+ len = strlen(str);
+ GetDlgItemText32A( hWnd, edt1, str + len, 512 - len );
+ if (DlgDirList(hWnd, SEGPTR_GET(str), lst1, 0, 0x0000))
+ {
+ strcpy( str, "*.*" );
+ DlgDirList(hWnd, SEGPTR_GET(str), lst2, stc1, 0x8010 );
+ ret = TRUE;
+ }
+ SEGPTR_FREE(str);
+ return ret;
}
/***********************************************************************
@@ -209,19 +215,20 @@
static LONG FILEDLG_WMDrawItem(HWND hWnd, WPARAM wParam, LPARAM lParam,int savedlg)
{
LPDRAWITEMSTRUCT16 lpdis = (LPDRAWITEMSTRUCT16)PTR_SEG_TO_LIN(lParam);
- char str[512];
+ char *str;
HBRUSH hBrush;
HBITMAP hBitmap, hPrevBitmap;
BITMAP16 bm;
HDC hMemDC;
- str[0]=0;
- if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst1) {
+ if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst1)
+ {
+ if (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID,
- (LPARAM)MAKE_SEGPTR(str));
+ (LPARAM)SEGPTR_GET(str));
if (savedlg) /* use _gray_ text in FileSaveDlg */
if (!lpdis->itemState)
@@ -235,15 +242,18 @@
if (lpdis->itemState != 0) {
InvertRect16(lpdis->hDC, &lpdis->rcItem);
}
+ SEGPTR_FREE(str);
return TRUE;
}
- if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst2) {
+ if (lpdis->CtlType == ODT_LISTBOX && lpdis->CtlID == lst2)
+ {
+ if (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, LB_GETTEXT, lpdis->itemID,
- (LPARAM)MAKE_SEGPTR(str));
+ (LPARAM)SEGPTR_GET(str));
hBitmap = hFolder;
GetObject16( hBitmap, sizeof(bm), &bm );
@@ -255,17 +265,18 @@
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hPrevBitmap);
DeleteDC(hMemDC);
- if (lpdis->itemState != 0) {
- InvertRect16(lpdis->hDC, &lpdis->rcItem);
- }
+ if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem);
+ SEGPTR_FREE(str);
return TRUE;
}
- if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2) {
+ if (lpdis->CtlType == ODT_COMBOBOX && lpdis->CtlID == cmb2)
+ {
+ if (!(str = SEGPTR_ALLOC(512))) return FALSE;
hBrush = SelectObject(lpdis->hDC, GetStockObject(LTGRAY_BRUSH));
SelectObject(lpdis->hDC, hBrush);
FillRect16(lpdis->hDC, &lpdis->rcItem, hBrush);
SendMessage16(lpdis->hwndItem, CB_GETLBTEXT, lpdis->itemID,
- (LPARAM)MAKE_SEGPTR(str));
+ (LPARAM)SEGPTR_GET(str));
switch(DRIVE_GetType( str[2] - 'a' ))
{
case TYPE_FLOPPY: hBitmap = hFloppy; break;
@@ -283,9 +294,8 @@
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
SelectObject(hMemDC, hPrevBitmap);
DeleteDC(hMemDC);
- if (lpdis->itemState != 0) {
- InvertRect16(lpdis->hDC, &lpdis->rcItem);
- }
+ if (lpdis->itemState != 0) InvertRect16(lpdis->hDC, &lpdis->rcItem);
+ SEGPTR_FREE(str);
return TRUE;
}
return FALSE;
@@ -323,8 +333,7 @@
static LONG FILEDLG_WMInitDialog(HWND hWnd, WPARAM wParam, LPARAM lParam)
{
- int n;
- int i;
+ int i, n;
LPOPENFILENAME lpofn;
char tmpstr[512];
LPSTR pstr;
@@ -335,33 +344,35 @@
if (lpofn->lpstrCustomFilter)
{
pstr = (LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrCustomFilter);
+ n = 0;
dprintf_commdlg(stddeb,"lpstrCustomFilter = %p\n", pstr);
while(*pstr)
{
- n = strlen(pstr);
- strncpy(tmpstr, pstr, 511); tmpstr[511]=0;
- dprintf_commdlg(stddeb,"lpstrCustomFilter // add tmpstr='%s' ", tmpstr);
- i = SendDlgItemMessage16(hWnd, cmb1, CB_ADDSTRING, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
- pstr += n + 1;
- n = strlen(pstr);
+ dprintf_commdlg(stddeb,"lpstrCustomFilter // add str='%s' ",pstr);
+ i = SendDlgItemMessage16(hWnd, cmb1, CB_ADDSTRING, 0,
+ (LPARAM)lpofn->lpstrCustomFilter + n );
+ n += strlen(pstr) + 1;
+ pstr += strlen(pstr) + 1;
dprintf_commdlg(stddeb,"associated to '%s'\n", pstr);
SendDlgItemMessage16(hWnd, cmb1, CB_SETITEMDATA, i, (LPARAM)pstr);
- pstr += n + 1;
+ n += strlen(pstr) + 1;
+ pstr += strlen(pstr) + 1;
}
}
/* read filter information */
pstr = (LPSTR)PTR_SEG_TO_LIN(lpofn->lpstrFilter);
+ n = 0;
while(*pstr)
{
- n = strlen(pstr);
- strncpy(tmpstr, pstr, 511); tmpstr[511]=0;
- dprintf_commdlg(stddeb,"lpstrFilter // add tmpstr='%s' ", tmpstr);
- i = SendDlgItemMessage16(hWnd, cmb1, CB_ADDSTRING, 0, (LPARAM)MAKE_SEGPTR(tmpstr));
- pstr += n + 1;
- n = strlen(pstr);
+ dprintf_commdlg(stddeb,"lpstrFilter // add str='%s' ", pstr);
+ i = SendDlgItemMessage16(hWnd, cmb1, CB_ADDSTRING, 0,
+ (LPARAM)lpofn->lpstrFilter + n );
+ n += strlen(pstr) + 1;
+ pstr += strlen(pstr) + 1;
dprintf_commdlg(stddeb,"associated to '%s'\n", pstr);
SendDlgItemMessage16(hWnd, cmb1, CB_SETITEMDATA, i, (LPARAM)pstr);
- pstr += n + 1;
+ n += strlen(pstr) + 1;
+ pstr += strlen(pstr) + 1;
}
/* set default filter */
if (lpofn->nFilterIndex == 0 && lpofn->lpstrCustomFilter == (SEGPTR)NULL)
@@ -374,8 +385,10 @@
lpofn->nFilterIndex, tmpstr);
SetDlgItemText32A( hWnd, edt1, tmpstr );
/* get drive list */
- *tmpstr = 0;
- DlgDirListComboBox16(hWnd, (LPSTR)MAKE_SEGPTR(tmpstr), cmb2, 0, 0xC000);
+ pstr = SEGPTR_ALLOC(1);
+ *pstr = 0;
+ DlgDirListComboBox16(hWnd, SEGPTR_GET(pstr), cmb2, 0, 0xC000);
+ SEGPTR_FREE(pstr);
/* read initial directory */
if (PTR_SEG_TO_LIN(lpofn->lpstrInitialDir) != NULL)
{
@@ -398,7 +411,7 @@
ShowWindow(GetDlgItem(hWnd, chx1), SW_HIDE);
if (FILEDLG_HookCallChk(lpofn))
return (BOOL)CallWindowProc16(lpofn->lpfnHook,
- hWnd, WM_INITDIALOG, wParam,(LPARAM)MAKE_SEGPTR(lpofn));
+ hWnd, WM_INITDIALOG, wParam, lParam );
else
return TRUE;
}
@@ -419,7 +432,7 @@
control = wParam;
notification = HIWORD(lParam);
- lpofn = (LPOPENFILENAME)GetWindowLong32A(hWnd, DWL_USER);
+ lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
switch (control)
{
case lst1: /* file list */
@@ -428,10 +441,13 @@
goto almost_ok;
lRet = SendDlgItemMessage16(hWnd, lst1, LB_GETCURSEL, 0, 0);
if (lRet == LB_ERR) return TRUE;
- SendDlgItemMessage16(hWnd, lst1, LB_GETTEXT, lRet,
- (LPARAM)MAKE_SEGPTR(tmpstr));
- SetDlgItemText32A( hWnd, edt1, tmpstr );
-
+ if ((pstr = SEGPTR_ALLOC(512)))
+ {
+ SendDlgItemMessage16(hWnd, lst1, LB_GETTEXT, lRet,
+ (LPARAM)SEGPTR_GET(pstr));
+ SetDlgItemText32A( hWnd, edt1, pstr );
+ SEGPTR_FREE(pstr);
+ }
if (FILEDLG_HookCallChk(lpofn))
CallWindowProc16(lpofn->lpfnHook, hWnd,
RegisterWindowMessage32A( LBSELCHSTRING ),
@@ -444,8 +460,11 @@
{
lRet = SendDlgItemMessage16(hWnd, lst2, LB_GETCURSEL, 0, 0);
if (lRet == LB_ERR) return TRUE;
+ pstr = SEGPTR_ALLOC(512);
SendDlgItemMessage16(hWnd, lst2, LB_GETTEXT, lRet,
- (LPARAM)MAKE_SEGPTR(tmpstr));
+ (LPARAM)SEGPTR_GET(pstr));
+ strcpy( tmpstr, pstr );
+ SEGPTR_FREE(pstr);
if (tmpstr[0] == '[')
{
tmpstr[strlen(tmpstr) - 1] = 0;
@@ -466,8 +485,11 @@
FILEDLG_StripEditControl(hWnd);
lRet = SendDlgItemMessage16(hWnd, cmb2, CB_GETCURSEL, 0, 0L);
if (lRet == LB_ERR) return 0;
- SendDlgItemMessage16(hWnd, cmb2, CB_GETLBTEXT, lRet, (LPARAM)MAKE_SEGPTR(tmpstr));
- sprintf(tmpstr, "%c:", tmpstr[2]);
+ pstr = SEGPTR_ALLOC(512);
+ SendDlgItemMessage16(hWnd, cmb2, CB_GETLBTEXT, lRet,
+ (LPARAM)SEGPTR_GET(pstr));
+ sprintf(tmpstr, "%c:", pstr[2]);
+ SEGPTR_FREE(pstr);
reset_scan:
lRet = SendDlgItemMessage16(hWnd, cmb1, CB_GETCURSEL, 0, 0);
if (lRet == LB_ERR)
@@ -561,15 +583,12 @@
{
lRet = SendDlgItemMessage16(hWnd, lst1, LB_GETCURSEL, 0, 0);
SendDlgItemMessage16(hWnd, lst1, LB_GETTEXT, lRet,
- (LPARAM)MAKE_SEGPTR(tmpstr));
- dprintf_commdlg(stddeb,"strcpy'ing '%s'\n",tmpstr); fflush(stdout);
- strcpy(PTR_SEG_TO_LIN(lpofn->lpstrFileTitle), tmpstr);
+ lpofn->lpstrFileTitle );
}
if (FILEDLG_HookCallChk(lpofn))
{
lRet= (BOOL)CallWindowProc16(lpofn->lpfnHook,
- hWnd, RegisterWindowMessage32A( FILEOKSTRING ),
- 0, (LPARAM)MAKE_SEGPTR(lpofn));
+ hWnd, RegisterWindowMessage32A( FILEOKSTRING ), 0, lParam );
if (lRet)
{
*lpofn=ofn2; /* restore old state */
@@ -594,7 +613,7 @@
*/
LRESULT FileOpenDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
- LPOPENFILENAME lpofn = (LPOPENFILENAME)GetWindowLong32A(hWnd, DWL_USER);
+ LPOPENFILENAME lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
if (wMsg!=WM_INITDIALOG)
if (FILEDLG_HookCallChk(lpofn))
@@ -637,7 +656,7 @@
*/
LRESULT FileSaveDlgProc(HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam)
{
- LPOPENFILENAME lpofn = (LPOPENFILENAME)GetWindowLong32A(hWnd, DWL_USER);
+ LPOPENFILENAME lpofn = (LPOPENFILENAME)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
if (wMsg!=WM_INITDIALOG)
if (FILEDLG_HookCallChk(lpofn))
@@ -791,7 +810,7 @@
int uFindReplaceMessage = RegisterWindowMessage32A( FINDMSGSTRING );
int uHelpMessage = RegisterWindowMessage32A( HELPMSGSTRING );
- lpfr = (LPFINDREPLACE)GetWindowLong32A(hWnd, DWL_USER);
+ lpfr = (LPFINDREPLACE)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
switch (wParam) {
case IDOK:
GetDlgItemText16(hWnd, edt1, lpfr->lpstrFindWhat, lpfr->wFindWhatLen);
@@ -806,12 +825,14 @@
else lpfr->Flags &= ~FR_MATCHCASE;
lpfr->Flags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
lpfr->Flags |= FR_FINDNEXT;
- SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0, (LPARAM)MAKE_SEGPTR(lpfr));
+ SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0,
+ GetWindowLong32A(hWnd, DWL_USER) );
return TRUE;
case IDCANCEL:
lpfr->Flags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL);
lpfr->Flags |= FR_DIALOGTERM;
- SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0, (LPARAM)MAKE_SEGPTR(lpfr));
+ SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0,
+ GetWindowLong32A(hWnd, DWL_USER) );
DestroyWindow(hWnd);
return TRUE;
case pshHelp:
@@ -883,7 +904,7 @@
int uFindReplaceMessage = RegisterWindowMessage32A( FINDMSGSTRING );
int uHelpMessage = RegisterWindowMessage32A( HELPMSGSTRING );
- lpfr = (LPFINDREPLACE)GetWindowLong32A(hWnd, DWL_USER);
+ lpfr = (LPFINDREPLACE)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER));
switch (wParam) {
case IDOK:
GetDlgItemText16(hWnd, edt1, lpfr->lpstrFindWhat, lpfr->wFindWhatLen);
@@ -896,12 +917,14 @@
else lpfr->Flags &= ~FR_MATCHCASE;
lpfr->Flags &= ~(FR_REPLACE | FR_REPLACEALL | FR_DIALOGTERM);
lpfr->Flags |= FR_FINDNEXT;
- SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0, (LPARAM)MAKE_SEGPTR(lpfr));
+ SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0,
+ GetWindowLong32A(hWnd, DWL_USER) );
return TRUE;
case IDCANCEL:
lpfr->Flags &= ~(FR_FINDNEXT | FR_REPLACE | FR_REPLACEALL);
lpfr->Flags |= FR_DIALOGTERM;
- SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0, (LPARAM)MAKE_SEGPTR(lpfr));
+ SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0,
+ GetWindowLong32A(hWnd, DWL_USER) );
DestroyWindow(hWnd);
return TRUE;
case psh1:
@@ -915,7 +938,8 @@
else lpfr->Flags &= ~FR_MATCHCASE;
lpfr->Flags &= ~(FR_FINDNEXT | FR_REPLACEALL | FR_DIALOGTERM);
lpfr->Flags |= FR_REPLACE;
- SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0, (LPARAM)MAKE_SEGPTR(lpfr));
+ SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0,
+ GetWindowLong32A(hWnd, DWL_USER) );
return TRUE;
case psh2:
GetDlgItemText16(hWnd, edt1, lpfr->lpstrFindWhat, lpfr->wFindWhatLen);
@@ -928,7 +952,8 @@
else lpfr->Flags &= ~FR_MATCHCASE;
lpfr->Flags &= ~(FR_FINDNEXT | FR_REPLACE | FR_DIALOGTERM);
lpfr->Flags |= FR_REPLACEALL;
- SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0, (LPARAM)MAKE_SEGPTR(lpfr));
+ SendMessage16(lpfr->hwndOwner, uFindReplaceMessage, 0,
+ GetWindowLong32A(hWnd, DWL_USER) );
return TRUE;
case pshHelp:
/* FIXME : should lpfr structure be passed as an argument ??? */
@@ -2254,7 +2279,8 @@
if (!(nFontType & 0x0004)) /* this means 'TRUETYPE_FONTTYPE' */
return 1;
- i=SendMessage16(hwnd,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(lplf->lfFaceName));
+ i=SendMessage16(hwnd,CB_ADDSTRING,0,
+ (LPARAM)logfont + ((char *)lplf->lfFaceName - (char *)lplf));
if (i!=CB_ERR)
{
w=(lplf->lfCharSet << 8) | lplf->lfPitchAndFamily;
@@ -2297,7 +2323,9 @@
if (lptm->tmWeight==fontstyles[i].weight &&
lptm->tmItalic==fontstyles[i].italic) /* font successful created ? */
{
- j=SendMessage16(hwnd,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(fontstyles[i].stname));
+ char *str = SEGPTR_STRDUP(fontstyles[i].stname);
+ j=SendMessage16(hwnd,CB_ADDSTRING,0,(LPARAM)SEGPTR_GET(str) );
+ SEGPTR_FREE(str);
if (j==CB_ERR) return 1;
j=SendMessage16(hwnd, CB_SETITEMDATA, j,
MAKELONG(fontstyles[i].weight,fontstyles[i].italic));
@@ -2312,10 +2340,11 @@
*/
static int SetFontSizesToCombo3(HWND hwnd, LPLOGFONT16 lplf, LPCHOOSEFONT lpcf)
{
- int sizes[]={8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72,0};
+ static const int sizes[]={8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72,0};
int h,i,j;
- char buffer[20];
+ char *buffer;
+ if (!(buffer = SEGPTR_ALLOC(20))) return 1;
for (i=0;sizes[i] && !lplf->lfHeight;i++)
{
h=lplf->lfHeight ? lplf->lfHeight : sizes[i];
@@ -2324,16 +2353,20 @@
((lpcf->Flags & CF_LIMITSIZE) && (h >= lpcf->nSizeMin) && (h <= lpcf->nSizeMax)))
{
sprintf(buffer,"%2d",h);
- j=SendMessage16(hwnd,CB_FINDSTRING,-1,(LPARAM)MAKE_SEGPTR(buffer));
+ j=SendMessage16(hwnd,CB_FINDSTRING,-1,(LPARAM)SEGPTR_GET(buffer));
if (j==CB_ERR)
{
- j=SendMessage16(hwnd,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR(buffer));
- if (j==CB_ERR) return 1;
- j=SendMessage16(hwnd, CB_SETITEMDATA, j, h);
- if (j==CB_ERR) return 1;
+ j=SendMessage16(hwnd,CB_ADDSTRING,0,(LPARAM)SEGPTR_GET(buffer));
+ if (j!=CB_ERR) j = SendMessage16(hwnd, CB_SETITEMDATA, j, h);
+ if (j==CB_ERR)
+ {
+ SEGPTR_FREE(buffer);
+ return 1;
+ }
}
}
}
+ SEGPTR_FREE(buffer);
return 0;
}
@@ -2409,7 +2442,10 @@
for (res=1,i=0;res && i<TEXT_COLORS;i++)
{
/* FIXME: load color name from resource: res=LoadString(...,i+....,buffer,.....); */
- j=SendDlgItemMessage16(hDlg,cmb4,CB_ADDSTRING,0,(LPARAM)MAKE_SEGPTR("[color name]"));
+ char *name = SEGPTR_ALLOC(20);
+ strcpy( name, "[color name]" );
+ j=SendDlgItemMessage16(hDlg,cmb4,CB_ADDSTRING,0,(LPARAM)SEGPTR_GET(name));
+ SEGPTR_FREE(name);
SendDlgItemMessage16(hDlg,cmb4, CB_SETITEMDATA,j,textcolors[j]);
/* look for a fitting value in color combobox */
if (textcolors[j]==lpcf->rgbColors)
@@ -2509,7 +2545,7 @@
LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
HBRUSH hBrush;
- char buffer[40];
+ char *buffer;
BITMAP16 bm;
COLORREF cr;
RECT16 rect;
@@ -2534,11 +2570,12 @@
return TRUE; /* this should never happen */
rect=lpdi->rcItem;
+ buffer = SEGPTR_ALLOC(40);
switch (lpdi->CtlID)
{
case cmb1: /* dprintf_commdlg(stddeb,"WM_Drawitem cmb1\n"); */
SendMessage16(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
- (LPARAM)MAKE_SEGPTR(buffer));
+ (LPARAM)SEGPTR_GET(buffer));
GetObject16( hBitmapTT, sizeof(bm), &bm );
TextOut16(lpdi->hDC, lpdi->rcItem.left + bm.bmWidth + 10,
lpdi->rcItem.top, buffer, lstrlen16(buffer));
@@ -2559,14 +2596,14 @@
case cmb2:
case cmb3: /* dprintf_commdlg(stddeb,"WM_DRAWITEN cmb2,cmb3\n"); */
SendMessage16(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
- (LPARAM)MAKE_SEGPTR(buffer));
+ (LPARAM)SEGPTR_GET(buffer));
TextOut16(lpdi->hDC, lpdi->rcItem.left,
lpdi->rcItem.top, buffer, lstrlen16(buffer));
break;
case cmb4: /* dprintf_commdlg(stddeb,"WM_DRAWITEM cmb4 (=COLOR)\n"); */
SendMessage16(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
- (LPARAM)MAKE_SEGPTR(buffer));
+ (LPARAM)SEGPTR_GET(buffer));
TextOut16(lpdi->hDC, lpdi->rcItem.left + 25+5,
lpdi->rcItem.top, buffer, lstrlen16(buffer));
cr = SendMessage16(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
@@ -2587,6 +2624,7 @@
default: return TRUE; /* this should never happen */
}
+ SEGPTR_FREE(buffer);
if (lpdi->itemState ==ODS_SELECTED)
InvertRect16(lpdi->hDC, &rect);
}
@@ -2614,7 +2652,6 @@
*/
LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam)
{
- char buffer[200];
HFONT hFont/*,hFontOld*/;
int i,j;
long l;
@@ -2636,11 +2673,14 @@
if (i!=CB_ERR)
{
HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
- SendDlgItemMessage16(hDlg,cmb1,CB_GETLBTEXT,i,(LPARAM)MAKE_SEGPTR(buffer));
- dprintf_commdlg(stddeb,"WM_COMMAND/cmb1 =>%s\n",buffer);
- EnumFontFamilies(hdc,buffer,FontStyleEnumProc,
+ char *str = SEGPTR_ALLOC(256);
+ SendDlgItemMessage16(hDlg,cmb1,CB_GETLBTEXT,i,
+ (LPARAM)SEGPTR_GET(str));
+ dprintf_commdlg(stddeb,"WM_COMMAND/cmb1 =>%s\n",str);
+ EnumFontFamilies(hdc,str,FontStyleEnumProc,
MAKELONG(GetDlgItem(hDlg,cmb2),GetDlgItem(hDlg,cmb3)));
- SetCursor(hcursor);
+ SetCursor(hcursor);
+ SEGPTR_FREE(str);
}
if (!(lpcf->Flags & CF_PRINTERFONTS && lpcf->hDC))
ReleaseDC(hDlg,hdc);
@@ -2657,13 +2697,15 @@
case cmb2:
case cmb3:if (HIWORD(lParam)==CBN_SELCHANGE || HIWORD(lParam)== BN_CLICKED )
{
+ char *str = SEGPTR_ALLOC(256);
dprintf_commdlg(stddeb,"WM_COMMAND/cmb2,3 =%08lX\n", lParam);
i=SendDlgItemMessage16(hDlg,cmb1,CB_GETCURSEL,0,0);
if (i==CB_ERR)
- i=GetDlgItemText32A( hDlg, cmb1, buffer, sizeof(buffer) );
+ i=GetDlgItemText32A( hDlg, cmb1, str, 256 );
else
{
- SendDlgItemMessage16(hDlg,cmb1,CB_GETLBTEXT,i,(LPARAM)MAKE_SEGPTR(buffer));
+ SendDlgItemMessage16(hDlg,cmb1,CB_GETLBTEXT,i,
+ (LPARAM)SEGPTR_GET(str));
l=SendDlgItemMessage16(hDlg,cmb1,CB_GETITEMDATA,i,0);
j=HIWORD(l);
lpcf->nFontType = LOWORD(l);
@@ -2673,7 +2715,8 @@
lpxx->lfPitchAndFamily=j&0xff;
lpxx->lfCharSet=j>>8;
}
- strcpy(lpxx->lfFaceName,buffer);
+ strcpy(lpxx->lfFaceName,str);
+ SEGPTR_FREE(str);
i=SendDlgItemMessage16(hDlg,cmb2,CB_GETCURSEL,0,0);
if (i!=CB_ERR)
{
@@ -2725,7 +2768,9 @@
EndDialog(hDlg, TRUE);
else
{
- sprintf(buffer,"Select a font size among %d and %d points.",lpcf->nSizeMin,lpcf->nSizeMax);
+ char buffer[80];
+ sprintf(buffer,"Select a font size between %d and %d points.",
+ lpcf->nSizeMin,lpcf->nSizeMax);
MessageBox(hDlg,buffer,NULL,MB_OK);
}
return(TRUE);
diff --git a/misc/crtdll.c b/misc/crtdll.c
index e73d8c2..9139d00 100644
--- a/misc/crtdll.c
+++ b/misc/crtdll.c
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
#include <unistd.h>
#include <time.h>
#include <ctype.h>
@@ -176,3 +177,44 @@
CRTDLL_putchar(INT32 x) {
putchar(x);
}
+
+int
+CRTDLL__mbsicmp(unsigned char *x,unsigned char *y)
+{
+ do {
+ if (!*x)
+ return !!*y;
+ if (!*y)
+ return !!*x;
+ /* FIXME: MBCS handling... */
+ if (*x!=*y)
+ return 1;
+ x++;
+ y++;
+ } while (1);
+}
+
+unsigned char*
+CRTDLL__mbsinc(unsigned char *x)
+{
+ /* FIXME: mbcs */
+ return x++;
+}
+
+int
+CRTDLL_vsprintf(DWORD *args)
+{
+ return vsprintf((char *)args[0],(char *)args[1],args+2);
+}
+
+unsigned char*
+CRTDLL__mbscpy(unsigned char *x,unsigned char *y)
+{
+ return strcpy(x,y);
+}
+
+unsigned char*
+CRTDLL__mbscat(unsigned char *x,unsigned char *y)
+{
+ return strcat(x,y);
+}
diff --git a/misc/lstr.c b/misc/lstr.c
index 9f2d01c..318e3da 100644
--- a/misc/lstr.c
+++ b/misc/lstr.c
@@ -14,7 +14,6 @@
#include "windows.h"
#include "ldt.h"
#include "module.h"
-#include "stackframe.h"
#include "stddebug.h"
#include "debug.h"
#include "xmalloc.h"
diff --git a/misc/lzexpand.c b/misc/lzexpand.c
index 45b3655..cdf314d 100644
--- a/misc/lzexpand.c
+++ b/misc/lzexpand.c
@@ -16,8 +16,8 @@
#include <sys/stat.h>
#include "windows.h"
#include "file.h"
+#include "ldt.h"
#include "lzexpand.h"
-#include "stackframe.h"
#include "stddebug.h"
#include "debug.h"
#include "xmalloc.h"
diff --git a/misc/main.c b/misc/main.c
index c02aaea..e2bc1f5 100644
--- a/misc/main.c
+++ b/misc/main.c
@@ -55,10 +55,7 @@
"Jan Willamowius, Carl Williams, Karl Guenter Wuensch, Eric Youngdale, "
"and James Youngman. ";
-const struct _langentry {
- char *name;
- WORD langid;
-} languages[] =
+const WINE_LANGUAGE_DEF Languages[] =
{
{"En",0x0409}, /* LANG_En */
{"Es",0x040A}, /* LANG_Es */
@@ -289,19 +286,20 @@
*/
static void MAIN_ParseLanguageOption( char *arg )
{
- const struct _langentry *p = languages;
+ const WINE_LANGUAGE_DEF *p = Languages;
Options.language = LANG_En; /* First language */
for (;p->name;p++)
{
- if (!lstrcmpi32A( p->name, arg )) {
+ if (!lstrcmpi32A( p->name, arg ))
+ {
WINE_LanguageId = p->langid;
return;
}
Options.language++;
}
fprintf( stderr, "Invalid language specified '%s'. Supported languages are: ", arg );
- for (p = languages; p->name; p++) fprintf( stderr, "%s ", p->name );
+ for (p = Languages; p->name; p++) fprintf( stderr, "%s ", p->name );
fprintf( stderr, "\n" );
exit(1);
}
diff --git a/misc/ole2nls.c b/misc/ole2nls.c
index 5a59bc32..297ca18 100644
--- a/misc/ole2nls.c
+++ b/misc/ole2nls.c
@@ -73,12 +73,14 @@
int retLen;
dprintf_ole(stddeb,"GetLocaleInfoA(%8lX,%8lX,%p,%4X)\n",
lcid,LCType,buf,len);
+#if 0
/* Wine is supporting only the default locale */
if(lcid!=GetUserDefaultLCID())
{
dprintf_ole(stdnimp,"GetLocaleInfoA: Unknown locale\n");
return 0;
}
+#endif
/* As an option, we could obtain the value from win.ini.
This would not match the Wine compile-time option.
Also, not all identifiers are available from win.ini */
@@ -424,6 +426,131 @@
/* LOCVAL(LOCALE_INEGSEPBYSPACE) */
break; /* LANG(Da) */
+ case LANG_En:
+/* This definitions apply to Germany only. Users in Austria
+ or Switzerland might want to modify them */
+LOCVAL(LOCALE_ILANGUAGE,"9")
+LOCVAL(LOCALE_SLANGUAGE,"English")
+LOCVAL(LOCALE_SENGLANGUAGE,"English")
+LOCVAL(LOCALE_SABBREVLANGNAME,"enu")
+LOCVAL(LOCALE_SNATIVELANGNAME,"English")
+LOCVAL(LOCALE_ICOUNTRY,"11")
+LOCVAL(LOCALE_SCOUNTRY,"Deutschland")
+LOCVAL(LOCALE_SENGCOUNTRY,"Deutschland")
+LOCVAL(LOCALE_SABBREVCTRYNAME,"De")
+LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland")
+LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9")
+LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49")
+/* Dunno
+LOCVAL(LOCALE_IDEFAULTCODEPAGE)
+LOCVAL(LOCALE_IDEFAULTANSICODEPAGE)
+*/
+LOCVAL(LOCALE_SLIST,";")
+LOCVAL(LOCALE_IMEASURE,"0")
+LOCVAL(LOCALE_SDECIMAL,",")
+LOCVAL(LOCALE_STHOUSAND,".")
+/*
+LOCVAL(LOCALE_SGROUPING)
+*/
+LOCVAL(LOCALE_IDIGITS,"2")
+LOCVAL(LOCALE_ILZERO,"1")
+/*
+LOCVAL(LOCALE_INEGNUMBER)
+Is this "0123456789" ??
+LOCVAL(LOCALE_SNATIVEDIGITS)
+*/
+LOCVAL(LOCALE_SCURRENCY,"DM")
+/*
+LOCVAL(LOCALE_SINTLSYMBOL)
+LOCVAL(LOCALE_SMONDECIMALSEP)
+LOCVAL(LOCALE_SMONTHOUSANDSEP)
+LOCVAL(LOCALE_SMONGROUPING)
+*/
+LOCVAL(LOCALE_ICURRDIGITS,"2")
+/*
+LOCVAL(LOCALE_IINTLCURRDIGITS)
+*/
+LOCVAL(LOCALE_ICURRENCY,"3")
+LOCVAL(LOCALE_INEGCURR,"8")
+LOCVAL(LOCALE_SDATE,".")
+LOCVAL(LOCALE_STIME,":")
+LOCVAL(LOCALE_SSHORTDATE,"dd.MM.yyyy")
+LOCVAL(LOCALE_SLONGDATE,"ddd, d. MMMM yyyy")
+/*
+LOCVAL(LOCALE_STIMEFORMAT)
+*/
+LOCVAL(LOCALE_IDATE,"1")
+/*
+LOCVAL(LOCALE_ILDATE)
+*/
+LOCVAL(LOCALE_ITIME,"1")
+/*
+LOCVAL(LOCALE_ITIMEMARKPOSN)
+LOCVAL(LOCALE_ICENTURY)
+*/
+LOCVAL(LOCALE_ITLZERO,"1")
+/*
+LOCVAL(LOCALE_IDAYLZERO)
+LOCVAL(LOCALE_IMONLZERO)
+LOCVAL(LOCALE_S1159)
+LOCVAL(LOCALE_S2359)
+LOCVAL(LOCALE_ICALENDARTYPE)
+LOCVAL(LOCALE_IOPTIONALCALENDAR)
+LOCVAL(LOCALE_IFIRSTDAYOFWEEK)
+LOCVAL(LOCALE_IFIRSTWEEKOFYEAR)
+*/
+LOCVAL(LOCALE_SDAYNAME1,"Montag")
+LOCVAL(LOCALE_SDAYNAME2,"Dienstag")
+LOCVAL(LOCALE_SDAYNAME3,"Mittwoch")
+LOCVAL(LOCALE_SDAYNAME4,"Donnerstag")
+LOCVAL(LOCALE_SDAYNAME5,"Freitag")
+LOCVAL(LOCALE_SDAYNAME6,"Sonnabend")
+LOCVAL(LOCALE_SDAYNAME7,"Sonntag")
+LOCVAL(LOCALE_SABBREVDAYNAME1,"Mo")
+LOCVAL(LOCALE_SABBREVDAYNAME2,"Di")
+LOCVAL(LOCALE_SABBREVDAYNAME3,"Mi")
+LOCVAL(LOCALE_SABBREVDAYNAME4,"Do")
+LOCVAL(LOCALE_SABBREVDAYNAME5,"Fr")
+LOCVAL(LOCALE_SABBREVDAYNAME6,"Sa")
+LOCVAL(LOCALE_SABBREVDAYNAME7,"So")
+LOCVAL(LOCALE_SMONTHNAME1,"Januar")
+LOCVAL(LOCALE_SMONTHNAME2,"Februar")
+LOCVAL(LOCALE_SMONTHNAME3,"März")
+LOCVAL(LOCALE_SMONTHNAME4,"April")
+LOCVAL(LOCALE_SMONTHNAME5,"Mai")
+LOCVAL(LOCALE_SMONTHNAME6,"Juni")
+LOCVAL(LOCALE_SMONTHNAME7,"Juli")
+LOCVAL(LOCALE_SMONTHNAME8,"August")
+LOCVAL(LOCALE_SMONTHNAME9,"September")
+LOCVAL(LOCALE_SMONTHNAME10,"Oktober")
+LOCVAL(LOCALE_SMONTHNAME11,"November")
+LOCVAL(LOCALE_SMONTHNAME12,"Dezember")
+LOCVAL(LOCALE_SMONTHNAME13,"")
+LOCVAL(LOCALE_SABBREVMONTHNAME1,"Jan")
+LOCVAL(LOCALE_SABBREVMONTHNAME2,"Feb")
+LOCVAL(LOCALE_SABBREVMONTHNAME3,"Mär")
+LOCVAL(LOCALE_SABBREVMONTHNAME4,"Apr")
+LOCVAL(LOCALE_SABBREVMONTHNAME5,"Mai")
+LOCVAL(LOCALE_SABBREVMONTHNAME6,"Jun")
+LOCVAL(LOCALE_SABBREVMONTHNAME7,"Jul")
+LOCVAL(LOCALE_SABBREVMONTHNAME8,"Aug")
+LOCVAL(LOCALE_SABBREVMONTHNAME9,"Sep")
+LOCVAL(LOCALE_SABBREVMONTHNAME10,"Okt")
+LOCVAL(LOCALE_SABBREVMONTHNAME11,"Nov")
+LOCVAL(LOCALE_SABBREVMONTHNAME12,"Dez")
+LOCVAL(LOCALE_SABBREVMONTHNAME13,"")
+/*
+LOCVAL(LOCALE_SPOSITIVESIGN)
+LOCVAL(LOCALE_SNEGATIVESIGN)
+LOCVAL(LOCALE_IPOSSIGNPOSN)
+LOCVAL(LOCALE_INEGSIGNPOSN)
+LOCVAL(LOCALE_IPOSSYMPRECEDES)
+LOCVAL(LOCALE_IPOSSEPBYSPACE)
+LOCVAL(LOCALE_INEGSYMPRECEDES)
+LOCVAL(LOCALE_INEGSEPBYSPACE)
+*/
+ break; /* LANG(En) */
+
case LANG_Eo:
/* LOCVAL(LOCALE_ILANGUAGE,"9") ISO numerical ID for language TODO */
LOCVAL(LOCALE_SLANGUAGE,"Esperanto")
@@ -437,8 +564,8 @@
/* LOCVAL(LOCALE_SNATIVECTRYNAME,"Deutschland") */
/* LOCVAL(LOCALE_IDEFAULTLANGUAGE,"9") ISO ID of lang TODO */
/* LOCVAL(LOCALE_IDEFAULTCOUNTRY,"49") */
-LOCVAL(LOCALE_IDEFAULTCODEPAGE,3) /* is this right? TODO */
-LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,3) /* is this right? TODO */
+LOCVAL(LOCALE_IDEFAULTCODEPAGE,"3") /* is this right? TODO */
+LOCVAL(LOCALE_IDEFAULTANSICODEPAGE,"3") /* is this right? TODO */
LOCVAL(LOCALE_SLIST,";")
LOCVAL(LOCALE_IMEASURE,"0")
LOCVAL(LOCALE_SDECIMAL,",")
@@ -772,6 +899,209 @@
*/
break; /* LANG(It) */
+ case 0x0409:
+LOCVAL(LOCALE_ILANGUAGE, "0409")
+LOCVAL(LOCALE_SLANGUAGE, "English (United States)")
+LOCVAL(LOCALE_SENGLANGUAGE, "English")
+LOCVAL(LOCALE_SABBREVLANGNAME, "ENU")
+LOCVAL(LOCALE_SNATIVELANGNAME, "English")
+LOCVAL(LOCALE_ICOUNTRY, "1")
+LOCVAL(LOCALE_SCOUNTRY, "United States")
+LOCVAL(LOCALE_SENGCOUNTRY, "United States")
+LOCVAL(LOCALE_SABBREVCTRYNAME, "USA")
+LOCVAL(LOCALE_SNATIVECTRYNAME, "United States")
+LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0409")
+LOCVAL(LOCALE_IDEFAULTCOUNTRY, "1")
+LOCVAL(LOCALE_IDEFAULTCODEPAGE, "437")
+LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252")
+LOCVAL(LOCALE_SLIST, ",")
+LOCVAL(LOCALE_IMEASURE, "1")
+LOCVAL(LOCALE_SDECIMAL, ".")
+LOCVAL(LOCALE_STHOUSAND, ",")
+LOCVAL(LOCALE_SGROUPING, "3;0")
+LOCVAL(LOCALE_IDIGITS, "2")
+LOCVAL(LOCALE_ILZERO, "1")
+LOCVAL(LOCALE_INEGNUMBER, "1")
+LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
+LOCVAL(LOCALE_SCURRENCY, "$")
+LOCVAL(LOCALE_SINTLSYMBOL, "USD")
+LOCVAL(LOCALE_SMONDECIMALSEP, ".")
+LOCVAL(LOCALE_SMONTHOUSANDSEP, ",")
+LOCVAL(LOCALE_SMONGROUPING, "3;0")
+LOCVAL(LOCALE_ICURRDIGITS, "2")
+LOCVAL(LOCALE_IINTLCURRDIGITS, "2")
+LOCVAL(LOCALE_ICURRENCY, "0")
+LOCVAL(LOCALE_INEGCURR, "0")
+LOCVAL(LOCALE_SDATE, "/")
+LOCVAL(LOCALE_STIME, ":")
+LOCVAL(LOCALE_SSHORTDATE, "M/d/yy")
+LOCVAL(LOCALE_SLONGDATE, "dddd, MMMM dd, yyyy")
+LOCVAL(LOCALE_STIMEFORMAT, "h:mm:ss tt")
+LOCVAL(LOCALE_IDATE, "0")
+LOCVAL(LOCALE_ILDATE, "0")
+LOCVAL(LOCALE_ITIME, "0")
+LOCVAL(LOCALE_ITIMEMARKPOSN, "0")
+LOCVAL(LOCALE_ICENTURY, "0")
+LOCVAL(LOCALE_ITLZERO, "0")
+LOCVAL(LOCALE_IDAYLZERO, "0")
+LOCVAL(LOCALE_IMONLZERO, "0")
+LOCVAL(LOCALE_S1159, "AM")
+LOCVAL(LOCALE_S2359, "PM")
+LOCVAL(LOCALE_ICALENDARTYPE, "1")
+LOCVAL(LOCALE_IOPTIONALCALENDAR, "0")
+LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "6")
+LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0")
+LOCVAL(LOCALE_SDAYNAME1, "Monday")
+LOCVAL(LOCALE_SDAYNAME2, "Tuesday")
+LOCVAL(LOCALE_SDAYNAME3, "Wednesday")
+LOCVAL(LOCALE_SDAYNAME4, "Thursday")
+LOCVAL(LOCALE_SDAYNAME5, "Friday")
+LOCVAL(LOCALE_SDAYNAME6, "Saturday")
+LOCVAL(LOCALE_SDAYNAME7, "Sunday")
+LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon")
+LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue")
+LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed")
+LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu")
+LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri")
+LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat")
+LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun")
+LOCVAL(LOCALE_SMONTHNAME1, "January")
+LOCVAL(LOCALE_SMONTHNAME2, "February")
+LOCVAL(LOCALE_SMONTHNAME3, "March")
+LOCVAL(LOCALE_SMONTHNAME4, "April")
+LOCVAL(LOCALE_SMONTHNAME5, "May")
+LOCVAL(LOCALE_SMONTHNAME6, "June")
+LOCVAL(LOCALE_SMONTHNAME7, "July")
+LOCVAL(LOCALE_SMONTHNAME8, "August")
+LOCVAL(LOCALE_SMONTHNAME9, "September")
+LOCVAL(LOCALE_SMONTHNAME10, "October")
+LOCVAL(LOCALE_SMONTHNAME11, "November")
+LOCVAL(LOCALE_SMONTHNAME12, "December")
+LOCVAL(LOCALE_SMONTHNAME13, "")
+LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan")
+LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb")
+LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar")
+LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr")
+LOCVAL(LOCALE_SABBREVMONTHNAME5, "May")
+LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun")
+LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul")
+LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug")
+LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep")
+LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct")
+LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov")
+LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec")
+LOCVAL(LOCALE_SABBREVMONTHNAME13, "")
+LOCVAL(LOCALE_SPOSITIVESIGN, "")
+LOCVAL(LOCALE_SNEGATIVESIGN, "-")
+LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
+LOCVAL(LOCALE_INEGSIGNPOSN, "0")
+LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
+LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
+LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
+LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
+ break; /* LANG(0x0409) (U.S. English) */
+
+ case 0x0809:
+LOCVAL(LOCALE_ILANGUAGE, "0809")
+LOCVAL(LOCALE_SLANGUAGE, "English (United Kingdom)")
+LOCVAL(LOCALE_SENGLANGUAGE, "English")
+LOCVAL(LOCALE_SABBREVLANGNAME, "ENG")
+LOCVAL(LOCALE_SNATIVELANGNAME, "English")
+LOCVAL(LOCALE_ICOUNTRY, "44")
+LOCVAL(LOCALE_SCOUNTRY, "United Kingdom")
+LOCVAL(LOCALE_SENGCOUNTRY, "United Kingdom")
+LOCVAL(LOCALE_SABBREVCTRYNAME, "GBR")
+LOCVAL(LOCALE_SNATIVECTRYNAME, "United Kingdom")
+LOCVAL(LOCALE_IDEFAULTLANGUAGE, "0809")
+LOCVAL(LOCALE_IDEFAULTCOUNTRY, "44")
+LOCVAL(LOCALE_IDEFAULTCODEPAGE, "850")
+LOCVAL(LOCALE_IDEFAULTANSICODEPAGE, "1252")
+LOCVAL(LOCALE_SLIST, ",")
+LOCVAL(LOCALE_IMEASURE, "0")
+LOCVAL(LOCALE_SDECIMAL, ".")
+LOCVAL(LOCALE_STHOUSAND, ",")
+LOCVAL(LOCALE_SGROUPING, "3;0")
+LOCVAL(LOCALE_IDIGITS, "2")
+LOCVAL(LOCALE_ILZERO, "1")
+LOCVAL(LOCALE_INEGNUMBER, "1")
+LOCVAL(LOCALE_SNATIVEDIGITS, "0123456789")
+LOCVAL(LOCALE_SCURRENCY, "£")
+LOCVAL(LOCALE_SINTLSYMBOL, "GBP")
+LOCVAL(LOCALE_SMONDECIMALSEP, ".")
+LOCVAL(LOCALE_SMONTHOUSANDSEP, ",")
+LOCVAL(LOCALE_SMONGROUPING, "3;0")
+LOCVAL(LOCALE_ICURRDIGITS, "2")
+LOCVAL(LOCALE_IINTLCURRDIGITS, "2")
+LOCVAL(LOCALE_ICURRENCY, "0")
+LOCVAL(LOCALE_INEGCURR, "1")
+LOCVAL(LOCALE_SDATE, "/")
+LOCVAL(LOCALE_STIME, ":")
+LOCVAL(LOCALE_SSHORTDATE, "dd/MM/yy")
+LOCVAL(LOCALE_SLONGDATE, "dd MMMM yyyy")
+LOCVAL(LOCALE_STIMEFORMAT, "HH:mm:ss")
+LOCVAL(LOCALE_IDATE, "1")
+LOCVAL(LOCALE_ILDATE, "1")
+LOCVAL(LOCALE_ITIME, "1")
+LOCVAL(LOCALE_ITIMEMARKPOSN, "0")
+LOCVAL(LOCALE_ICENTURY, "0")
+LOCVAL(LOCALE_ITLZERO, "1")
+LOCVAL(LOCALE_IDAYLZERO, "1")
+LOCVAL(LOCALE_IMONLZERO, "1")
+LOCVAL(LOCALE_S1159, "")
+LOCVAL(LOCALE_S2359, "")
+LOCVAL(LOCALE_ICALENDARTYPE, "1")
+LOCVAL(LOCALE_IOPTIONALCALENDAR, "0")
+LOCVAL(LOCALE_IFIRSTDAYOFWEEK, "0")
+LOCVAL(LOCALE_IFIRSTWEEKOFYEAR, "0")
+LOCVAL(LOCALE_SDAYNAME1, "Monday")
+LOCVAL(LOCALE_SDAYNAME2, "Tuesday")
+LOCVAL(LOCALE_SDAYNAME3, "Wednesday")
+LOCVAL(LOCALE_SDAYNAME4, "Thursday")
+LOCVAL(LOCALE_SDAYNAME5, "Friday")
+LOCVAL(LOCALE_SDAYNAME6, "Saturday")
+LOCVAL(LOCALE_SDAYNAME7, "Sunday")
+LOCVAL(LOCALE_SABBREVDAYNAME1, "Mon")
+LOCVAL(LOCALE_SABBREVDAYNAME2, "Tue")
+LOCVAL(LOCALE_SABBREVDAYNAME3, "Wed")
+LOCVAL(LOCALE_SABBREVDAYNAME4, "Thu")
+LOCVAL(LOCALE_SABBREVDAYNAME5, "Fri")
+LOCVAL(LOCALE_SABBREVDAYNAME6, "Sat")
+LOCVAL(LOCALE_SABBREVDAYNAME7, "Sun")
+LOCVAL(LOCALE_SMONTHNAME1, "January")
+LOCVAL(LOCALE_SMONTHNAME2, "February")
+LOCVAL(LOCALE_SMONTHNAME3, "March")
+LOCVAL(LOCALE_SMONTHNAME4, "April")
+LOCVAL(LOCALE_SMONTHNAME5, "May")
+LOCVAL(LOCALE_SMONTHNAME6, "June")
+LOCVAL(LOCALE_SMONTHNAME7, "July")
+LOCVAL(LOCALE_SMONTHNAME8, "August")
+LOCVAL(LOCALE_SMONTHNAME9, "September")
+LOCVAL(LOCALE_SMONTHNAME10, "October")
+LOCVAL(LOCALE_SMONTHNAME11, "November")
+LOCVAL(LOCALE_SMONTHNAME12, "December")
+LOCVAL(LOCALE_SMONTHNAME13, "")
+LOCVAL(LOCALE_SABBREVMONTHNAME1, "Jan")
+LOCVAL(LOCALE_SABBREVMONTHNAME2, "Feb")
+LOCVAL(LOCALE_SABBREVMONTHNAME3, "Mar")
+LOCVAL(LOCALE_SABBREVMONTHNAME4, "Apr")
+LOCVAL(LOCALE_SABBREVMONTHNAME5, "May")
+LOCVAL(LOCALE_SABBREVMONTHNAME6, "Jun")
+LOCVAL(LOCALE_SABBREVMONTHNAME7, "Jul")
+LOCVAL(LOCALE_SABBREVMONTHNAME8, "Aug")
+LOCVAL(LOCALE_SABBREVMONTHNAME9, "Sep")
+LOCVAL(LOCALE_SABBREVMONTHNAME10, "Oct")
+LOCVAL(LOCALE_SABBREVMONTHNAME11, "Nov")
+LOCVAL(LOCALE_SABBREVMONTHNAME12, "Dec")
+LOCVAL(LOCALE_SABBREVMONTHNAME13, "")
+LOCVAL(LOCALE_SPOSITIVESIGN, "")
+LOCVAL(LOCALE_SNEGATIVESIGN, "-")
+LOCVAL(LOCALE_IPOSSIGNPOSN, "3")
+LOCVAL(LOCALE_INEGSIGNPOSN, "3")
+LOCVAL(LOCALE_IPOSSYMPRECEDES, "1")
+LOCVAL(LOCALE_IPOSSEPBYSPACE, "0")
+LOCVAL(LOCALE_INEGSYMPRECEDES, "1")
+LOCVAL(LOCALE_INEGSEPBYSPACE, "0")
+ break; /* LANG(0x0809) (U.K. English) */
/*Insert other languages here*/
@@ -792,6 +1122,20 @@
return retLen;
}
+/***********************************************************************
+ * GetLocaleInfo32W (KERNEL32.230)
+ * Is the last parameter really WORD for Win16?
+ */
+INT32 GetLocaleInfo32W(LCID lcid,LCTYPE LCType,LPWSTR wbuf,INT32 len)
+{
+ int i;
+ LPSTR abuf = (LPSTR) wbuf;
+ INT32 n = GetLocaleInfoA(lcid, LCType, abuf, len);
+ for (i = n; i > 0; --i) {
+ wbuf[i] = abuf[i];
+ }
+ return n;
+}
/***********************************************************************
* CompareString16 (OLE2NLS.8)
diff --git a/misc/shell.c b/misc/shell.c
index 0f146e1..dd7aa3b 100644
--- a/misc/shell.c
+++ b/misc/shell.c
@@ -14,11 +14,38 @@
#include "resource.h"
#include "dlgs.h"
#include "win.h"
+#include "cursoricon.h"
#include "stddebug.h"
#include "debug.h"
#include "xmalloc.h"
#include "winreg.h"
+/* .ICO file ICONDIR definitions */
+
+#pragma pack(1)
+
+typedef struct
+{
+ BYTE bWidth; /* Width, in pixels, of the image */
+ BYTE bHeight; /* Height, in pixels, of the image */
+ BYTE bColorCount; /* Number of colors in image (0 if >=8bpp) */
+ BYTE bReserved; /* Reserved ( must be 0) */
+ WORD wPlanes; /* Color Planes */
+ WORD wBitCount; /* Bits per pixel */
+ DWORD dwBytesInRes; /* How many bytes in this resource? */
+ DWORD dwImageOffset; /* Where in the file is this image? */
+} icoICONDIRENTRY, *LPicoICONDIRENTRY;
+
+typedef struct
+{
+ WORD idReserved; /* Reserved (must be 0) */
+ WORD idType; /* Resource Type (1 for icons) */
+ WORD idCount; /* How many images? */
+ icoICONDIRENTRY idEntries[1]; /* An entry for each image (idCount of 'em) */
+} icoICONDIR, *LPicoICONDIR;
+
+#pragma pack(4)
+
extern HANDLE CURSORICON_LoadHandler( HANDLE, HINSTANCE, BOOL);
extern WORD GetIconID( HANDLE hResource, DWORD resType );
@@ -124,7 +151,7 @@
HINSTANCE retval=31; /* default - 'No association was found' */
char *tok; /* token pointer */
int i; /* random counter */
- char xlpFile[256]; /* result of SearchPath */
+ char xlpFile[256]; /* result of SearchPath */
dprintf_exec(stddeb, "SHELL_FindExecutable: File %s, Dir %s\n",
(lpFile != NULL?lpFile:"-"),
@@ -140,6 +167,10 @@
}
if (SearchPath32A(lpDirectory,lpFile,NULL,sizeof(xlpFile),xlpFile,NULL))
lpFile = xlpFile;
+ else {
+ if (SearchPath32A(lpDirectory,lpFile,".exe",sizeof(xlpFile),xlpFile,NULL))
+ lpFile = xlpFile;
+ }
/* First thing we need is the file's extension */
extension = strrchr( xlpFile, '.' ); /* Assume last "." is the one; */
@@ -376,7 +407,7 @@
*
* FIXME: Implement GetPEResourceTable in w32sys.c and call it here.
*/
-BYTE* SHELL_GetResourceTable(HFILE hFile)
+static BYTE* SHELL_GetResourceTable(HFILE hFile)
{
struct mz_header_s mz_header;
struct ne_header_s ne_header;
@@ -391,7 +422,7 @@
return NULL;
if (ne_header.ne_magic == PE_SIGNATURE)
- { fprintf(stdnimp,"Win32 FIXME: file %s line %i\n", __FILE__, __LINE__ );
+ { fprintf(stdnimp,"Win32s FIXME: file %s line %i\n", __FILE__, __LINE__ );
return NULL; }
if (ne_header.ne_magic != NE_SIGNATURE) return NULL;
@@ -417,7 +448,7 @@
/*************************************************************************
* SHELL_LoadResource
*/
-HANDLE SHELL_LoadResource(HINSTANCE hInst, HFILE hFile, NE_NAMEINFO* pNInfo, WORD sizeShift)
+static HANDLE SHELL_LoadResource(HINSTANCE hInst, HFILE hFile, NE_NAMEINFO* pNInfo, WORD sizeShift)
{
BYTE* ptr;
HANDLE handle = DirectResAlloc( hInst, 0x10, (DWORD)pNInfo->length << sizeShift);
@@ -432,6 +463,74 @@
}
/*************************************************************************
+ * ICO_LoadIcon
+ */
+static HANDLE ICO_LoadIcon(HINSTANCE hInst, HFILE hFile, LPicoICONDIRENTRY lpiIDE)
+{
+ BYTE* ptr;
+ HANDLE handle = DirectResAlloc( hInst, 0x10, lpiIDE->dwBytesInRes);
+
+ if( (ptr = (BYTE*)GlobalLock16( handle )) )
+ {
+ _llseek( hFile, lpiIDE->dwImageOffset, SEEK_SET);
+ FILE_Read( hFile, (char*)ptr, lpiIDE->dwBytesInRes);
+ return handle;
+ }
+ return (HANDLE)0;
+}
+
+/*************************************************************************
+ * ICO_GetIconDirectory
+ *
+ * Read .ico file and build phony ICONDIR struct for GetIconID
+ */
+static HANDLE ICO_GetIconDirectory(HINSTANCE hInst, HFILE hFile, LPicoICONDIR* lplpiID )
+{
+ WORD id[3]; /* idReserved, idType, idCount */
+ LPicoICONDIR lpiID;
+ int i;
+
+ _llseek( hFile, 0, SEEK_SET );
+ if( FILE_Read(hFile,(char*)id,sizeof(id)) != sizeof(id) ) return 0;
+
+ /* check .ICO header
+ *
+ * - see http://www.microsoft.com/win32dev/ui/icons.htm
+ */
+
+ if( id[0] || id[1] != 1 || !id[2] ) return 0;
+
+ i = id[2]*sizeof(icoICONDIRENTRY) + sizeof(id);
+
+ lpiID = (LPicoICONDIR)xmalloc(i);
+
+ if( FILE_Read(hFile,(char*)lpiID->idEntries,i) == i )
+ {
+ HANDLE handle = DirectResAlloc( hInst, 0x10,
+ id[2]*sizeof(ICONDIRENTRY) + sizeof(id) );
+ if( handle )
+ {
+ CURSORICONDIR* lpID = (CURSORICONDIR*)GlobalLock16( handle );
+ lpID->idReserved = lpiID->idReserved = id[0];
+ lpID->idType = lpiID->idType = id[1];
+ lpID->idCount = lpiID->idCount = id[2];
+ for( i=0; i < lpiID->idCount; i++ )
+ {
+ memcpy((void*)(lpID->idEntries + i),
+ (void*)(lpiID->idEntries + i), sizeof(ICONDIRENTRY) - 2);
+ lpID->idEntries[i].icon.wResId = i;
+ }
+ *lplpiID = lpiID;
+ return handle;
+ }
+ }
+ /* fail */
+
+ free(lpiID);
+ return 0;
+}
+
+/*************************************************************************
* InternalExtractIcon [SHELL.39]
*
* This abortion is called directly by Progman
@@ -449,79 +548,87 @@
if( hFile == HFILE_ERROR || !n ) return 0;
- hRet = GlobalAlloc16( GMEM_FIXED, sizeof(HICON16)*n);
+ hRet = GlobalAlloc16( GMEM_FIXED | GMEM_ZEROINIT, sizeof(HICON16)*n);
RetPtr = (HICON16*)GlobalLock16(hRet);
*RetPtr = (n == 0xFFFF)? 0: 1; /* error return values */
pData = SHELL_GetResourceTable(hFile);
if( pData )
+ {
+ HICON16 hIcon = 0;
+ BOOL icoFile = FALSE;
+ UINT iconDirCount = 0;
+ UINT iconCount = 0;
+ NE_TYPEINFO* pTInfo = (NE_TYPEINFO*)(pData + 2);
+ NE_NAMEINFO* pIconStorage = NULL;
+ NE_NAMEINFO* pIconDir = NULL;
+ LPicoICONDIR lpiID = NULL;
+
if( pData == (BYTE*)-1 )
{
- /* FIXME: possible .ICO file */
+ /* check for .ICO file */
- fprintf(stddeb,"InternalExtractIcon: cannot handle file %s\n", lpszExeFileName);
+ hIcon = ICO_GetIconDirectory(hInstance, hFile, &lpiID);
+ if( hIcon )
+ { icoFile = TRUE; iconDirCount = 1; iconCount = lpiID->idCount; }
}
- else /* got resource table */
+ else while( pTInfo->type_id && !(pIconStorage && pIconDir) )
{
- UINT iconDirCount = 0;
- UINT iconCount = 0;
- NE_TYPEINFO* pTInfo = (NE_TYPEINFO*)(pData + 2);
- NE_NAMEINFO* pIconStorage = NULL;
- NE_NAMEINFO* pIconDir = NULL;
-
/* find icon directory and icon repository */
- while( pTInfo->type_id && !(pIconStorage && pIconDir) )
+ if( pTInfo->type_id == NE_RSCTYPE_GROUP_ICON )
{
- if( pTInfo->type_id == NE_RSCTYPE_GROUP_ICON )
- {
- iconDirCount = pTInfo->count;
- pIconDir = ((NE_NAMEINFO*)(pTInfo + 1));
- dprintf_reg(stddeb,"\tfound directory - %i icon families\n", iconDirCount);
- }
- if( pTInfo->type_id == NE_RSCTYPE_ICON )
- {
- iconCount = pTInfo->count;
- pIconStorage = ((NE_NAMEINFO*)(pTInfo + 1));
- dprintf_reg(stddeb,"\ttotal icons - %i\n", iconCount);
- }
- pTInfo = (NE_TYPEINFO *)((char*)(pTInfo+1)+pTInfo->count*sizeof(NE_NAMEINFO));
- }
-
- /* load resources and create icons */
-
- if( pIconStorage && pIconDir )
-
- if( nIconIndex == (UINT)-1 ) RetPtr[0] = iconDirCount;
- else if( nIconIndex < iconDirCount )
- {
- HICON16 hIcon;
- UINT i, icon;
-
- if( n > iconDirCount - nIconIndex ) n = iconDirCount - nIconIndex;
-
- for( i = nIconIndex; i < nIconIndex + n; i++ )
- {
- hIcon = SHELL_LoadResource( hInstance, hFile, pIconDir + i,
- *(WORD*)pData );
- RetPtr[i-nIconIndex] = GetIconID( hIcon, 3 );
- GlobalFree16(hIcon);
- }
-
- for( icon = nIconIndex; icon < nIconIndex + n; icon++ )
- {
- hIcon = 0;
- for( i = 0; i < iconCount; i++ )
- if( pIconStorage[i].id == (RetPtr[icon-nIconIndex] | 0x8000) )
- hIcon = SHELL_LoadResource( hInstance, hFile, pIconStorage + i,
- *(WORD*)pData );
- RetPtr[icon-nIconIndex] = (hIcon)?CURSORICON_LoadHandler( hIcon, hInstance, FALSE ):0;
- }
- }
- free(pData);
+ iconDirCount = pTInfo->count;
+ pIconDir = ((NE_NAMEINFO*)(pTInfo + 1));
+ dprintf_reg(stddeb,"\tfound directory - %i icon families\n", iconDirCount);
+ }
+ if( pTInfo->type_id == NE_RSCTYPE_ICON )
+ {
+ iconCount = pTInfo->count;
+ pIconStorage = ((NE_NAMEINFO*)(pTInfo + 1));
+ dprintf_reg(stddeb,"\ttotal icons - %i\n", iconCount);
+ }
+ pTInfo = (NE_TYPEINFO *)((char*)(pTInfo+1)+pTInfo->count*sizeof(NE_NAMEINFO));
}
+ /* load resources and create icons */
+
+ if( (pIconStorage && pIconDir) || icoFile )
+ if( nIconIndex == (UINT)-1 ) RetPtr[0] = iconDirCount;
+ else if( nIconIndex < iconDirCount )
+ {
+ UINT i, icon;
+
+ if( n > iconDirCount - nIconIndex ) n = iconDirCount - nIconIndex;
+
+ for( i = nIconIndex; i < nIconIndex + n; i++ )
+ {
+ /* .ICO files have only one icon directory */
+
+ if( !icoFile )
+ hIcon = SHELL_LoadResource( hInstance, hFile, pIconDir + i,
+ *(WORD*)pData );
+ RetPtr[i-nIconIndex] = GetIconID( hIcon, 3 );
+ GlobalFree16(hIcon);
+ }
+
+ for( icon = nIconIndex; icon < nIconIndex + n; icon++ )
+ {
+ hIcon = 0;
+ if( icoFile )
+ hIcon = ICO_LoadIcon( hInstance, hFile, lpiID->idEntries + RetPtr[icon-nIconIndex]);
+ else
+ for( i = 0; i < iconCount; i++ )
+ if( pIconStorage[i].id == (RetPtr[icon-nIconIndex] | 0x8000) )
+ hIcon = SHELL_LoadResource( hInstance, hFile, pIconStorage + i,
+ *(WORD*)pData );
+ RetPtr[icon-nIconIndex] = (hIcon)?CURSORICON_LoadHandler( hIcon, hInstance, FALSE ):0;
+ }
+ }
+ if( icoFile ) free(lpiID);
+ else free(pData);
+ }
_lclose( hFile );
/* return array with icon handles */
diff --git a/misc/spy.c b/misc/spy.c
index 1681c9e..1a58dd4 100644
--- a/misc/spy.c
+++ b/misc/spy.c
@@ -20,11 +20,11 @@
static const char * const MessageTypeNames[SPY_MAX_MSGNUM + 1] =
{
- "WM_NULL", /* 0x00 */
+ "wm_null", /* 0x00 */
"WM_CREATE",
"WM_DESTROY",
"WM_MOVE",
- "WM_SIZEWAIT",
+ "wm_sizewait",
"WM_SIZE",
"WM_ACTIVATE",
"WM_SETFOCUS",
@@ -43,7 +43,7 @@
"WM_ERASEBKGND",
"WM_SYSCOLORCHANGE",
"WM_ENDSESSION",
- "WM_SYSTEMERROR",
+ "wm_systemerror",
"WM_SHOWWINDOW",
"WM_CTLCOLOR",
"WM_WININICHANGE",
@@ -57,11 +57,11 @@
"WM_CHILDACTIVATE",
"WM_QUEUESYNC",
"WM_GETMINMAXINFO",
- "WM_UNUSED3",
- "WM_PAINTICON",
+ "wm_unused3",
+ "wm_painticon",
"WM_ICONERASEBKGND",
"WM_NEXTDLGCTL",
- "WM_ALTTABACTIVE",
+ "wm_alttabactive",
"WM_SPOOLERSTATUS",
"WM_DRAWITEM",
"WM_MEASUREITEM",
@@ -72,25 +72,27 @@
"WM_GETFONT",
"WM_SETHOTKEY",
"WM_GETHOTKEY",
- "WM_FILESYSCHANGE",
- "WM_ISACTIVEICON",
- "WM_QUERYPARKICON",
+ "wm_filesyschange",
+ "wm_isactiveicon",
+ "wm_queryparkicon",
"WM_QUERYDRAGICON",
- "WM_QUERYSAVESTATE",
+ "wm_querysavestate",
"WM_COMPAREITEM",
- "WM_TESTING",
+ "wm_testing",
NULL,
- "WM_OTHERWINDOWCREATED",
- "WM_OTHERWINDOWDESTROYED",
- "WM_ACTIVATESHELLWINDOW",
+ "wm_otherwindowcreated",
+ "wm_otherwindowdestroyed",
+ "wm_activateshellwindow",
NULL,
NULL, /* 0x40 */
- "WM_COMPACTING", NULL, NULL,
+ "wm_compacting", NULL, NULL,
"WM_COMMNOTIFY", NULL,
"WM_WINDOWPOSCHANGING", /* 0x0046 */
"WM_WINDOWPOSCHANGED", /* 0x0047 */
- "WM_POWER", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ "WM_POWER", NULL,
+ "WM_COPYDATA",
+ "WM_CANCELJOURNAL", NULL, NULL, NULL, NULL,
NULL, /* 0x0050 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -112,8 +114,8 @@
"WM_NCPAINT", /* 0x0085 */
"WM_NCACTIVATE", /* 0x0086 */
"WM_GETDLGCODE", /* 0x0087 */
- "WM_SYNCPAINT",
- "WM_SYNCTASK", NULL, NULL, NULL, NULL, NULL, NULL,
+ "wm_syncpaint",
+ "wm_synctask", NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0090 */
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -265,7 +267,7 @@
"WM_PARENTNOTIFY", /* 0x0210 */
"WM_ENTERMENULOOP", /* 0x0211 */
"WM_EXITMENULOOP", /* 0x0212 */
- "WM_NEXTMENU", /* 0x0213 */
+ "wm_nextmenu", /* 0x0213 */
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -292,7 +294,7 @@
"WM_ENTERSIZEMOVE", /* 0x0231 */
"WM_EXITSIZEMOVE", /* 0x0232 */
"WM_DROPFILES", /* 0x0233 */
- NULL, NULL, NULL, NULL,
+ "WM_MDIREFRESHMENU", NULL, NULL, NULL,
/* 0x0238*/
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -350,8 +352,9 @@
"WM_QUERYNEWPALETTE", /* 0x030f*/
"WM_PALETTEISCHANGING",
- "WM_PALETTECHANGED", /* 0x0311 */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ "WM_PALETTECHANGED",
+ "WM_HOTKEY", /* 0x0312 */
+ NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
@@ -371,7 +374,13 @@
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
/* 0x0380 */
- NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+ "WM_PENWINFIRST",
+ "WM_RCRESULT",
+ "WM_HOOKRCRESULT",
+ "WM_GLOBALRCCHANGE",
+ "WM_SKB",
+ "WM_HEDITCTL",
+ NULL, NULL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
"WM_COALESCE_FIRST",
diff --git a/misc/ver.c b/misc/ver.c
index 5a47d12..e785cb5 100644
--- a/misc/ver.c
+++ b/misc/ver.c
@@ -674,10 +674,8 @@
db=(struct db*)b;
*buflen = db->datalen;
/* let b point to data area */
- b = b+4+((strlen(db->name)+4)&3);
- /* now look up what the resp. SEGPTR would be ...
- * we could use MAKE_SEGPTR , but we don't need to
- */
+ b = b+4+((strlen(db->name)+4)&~3);
+ /* now look up what the resp. SEGPTR would be ... */
*buffer = (b-block)+segblock;
fprintf(stderr," -> %s=%s\n",subblock,b);
return 1;
@@ -703,7 +701,7 @@
db=(struct db*)b;
*buflen = db->datalen;
/* let b point to data area */
- b = b+4+((strlen(db->name)+4)&3);
+ b = b+4+((strlen(db->name)+4)&~3);
*buffer = b;
fprintf(stderr," -> %s=%s\n",subblock,b);
return 1;
@@ -733,7 +731,7 @@
db=(struct db*)b;
*buflen = db->datalen;
/* let b point to data area */
- b = b+4+((strlen(db->name)+4)&3);
+ b = b+4+((strlen(db->name)+4)&~3);
*buffer = b;
fprintf(stderr," -> %s=%s\n",sb,b);
free(sb);