- clarify many error messages
- add data corruption warning to README file
This commit is contained in:
parent
5079844bc6
commit
a6d83ebae1
6
README
6
README
|
@ -131,6 +131,12 @@ information on how to do this, please read the file documentation/debugging.
|
|||
If you post a bug report, please read the file documentation/bugreports to
|
||||
see what information is required.
|
||||
|
||||
You should backup all your important files that you give Wine access
|
||||
to, or use a special Wine copy of them, as there have been some cases
|
||||
of users reporting file corruption. Do NOT run Explorer, for instance,
|
||||
if you don't have a proper backup, as it renames/cripples several
|
||||
directories sometimes.
|
||||
|
||||
|
||||
7. GETTING MORE INFORMATION
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
/* When creating new drivers, you need to assign all the functions that
|
||||
that driver supports into the driver struct. If it is a supplementary
|
||||
driver, it should make sure to perserve the old values. */
|
||||
driver, it should make sure to preserve the old values. */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "wine/winbase16.h"
|
||||
#include "wine/winuser16.h"
|
||||
#include "wine/unicode.h"
|
||||
#include "wine/port.h"
|
||||
#include "win.h"
|
||||
#include "task.h"
|
||||
#include "heap.h"
|
||||
|
@ -342,7 +343,7 @@ static WND *MENU_GetTopPopupWnd()
|
|||
/***********************************************************************
|
||||
* MENU_ReleaseTopPopupWnd()
|
||||
*
|
||||
* Realease the locked pointer pTopPopupWnd.
|
||||
* Release the locked pointer pTopPopupWnd.
|
||||
*/
|
||||
static void MENU_ReleaseTopPopupWnd()
|
||||
{
|
||||
|
@ -366,10 +367,10 @@ static void MENU_DestroyTopPopupWnd()
|
|||
* MENU_GetSysMenu
|
||||
*
|
||||
* Create a copy of the system menu. System menu in Windows is
|
||||
* a special menu-bar with the single entry - system menu popup.
|
||||
* a special menu bar with the single entry - system menu popup.
|
||||
* This popup is presented to the outside world as a "system menu".
|
||||
* However, the real system menu handle is sometimes seen in the
|
||||
* WM_MENUSELECT paramemters (and Word 6 likes it this way).
|
||||
* WM_MENUSELECT parameters (and Word 6 likes it this way).
|
||||
*/
|
||||
HMENU MENU_GetSysMenu( HWND hWnd, HMENU hPopupMenu )
|
||||
{
|
||||
|
@ -440,7 +441,7 @@ BOOL MENU_Init()
|
|||
} else
|
||||
return FALSE;
|
||||
|
||||
/* Assume that radio checks have the same size as regular check. */
|
||||
/* Assume that radio checks have the same size as regular checks. */
|
||||
if (!hStdRadioCheck)
|
||||
return FALSE;
|
||||
|
||||
|
@ -1641,7 +1642,7 @@ static BOOL MENU_ShowPopup( HWND hwndOwner, HMENU hmenu, UINT id,
|
|||
menu->FocusedItem = NO_SELECTED_ITEM;
|
||||
}
|
||||
|
||||
/* store the owner for DrawItem*/
|
||||
/* store the owner for DrawItem */
|
||||
menu->hwndOwner = hwndOwner;
|
||||
|
||||
if( (wndOwner = WIN_FindWndPtr( hwndOwner )) )
|
||||
|
@ -1961,7 +1962,7 @@ static MENUITEM *MENU_InsertItem( HMENU hMenu, UINT pos, UINT flags )
|
|||
}
|
||||
if (menu->nItems > 0)
|
||||
{
|
||||
/* Copy the old array into the new */
|
||||
/* Copy the old array into the new one */
|
||||
if (pos > 0) memcpy( newItems, menu->items, pos * sizeof(MENUITEM) );
|
||||
if (pos < menu->nItems) memcpy( &newItems[pos+1], &menu->items[pos],
|
||||
(menu->nItems-pos)*sizeof(MENUITEM) );
|
||||
|
@ -2178,8 +2179,8 @@ static HMENU MENU_ShowSubPopup( HWND hwndOwner, HMENU hmenu,
|
|||
return hmenu;
|
||||
}
|
||||
|
||||
/* message must be send before using item,
|
||||
because nearly everything may by changed by the application ! */
|
||||
/* message must be sent before using item,
|
||||
because nearly everything may be changed by the application ! */
|
||||
|
||||
/* Send WM_INITMENUPOPUP message only if TPM_NONOTIFY flag is not specified */
|
||||
if (!(wFlags & TPM_NONOTIFY))
|
||||
|
@ -2189,7 +2190,7 @@ static HMENU MENU_ShowSubPopup( HWND hwndOwner, HMENU hmenu,
|
|||
item = &menu->items[menu->FocusedItem];
|
||||
rect = item->rect;
|
||||
|
||||
/* correct item if modified as a reaction to WM_INITMENUPOPUP-message */
|
||||
/* correct item if modified as a reaction to WM_INITMENUPOPUP message */
|
||||
if (!(item->fState & MF_HILITE))
|
||||
{
|
||||
if (menu->wFlags & MF_POPUP) hdc = GetDC( menu->hWnd );
|
||||
|
@ -2388,7 +2389,7 @@ static BOOL MENU_ButtonDown( MTRACKER* pmt, HMENU hPtMenu, UINT wFlags )
|
|||
{
|
||||
pmt->hCurrentMenu = MENU_ShowSubPopup( pmt->hOwnerWnd, hPtMenu, FALSE, wFlags );
|
||||
|
||||
/* In win31, a newly popped menu always remain opened for the next buttonup */
|
||||
/* In win31, a newly popped menu always remains opened for the next buttonup */
|
||||
if(TWEAK_WineLook == WIN31_LOOK)
|
||||
ptmenu->bTimeToHide = FALSE;
|
||||
}
|
||||
|
@ -2428,8 +2429,8 @@ static INT MENU_ButtonUp( MTRACKER* pmt, HMENU hPtMenu, UINT wFlags)
|
|||
if( !(item->fType & MF_POPUP) )
|
||||
return MENU_ExecFocusedItem( pmt, hPtMenu, wFlags);
|
||||
|
||||
/* If we are dealing with the top-level menu and that this */
|
||||
/* is a click on an already "poppped" item */
|
||||
/* If we are dealing with the top-level menu */
|
||||
/* and this is a click on an already "popped" item: */
|
||||
/* Stop the menu tracking and close the opened submenus */
|
||||
if((pmt->hTopMenu == hPtMenu) && (ptmenu->bTimeToHide == TRUE))
|
||||
return 0;
|
||||
|
@ -2546,8 +2547,8 @@ static LRESULT MENU_DoNextMenu( MTRACKER* pmt, UINT vk )
|
|||
}
|
||||
else if( wndPtr->dwStyle & WS_CHILD || wndPtr->wIDmenu != hNewMenu )
|
||||
{
|
||||
/* FIXME: Not sure what to do here, perhaps,
|
||||
* try to track hNewMenu as a popup? */
|
||||
/* FIXME: Not sure what to do here;
|
||||
* perhaps try to track hNewMenu as a popup? */
|
||||
|
||||
TRACE(" -- got confused.\n");
|
||||
WIN_ReleaseWndPtr(wndPtr);
|
||||
|
|
|
@ -190,7 +190,7 @@ COMCTL32_LibMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
|
|||
* hMainMenu [I] handle to the application's main menu
|
||||
* hInst [I] handle to the module that contains string resources
|
||||
* hwndStatus [I] handle to the status bar window
|
||||
* lpwIDs [I] pointer to an array of intergers (see NOTES)
|
||||
* lpwIDs [I] pointer to an array of integers (see NOTES)
|
||||
*
|
||||
* RETURNS
|
||||
* No return value
|
||||
|
|
|
@ -1472,7 +1472,7 @@ static void PROPSHEET_PressButton(HWND hwndDlg, int buttonID)
|
|||
/*************************************************************************
|
||||
* BOOL PROPSHEET_CanSetCurSel [Internal]
|
||||
*
|
||||
* Test weither the current page can be changed by sending a PSN_KILLACTIVE
|
||||
* Test whether the current page can be changed by sending a PSN_KILLACTIVE
|
||||
*
|
||||
* PARAMS
|
||||
* hwndDlg [I] handle to a Dialog hWnd
|
||||
|
|
|
@ -2453,7 +2453,7 @@ TAB_GetItemA (HWND hwnd, WPARAM wParam, LPARAM lParam)
|
|||
if ((iItem<0) || (iItem>=infoPtr->uNumItem))
|
||||
return FALSE;
|
||||
|
||||
wineItem=& infoPtr->items[iItem];
|
||||
wineItem = &infoPtr->items[iItem];
|
||||
|
||||
if (tabItem->mask & TCIF_IMAGE)
|
||||
tabItem->iImage = wineItem->iImage;
|
||||
|
|
|
@ -92,7 +92,7 @@ DEFAULT_DEBUG_CHANNEL(comm);
|
|||
#define MAX_PORTS 9
|
||||
|
||||
struct DosDeviceStruct {
|
||||
char *devicename; /* /dev/cua1 */
|
||||
char *devicename; /* /dev/ttyS0 */
|
||||
int fd;
|
||||
int suspended;
|
||||
int unget,xmit;
|
||||
|
@ -392,7 +392,7 @@ BOOL16 WINAPI BuildCommDCB16(LPCSTR device, LPDCB16 lpdcb)
|
|||
|
||||
|
||||
if (port-- == 0) {
|
||||
ERR("BUG ! COM0 can't exist!.\n");
|
||||
ERR("BUG ! COM0 can't exist!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -790,7 +790,7 @@ INT16 WINAPI GetCommError16(INT16 cid,LPCOMSTAT16 lpStat)
|
|||
unsigned int mstat;
|
||||
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
if (cid&FLAG_LPT) {
|
||||
|
@ -833,7 +833,7 @@ SEGPTR WINAPI SetCommEventMask16(INT16 cid,UINT16 fuEvtMask)
|
|||
|
||||
TRACE("cid %d,mask %d\n",cid,fuEvtMask);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return (SEGPTR)NULL;
|
||||
}
|
||||
|
||||
|
@ -863,7 +863,7 @@ UINT16 WINAPI GetCommEventMask16(INT16 cid,UINT16 fnEvtClear)
|
|||
|
||||
TRACE("cid %d, mask %d\n", cid, fnEvtClear);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -889,7 +889,7 @@ INT16 WINAPI SetCommState16(LPDCB16 lpdcb)
|
|||
|
||||
TRACE("cid %d, ptr %p\n", lpdcb->Id, lpdcb);
|
||||
if ((ptr = GetDeviceStruct(lpdcb->Id)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",lpdcb->Id);
|
||||
FIXME("no handle for cid = %0x!\n",lpdcb->Id);
|
||||
return -1;
|
||||
}
|
||||
if (tcgetattr(ptr->fd, &port) == -1) {
|
||||
|
@ -1145,7 +1145,7 @@ INT16 WINAPI GetCommState16(INT16 cid, LPDCB16 lpdcb)
|
|||
|
||||
TRACE("cid %d, ptr %p\n", cid, lpdcb);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
if (tcgetattr(ptr->fd, &port) == -1) {
|
||||
|
@ -1301,7 +1301,7 @@ INT16 WINAPI TransmitCommChar16(INT16 cid,CHAR chTransmit)
|
|||
|
||||
TRACE("cid %d, data %d \n", cid, chTransmit);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1343,7 +1343,7 @@ INT16 WINAPI UngetCommChar16(INT16 cid,CHAR chUnget)
|
|||
|
||||
TRACE("cid %d (char %d)\n", cid, chUnget);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1376,7 +1376,7 @@ INT16 WINAPI ReadComm16(INT16 cid,LPSTR lpvBuf,INT16 cbRead)
|
|||
|
||||
TRACE("cid %d, ptr %p, length %d\n", cid, lpvBuf, cbRead);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1426,7 +1426,7 @@ INT16 WINAPI WriteComm16(INT16 cid, LPSTR lpvBuf, INT16 cbWrite)
|
|||
TRACE("cid %d, ptr %p, length %d\n",
|
||||
cid, lpvBuf, cbWrite);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
@ -1477,7 +1477,7 @@ BOOL16 WINAPI EnableCommNotification16( INT16 cid, HWND16 hwnd,
|
|||
|
||||
TRACE("(%d, %x, %d, %d)\n", cid, hwnd, cbWriteNotify, cbOutQueue);
|
||||
if ((ptr = GetDeviceStruct(cid)) == NULL) {
|
||||
FIXME("no handle for cid = %0x!.\n",cid);
|
||||
FIXME("no handle for cid = %0x!\n",cid);
|
||||
return -1;
|
||||
}
|
||||
ptr->wnd = hwnd;
|
||||
|
@ -1529,7 +1529,7 @@ BOOL WINAPI BuildCommDCBAndTimeoutsA(
|
|||
if (!strncasecmp(device,"COM",3)) {
|
||||
port=device[3]-'0';
|
||||
if (port--==0) {
|
||||
ERR("BUG! COM0 can't exists!.\n");
|
||||
ERR("BUG! COM0 can't exist!\n");
|
||||
return FALSE;
|
||||
}
|
||||
if (!ValidCOMPort(port))
|
||||
|
|
|
@ -86,7 +86,7 @@ static BOOL MMDRV_GetDescription16(const char* fname, char* buf, int buflen)
|
|||
BOOL ret = FALSE;
|
||||
|
||||
if ((hFile = OpenFile(fname, &ofs, OF_READ | OF_SHARE_DENY_WRITE)) == HFILE_ERROR) {
|
||||
ERR("Can't open file %s\n", fname);
|
||||
ERR("Can't open file %s (builtin driver ?)\n", fname);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
|
|
@ -101,12 +101,12 @@ int DIR_Init(void)
|
|||
{
|
||||
if (errno==EACCES)
|
||||
{
|
||||
MESSAGE("Warning: The Temporary Directory (as specified in your configuration file) is NOT writeable.\n");
|
||||
MESSAGE("Warning: the temporary directory '%s' (specified in wine configuration file) is not writeable.\n", tmp_dir.long_name);
|
||||
PROFILE_UsageWineIni();
|
||||
}
|
||||
else
|
||||
MESSAGE("Warning: Access to Temporary Directory failed (%s).\n",
|
||||
strerror(errno));
|
||||
MESSAGE("Warning: access to temporary directory '%s' failed (%s).\n",
|
||||
tmp_dir.long_name, strerror(errno));
|
||||
}
|
||||
|
||||
if (drive == -1)
|
||||
|
|
|
@ -168,8 +168,8 @@ int DRIVE_Init(void)
|
|||
|
||||
if (stat( path, &drive_stat_buffer ))
|
||||
{
|
||||
MESSAGE("Could not stat %s, ignoring drive %c: %s\n",
|
||||
path, 'A' + i, strerror(errno));
|
||||
MESSAGE("Could not stat %s (%s), ignoring drive %c:\n",
|
||||
path, strerror(errno), 'A' + i);
|
||||
continue;
|
||||
}
|
||||
if (!S_ISDIR(drive_stat_buffer.st_mode))
|
||||
|
|
|
@ -523,7 +523,7 @@ static int server_connect( const char *oldcwd, const char *serverdir )
|
|||
close( s );
|
||||
}
|
||||
fatal_error( "file '%s/%s' exists,\n"
|
||||
" but I cannot connect to it; maybe the server has crashed?\n"
|
||||
" but I cannot connect to it; maybe the wineserver has crashed?\n"
|
||||
" If this is the case, you should remove this socket file and try again.\n",
|
||||
serverdir, SOCKETNAME );
|
||||
}
|
||||
|
@ -627,7 +627,7 @@ int CLIENT_InitThread(void)
|
|||
if (req->version != SERVER_PROTOCOL_VERSION)
|
||||
server_protocol_error( "version mismatch %d/%d.\n"
|
||||
"Your %s binary was not upgraded correctly,\n"
|
||||
"or you have an older one somewhere in your PATH.\n",
|
||||
"or you have an older one somewhere in your PATH.\nOr maybe wrong wineserver still running ?",
|
||||
req->version, SERVER_PROTOCOL_VERSION,
|
||||
(req->version > SERVER_PROTOCOL_VERSION) ? "wine" : "wineserver" );
|
||||
if (req->boot) boot_thread_id = teb->tid;
|
||||
|
|
|
@ -1132,7 +1132,10 @@ DWORD WINAPI GetProcessVersion( DWORD processid )
|
|||
IMAGE_NT_HEADERS *nt;
|
||||
|
||||
if (processid && processid != GetCurrentProcessId())
|
||||
return 0; /* FIXME: should use ReadProcessMemory */
|
||||
{
|
||||
FIXME("should use ReadProcessMemory\n");
|
||||
return 0;
|
||||
}
|
||||
if ((nt = RtlImageNtHeader( current_process.module )))
|
||||
return ((nt->OptionalHeader.MajorSubsystemVersion << 16) |
|
||||
nt->OptionalHeader.MinorSubsystemVersion);
|
||||
|
|
|
@ -574,7 +574,7 @@ BOOL WINAPI FreeConsole(VOID)
|
|||
* This makes simple commandline tools pipeable, while complex commandline
|
||||
* tools work without getting messed up by debugoutput.
|
||||
*
|
||||
* All other functions should work independent from this call.
|
||||
* All other functions should work independently from this call.
|
||||
*
|
||||
* To test for complex console: pid == 0 -> simple, otherwise complex.
|
||||
*/
|
||||
|
|
|
@ -246,7 +246,7 @@ DWORD WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers)
|
|||
ret = EXCEPTION_CONTINUE_SEARCH;
|
||||
} else {
|
||||
ERR("Couldn't start debugger (%s) (%ld)\n"
|
||||
"Read the documentation on how to set up winedbg or another debugger\n",
|
||||
"Read the Wine Developers Guide on how to set up winedbg or another debugger\n",
|
||||
buffer, GetLastError());
|
||||
}
|
||||
CloseHandle(hEvent);
|
||||
|
|
|
@ -102,7 +102,7 @@ BOOL WINAPI SetFileAttributesA(LPCSTR lpFileName, DWORD attributes)
|
|||
if (-1==chmod(full_name.long_name,buf.st_mode))
|
||||
{
|
||||
FILE_SetDosError();
|
||||
MESSAGE("Wine ERROR: Couldn't set file attributes for existing file \"%s\". Check permissions !\n", full_name.long_name);
|
||||
MESSAGE("Wine ERROR: Couldn't set file attributes for existing file \"%s\". Check permissions or set VFAT \"quiet\" flag !\n", full_name.long_name);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
|
|
Loading…
Reference in New Issue