Re: Bow and question

2008-01-08 Thread Shachar Shemesh
Juan Carlos Montes wrote:

 Shachar Shemesh escribió:
   
 I think you should be aware that Wine is no replacement for a security 
 tool. If you run a malware using Wine, it is possible for this malware 
 to interact directly with your Linux machine, bypassing your protection.

 Shachar
 

 I know it, but we can control all actions that the malware make. If the 
 malware
 bypass the protection and infect the machine... no problem, format, image and
 new malware to check, :)
   
But what good is a malware study tool if the malware can trivially 
detect it's there? What if it doesn't infect the machine, but just run 
differently?

There are Windows tools that do similar things to what you need (check 
out the sys-internals web site), where the environment is much more 
close to the real thing.

Actually, Dan's question is the more interesting here - did the malwares 
work under wine?

Shachar




Re: MSXML3: Exclude member variable when external lib is not present

2008-01-08 Thread James Hawkins
On Jan 8, 2008 1:20 AM, Rolf Kalbermatter [EMAIL PROTECTED] wrote:
 Recent changes in MSXML3 added a part which is conditionally compiled when
 libxml2 is available but a member variable in a COM interface using such a
 type is present unconditionally. Exclude that variable from the build in
 that case.


A patch was already sent by Lei 13 hours ago.

-- 
James Hawkins




Re: MSXML3: Exclude member variable when external lib is not present

2008-01-08 Thread James Hawkins
On Jan 8, 2008 1:26 AM, James Hawkins [EMAIL PROTECTED] wrote:

 On Jan 8, 2008 1:20 AM, Rolf Kalbermatter [EMAIL PROTECTED] wrote:
  Recent changes in MSXML3 added a part which is conditionally compiled when
  libxml2 is available but a member variable in a COM interface using such a
  type is present unconditionally. Exclude that variable from the build in
  that case.
 

 A patch was already sent by Lei 13 hours ago.


..and committed.  Sorry, hadn't rebased yet.

-- 
James Hawkins




Re: Bow and question

2008-01-08 Thread Juan Carlos Montes
Shachar Shemesh escribió:
 I think you should be aware that Wine is no replacement for a security 
 tool. If you run a malware using Wine, it is possible for this malware 
 to interact directly with your Linux machine, bypassing your protection.
 
 Shachar

I know it, but we can control all actions that the malware make. If the malware
bypass the protection and infect the machine... no problem, format, image and
new malware to check, :)




-- 
___
Juan Carlos Montes Senra
INTECO-CERT
Instituto Nacional de Tecnologías de la Comunicación
email: [EMAIL PROTECTED] | [EMAIL PROTECTED]
Tlf. 0034 987 877 189 - ext. 532
___






Re: [PATCH] Fix REG_MULTI_SZ save fromat - bug 824

2008-01-08 Thread Michal Piaskowski
On Jan 7, 2008 7:53 PM, Alexandre Julliard [EMAIL PROTECTED] wrote:
 Michal Piaskowski [EMAIL PROTECTED] writes:

  I don't know of any such application.
  It's just an old bug and one of very few bugs marked as tasklets.
  And it seemed very easy to fix, so i tried fixing it.
  Plus it's different from the way windows XP does it.
 
  If you think it should stay the way it is now, maybe it should be
  resolved with WONTFIX?

 I'm not opposed to fixing it, but changing all strings to hex format is
 not a good solution, it makes the file much harder to read and modify.



I think it can be done without changing every string to hex.
How about adding \0 at the end of every null terminated sting,
and \0\0 at the end of proper REG_MULTI_SZ value which should
end with an empty string?

I might try to do that.




Re: [PATCH] Fix REG_MULTI_SZ save fromat - bug 824

2008-01-08 Thread Reece Dunn
On 07/01/2008, Alexandre Julliard [EMAIL PROTECTED] wrote:
 Dan Kegel [EMAIL PROTECTED] writes:

  Alexandre wrote:
  I don't think a non null-terminated MULTI_SZ string is very useful.
  Do you really have an app that depends on this?
 
  http://www.xpregistrycleaner.com/embedded-null-characters/ claims
  some software vendors use the embedded-null registry key technique
  as a way to enforce the software license agreement and to reduce the
  ability of users to tamper with the license information stored in
  these registry keys.

 Embedded nulls should work just fine. The case that doesn't work is
 string values that aren't properly null-terminated.

Is it possible to use a format like:

Message=Hello

[using the quotes to determine the start/end of the string - this
would require processing on the string data, though]

or

Message=(5)Hello

[encoding the length in the stored data - this does not need any
processing, and counts any nulls if there are any]

- Reece




Re: Bow and question

2008-01-08 Thread Juan Carlos Montes Senra


Shachar Shemesh escribió:
 But what good is a malware study tool if the malware can trivially
 detect it's there? What if it doesn't infect the machine, but just run
 differently?
 
 There are Windows tools that do similar things to what you need (check
 out the sys-internals web site), where the environment is much more
 close to the real thing.
 
 Actually, Dan's question is the more interesting here - did the malwares
 work under wine?
 
 Shachar

I know that in windows we can found similar things, but with wine we can make a
first check, make a simple report, and send it to client.
Later, we can make a good manual analysis.

At the moment we can report quickly if a malware delete files, change 
registry...

did the malwares work under wine?
a lot of, :)

Think... if we dont get results, we must made a manual analysis...


-- 
___
Juan Carlos Montes Senra
INTECO-CERT
Instituto Nacional de Tecnologías de la Comunicación
email: [EMAIL PROTECTED] | [EMAIL PROTECTED]
Tlf. 0034 987 877 189 - ext. 532
___






Re: Russian translation of wordpad.

2008-01-08 Thread Andrey Turkin
Andrey Esin wrote:
 In patch:
 Full translation of wordpad on russian.

 Author: Andrey Esin [EMAIL PROTECTED]

 


You've messed up indentation, and there is a typo in STRING_ALL_FILES.




d3dx implementation senseless?

2008-01-08 Thread tony . wasserka
Well, why then hasn't this patch been accepted?
http://www.winehq.org/pipermail/wine-patches/2007-November/047212.html













d3dx implementation senseless?

2008-01-08 Thread tony . wasserka
 Well, why then hasn't this patch been accepted?
 http://www.winehq.org/pipermail/wine-patches/2007-November/047212.html

Oh well, I see, corrupted...
Seems like I'll spend the day on fixing that one :D













[2/2] d3dx9: Add d3dx9core.h

2008-01-08 Thread tony . wasserka
This patch adds the d3dx9core header file, which is used for the interface 
declarations.











0002-d3dx9-Add-d3dx9core.h.patch
Description: Binary data



Re: [PATCH 04/14] inetcomm: Add self-registration code.

2008-01-08 Thread Saulius Krasuckas
* On Fri, 2 Nov 2007, Robert Shearman wrote:
 
 I just thought I'd note that while the From: header said these patches 
 came from me, Huw actually sent them, which I think is a deficiency in 
 some of the git tools. I suspect the time is also the same issue. 

I may be writing this too late, but my MUA (pine) shows all the 
interesting info right there in the message view:

Date: Fri, 2 Nov 2007 11:35:34 +
From: Robert Shearman [EMAIL PROTECTED]
Reply-To: wine-devel@winehq.org
To: wine-patches [EMAIL PROTECTED]
Subject: [PATCH 01/18] inetcomm: Add stub implementation of inetcomm.dll.
Resent-Date: Fri, 2 Nov 2007 12:21:28 +
Resent-From: [EMAIL PROTECTED]
Resent-To: [EMAIL PROTECTED]

So I already did know which it was sent (and then resent) by. :)
Well, maybe only time stamp was reset, I am not sure.




Re: Spelling fixes round 6 - resend - don't apply first patch

2008-01-08 Thread Francois Gouget

 #ifdef HAVE_UNISTD_H
-# include unistd.h
+#include unistd.h
 #endif
 #include stdarg.h
 #include stdio.h

I think this chunk should not be applied because:
 * as pointed out before, it's not a spelling fix
 * it's perfectly valid to have a space there
 * the indentation makes the scope of the #ifdef clearer. So removing it 
makes the code less readable


-- 
Francois Gouget [EMAIL PROTECTED]  http://fgouget.free.fr/
 You can have my guns when you pry them from my kids cold, dead hands.




Re: shell32: Fixed incorrect definitions of CFSTR_*.

2008-01-08 Thread Francois Gouget
On Tue, 8 Jan 2008, Yarin Kaul wrote:

 Changes:
 
   This patch fixes http://bugs.winehq.org/show_bug.cgi?id=3159 :
 
   'Some of the CFSTR_* constants (such as CFSTR_SHELLIDLIST) are
   incorrectly defined as ANSI strings even when UNICODE is defined.'
 
 Change log:
 
   shell32: Fixed incorrect definitions of CFSTR_*.

Just using the TEXT macro is not good enough because it does not work 
on Unix. Check out the definition of STATUSCLASSNAMEA in commctrl.h for 
how this should be handled.


-- 
Francois Gouget [EMAIL PROTECTED]  http://fgouget.free.fr/
 There are 10 types of people in the world...
   those who understand binary and those who don't.




Re: Spelling fixes - round 6

2008-01-08 Thread Francois Gouget

- *3 - controller supports hardware stereoscopic signalling
+ *3 - controller supports hardware stereoscopic signaling
  *4 - =0 stereo signalling via external VESA stereo connector
  *=1 stereo signalling via VESA EVC connector

Why are you changing 'signalling' to 'signaling' in one place, but 
leaving it as is twice two lines down. Note that I'm not sure which form 
is right, but ispell is happy with both so it's possible both are ok.

-- 
Francois Gouget [EMAIL PROTECTED]  http://fgouget.free.fr/
 We are Pentium of Borg. You will be approximated. Division is futile.




Re: Spelling fixes - round 6

2008-01-08 Thread Austin English
On Jan 8, 2008 10:42 AM, Francois Gouget [EMAIL PROTECTED] wrote:

 - *3 - controller supports hardware stereoscopic signalling
 + *3 - controller supports hardware stereoscopic signaling
   *4 - =0 stereo signalling via external VESA stereo connector
   *=1 stereo signalling via VESA EVC connector

 Why are you changing 'signalling' to 'signaling' in one place, but
 leaving it as is twice two lines down. Note that I'm not sure which form
 is right, but ispell is happy with both so it's possible both are ok.

Ispell caught steroscopic, and while investigating that, I corrected
signaling. I didn't notice the line below at the time.

Hold off the this patch Alexandre. It's apparently controversial,
since people don't like the whitespace change(s). If you want to apply
certain chunks feel free, otherwise, I'll get a less controversial
patch ready.

Just so I know, are we going with American or British English? There's
a lot of inconsistency, though the majority seems to be American...

-Austin




Re: [1/2] WineD3D: Detect geforce 7300 cards

2008-01-08 Thread Marco Schuster
Wouldn't it be better to differ between the desktop and the Go versions?
Dunno if some games use the information that the Go versions are 
less-featured than the desktop versions, but might get us useful.

Marco




Re: user32: Test destroying the cursor of a parent process.

2008-01-08 Thread Eric Pouech
Andrew Riedi a écrit :
 changelog: user32: Test destroying the cursor of a parent process.

 -- 
 Andrew Riedi
 

 From 25a6a6a2eee92c4325d730ff85bd7cdf01bf2ace Mon Sep 17 00:00:00 2001
 From: Andrew Riedi [EMAIL PROTECTED]
 Date: Tue, 8 Jan 2008 05:03:55 -0800
 Subject: [PATCH] user32: Test destroying the cursor of a parent process.

 ---
  dlls/user32/tests/cursoricon.c |  201 
 
  1 files changed, 201 insertions(+), 0 deletions(-)

 diff --git a/dlls/user32/tests/cursoricon.c b/dlls/user32/tests/cursoricon.c
 index 781282c..c2beffa 100644
 --- a/dlls/user32/tests/cursoricon.c
 +++ b/dlls/user32/tests/cursoricon.c
 @@ -32,6 +32,205 @@
  #include wingdi.h
  #include winuser.h
  
 +static char **test_argv;
 +static int test_argc;
 +static HWND child = 0;
 +static HWND parent = 0;
 +static HANDLE child_process;
 +
 +#define PROC_INIT (WM_USER+1)
 +
 +LRESULT CALLBACK callback_child(HWND hwnd, UINT msg, WPARAM wParam, LPARAM 
 lParam)
 +{
 +BOOL ret;
 +DWORD error;
 +
 +switch (msg)
 +{
 +/* Destroy the cursor. */
 +case WM_USER+1:
 +SetLastError(0xdeadbeef);
 +ret = DestroyCursor((HCURSOR) lParam);
 +error = GetLastError();
 +todo_wine {
 +ok(!ret, DestroyCursor on the active cursor succeeded.\n);
 +ok(error == ERROR_DESTROY_OBJECT_OF_OTHER_THREAD,
 +Last error: 0x%08x\n, error);
 +}
 +return TRUE;
 +case WM_DESTROY:
 +PostQuitMessage(0);
 +return 0;
 +}
 +
 +return DefWindowProc(hwnd, msg, wParam, lParam);
 +}
 +
 +LRESULT CALLBACK callback_parent(HWND hwnd, UINT msg, WPARAM wParam, LPARAM 
 lParam)
 +{
 +if (msg == PROC_INIT)
 +{
 +child = (HWND) wParam;
 +return TRUE;
 +}
 +
 +return DefWindowProc(hwnd, msg, wParam, lParam);
 +}
 +
 +static void do_child(void)
 +{
 +WNDCLASS class;
 +MSG msg;
 +BOOL ret;
 +
 +/* Register a new class. */
 +class.style = CS_GLOBALCLASS;
 +class.lpfnWndProc = callback_child;
 +class.cbClsExtra = 0;
 +class.cbWndExtra = 0;
 +class.hInstance = GetModuleHandle(NULL);
 +class.hIcon = NULL;
 +class.hCursor = NULL;
 +class.hbrBackground = NULL;
 +class.lpszMenuName = NULL;
 +class.lpszClassName = cursor_child;
 +
 +SetLastError(0xdeadbeef);
 +ret = RegisterClass(class);
 +ok(ret, Failed to register window class. Error: %d\n, GetLastError());
 +
 +/* Create a window. */
 +child = CreateWindowA(cursor_child, cursor_child, WS_POPUP | 
 WS_VISIBLE,
 +0, 0, 200, 200, 0, 0, 0, NULL);
 +ok(child != 0, CreateWindowA error %d\n, GetLastError());
 +
 +/* Let the parent know our HWND. */
 +PostMessage(parent, PROC_INIT, (WPARAM) child, 0);
 +
 +/* Receive messages. */
 +while ((ret = GetMessage(msg, child, 0, 0)))
 +{
 +ok(ret != -1, GetMessage failed.  Error: %d\n, GetLastError());
 +TranslateMessage(msg);
 +DispatchMessage(msg);
 +}
 +}
 +
 +static void do_parent(void)
 +{
 +char path_name[MAX_PATH];
 +PROCESS_INFORMATION info;
 +STARTUPINFOA startup;
 +WNDCLASS class;
 +MSG msg;
 +BOOL ret;
 +
 +/* Register a new class. */
 +class.style = CS_GLOBALCLASS;
 +class.lpfnWndProc = callback_parent;
 +class.cbClsExtra = 0;
 +class.cbWndExtra = 0;
 +class.hInstance = GetModuleHandle(NULL);
 +class.hIcon = NULL;
 +class.hCursor = NULL;
 +class.hbrBackground = NULL;
 +class.lpszMenuName = NULL;
 +class.lpszClassName = cursor_parent;
 +
 +SetLastError(0xdeadbeef);
 +ret = RegisterClass(class);
 +ok(ret, Failed to register window class. Error: %d\n, GetLastError());
 +
 +/* Create a window. */
 +parent = CreateWindowA(cursor_parent, cursor_parent, WS_POPUP | 
 WS_VISIBLE,
 +0, 0, 200, 200, 0, 0, 0, NULL);
 +ok(parent != 0, CreateWindowA error %d\n, GetLastError());
 +
 +/* Start child process. */
 +memset(startup, 0, sizeof(startup));
 +startup.cb = sizeof(startup);
 +startup.dwFlags = STARTF_USESHOWWINDOW;
 +startup.wShowWindow = SW_SHOWNORMAL;
 +
 +sprintf(path_name, %s cursoricon %x, test_argv[0], (unsigned int) 
 parent);
 +ok(CreateProcessA(NULL, path_name, NULL, NULL, FALSE, 0L, NULL, NULL, 
 startup, info), CreateProcess failed.\n);
 +child_process = info.hProcess;
 +
 +/* Wait for child window handle. */
 +while ((child == 0)  (ret = GetMessage(msg, parent, 0, 0)))
 +{
 +ok(ret != -1, GetMessage failed.  Error: %d\n, GetLastError());
 +TranslateMessage(msg);
 +DispatchMessage(msg);
 +}
 +}
 +
 +static void init(void)
 +{
 +test_argc = winetest_get_mainargs(test_argv);
 +
 +/* Child process. */
 +if (test_argc = 3)
 +{
 +sscanf 

Spelling fixes - abbreviation question

2008-01-08 Thread Austin English
I'm seeing quite a few abbreviations. While they don't hurt anything,
they do give the code a slang tone. I personally think that wine is a
very professional project, and it's code should reflect that. While
this is obviously a very generic question, I wanted to clarify before
submitting some changes for these.

A few examples. These are all in comments, not in actual code, and I'm
checking to make sure compilation/tests still pass before submitting.
mem - memory
init - initialize
concat - concatenate
nr/num - number
infos - information
manuf - manufacturer

Etc. Anyone have any objections to these being changed? Call me a
grammar nazi, but it's easier to read when not shortened like that.

-Austin




Re: [1/2] WineD3D: Detect geforce 7300 cards

2008-01-08 Thread Roderick Colenbrander
 Wouldn't it be better to differ between the desktop and the Go versions?
 Dunno if some games use the information that the Go versions are 
 less-featured than the desktop versions, but might get us useful.
 
 Marco
 

The only difference between the 7300go and the standard are the gpu clocks. The 
7400go runs at the same gpu clock as the standard 7300, the 7300go runs at 
100MHz less (at 350MHz instead of 450MHz). I would prefer to default to the 
non-go variant as well. And even consider merging the 7300 and 7400 detection 
and let that default to 7300 as both are the same. (a 7400go runs at the gpu 
clock of a desktop 7300 and there is no desktop 7400)

Roderick
-- 
Pt! Schon vom neuen GMX MultiMessenger gehört?
Der kann`s mit allen: http://www.gmx.net/de/go/multimessenger?did=10




Re: Spelling fixes - abbreviation question

2008-01-08 Thread James Hawkins
On Jan 8, 2008 2:44 PM, Austin English [EMAIL PROTECTED] wrote:
 I'm seeing quite a few abbreviations. While they don't hurt anything,
 they do give the code a slang tone. I personally think that wine is a
 very professional project, and it's code should reflect that. While
 this is obviously a very generic question, I wanted to clarify before
 submitting some changes for these.

 A few examples. These are all in comments, not in actual code, and I'm
 checking to make sure compilation/tests still pass before submitting.
 mem - memory
 init - initialize
 concat - concatenate
 nr/num - number
 infos - information
 manuf - manufacturer

 Etc. Anyone have any objections to these being changed? Call me a
 grammar nazi, but it's easier to read when not shortened like that.


I object.  They're perfectly readable as abbreviations.  We try to
have as few style rules as possible, and not allowing abbreviations
goes too far.

-- 
James Hawkins




Re: question about fixing D3DRENDERSTATE_TEXTUREMAPBLEND

2008-01-08 Thread Alexander Dorofeyev
I ran a little test, it didn't show any differences in Wine or XP in such case 
(D3DTA_TEXTURE alpha selected and no alpha in texture pixelformat). This seems 
to give alpha=1.0. I found nothing on this at msdn, but it more or less makes 
sense (no alpha = opaque image). Do you think there would be any use in adding 
such test to ddraw/tests/visual.c?

Stefan Dösinger wrote:
 Am Montag, 7. Januar 2008 07:55:08 schrieb Alexander Dorofeyev:
 D3DTBLEND_MODULATE Modulate texture-blending is supported. In this mode,
 the RGB values of the texture are multiplied with the RGB values that would
 have been used with no texturing. Any alpha values in the texture replace
 the alpha values that would have been used with no texturing.
 D3DTA_TEXTURE has a somewhat strange behavior. If no texture is set, it 
 behaves like D3DTA_PREVIOUS. Perhaps for alphaarg it behaves similarly if 
 there is a texture, but it has no alpha. If that is the case, then I think it 
 matches what you need for D3DTBLEND_MODULATE. Otherwise I think a private 
 value like your D3DTOP_DX6MODULATE is the only way.
 
 So I'd say test how D3DTA_TEXTURE should behave, maybe we implement it 
 incorrectly at the moment.
 
 





re: Spelling fixes - abbreviation question

2008-01-08 Thread Dan Kegel
I also object to removing abbreviations or Britishisms.

The key to being a successful spelling policeman
is to stick to noncontroversial spelling fixes,
and avoiding anything controversial or non-spelling-related.




Re: Spelling fixes - abbreviation question

2008-01-08 Thread Michael Stefaniuc
Austin English wrote:
 I'm seeing quite a few abbreviations. While they don't hurt anything,
 they do give the code a slang tone. I personally think that wine is a
It's not slang but jargon!

 very professional project, and it's code should reflect that. While
This is an open source project and not an English exam!

 this is obviously a very generic question, I wanted to clarify before
 submitting some changes for these.
 
 A few examples. These are all in comments, not in actual code, and I'm
 checking to make sure compilation/tests still pass before submitting.
 mem - memory
 init - initialize
 concat - concatenate
 nr/num - number
 infos - information
 manuf - manufacturer
 
 Etc. Anyone have any objections to these being changed? Call me a
Objection!

 grammar nazi, but it's easier to read when not shortened like that.
No they aren't easier to read quite the contrary. They are part of the
normal jargon and easier to read/write; especially for non native
English speakers aka developers.

Oh, and removing words like suck, damn (too bad fuck is missing)
and other swear words isn't a good idea either.

bye
michael




Re: Spelling fixes - abbreviation question

2008-01-08 Thread Austin English
Glad I asked then. I won't touch these. Sorry for the noise.




Re: Spelling fixes - round 6

2008-01-08 Thread James McKenzie
Austin English wrote:
 On Jan 8, 2008 10:42 AM, Francois Gouget [EMAIL PROTECTED] wrote:
   
 - *3 - controller supports hardware stereoscopic signalling
 + *3 - controller supports hardware stereoscopic signaling
   *4 - =0 stereo signalling via external VESA stereo connector
   *=1 stereo signalling via VESA EVC connector

 Why are you changing 'signalling' to 'signaling' in one place, but
 leaving it as is twice two lines down. Note that I'm not sure which form
 is right, but ispell is happy with both so it's possible both are ok.
 

 Ispell caught steroscopic, and while investigating that, I corrected
 signaling. I didn't notice the line below at the time.

 Hold off the this patch Alexandre. It's apparently controversial,
 since people don't like the whitespace change(s). If you want to apply
 certain chunks feel free, otherwise, I'll get a less controversial
 patch ready.

 Just so I know, are we going with American or British English? There's
 a lot of inconsistency, though the majority seems to be American...
   
It does not matter to me.  Color is colour.  Slang should be avoided if 
at all possible.

James McKenzie





Re: Spelling fixes round 6 - resend - don't apply first patch

2008-01-08 Thread James McKenzie
Francois Gouget wrote:
  #ifdef HAVE_UNISTD_H
 -# include unistd.h
 +#include unistd.h
  #endif
  #include stdarg.h
  #include stdio.h

 I think this chunk should not be applied because:
  * as pointed out before, it's not a spelling fix
  * it's perfectly valid to have a space there
  * the indentation makes the scope of the #ifdef clearer. So removing it 
 makes the code less readable


   
Francois:

I am a long time programmer and expect the include to be next to the # 
sign.  However, you are correct in that it does not break code, and if 
it is not broken, why fix?  Is it possible to indent the entire line by 
two spaces (I think it is not)?

James McKenzie





Dynace OO Extension to C and Windows Development System

2008-01-08 Thread Blake McBride

This is an announcement for a new release of the Dynace Object
Oriented Extension to C and the Windows Development System.

Real briefly, Dynace is an OO extension to C which includes multiple
inheritance, meta object protocol (MOP), class library, native thread
support, garbage collection, and is well documented.  The system has
been in production use for over 10 years.

The Windows Development System is a Dynace class library which makes
programming GUI applications under Windows and Linux (WINE) very easy.
It also includes a library for SQL Databases, an interface to Java and
MzScheme, a custom resource editor, etc.

Besides 600+ pages of professional documentation, the system also
includes a language tutorial and a GUI and Database tutorial.

Dynace will run on almost anything with a C compiler.  It has been
tested on many different systems over the years.

The Windows Development System runs on Windows an Linux (with WINE).  This
is open source software.

I can be downloaded at:

http://blake.mcbride.name

Blake McBride
[EMAIL PROTECTED]