From owner-freebsd-ports Tue Apr 25 20:14:14 2000 Delivered-To: freebsd-ports@freebsd.org Received: from rock.ghis.net (rock.ghis.net [209.222.164.7]) by hub.freebsd.org (Postfix) with ESMTP id C7D0A37B539 for ; Tue, 25 Apr 2000 20:13:53 -0700 (PDT) (envelope-from will@blackdawn.com) Received: from argon.blackdawn.com (01-108.dial.008.popsite.net [209.69.194.108]) by rock.ghis.net (8.9.3/8.9.3) with ESMTP id UAA23279 for ; Tue, 25 Apr 2000 20:13:17 -0700 (PDT) Received: by argon.blackdawn.com (Postfix, from userid 1000) id E4DDE192C; Tue, 25 Apr 2000 23:13:00 -0400 (EDT) Date: Tue, 25 Apr 2000 23:13:00 -0400 From: Will Andrews To: FreeBSD Ports Subject: emulators/wine patches - feedback needed Message-ID: <20000425231300.D1683@argon.blackdawn.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="mojUlQ0s9EVzWg2t" X-Mailer: Mutt 1.0.1i X-Operating-System: FreeBSD 5.0-CURRENT i386 Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org --mojUlQ0s9EVzWg2t Content-Type: text/plain; charset=us-ascii Hello, I've managed to get WINE to build with the 2000-03-26 snapshot. Could any "real" WINE users please test this and see how it works for you? (I don't have time to test these patches, at least not for a few weeks). Removed files: patches/patch-a[frz] patches/patch-b[de] patches/patch-da patches/patch-e[bcdfg] New patches: patches/patch-a[abc] patches/patch-f[abc] The patch-a[bc] + patch-f* series are questionable. I didn't know how else to resolve the differences in functions. If the 3rd argument for any of the patch-f* series can be changed to something else to "fix" a problem, just say so. Thanks, -- Will Andrews GCS/E/S @d- s+:+>+:- a--->+++ C++ UB++++ P+ L- E--- W+++ !N !o ?K w--- ?O M+ V-- PS+ PE++ Y+ PGP+>+++ t++ 5 X++ R+ tv+ b++>++++ DI+++ D+ G++>+++ e->++++ h! r-->+++ y? --mojUlQ0s9EVzWg2t Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="wine.diff" Index: Makefile =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/Makefile,v retrieving revision 1.77 diff -u -r1.77 Makefile --- Makefile 2000/04/12 04:56:09 1.77 +++ Makefile 2000/04/26 02:10:44 @@ -6,18 +6,19 @@ # PORTNAME= wine -PORTVERSION= 99.11.14 +PORTVERSION= 20000326 CATEGORIES= emulators -MASTER_SITES= ${MASTER_SITE_SUNSITE} +MASTER_SITES= ${MASTER_SITE_SUNSITE} \ + ftp://orcus.progsoc.uts.edu.au/pub/Wine/development/ MASTER_SITE_SUBDIR= ALPHA/wine/development -DISTNAME= Wine-${PORTVERSION:S/.//g} +DISTNAME= Wine-${PORTVERSION} MAINTAINER= se@FreeBSD.org LIB_DEPENDS= Xpm.4:${PORTSDIR}/graphics/xpm \ GL.14:${PORTSDIR}/graphics/Mesa3 -WRKSRC= ${WRKDIR}/wine-${PORTVERSION:S/.//g} +WRKSRC= ${WRKDIR}/wine-${PORTVERSION} GNU_CONFIGURE= yes MAN1= wine.1 MAN5= wine.conf.5 @@ -72,7 +73,6 @@ ${WRKSRC}/documentation/dlls \ ${WRKSRC}/documentation/fonts \ ${WRKSRC}/documentation/ioport-trace-hints \ - ${WRKSRC}/documentation/lables-and-serial-nubers \ ${WRKSRC}/documentation/no-windows \ ${WRKSRC}/documentation/printing \ ${WRKSRC}/documentation/psdriver \ @@ -96,6 +96,8 @@ ${PREFIX}/lib/wine ${INSTALL_DATA} ${WRKSRC}/winedefault.reg ${PREFIX}/lib/wine ${ECHO} - @${SED} s+%%PREFIX%%+${PREFIX}+g <${PKGMESSAGE} + @${SED} s+%%PREFIX%%+${PREFIX}+g \ + < ${PKGMESSAGE} | \ + ${SED} s+%%PORTSDIR%%+${PORTSDIR}+g .include Index: files/md5 =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/files/md5,v retrieving revision 1.48 diff -u -r1.48 md5 --- files/md5 1999/11/21 20:02:21 1.48 +++ files/md5 2000/04/22 22:44:16 @@ -1 +1 @@ -MD5 (Wine-991114.tar.gz) = 51df1d91f266b3e72c4e17093670da35 +MD5 (Wine-20000326.tar.gz) = c45a7ec5d88c30b6cb6f796adb87b48d Index: patches/patch-au =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/patches/patch-au,v retrieving revision 1.1 diff -u -r1.1 patch-au --- patches/patch-au 1999/12/10 17:36:19 1.1 +++ patches/patch-au 2000/04/23 18:22:53 @@ -1,4 +1,5 @@ -Index: server/ptrace.c +--- server/ptrace.c Fri Mar 17 10:16:58 2000 ++++ server/ptrace.c.new Sun Apr 23 14:21:55 2000 @@ -36,6 +36,11 @@ #ifndef PTRACE_POKEDATA #define PTRACE_POKEDATA PT_WRITE_D @@ -11,43 +12,52 @@ static const int use_ptrace = 1; /* set to 0 to disable ptrace */ -@@ -64,10 +69,10 @@ - if (!thread) - if (!(thread = get_thread_from_pid( pid ))) break; - if (!(thread->process->suspend + thread->suspend)) -- ptrace( PTRACE_CONT, pid, 0, sig ); +@@ -51,10 +56,10 @@ + { + case SIGSTOP: /* continue at once if not suspended */ + if (!thread || !(thread->process->suspend + thread->suspend)) +- ptrace( PTRACE_CONT, pid, 1, sig ); + ptrace( PTRACE_CONT, pid, PTRACE_KEEPIP, sig ); break; default: /* ignore other signals for now */ -- ptrace( PTRACE_CONT, pid, 0, sig ); +- ptrace( PTRACE_CONT, pid, 1, sig ); + ptrace( PTRACE_CONT, pid, PTRACE_KEEPIP, sig ); break; } - if (signal && sig != signal) goto restart; -@@ -97,7 +102,7 @@ + return sig; +@@ -109,7 +114,7 @@ static int attach_thread( struct thread *thread ) { /* this may fail if the client is already being debugged */ - if (!use_ptrace || (ptrace( PTRACE_ATTACH, thread->unix_pid, 0, 0 ) == -1)) return 0; + if (!use_ptrace || (ptrace( PTRACE_ATTACH, thread->unix_pid, PTRACE_KEEPIP, 0 ) == -1)) return 0; - if (debug_level) fprintf( stderr, "ptrace: attached to pid %d\n", thread->unix_pid ); + if (debug_level) fprintf( stderr, "%08x: *attached*\n", (unsigned int)thread ); thread->attached = 1; wait4_thread( thread, SIGSTOP ); -@@ -114,7 +119,7 @@ - { - wait4_thread( thread, SIGTERM ); - if (debug_level) fprintf( stderr, "ptrace: detaching from %d\n", thread->unix_pid ); -- ptrace( PTRACE_DETACH, thread->unix_pid, 0, SIGTERM ); -+ ptrace( PTRACE_DETACH, thread->unix_pid, PTRACE_KEEPIP, SIGTERM ); +@@ -126,7 +131,7 @@ + if (!(thread->suspend + thread->process->suspend)) stop_thread( thread ); + if (sig) kill( thread->unix_pid, sig ); + if (debug_level) fprintf( stderr, "%08x: *detached*\n", (unsigned int)thread ); +- ptrace( PTRACE_DETACH, thread->unix_pid, 1, sig ); ++ ptrace( PTRACE_DETACH, thread->unix_pid, PTRACE_KEEPIP, sig ); thread->attached = 0; } - } -@@ -137,7 +142,7 @@ + else +@@ -154,7 +159,7 @@ { if (!thread->unix_pid) return; if (!thread->attached) kill( thread->unix_pid, SIGCONT ); -- else ptrace( PTRACE_CONT, thread->unix_pid, 0, SIGSTOP ); +- else ptrace( PTRACE_CONT, thread->unix_pid, 1, SIGSTOP ); + else ptrace( PTRACE_CONT, thread->unix_pid, PTRACE_KEEPIP, SIGSTOP ); } + /* suspend a thread to allow using ptrace on it */ +@@ -179,7 +184,7 @@ /* read an int from a thread address space */ + int read_thread_int( struct thread *thread, const int *addr, int *data ) + { +- if (((*data = ptrace( PTRACE_PEEKDATA, thread->unix_pid, addr, 0 )) == -1) && errno) ++ if (((*data = ptrace( PTRACE_PEEKDATA, thread->unix_pid, addr, *data )) == -1) && errno) + { + file_set_error(); + return -1; Index: patches/patch-ea =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/patches/patch-ea,v retrieving revision 1.1 diff -u -r1.1 patch-ea --- patches/patch-ea 1999/12/10 17:36:20 1.1 +++ patches/patch-ea 2000/04/26 00:10:00 @@ -1,55 +1,6 @@ -From: mohr@elektron.ikp.physik.tu-darmstadt.de (Andreas Mohr) -Newsgroups: local.list.wine.patches -Subject: profile fix -Date: 19 Nov 1999 11:47:40 +0100 -Organization: home -Lines: 67 -Message-ID: <199911190815.JAA16531@hertz.ikp.physik.tu-darmstadt.de> -Mime-Version: 1.0 -Content-Type: multipart/mixed; boundary=ELM942999323-16505-0_ -Content-Transfer-Encoding: 7bit -X-Resent-Date: Fri, 19 Nov 1999 01:15:36 -0700 -X-To: wine-patches@winehq.com -X-Mailer: ELM [version 2.4ME+ PL47 (25)] -X-Resent-Message-ID: -X-Resent-From: wine-patches@winehq.com -X-Reply-To: wine-devel@winehq.com -X-Mailing-List: archive/latest/2148 -X-Loop: wine-patches@winehq.com -X-Precedence: list -X-Resent-Sender: wine-patches-request@winehq.com - - ---ELM942999323-16505-0_ -Content-Type: text/plain; charset=US-ASCII -Content-Transfer-Encoding: 7bit - -Hi ! - -OK, first Huw with the registry, now me with the profile handling :-\ - -Fixed a gross bug in PROFILE_Open: -Before making a newly opened file the current profile, not only -the oldest profile should be flushed, but also the *old* current profile !! - -And nobody never ever found that bug. VERY strange... - -Andreas Mohr - ---ELM942999323-16505-0_ -Content-Type: text/plain; charset=iso-8859-1 -Content-Disposition: attachment; filename=diff.profile -Content-Description: /home/mohr/diff.profile -Content-Transfer-Encoding: 7bit - -Index: files/profile.c -=================================================================== -RCS file: /home/wine/wine/files/profile.c,v -retrieving revision 1.15 -diff -u -w -r1.15 profile.c ---- files/profile.c 1999/10/31 17:32:57 1.15 -+++ files/profile.c 1999/11/19 08:07:49 -@@ -373,6 +373,7 @@ +--- files/profile.c Sat Mar 25 16:44:37 2000 ++++ files/profile.c.new Tue Apr 25 20:08:59 2000 +@@ -496,6 +496,7 @@ return FALSE; } @@ -57,32 +8,3 @@ if (!CurProfile->changed || !CurProfile->dos_name) return TRUE; if (!(unix_name = CurProfile->unix_name) || !(file = fopen(unix_name, "w"))) { -@@ -494,8 +495,10 @@ - } - } - -- /* Rotate the oldest to the top to be replaced */ -+ /* Flush the old current profile */ -+ PROFILE_FlushFile(); - -+ /* Make the oldest profile the current one only in order to get rid of it */ - if(i==N_CACHED_PROFILES) - { - tempProfile=MRUProfile[N_CACHED_PROFILES-1]; -@@ -503,11 +506,9 @@ - MRUProfile[i]=MRUProfile[i-1]; - CurProfile=tempProfile; - } -- -- /* Flush the profile */ -- - if(CurProfile->filename) PROFILE_ReleaseFile(); - -+ /* OK, now that CurProfile is definitely free we assign it our new file */ - newdos_name = HEAP_strdupA( SystemHeap, 0, full_name.short_name ); - CurProfile->dos_name = newdos_name; - CurProfile->filename = HEAP_strdupA( SystemHeap, 0, filename ); - ---ELM942999323-16505-0_-- - ---- Index: patches/patch-ee =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/patches/patch-ee,v retrieving revision 1.1 diff -u -r1.1 patch-ee --- patches/patch-ee 1999/12/10 17:36:20 1.1 +++ patches/patch-ee 2000/04/26 01:54:19 @@ -1,91 +1,14 @@ -From: rklazes@casema.net (Rein Klazes) -Newsgroups: local.list.wine.patches -Subject: 16 bits dialog patch. -Date: 16 Nov 1999 19:31:16 +0100 -Organization: -++- -Lines: 232 -Message-ID: <199911161137.EAA11876@ursula.gmcl.com> -MIME-Version: 1.0 -Content-Type: multipart/mixed; boundary="--=_6UExOKVVL1eFPpiMs=Y5SwSVvDwS.MFSBCHJLHS" -X-Resent-Date: Tue, 16 Nov 1999 04:37:34 -0700 -X-To: wine-patches@winehq.com -X-Mailer: Forte Agent 1.6/32.525 -X-Resent-Message-ID: -X-Resent-From: wine-patches@winehq.com -X-Reply-To: wine-devel@winehq.com -X-Mailing-List: archive/latest/2131 -X-Loop: wine-patches@winehq.com -X-Precedence: list -X-Resent-Sender: wine-patches-request@winehq.com - - -----=_6UExOKVVL1eFPpiMs=Y5SwSVvDwS.MFSBCHJLHS -Content-Type: text/plain; charset=us-ascii -Content-Transfer-Encoding: 7bit - -Hi, - -I have an application here that has stopped working since the -introduction of 32 bit message queues. - -The application breaks when it posts a WM_COMMAND message using -PostMessage16. - -The message is received by a GetMessage and dispatched by -DispatchMessageA in DIALOG_DoDialogBox(). However these are win32 -functions and when calling the 16 bit dialogproc, a message -translation 32->16 bits is done which messes up the parameters. - -The patch corrects this in a trivial way by adding a parameter to -DIALOG_DoDialogBox() that flags whether 16 bits functions should be -used. - -If there is a better way do fix this problem then let me know. - -Files: -./include/dialog.h -./windows/dialog.c -./dlls/commdlg/colordlg.c -./dlls/commdlg/filedlg.c -./dlls/commdlg/fontdlg.c -./dlls/commdlg/printdlg.c - -Changelog: -Correct handling of 16 bits messages in DIALOG_DoDialogBox() - -Rein. --- -Rein Klazes -rklazes@casema.net - -----=_6UExOKVVL1eFPpiMs=Y5SwSVvDwS.MFSBCHJLHS -Content-Type: text/plain; charset=us-ascii; name=dlg16.diff -Content-Transfer-Encoding: 7bit -Content-Disposition: attachment; filename=dlg16.diff - -Index: include/dialog.h ---- ./wine/./include/dialog.h Sun Apr 25 14:36:53 1999 -+++ ./mywine/./include/dialog.h Tue Nov 16 11:49:40 1999 -@@ -43,6 +43,6 @@ - BOOL win32Template, HWND owner, - DLGPROC16 dlgProc, LPARAM param, - WINDOWPROCTYPE procType ); --extern INT DIALOG_DoDialogBox( HWND hwnd, HWND owner ); -+extern INT DIALOG_DoDialogBox( HWND hwnd, HWND owner, BOOL iswin16); - - #endif /* __WINE_DIALOG_H */ -Index: windows/dialog.c ---- ./wine/./windows/dialog.c Sun Nov 7 22:02:17 1999 -+++ ./mywine/./windows/dialog.c Tue Nov 16 11:50:43 1999 -@@ -22,6 +22,7 @@ - #include "winproc.h" +--- windows/dialog.c Sun Mar 19 09:20:52 2000 ++++ windows/dialog.c.new Tue Apr 25 21:53:24 2000 +@@ -26,6 +26,7 @@ #include "message.h" + #include "queue.h" #include "debugtools.h" +#include "struct32.h" - DEFAULT_DEBUG_CHANNEL(dialog) + DEFAULT_DEBUG_CHANNEL(dialog); -@@ -929,7 +930,7 @@ +@@ -933,7 +934,7 @@ /*********************************************************************** * DIALOG_DoDialogBox */ @@ -94,8 +17,8 @@ { WND * wndPtr; DIALOGINFO * dlgInfo; -@@ -948,11 +949,24 @@ - while (MSG_InternalGetMessage(&msg, hwnd, owner, MSGF_DIALOGBOX, +@@ -952,11 +953,24 @@ + while (MSG_InternalGetMessage(QMSG_WIN32A, &msg, hwnd, owner, MSGF_DIALOGBOX, PM_REMOVE, !(wndPtr->dwStyle & DS_NOIDLEMSG), NULL )) { - if (!IsDialogMessageA( hwnd, &msg)) @@ -122,7 +45,7 @@ if (dlgInfo->flags & DF_END) break; } EnableWindow( owner, TRUE ); -@@ -981,7 +995,7 @@ +@@ -985,7 +999,7 @@ HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) { HWND16 hwnd = CreateDialogParam16( hInst, template, owner, dlgProc, param); @@ -131,7 +54,7 @@ return -1; } -@@ -993,7 +1007,7 @@ +@@ -997,7 +1011,7 @@ HWND owner, DLGPROC dlgProc, LPARAM param ) { HWND hwnd = CreateDialogParamA( hInst, name, owner, dlgProc, param ); @@ -140,7 +63,7 @@ return -1; } -@@ -1005,7 +1019,7 @@ +@@ -1009,7 +1023,7 @@ HWND owner, DLGPROC dlgProc, LPARAM param ) { HWND hwnd = CreateDialogParamW( hInst, name, owner, dlgProc, param ); @@ -149,7 +72,7 @@ return -1; } -@@ -1033,7 +1047,7 @@ +@@ -1037,7 +1051,7 @@ if (!(ptr = GlobalLock16( dlgTemplate ))) return -1; hwnd = CreateDialogIndirectParam16( hInst, ptr, owner, dlgProc, param ); GlobalUnlock16( dlgTemplate ); @@ -158,7 +81,7 @@ return -1; } -@@ -1047,7 +1061,7 @@ +@@ -1051,7 +1065,7 @@ { HWND hwnd = CreateDialogIndirectParamA( hInstance, template, owner, dlgProc, param ); @@ -167,7 +90,7 @@ return -1; } -@@ -1061,7 +1075,7 @@ +@@ -1065,7 +1079,7 @@ { HWND hwnd = CreateDialogIndirectParamW( hInstance, template, owner, dlgProc, param ); @@ -175,84 +98,13 @@ + if (hwnd) return DIALOG_DoDialogBox( hwnd, owner, FALSE ); return -1; } - -Index: dlls/commdlg/colordlg.c ---- ./wine/./dlls/commdlg/colordlg.c Sat Jul 24 12:27:58 1999 -+++ ./mywine/./dlls/commdlg/colordlg.c Tue Nov 16 10:18:12 1999 -@@ -108,7 +108,8 @@ - lpChCol->hwndOwner, - (DLGPROC16)ColorDlgProc, - (DWORD)lpChCol, WIN_PROC_32A ); -- if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpChCol->hwndOwner); -+ if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpChCol->hwndOwner, -+ TRUE); - if (hDlgTmpl) FreeResource16( hDlgTmpl ); - - return bRet; -Index: dlls/commdlg/filedlg.c ---- ./wine/./dlls/commdlg/filedlg.c Wed Oct 13 15:51:57 1999 -+++ ./mywine/./dlls/commdlg/filedlg.c Tue Nov 16 10:21:52 1999 -@@ -251,7 +251,7 @@ - lpofn->hwndOwner, - (DLGPROC16)FileOpenDlgProc, - ofn, WIN_PROC_32A ); -- if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner ); -+ if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner, TRUE ); - if (str1) - { -@@ -413,7 +413,7 @@ - lpofn->hwndOwner, - (DLGPROC16)FileSaveDlgProc, - ofn, WIN_PROC_32A ); -- if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner ); -+ if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner, TRUE ); - - if (str1) - { -Index: dlls/commdlg/fontdlg.c ---- ./wine/./dlls/commdlg/fontdlg.c Sat Jul 24 12:27:58 1999 -+++ ./mywine/./dlls/commdlg/fontdlg.c Tue Nov 16 10:23:04 1999 -@@ -124,7 +124,7 @@ - lpChFont->hwndOwner, - (DLGPROC16)FormatCharDlgProcA, - (DWORD)lpChFont, WIN_PROC_32A ); -- if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner); -+ if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner, TRUE); - if (hDlgTmpl) FreeResource16( hDlgTmpl ); - lpChFont->lpTemplateName=lpTemplateName; - FONT_LogFont32ATo16(cf32a.lpLogFont, -@@ -160,7 +160,7 @@ - CF_ENABLETEMPLATEHANDLE)) FIXME(": unimplemented flag (ignored)\n"); - hwndDialog = DIALOG_CreateIndirect(hInst, template, TRUE, lpChFont->hwndOwner, - (DLGPROC16)FormatCharDlgProcA, (LPARAM)lpChFont, WIN_PROC_32A ); -- if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner); -+ if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner, TRUE); - return bRet; +@@ -1081,7 +1095,7 @@ + hInstance, template, owner, dlgProc, param, x); + hwnd = CreateDialogIndirectParamW( hInstance, template, + owner, dlgProc, param ); +- if (hwnd) return DIALOG_DoDialogBox( hwnd, owner ); ++ if (hwnd) return DIALOG_DoDialogBox( hwnd, owner, FALSE ); + return -1; } -@@ -199,7 +199,7 @@ - lpChFont->lpTemplateName=(LPWSTR)&cf32a; - hwndDialog=DIALOG_CreateIndirect(hInst, template, TRUE, lpChFont->hwndOwner, - (DLGPROC16)FormatCharDlgProcW, (LPARAM)lpChFont, WIN_PROC_32W ); -- if (hwndDialog)bRet=DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner); -+ if (hwndDialog)bRet=DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner, TRUE); - HeapFree(GetProcessHeap(), 0, cf32a.lpszStyle); - lpChFont->lpTemplateName=(LPWSTR)cf32a.lpTemplateName; - memcpy(lpChFont->lpLogFont, &lf32a, sizeof(CHOOSEFONTA)); -Index: dlls/commdlg/printdlg.c ---- ./wine/./dlls/commdlg/printdlg.c Sun Nov 14 08:08:30 1999 -+++ ./mywine/./dlls/commdlg/printdlg.c Tue Nov 16 10:23:35 1999 -@@ -288,7 +288,7 @@ - (DLGPROC16)PrintDlgProcA, (LPARAM)&PrintStructures, WIN_PROC_32A ); - } - if (hwndDialog) -- bRet = DIALOG_DoDialogBox(hwndDialog, lppd->hwndOwner); -+ bRet = DIALOG_DoDialogBox(hwndDialog, lppd->hwndOwner, TRUE); - - /* free memory & resources - */ - -----=_6UExOKVVL1eFPpiMs=Y5SwSVvDwS.MFSBCHJLHS-- - ---- Index: patches/patch-eh =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/patches/patch-eh,v retrieving revision 1.1 diff -u -r1.1 patch-eh --- patches/patch-eh 1999/12/10 17:36:21 1.1 +++ patches/patch-eh 2000/04/26 01:35:39 @@ -1,367 +1,10 @@ -From: tomasek@etf.cuni.cz (Petr Tomasek) -Newsgroups: local.list.wine.patches -Subject: Auto reading of labels & serial numbers. (fwd) -Date: 15 Nov 1999 21:22:36 +0100 -Organization: home -Lines: 295 -Message-ID: -Mime-Version: 1.0 -Content-Type: MULTIPART/MIXED; BOUNDARY="1908605701-2102248834-942667042=:1411" -Content-ID: -X-Resent-Date: Mon, 15 Nov 1999 05:16:28 -0700 -X-To: wine-patches@winehq.com -X-Resent-Message-ID: -X-Resent-From: wine-patches@winehq.com -X-Reply-To: wine-devel@winehq.com -X-Mailing-List: archive/latest/2126 -X-Loop: wine-patches@winehq.com -X-Precedence: list -X-Resent-Sender: wine-patches-request@winehq.com - - -Hello! - -I've made a patch, that allows wine to read labels and -serial numbers directly from the device (no more having to -be specified in the wine.conf file). - -For doc see Documentation/labels-and-serial-numbers. - -One more issue: I had to create procedure named -'PROFILE_ExistWineString' (in profile.c), that checks, -whether certain entry exists in the wine.conf. You may want -to change its name to something better.... - -Best Wishes - -Petr Tomasek - -BTW, could I be informed, whether the patch was accepted to -the CVS /Wine release? Thanks! - - --- -Petr Tomasek, http://www.etf.cuni.cz/~tomasek/ - -Index: documentation/cdrom-labels -diff -ruN wine-991031/documentation/cdrom-labels wine-991031-new/documentation/cdrom-labels ---- wine-991031/documentation/cdrom-labels Sun Jun 6 19:28:20 1999 -+++ wine-991031-new/documentation/cdrom-labels Sun Nov 14 14:41:08 1999 -@@ -1,3 +1,7 @@ -++-----------------------------------------------------------------------------+ -+| This doc is obsolate now. See 'labels-and-serial-nubmers' for current info. | -++-----------------------------------------------------------------------------+ -+ - *** VOLUME LABEL +--- include/options.h Sat Mar 18 16:56:10 2000 ++++ include/options.h.new Tue Apr 25 21:34:54 2000 +@@ -77,6 +77,7 @@ - If a program depends on the correct label and/or serial number for the -Index: documentation/lables-and-serial-nubers -diff -ruN wine-991031/documentation/lables-and-serial-nubers wine-991031-new/documentation/lables-and-serial-nubers ---- documentation/lables-and-serial-nubers Thu Jan 1 01:00:00 1970 -+++ documentation/lables-and-serial-nubers Sun Nov 14 16:12:01 1999 -@@ -0,0 +1,88 @@ -+[FIXME - can someone translate this into (real) english? :)) ] -+[FIXME - update the 'Documentation/config' accordingly] -+ -+ -+ Drive Labels and Serial Numbers with wine. -+ ----------------------------------------- -+ -+ Until now, You had to specify drive labels and serial numbers in wine -+config file manually. For now, wine can read them directly from the device. -+ This may be usefull mainly for programs distributed on CD-Roms, that -+check for volume label at the setup or when accesing the disc. -+ -+WHAT'S SUPPORTED ? -+ -+ * FAT systems (types 'hd' and 'floppy'): reads labels and serial num's. -+ * Iso9660 ('cdrom'): reads labels only. -+ -+HOW TO SET UP ? -+ -+ There are two ways: You can either set 'ReadLabelFromDevice=' and -+'ReadSerialFromDevice=' in [Drive X] section in Your wine.conf (~/.winerc) -+to 'true' or 'false', if want to disable/enable reading label/serial number -+from the device for this drive. Note, that you have to have specified 'Device' -+and appropriate 'Type' entries! -+ -+ If 'ReadLabelFromDevice' and/or 'ReadSerialFromDevice' unspecified, wine -+tries to find out, whether to read labels/serial num's from device by itself. -+It will read them when 'Device' and 'Type' entries specified correctly and -+appropriate 'Label'/'Serial' section is NOT specified. (In other words -+specifying 'Label'/'Serial' will cause wine to use specified value rather, -+than reading it from the device). -+ -+ -+EXAMPLES -+ -+*** Simple example of cdrom and floppy; labels will be read from the device on -+both, cdrom and floppy; serial numbers on floppy only: -+ -+[Drive A] -+Path=/mnt/floppy -+Type=floppy -+Device=/dev/fd0 -+Filesystem=msdos -+ -+[Drive R] -+Path=/mnt/cdrom -+Type=cdrom -+Device=/dev/hda1 -+Filesystem=win95 -+ -+*** Cdrom. We want to override the label: -+ -+[Drive J] -+Path=/mnt/cdrom -+Type=cdrom -+Label=X234GCDSE -+Device=/dev/cdrom -+Filesystem=msdos -+ -+*** This is a bit tricky example. It will read label and serial number from the -+ZIP disk; if this fails (no ZIP disk in drive/ acces denied to the device / -+the disk is not formatted as FAT), it will fall back to the specified values. -+ -+[Drive D] -+Path=/mnt/zip -+Type=hd -+Label=*Unknown* -+ReadLabelFromDevice=true -+Serial=00000000 -+ReadSerialFromDevice=true -+Device=/dev/hdc4 -+Filesystem=msdos -+ -+ -+TODO / OPEN ISSUES -+ -+ - The cdrom-label can be read only if the data track of the disk resides in -+the first track and the cdrom is iso9660. -+ - Better checking for FAT superblock (it now check's only one byte). -+ - Support for labels/serial num's WRITING. -+ - Can the label be longer than 11 chars? (iso9660 has 32 chars). -+ - What about reading ext2 volume label? .... -+ -+ -+ Petr Tomasek -+ -+ Nov 14 1999 -+ -Index: files/drive.c -diff -ruN wine-991031/files/drive.c wine-991031-new/files/drive.c ---- wine-991031/files/drive.c Wed Oct 13 15:57:38 1999 -+++ wine-991031-new/files/drive.c Sun Nov 14 16:42:45 1999 -@@ -3,6 +3,10 @@ - * - * Copyright 1993 Erik Bos - * Copyright 1996 Alexandre Julliard -+ * -+ * Label & Serial-number read support. -+ * (c) 1999 Petr Tomasek -+ * - */ - - #include "config.h" -@@ -59,6 +63,8 @@ - UINT flags; /* drive flags */ - dev_t dev; /* unix device number */ - ino_t ino; /* unix inode number */ -+ int read_label; /* should disk label be read from device ? */ -+ int read_serial; /* should serial number be read ? */ - } DOSDRIVE; - - -@@ -187,6 +193,25 @@ - buffer, sizeof(buffer) ); - drive->serial = strtoul( buffer, NULL, 16 ); - -+ /* Should the label be read directly from the device ? */ -+ drive->read_label= -+ ((drive->type==TYPE_FLOPPY) || -+ (drive->type==TYPE_HD) || -+ (drive->type==TYPE_CDROM)) && -+ (PROFILE_ExistWineString( name, "Device")) && -+ (PROFILE_ExistWineString(name, "ReadLabelFromDevice") ? -+ PROFILE_GetWineIniBool(name, "ReadLabelFromDevice", 1) : -+ (!PROFILE_ExistWineString( name, "Label"))); -+ -+ /* Should the serial number be read from the device ? */ -+ drive->read_serial= -+ ((drive->type==TYPE_FLOPPY) || -+ (drive->type==TYPE_HD)) && -+ (PROFILE_ExistWineString( name, "Device")) && -+ (PROFILE_ExistWineString(name, "ReadSerialFromDevice") ? -+ PROFILE_GetWineIniBool(name, "ReadSerialFromDevice", 1) : -+ (!PROFILE_ExistWineString( name, "Serial"))); -+ - /* Get the filesystem type */ - PROFILE_GetWineIniString( name, "Filesystem", "win95", - buffer, sizeof(buffer) ); -@@ -207,6 +232,8 @@ - name, path, DRIVE_Types[drive->type], - drive->label, drive->serial, drive->flags, - (int)drive->dev, (int)drive->ino ); -+ TRACE_(dosfs)("%s: label ? %d , serial ? %d\n",name, -+ drive->read_label, drive->read_serial); - } - else WARN_(dosfs)("%s: not defined\n", name ); - } -@@ -395,11 +422,80 @@ - - - /*********************************************************************** -+ * DRIVE_ReadFatSuperblock -+ * -+ * Used in DRIVE_GetLabel and DRIVE_GetSerial -+ */ -+int DRIVE_ReadFatSuperblock (char * dev, char * buff) -+{ -+int fd; -+#define DRIVE_SUPER 96 /* Number of bytes read from the superblock */ -+ -+if (memset(buff,0,DRIVE_SUPER)!=buff) return -1; -+if ((fd=open(dev,O_RDONLY))==-1) return -1; -+if (read(fd,buff,DRIVE_SUPER)!=DRIVE_SUPER) return -2; -+if (buff[0x26]!=0x29) return -3; /* Check for FAT present */ -+return close (fd); -+} -+ -+ -+/*********************************************************************** -+ * DRIVE_ReadIso9660Superblock -+ * -+ * Used in DRIVE_GetLabel -+ */ -+int DRIVE_ReadIso9660Superblock (char * dev, char * buff) -+{ -+int block=0; -+/* FIXME: Maybe we should search for the first data track on the CD, -+ not just assume, that it is the first track. */ -+int fd; -+off_t offset; -+offset=(off_t)2048*(16+block); -+ -+if (memset(buff,0,DRIVE_SUPER)!=buff) return -1; -+if ((fd=open(dev,O_RDONLY))==-1) return -1; -+if (lseek(fd,offset,SEEK_SET)!=offset) return -4; -+if (read(fd,buff,DRIVE_SUPER)!=DRIVE_SUPER) return -2; -+if (strncmp(&buff[1],"CD001",5)) return -3; /* Check for iso9660 present */ -+return close (fd); -+ -+} -+ -+ -+ -+/*********************************************************************** - * DRIVE_GetLabel - */ - const char * DRIVE_GetLabel( int drive ) - { -+char buff[DRIVE_SUPER]; -+ - if (!DRIVE_IsValid( drive )) return NULL; -+ if (DOSDrives[drive].read_label) { -+ if ((DOSDrives[drive].type == TYPE_FLOPPY) || -+ (DOSDrives[drive].type == TYPE_HD)) { -+ if (DRIVE_ReadFatSuperblock(DOSDrives[drive].device,(char *) buff)) -+ -+ MESSAGE("Invalid or unreadable superblock on %s (%c:)." -+ " Maybe not FAT?\n" ,DOSDrives[drive].device,(char)(drive+'A')); -+ else { -+ memcpy(DOSDrives[drive].label,buff+0x2b,11); -+ DOSDrives[drive].label[11]='\0'; -+ } -+ } -+ if (DOSDrives[drive].type == TYPE_CDROM) { -+ if (DRIVE_ReadIso9660Superblock(DOSDrives[drive].device,(char *) buff)) -+ -+ MESSAGE("Invalid or unreadable superblock on %s (%c:)." -+ " Maybe not Iso9660?\n" ,DOSDrives[drive].device,(char)(drive+'A')); -+ else { -+/* FIXME: Iso9660 uses 32-bytes long label. Should we do also? */ -+ memcpy(DOSDrives[drive].label,buff+40,11); -+ DOSDrives[drive].label[11]='\0'; -+ } -+ } -+ } - return DOSDrives[drive].label; - } - -@@ -409,7 +505,19 @@ - */ - DWORD DRIVE_GetSerialNumber( int drive ) - { -+char buff[DRIVE_SUPER]; -+ - if (!DRIVE_IsValid( drive )) return 0; -+ if (DOSDrives[drive].read_serial) -+ if ((DOSDrives[drive].type == TYPE_FLOPPY) || -+ (DOSDrives[drive].type == TYPE_HD)) { -+ if (DRIVE_ReadFatSuperblock(DOSDrives[drive].device,(char *) buff)) -+ -+ MESSAGE("Invalid or unreadable superblock on %s (%c:)." -+ " Maybe not FAT?\n" ,DOSDrives[drive].device,(char)(drive+'A')); -+ else -+ DOSDrives[drive].serial=*((DWORD*)(buff+0x27)); -+ } - return DOSDrives[drive].serial; - } - -Index: files/profile.c -diff -ruN wine-991031/files/profile.c wine-991031-new/files/profile.c ---- wine-991031/files/profile.c Sun Oct 31 18:32:57 1999 -+++ wine-991031-new/files/profile.c Sat Nov 13 20:37:29 1999 -@@ -708,6 +708,27 @@ - - - /*********************************************************************** -+ * PROFILE_ExistWineString -+ * -+ * Tests for tags in the wine.ini file. -+ */ -+int PROFILE_ExistWineString ( const char *section, const char *key_name) -+{ -+ -+ int ret; -+ -+ EnterCriticalSection( &PROFILE_CritSect ); -+ -+ret=(PROFILE_Find(&PROFILE_WineProfile, section, key_name, FALSE)!=NULL); -+ -+ LeaveCriticalSection( &PROFILE_CritSect ); -+ -+ return ret; -+} -+ -+ -+ -+/*********************************************************************** - * PROFILE_GetWineIniString - * - * Get a config string from the wine.ini file. -Index: include/options.h -diff -ruN wine-991031/include/options.h wine-991031-new/include/options.h ---- wine-991031/include/options.h Fri Jul 23 21:19:56 1999 -+++ wine-991031-new/include/options.h Sat Nov 13 20:38:31 1999 -@@ -83,6 +83,7 @@ - /* Profile functions */ -+extern int PROFILE_ExistWineString( const char *section ,const char *key_name); ++extern int PROFILE_ExistWineString (const char *section, const char *key_name); + extern const char *PROFILE_GetConfigDir(void); extern int PROFILE_LoadWineIni(void); extern void PROFILE_UsageWineIni(void); - extern int PROFILE_GetWineIniString( const char *section, const char *key_name, -Index: libtest/volinfo.c -diff -ruN wine-991031/libtest/volinfo.c wine-991031-new/libtest/volinfo.c ---- wine-991031/libtest/volinfo.c Sat Apr 3 15:52:04 1999 -+++ wine-991031-new/libtest/volinfo.c Sun Nov 14 05:59:18 1999 -@@ -13,7 +13,7 @@ - - printf("Drive Serial Flags Filename-Length " - "Label Fsname\n"); -- for (drive = 'C'; drive <= 'Z'; drive++) -+ for (drive = 'A'; drive <= 'Z'; drive++) - { - root[0] = drive; - if (GetVolumeInformation(root,label,labellen,&serial, Index: pkg/MESSAGE =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/pkg/MESSAGE,v retrieving revision 1.2 diff -u -r1.2 MESSAGE --- pkg/MESSAGE 1999/12/10 17:36:22 1.2 +++ pkg/MESSAGE 2000/04/22 21:14:57 @@ -15,5 +15,5 @@ just installed this as a package and don't know how to use the ports system to have it fetch and extract the source for you have a look at http://www.freebsd.org/handbook/ports.html . In short: -cd /usr/ports/emulators/wine && make configure ) +cd %%PORTSDIR%%/emulators/wine && make configure ) Index: pkg/PLIST =================================================================== RCS file: /extra/cvsroot/ports/emulators/wine/pkg/PLIST,v retrieving revision 1.5 diff -u -r1.5 PLIST --- pkg/PLIST 1999/12/10 17:36:22 1.5 +++ pkg/PLIST 2000/04/26 02:10:52 @@ -25,7 +25,6 @@ lib/wine/documentation/dlls lib/wine/documentation/fonts lib/wine/documentation/ioport-trace-hints -lib/wine/documentation/lables-and-serial-nubers lib/wine/documentation/no-windows lib/wine/documentation/printing lib/wine/documentation/psdriver --- /dev/null Tue Apr 25 23:10:37 2000 +++ patches/patch-aa Tue Apr 25 22:20:10 2000 @@ -0,0 +1,28 @@ +--- configure Sun Mar 26 15:25:23 2000 ++++ configure.new Tue Apr 25 22:20:06 2000 +@@ -4246,7 +4246,7 @@ + fi + fi + +- ++if false; then + echo $ac_n "checking "whether external symbols need an underscore prefix"""... $ac_c" 1>&6 + echo "configure:4252: checking "whether external symbols need an underscore prefix"" >&5 + if eval "test \"`echo '$''{'ac_cv_c_extern_prefix'+set}'`\" = set"; then +@@ -4289,7 +4289,6 @@ + + fi + +- + echo $ac_n "checking "whether assembler accepts .string"""... $ac_c" 1>&6 + echo "configure:4295: checking "whether assembler accepts .string"" >&5 + if eval "test \"`echo '$''{'ac_cv_c_asm_string'+set}'`\" = set"; then +@@ -4329,7 +4328,7 @@ + EOF + + fi +- ++fi + + LDSHARED="" + if test "$LIBEXT" = "so" --- /dev/null Tue Apr 25 23:10:37 2000 +++ patches/patch-ab Tue Apr 25 22:27:13 2000 @@ -0,0 +1,10 @@ +--- include/dialog.h Sun Apr 25 08:36:53 1999 ++++ include/dialog.h.new Tue Apr 25 22:26:54 2000 +@@ -43,6 +43,6 @@ + BOOL win32Template, HWND owner, + DLGPROC16 dlgProc, LPARAM param, + WINDOWPROCTYPE procType ); +-extern INT DIALOG_DoDialogBox( HWND hwnd, HWND owner ); ++extern INT DIALOG_DoDialogBox( HWND hwnd, HWND owner, BOOL iswin16 ); + + #endif /* __WINE_DIALOG_H */ --- /dev/null Tue Apr 25 23:10:37 2000 +++ patches/patch-ac Tue Apr 25 22:43:45 2000 @@ -0,0 +1,11 @@ +--- dlls/commdlg/colordlg.c Sat Mar 25 16:44:36 2000 ++++ dlls/commdlg/colordlg.c.new Tue Apr 25 22:43:34 2000 +@@ -110,7 +110,7 @@ + lpChCol->hwndOwner, + (DLGPROC16)ColorDlgProc, + (DWORD)lpChCol, WIN_PROC_32A ); +- if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpChCol->hwndOwner); ++ if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpChCol->hwndOwner,TRUE); + if (hDlgTmpl) FreeResource16( hDlgTmpl ); + + return bRet; --- /dev/null Tue Apr 25 23:10:37 2000 +++ patches/patch-fa Tue Apr 25 22:54:14 2000 @@ -0,0 +1,20 @@ +--- dlls/commdlg/filedlg.c Fri Feb 25 15:36:42 2000 ++++ dlls/commdlg/filedlg.c.new Tue Apr 25 22:52:53 2000 +@@ -253,7 +253,7 @@ + lpofn->hwndOwner, + (DLGPROC16)FileOpenDlgProc, + ofn, WIN_PROC_32A ); +- if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner ); ++ if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner, TRUE ); + + if (str1) + { +@@ -415,7 +415,7 @@ + lpofn->hwndOwner, + (DLGPROC16)FileSaveDlgProc, + ofn, WIN_PROC_32A ); +- if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner ); ++ if (hwndDialog) bRet = DIALOG_DoDialogBox( hwndDialog, lpofn->hwndOwner, TRUE ); + + if (str1) + { --- /dev/null Tue Apr 25 23:10:37 2000 +++ patches/patch-fb Tue Apr 25 22:54:27 2000 @@ -0,0 +1,29 @@ +--- dlls/commdlg/fontdlg.c Thu Feb 10 14:03:03 2000 ++++ dlls/commdlg/fontdlg.c.new Tue Apr 25 22:53:21 2000 +@@ -126,7 +126,7 @@ + lpChFont->hwndOwner, + (DLGPROC16)FormatCharDlgProcA, + (DWORD)lpChFont, WIN_PROC_32A ); +- if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner); ++ if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner, TRUE); + if (hDlgTmpl) FreeResource16( hDlgTmpl ); + lpChFont->lpTemplateName=lpTemplateName; + FONT_LogFont32ATo16(cf32a.lpLogFont, +@@ -162,7 +162,7 @@ + CF_ENABLETEMPLATEHANDLE)) FIXME(": unimplemented flag (ignored)\n"); + hwndDialog = DIALOG_CreateIndirect(hInst, template, TRUE, lpChFont->hwndOwner, + (DLGPROC16)FormatCharDlgProcA, (LPARAM)lpChFont, WIN_PROC_32A ); +- if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner); ++ if (hwndDialog) bRet = DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner, TRUE); + return bRet; + } + +@@ -201,7 +201,7 @@ + lpChFont->lpTemplateName=(LPWSTR)&cf32a; + hwndDialog=DIALOG_CreateIndirect(hInst, template, TRUE, lpChFont->hwndOwner, + (DLGPROC16)FormatCharDlgProcW, (LPARAM)lpChFont, WIN_PROC_32W ); +- if (hwndDialog)bRet=DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner); ++ if (hwndDialog)bRet=DIALOG_DoDialogBox(hwndDialog, lpChFont->hwndOwner, TRUE); + HeapFree(GetProcessHeap(), 0, cf32a.lpszStyle); + lpChFont->lpTemplateName=(LPWSTR)cf32a.lpTemplateName; + memcpy(lpChFont->lpLogFont, &lf32a, sizeof(CHOOSEFONTA)); --- /dev/null Tue Apr 25 23:10:37 2000 +++ patches/patch-fc Tue Apr 25 22:54:45 2000 @@ -0,0 +1,11 @@ +--- dlls/commdlg/printdlg.c Thu Feb 10 14:03:03 2000 ++++ dlls/commdlg/printdlg.c.new Tue Apr 25 22:53:31 2000 +@@ -290,7 +290,7 @@ + (DLGPROC16)PrintDlgProcA, (LPARAM)&PrintStructures, WIN_PROC_32A ); + } + if (hwndDialog) +- bRet = DIALOG_DoDialogBox(hwndDialog, lppd->hwndOwner); ++ bRet = DIALOG_DoDialogBox(hwndDialog, lppd->hwndOwner, TRUE); + + /* free memory & resources + */ --mojUlQ0s9EVzWg2t-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message