Introducing WineTestBot

2009-11-30 Thread Greg Geldorp
Or, for those who like to be buzzword compliant, the Wine Testing Cloud
Service.

Inspired by all the talk about testing during WineConf 2009, I set out to fill
a gap in Wine testing. Most of the Wine developers don't have access to a
battery of Windows machines to run the tests they write/modify on. As a result,
there are quite a few regressions in the tests themselves. The WineTestBot
provides a whole bunch of Windows machines, ready to accept and run your
modified tests. In its current state you can submit Windows executables (most
likely cross-compiled on a Linux box) to the bot, which will run it in VMs of
your choice.

So, how does this work in practice? First, go to
https://winetestbot.geldorp.nl and click on Register to register an account.
Once your account is approved (you'll receive a notification via email) you
can log in. After log in, the menu in the sidebar changes to include an item
Submit job. This allows you to upload an .exe from your local system to the
bot. You can pick the VMs (Windows versions) you want to run the test on. From
the Home page you can see the status of your job, by clicking on the job id
you get a bit more info about the progress. Once the test is completed, the
stdout generated by the test is retrieved from each VM and made available via
that web page.

The tests are run on VMware ESX VMs, so it's probably not all that useful to
run sound and DirectDraw tests on them. Also, no Win9x VMs are available.
I haven't set up 64-bit VMs yet, but those should be easy to add. Before each
test run, the VMs are reset to a clean snapshot, so no cruft from old tests
will be left around. Your test shouldn't take more than 5 minutes, which is
more than the WineTest framework allows anyway.

For each Windows version, there is a base VM and there can be additional
VMs too. The idea is that the base VM is running the most up-to-date and
most often used variation of that Windows version, so running your test on
the base VMs should give you a good indication on how the test behaves.
Additionally, you can run your tests on the other variations too. So, for
example for XP the base VM is XP Professional SP3, but there are additional
VMs like SP2, Media Center Edition, and a non-English version available too.
Obviously, even when you use all available VMs you'll cover a very small
subset of all possible configurations (most notably you won't test on a
single physical system) so please do check http://test.winehq.org after your
patch has been accepted to see if you introduced failures on other machines.

The plan for the future is to extend this a bit. Speaking from my own
experience, I know that programmers like to be as lazy as possible. Which
means that having to cross-compile your test before you can send it off to the
bot will be seen as a bit of a hurdle. So the next step will be to allow you
to upload the git diff instead of a Windows executable. The bot will apply
your diff to a git tree and take care of creating the cross-compiled Windows
executable, which it will then run on the Windows VMs. Step 3 will be to have
the bot watch wine-patches for anything that might impact the tests and do the
apply diff/cross-compile/run thing automatically. Obviously I'll be looking at
Dan's patch watcher for this 3rd step.

Security is a concern, but perhaps more for me than for you :-). I have
to trust you not to abuse this system. If you want to do something naughty
please do it on your own machine. There are some safeguards in the system,
like the timeout. In general, you should not expect any privacy, I do have
access to the consoles of the VMs and firewall logs. If you want to use this
system for something else than Wine tests, please talk to me first.

I'd like to thank Paul Vriens who acted as beta tester and made some valuable
suggestions. I welcome feedback so if you have any ideas on how to improve
this thing further please let me know.

Ge.





Re: Introducing WineTestBot

2009-11-30 Thread Paul Vriens

On 11/30/2009 10:05 AM, Greg Geldorp wrote:

Or, for those who like to be buzzword compliant, the Wine Testing Cloud
Service.

Inspired by all the talk about testing during WineConf 2009, I set out to fill
a gap in Wine testing. Most of the Wine developers don't have access to a
battery of Windows machines to run the tests they write/modify on. As a result,
there are quite a few regressions in the tests themselves. The WineTestBot
provides a whole bunch of Windows machines, ready to accept and run your
modified tests. In its current state you can submit Windows executables (most
likely cross-compiled on a Linux box) to the bot, which will run it in VMs of
your choice.

So, how does this work in practice? First, go to
https://winetestbot.geldorp.nl and click on Register to register an account.
Once your account is approved (you'll receive a notification via email) you
can log in. After log in, the menu in the sidebar changes to include an item
Submit job. This allows you to upload an .exe from your local system to the
bot. You can pick the VMs (Windows versions) you want to run the test on. From
the Home page you can see the status of your job, by clicking on the job id
you get a bit more info about the progress. Once the test is completed, the
stdout generated by the test is retrieved from each VM and made available via
that web page.

The tests are run on VMware ESX VMs, so it's probably not all that useful to
run sound and DirectDraw tests on them. Also, no Win9x VMs are available.
I haven't set up 64-bit VMs yet, but those should be easy to add. Before each
test run, the VMs are reset to a clean snapshot, so no cruft from old tests
will be left around. Your test shouldn't take more than 5 minutes, which is
more than the WineTest framework allows anyway.

For each Windows version, there is a base VM and there can be additional
VMs too. The idea is that the base VM is running the most up-to-date and
most often used variation of that Windows version, so running your test on
the base VMs should give you a good indication on how the test behaves.
Additionally, you can run your tests on the other variations too. So, for
example for XP the base VM is XP Professional SP3, but there are additional
VMs like SP2, Media Center Edition, and a non-English version available too.
Obviously, even when you use all available VMs you'll cover a very small
subset of all possible configurations (most notably you won't test on a
single physical system) so please do check http://test.winehq.org after your
patch has been accepted to see if you introduced failures on other machines.

The plan for the future is to extend this a bit. Speaking from my own
experience, I know that programmers like to be as lazy as possible. Which
means that having to cross-compile your test before you can send it off to the
bot will be seen as a bit of a hurdle. So the next step will be to allow you
to upload the git diff instead of a Windows executable. The bot will apply
your diff to a git tree and take care of creating the cross-compiled Windows
executable, which it will then run on the Windows VMs. Step 3 will be to have
the bot watch wine-patches for anything that might impact the tests and do the
apply diff/cross-compile/run thing automatically. Obviously I'll be looking at
Dan's patch watcher for this 3rd step.

Security is a concern, but perhaps more for me than for you :-). I have
to trust you not to abuse this system. If you want to do something naughty
please do it on your own machine. There are some safeguards in the system,
like the timeout. In general, you should not expect any privacy, I do have
access to the consoles of the VMs and firewall logs. If you want to use this
system for something else than Wine tests, please talk to me first.

I'd like to thank Paul Vriens who acted as beta tester and made some valuable
suggestions. I welcome feedback so if you have any ideas on how to improve
this thing further please let me know.

Ge.





Let me be the first to thank Ge for this awesome piece of work.

--
Cheers,

Paul.




Re: [1/3] WineD3D: Infrastructure to render swapchains to a FBO

2009-11-30 Thread Henri Verbeet
2009/11/30 Stefan Dösinger ste...@codeweavers.com:

I think this will break color_fill_fbo(). My general feeling is that
I'm seeing to much variants of if (swapchain-render_to_fbo). Also,
I think this patch has parts that can be separated like e.g. the
surface_init_sysmem() bit.

Out of curiosity, what would the performance impact be of always
rendering to FBO?




Re: [1/3] WineD3D: Infrastructure to render swapchains to a FBO

2009-11-30 Thread Stefan Dösinger
 I think this will break color_fill_fbo
I'll investigate that, but I think if it did it would break the d3d9 tests if I 
force rendering to the FBO - which I did for testing.

 Out of curiosity, what would the performance impact be of always
 rendering to FBO?
I only tested it on my macs so far, because I've written this mainly to work 
around blitting bugs:

The performance depends on what the app is doing. I tested it with the d3d8 SDK 
samples, where the drawing effort is pretty small, and the present() call 
probably the biggest single call. Apps which do not render offscreen have a 
~10% performance hit. Apps which render offscreen and need the depth blit gain 
about 10% performance.

That said, I think OSX always renders to a FBO behind our back, so other 
drivers might show different behavior.





Re: Introducing WineTestBot

2009-11-30 Thread Andrew Fenn
This sounds great, one question though. Is there a way to contribute
to your cloud so that members of the community could grow your windows
vm testing army?

On Mon, Nov 30, 2009 at 4:05 PM, Greg Geldorp ggeld...@vmware.com wrote:
 Or, for those who like to be buzzword compliant, the Wine Testing Cloud
 Service.

 Inspired by all the talk about testing during WineConf 2009, I set out to fill
 a gap in Wine testing. Most of the Wine developers don't have access to a
 battery of Windows machines to run the tests they write/modify on. As a 
 result,
 there are quite a few regressions in the tests themselves. The WineTestBot
 provides a whole bunch of Windows machines, ready to accept and run your
 modified tests. In its current state you can submit Windows executables (most
 likely cross-compiled on a Linux box) to the bot, which will run it in VMs of
 your choice.

 So, how does this work in practice? First, go to
 https://winetestbot.geldorp.nl and click on Register to register an account.
 Once your account is approved (you'll receive a notification via email) you
 can log in. After log in, the menu in the sidebar changes to include an item
 Submit job. This allows you to upload an .exe from your local system to the
 bot. You can pick the VMs (Windows versions) you want to run the test on. From
 the Home page you can see the status of your job, by clicking on the job id
 you get a bit more info about the progress. Once the test is completed, the
 stdout generated by the test is retrieved from each VM and made available via
 that web page.

 The tests are run on VMware ESX VMs, so it's probably not all that useful to
 run sound and DirectDraw tests on them. Also, no Win9x VMs are available.
 I haven't set up 64-bit VMs yet, but those should be easy to add. Before each
 test run, the VMs are reset to a clean snapshot, so no cruft from old tests
 will be left around. Your test shouldn't take more than 5 minutes, which is
 more than the WineTest framework allows anyway.

 For each Windows version, there is a base VM and there can be additional
 VMs too. The idea is that the base VM is running the most up-to-date and
 most often used variation of that Windows version, so running your test on
 the base VMs should give you a good indication on how the test behaves.
 Additionally, you can run your tests on the other variations too. So, for
 example for XP the base VM is XP Professional SP3, but there are additional
 VMs like SP2, Media Center Edition, and a non-English version available too.
 Obviously, even when you use all available VMs you'll cover a very small
 subset of all possible configurations (most notably you won't test on a
 single physical system) so please do check http://test.winehq.org after your
 patch has been accepted to see if you introduced failures on other machines.

 The plan for the future is to extend this a bit. Speaking from my own
 experience, I know that programmers like to be as lazy as possible. Which
 means that having to cross-compile your test before you can send it off to the
 bot will be seen as a bit of a hurdle. So the next step will be to allow you
 to upload the git diff instead of a Windows executable. The bot will apply
 your diff to a git tree and take care of creating the cross-compiled Windows
 executable, which it will then run on the Windows VMs. Step 3 will be to have
 the bot watch wine-patches for anything that might impact the tests and do the
 apply diff/cross-compile/run thing automatically. Obviously I'll be looking at
 Dan's patch watcher for this 3rd step.

 Security is a concern, but perhaps more for me than for you :-). I have
 to trust you not to abuse this system. If you want to do something naughty
 please do it on your own machine. There are some safeguards in the system,
 like the timeout. In general, you should not expect any privacy, I do have
 access to the consoles of the VMs and firewall logs. If you want to use this
 system for something else than Wine tests, please talk to me first.

 I'd like to thank Paul Vriens who acted as beta tester and made some valuable
 suggestions. I welcome feedback so if you have any ideas on how to improve
 this thing further please let me know.

 Ge.








Re: [1/3] WineD3D: Infrastructure to render swapchains to a FBO

2009-11-30 Thread Henri Verbeet
2009/11/30 Stefan Dösinger stefandoesin...@gmx.at:
 I think this will break color_fill_fbo
 I'll investigate that, but I think if it did it would break the d3d9 tests if 
 I force rendering to the FBO - which I did for testing.

I'm not sure we have a lot of tests for color fill. I actually have
that somewhere on my todo list, but it's way down.




[PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread Joerg-Cyril.Hoehle
Hi,

perhaps I should contribute to this thread given that I
indirectly triggered it via bug #20377.

IMHO Wine, due to its sandbox nature, needs a way to switch
   language/locale independently on the desktop settings.
Much like gcompris allows to choose a language other than the desktop's.
No discussion, the default should be the desktop setting.
So here, and in bug #20377, the issue is not the default setting.
The issue is how to depart from the default.

Now use LANG or LC_xyz to switch?

The MacOS Terminal.app (as of 10.5.8) sets/shows very few environment
variables.  LANG is among them, none of LC_xyz is.

Therefore I argue that LANG= is the canonical and reasonable choice for
a local override on MacOS.

It has the additional benefit of being
 + what Linux users are typically told to use (quick Google survey);
 + what the Wine Wiki recommends in http://wiki.winehq.org/TestingLanguages

What's the relationship between LC_xyz and LANG? The official answer for
programs using glibc is: the library will
test the environment variables LC_ALL, LC_CTYPE, and LANG in that order
But is glibc actually used on MacOS??

The Unicode FAQ says http://www.cl.cam.ac.uk/~mgk25/unicode.html
The LANG environment variable is used to set the default locale for
all categories, but the LC_* variables can be used to override
individual categories.
So I don't understand the isolated recommendation of using LC_MESSAGES
in this thread.  My use-case is how to mimick a French, or Dutch, or Turkish,
or any Asian MS-Windows environment, without switching my desktop to any of
these (the sandbox idea again).  LC_MESSAGES is not enough AFAIK.

Ken Thomases writes:
I see no upside at all to changing LANG into an override where that's  
not how it functions in any other context.
I see no override involved here.  On my Mac OSX 10.5.8 which is pretty
much a base install, no LC_xyz is set.
Therefore LANG does not override any LC_xyz setting.
All I ask about LANG is that it overrides the desktop settings.
If any LC_xyz were set, I expect them to take priority over LANG,
like is documented and quoted above for glib and has been done for
years in Linux.

Terminal (at least, recent versions) has a setting in its preferences
to set the locale environment variables in shells it creates.  However,
it really only sets LANG according to the Region selected on the Formats
tab.  It does not set individual LC_* variables.  It completely ignores
the user's preferred language.  
I fail to see the problem.  Only LANG is set, no LC_xyz therefore all UNIX
apps launched within Terminal.app (or at least the glibc-based ones)
should give a consistent answer, dictated by the LC_xyz/LANG defaulting rules.

Should the next Apple update have Terminal.app set LC_xyz instead of
LANG, I'd expect wine to obey them, because they take precedence over LANG.

So actually, my wish is that Wine follows the LC_ALL/LC_xyz/LANG defaulting
rules.  Currently it does not.
(I still need to check back on the Mac whether Wine follows LC_xyz).

(e.g. Japanese language, U.S. formats)
Ken, is the use-case that you have in mind a Japanese user traveling
to the U.S. (Jap. language, U.S. region/format)?  Terminal.app sets LANG
to US which you believe is wrong?
My issue is not whether Terminal.app is broken or not. My issue
is that if LANG is set, it should be obeyed, so the user gets
consistent results (from a UNIX environment point of view).

Regards,
Jörg Höhle




RE: Introducing WineTestBot

2009-11-30 Thread Greg Geldorp
Hi Andrew,

 From: Andrew Fenn

 This sounds great, one question though. Is there a way to contribute
 to your cloud so that members of the community could grow your windows
 vm testing army?

Interesting idea, it's not something I considered when designing this. The bot 
currently depends on a VMware specific API. That API, VIX, supports VMware 
vSphere (ESX), VMware Workstation and VMware Server. I believe Workstation can 
be controlled only locally, but vSphere and Server are network-capable. So it 
wouldn't be a big deal to add support for remote vSphere and Server VMs (btw, 
Server is free as in beer). Other VMs like VirtualBox would take more work to 
support.
If anyone is serious about contributing VMs please contact me and we'll see 
how to integrate them.

Ge.


smime.p7s
Description: S/MIME cryptographic signature



Re: [PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread Dmitry Timoshkov

joerg-cyril.hoe...@t-systems.com wrote:


perhaps I should contribute to this thread given that I
indirectly triggered it via bug #20377.

IMHO Wine, due to its sandbox nature ...


There is no such a nature of Wine.

--
Dmitry.





Re: [PATCH] [Server]: when getting the status of an exception, ensure the debugger continue information is not erased when releasing objects

2009-11-30 Thread Alexandre Julliard
Eric Pouech eric.pou...@orange.fr writes:

 diff --git a/server/debugger.c b/server/debugger.c
 index 795a24a..4458a3b 100644
 --- a/server/debugger.c
 +++ b/server/debugger.c
 @@ -677,6 +677,8 @@ DECL_HANDLER(get_exception_status)
  if ((event = (struct debug_event *)get_handle_obj( current-process, 
 req-handle,
 0, debug_event_ops 
 )))
  {
 +NTSTATUS status = STATUS_PENDING;
 +
  close_handle( current-process, req-handle );
  if (event-state == EVENT_CONTINUED)
  {
 @@ -686,10 +688,10 @@ DECL_HANDLER(get_exception_status)
  set_reply_data( event-context, size );
  current-context = NULL;
  }
 -set_error( event-status );
 +status = event-status;
  }
 -else set_error( STATUS_PENDING );
  release_object( event );
 +set_error( status );

Releasing an object should never change the error code. Where do you see
that happening?

-- 
Alexandre Julliard
julli...@winehq.org




Re: mciqtz32: Fix open/close omissions.

2009-11-30 Thread Paul Vriens

On 11/30/2009 01:47 PM, joerg-cyril.hoe...@t-systems.com wrote:

Regards,
Jörg Höhle



Hi Jörg,

You're mixing tabs and spaces here.

--
Cheers,

Paul.




Re: mciavi: Simplify play loop.

2009-11-30 Thread Paul Vriens

On 11/30/2009 01:51 PM, joerg-cyril.hoe...@t-systems.com wrote:

Hi,

in the future, MCIAVI will hopefully be able to drive the loop
with either audio or video turned on or off individually
(setaudio/setvideo off), like native (e.g. mciavi can play
the audio tracks only).
Here's a first step towards unification.

Regards,
Jörg Höhle



Tabs and space mixtures here as well.


--
Cheers,

Paul.




Re: wine.inf: Remove obsolete and duplicate entries.

2009-11-30 Thread Paul Vriens

On 11/30/2009 02:08 PM, joerg-cyril.hoe...@t-systems.com wrote:

Dear reviewers,

Vitaliy Margolen wrote in the discussion of bug #20693:

Those entries shouldn't be in the wine.inf in the first place
(as Alexandre already said). If anything they should be removed
from there to lessen the confusion.


Here is a patch to remove those entries. Note that
I'm not familiar enough with the printing system or MS-Windows'
expected vital entries to judge whether the entries should be present
as default fallbacks on systems compiled without cups,
or which have no printer,
or because some apps on MS-Windows crash if they are not present
  even when there's no printer
or whatever reason.  I just trust your word.

All I can see is that these entries about [HKLM\HARDWARE] do not make
it into system.reg on my Linux machine even though they are present in
wine.inf, I suppose because the dynamic device detection code
(hal/dbus) removes them (with no printer nor cups-dev installed).

Regards,
Jörg Höhle



Hi Jörg,

This was already (partly) done in commit 
d19e2ada9ce2d52d8b09e984fe5b12803bf6d4ca.


--
Cheers,

Paul.




Re: Implement a stub for PrintWindow in user32

2009-11-30 Thread Dmitry Timoshkov

Luke Benstead kaz...@gmail.com wrote:


+/
+ *  PrintWindow (USER32.@)
+ *
+ */
+BOOL WINAPI PrintWindow(HWND hwnd, HDC hdcBlt, UINT nFlags)
+{
+return TRUE;
+}


If this is a stub, it should not return TRUE, should print a FIXME,
and probably set an appropriate last error.

Besides, MSDN has a nice hint how to implement this API properly.

--
Dmitry.




Re: mciqtz32: Fix open/close omissions.

2009-11-30 Thread Dmitry Timoshkov

You need to provide more information why is this change
required, and what is the problem you are trying to fix.

--
Dmitry.




Re: comctl32: Implementation the WM_GETTEXT processing of datetime control

2009-11-30 Thread Nikolay Sivov

Ilya Shpigor wrote:


GetWindowText work with the server side text buffer. Are you offer to use it? 
I don't sure that control text and this kind of window text are same things. 
  
Hmm, I'm not sure. Looks like setting text always goes to server call, 
maybe it's the same thing (synced somewhere?)...
Anyway GetWindowText should work, and Wine's implementation uses 
WM_GETTEXT only for same process windows,

so you shouldn't override default handling for this message.
Datetime control have own interpretation of data in the self text buffers. 
Using window text will need some synchronization when this data change. Can I 
do it?
  
Or course you can, format a string every time contents change and store 
it with SetWindowText(). WM_GETTEXT
will work through default procedure (I've done it that way for IPAddress 
control).


P.S. Also don't forget comments regarding tests part.

Thanks.





Re: wineserver: Added support for read/only Registry, similar to unprivileged users (try 2)

2009-11-30 Thread Alexandre Julliard
Paul Chitescu pa...@voip.null.ro writes:

 Changelog:
 wineserver: Added support for read/only Registry, similar to 
 unprivileged users

 Rationale:
 This is a first step towards implementing shared wine prefixes with 
 most users being unprivileged and a single Administrator (power user, etc.) 
 capable of installing programs.

I don't think it's a step in the right direction. What you need is
proper access control with security descriptors, like we have for other
objects. A single read-only bit cannot be extended to support this.

-- 
Alexandre Julliard
julli...@winehq.org




Re: comctl32: Implementation the WM_GETTEXT processing of datetime control

2009-11-30 Thread Nikolay Sivov

Ilya Shpigor wrote:

Or course you can, format a string every time contents change and store
it with SetWindowText(). WM_GETTEXT
will work through default procedure (I've done it that way for IPAddress
control).



This is good idea, but SetWindowText just send the WM_SETTEXT message. Your 
patch comctl32/datetime: Block WM_SETTEXT message don't allow to do it.
  
Ah, forgot about it, sorry. Now I think your way is good enough, maybe 
WM_SETTEXT is still forwarded to

default procedure and WM_GETTEXT not, I don't know.

Anyway GetWindowText should work, and Wine's implementation uses
WM_GETTEXT only for same process windows,
so you shouldn't override default handling for this message.



This possible to test: is the datetime window procedure process WM_GETTEXT? 
This message must be send to control directly and be processed through 
CallWindowProc with DefWindowProc parameter. Is this test give right results?
  
It's possible but such test will tell nothing, WM_GETTEXT definitely 
works for this control class and returns
current content. Blocked WM_SETTEXT makes me think that WM_GETTEXT is 
overridden as you've done.


To test that you could subclass control, catch WM_GETTEXT in subclass 
proc and forward it to default procedure directly
bypassing control handling. If it returns nothing or some creation time 
passed text then your patch is ok.


All of that comes to be extra testing not related to directly visible 
control behavior, treat this as additional checks.






Re: wineserver: Added support for read/only Registry, similar to unprivileged users (try 2)

2009-11-30 Thread Paul Chitescu
On Monday 30 November 2009 04:02:03 pm you wrote:
 Paul Chitescu pa...@voip.null.ro writes:
 
  Changelog:
  wineserver: Added support for read/only Registry, similar to 
  unprivileged users
 
  Rationale:
  This is a first step towards implementing shared wine prefixes 
with 
  most users being unprivileged and a single Administrator (power user, 
etc.) 
  capable of installing programs.
 
 I don't think it's a step in the right direction. What you need is
 proper access control with security descriptors, like we have for other
 objects. A single read-only bit cannot be extended to support this.
 
 -- 
 Alexandre Julliard
 julli...@winehq.org


In the filesystem we use as backend for Registry all we can tell is if we can 
write to it or not so in the end one bit is all that's relevant (except if 
it's completely unreadable when wine should abort).

No matter what an user does it cannot change that. We don't want a wine 
service running as root trying to replicate Windows access rights on the 
native system, do we?

ACLs would require at least some mapping between wine users and native system 
users. And anyway, even SYSTEM or NT AUTHORITY would be unable to write to 
Registry if it's read only so that one bit should suffice.


Paul





Re: wineserver: Added support for read/only Registry, similar to unprivileged users (try 2)

2009-11-30 Thread Paul Chitescu
On Monday 30 November 2009 05:16:34 pm Paul Chitescu wrote:
 On Monday 30 November 2009 04:02:03 pm you wrote:
  Paul Chitescu pa...@voip.null.ro writes:
  
   Changelog:
   wineserver: Added support for read/only Registry, similar to 
   unprivileged users
  
   Rationale:
   This is a first step towards implementing shared wine prefixes 
 with 
   most users being unprivileged and a single Administrator (power user, 
 etc.) 
   capable of installing programs.
  
  I don't think it's a step in the right direction. What you need is
  proper access control with security descriptors, like we have for other
  objects. A single read-only bit cannot be extended to support this.
  
  -- 
  Alexandre Julliard
  julli...@winehq.org
 
 
 In the filesystem we use as backend for Registry all we can tell is if we 
can 
 write to it or not so in the end one bit is all that's relevant (except if 
 it's completely unreadable when wine should abort).
 
 No matter what an user does it cannot change that. We don't want a wine 
 service running as root trying to replicate Windows access rights on the 
 native system, do we?
 
 ACLs would require at least some mapping between wine users and native 
system 
 users. And anyway, even SYSTEM or NT AUTHORITY would be unable to write to 
 Registry if it's read only so that one bit should suffice.
 
 
 Paul

I should add that we can emulate the behavior of a non-admin user by including 
it in the Administrators group only if it can open for writing HKLM\Software 
or similar. This will make programs happier even if they still can't write to 
the Registry.





Fedora users, please test mci patch about time-out/hanging machine

2009-11-30 Thread Joerg-Cyril.Hoehle
Michael,
 So the cause of random mci time-out on test.winehq may as 
well lay elsewhere.
Like in PulseAudio? That may well be. PA in F11 made sound be more
broken in Wine.
Is that your own experience or other people's reports?

My experience with PA in Ubuntu Intrepid -- it's not the newest Ubuntu
at all -- is that it has been stable for several month now, to a point
where I regularly forget to run pactl exit to stop it every time I
log into Gnome as I did half a year ago.

Lastly, Wine has performed equally well in a PA, ALSA or OSS setting AFAICT.
It's long ago that PA caused known bugs such as stuttering (in Hardy and
Intrepid); they must have been fixed by a combination of changes in
Wine and perhaps Ubuntu updates(?).
Of course, YMMV.

One issue remains in Intrepid: Because Timidity was not modified for
PulseAudio[*], it grabs the ALSA device when it starts, causing all
subsequent PA clients to loose access to sound.  So it is still advisable
to issue pactl exit to let Wine (and Timidity) share ALSA well.

Regards,
Jörg Höhle
[*] or because PA was badly integrated?  Why should every sound using
package be modified when something like PA jumps into a distribution?!?



Re: wineserver: Added support for read/only Registry, similar to unprivileged users (try 2)

2009-11-30 Thread Alexandre Julliard
Paul Chitescu pa...@voip.null.ro writes:

 In the filesystem we use as backend for Registry all we can tell is if we can 
 write to it or not so in the end one bit is all that's relevant (except if 
 it's completely unreadable when wine should abort).

 No matter what an user does it cannot change that. We don't want a wine 
 service running as root trying to replicate Windows access rights on the 
 native system, do we?

Yes, the right approach to multiuser is to have wineserver and system
processes run as root, and normal processes run as different users.

-- 
Alexandre Julliard
julli...@winehq.org




Re: services.exe: Reduce Registry access to KEY_READ or MAXIMUM_ALLOWED wherever possible (try 2)

2009-11-30 Thread Alexandre Julliard
Paul Chitescu pa...@voip.null.ro writes:

 @@ -569,11 +569,11 @@ DWORD svcctl_ChangeServiceConfigW(
  new_entry.config.lpDisplayName = strdupW(lpDisplayName);
  }
  
 -*service-service_entry = new_entry;
 -save_service_config(service-service_entry);
 +err = save_service_config(new_entry);
 +if (ERROR_SUCCESS == err) *service-service_entry = new_entry;
  service_unlock(service-service_entry);

This can't work, the strings have been freed already.

-- 
Alexandre Julliard
julli...@winehq.org




today's git broke winetricks gecko :-(

2009-11-30 Thread Joerg-Cyril.Hoehle
Jacek Caban wrote:
You should understand, that we don't want users to have problems due to 
*lack* of Gecko.
Fair enough.

 Instead you just said that 
you pollute winetest results with your bad configuration.
Are you being rude or what?
I've not been polluting anything.  I've -- quite simply -- used for
years a (seemingly) perfectly reasonable and supported[*] configuration,
namely a Wine without Gecko.  Austin English too has provided
ae-nogecko test data for ages.

[*] you can avoid problems in WineGecko is not at all
the same as It is highly recommended that you install Gecko in order
to avoid mysterious failures even with applications that do not seem to
have anything to do at all with HTML.  That's not how Windows works.

Well, as I said  earlier, my next Mac testdata will use Gecko.

I'd appreciate if the WineGecko page could be augmented with a recommendation
about how to add Gecko to an existing .wine.  I'm used to
rm .wine/.update-timestamp
wine winecfg
Is that fine?

Regards,
Jörg Höhle.




Re: services.exe: Reduce Registry access to KEY_READ or MAXIMUM_ALLOWED wherever possible (try 2)

2009-11-30 Thread Paul Chitescu
On Monday 30 November 2009 05:51:35 pm Alexandre Julliard wrote:
 Paul Chitescu pa...@voip.null.ro writes:
 
  @@ -569,11 +569,11 @@ DWORD svcctl_ChangeServiceConfigW(
   new_entry.config.lpDisplayName = strdupW(lpDisplayName);
   }
   
  -*service-service_entry = new_entry;
  -save_service_config(service-service_entry);
  +err = save_service_config(new_entry);
  +if (ERROR_SUCCESS == err) *service-service_entry = new_entry;
   service_unlock(service-service_entry);
 
 This can't work, the strings have been freed already.
 
 -- 
 Alexandre Julliard
 julli...@winehq.org

Oh, I see it now.

This means that currently the old strings are leaked if the new strings 
provided are NULL.

I'll write a replacement that will free the all the strings of either old 
entry or new entry at the end (depending if save_service_config succeeds or 
not).





Re: Fedora users, please test mci patch about time-out/hanging machine

2009-11-30 Thread Michael Stefaniuc
joerg-cyril.hoe...@t-systems.com wrote:
 Michael,
 So the cause of random mci time-out on test.winehq may as 
 well lay elsewhere.
 Like in PulseAudio? That may well be. PA in F11 made sound be more
 broken in Wine.
 Is that your own experience or other people's reports?
My own from running winetest.exe; some of the dsound tests are failing
now which they didn't with F10. But according to Maarten the sound in
Wine is to be blamed for that.

 My experience with PA in Ubuntu Intrepid -- it's not the newest Ubuntu
 at all -- is that it has been stable for several month now, to a point
 where I regularly forget to run pactl exit to stop it every time I
 log into Gnome as I did half a year ago.
I don't have high requirements on sound, only youtube and xine/mplayer
and those just work. That's what squelched my desire to remove PA.

 Lastly, Wine has performed equally well in a PA, ALSA or OSS setting AFAICT.
 It's long ago that PA caused known bugs such as stuttering (in Hardy and
 Intrepid); they must have been fixed by a combination of changes in
 Wine and perhaps Ubuntu updates(?).
 Of course, YMMV.
Well, I don't use Wine ;)

bye
michael




Re: comctl32: Implementation the WM_GETTEXT processing of datetime control

2009-11-30 Thread Ilya Shpigor
Hi,

Thanks for reply.

 I don't think it's a right way. You probably should use window text
 instead updating it on every change,
 see how GetWindowText is implemented.

GetWindowText work with the server side text buffer. Are you offer to use it? 
I don't sure that control text and this kind of window text are same things. 

Datetime control have own interpretation of data in the self text buffers. 
Using window text will need some synchronization when this data change. Can I 
do it?

-- 
Best regards,
Ilya Shpigor.




Re: comctl32: Implementation the WM_GETTEXT processing of datetime control

2009-11-30 Thread Ilya Shpigor
 Or course you can, format a string every time contents change and store
 it with SetWindowText(). WM_GETTEXT
 will work through default procedure (I've done it that way for IPAddress
 control).

This is good idea, but SetWindowText just send the WM_SETTEXT message. Your 
patch comctl32/datetime: Block WM_SETTEXT message don't allow to do it.

 Anyway GetWindowText should work, and Wine's implementation uses
 WM_GETTEXT only for same process windows,
 so you shouldn't override default handling for this message.

This possible to test: is the datetime window procedure process WM_GETTEXT? 
This message must be send to control directly and be processed through 
CallWindowProc with DefWindowProc parameter. Is this test give right results?

 P.S. Also don't forget comments regarding tests part.

The second try of test have been send.

-- 
Best regards,
Ilya Shpigor.




Re: services.exe: Reduce Registry access to KEY_READ or MAXIMUM_ALLOWED wherever possible (try 2)

2009-11-30 Thread Alexandre Julliard
Paul Chitescu pa...@voip.null.ro writes:

 Oh, I see it now.

 This means that currently the old strings are leaked if the new strings 
 provided are NULL.

No, they remain unchanged in that case.

-- 
Alexandre Julliard
julli...@winehq.org




Introducing WineTestBot

2009-11-30 Thread Joerg-Cyril.Hoehle
Greg,

Congratulations, that's a great service.

I know that programmers like to be as lazy as possible.
So the next step will be to allow you
to upload the git diff instead of a Windows executable.
The next most wanted improvement!

Step 3.5 suggestion: split that in two steps, allow us to
upload the patch and download the .exe.

so it's probably not all that useful to
run sound and DirectDraw tests on them.

Then we can take the .exe to machines with sound and DD/DX
to complete the impact analysis.

Regards,
Jörg Höhle.




Re: [PATCH 1/3] ole32: Add test for CoLockObjectExternal with fLastUnlockReleases as FALSE.

2009-11-30 Thread Paul Vriens

On 11/23/2009 04:07 PM, Rob Shearman wrote:

---
  dlls/ole32/tests/marshal.c |   38 +-
  1 files changed, 37 insertions(+), 1 deletions(-)

Tested on XP.



Hi Rob,

http://test.winehq.org/data/tests/ole32:marshal.html doesn't look too 
healthy.


Not sure if this is the actual one as there were a few that touched 
marshal.c.


Could you have a look?

--
Cheers,

Paul.




RE: Introducing WineTestBot

2009-11-30 Thread Greg Geldorp
Hi Jörg

 So the next step will be to allow you
 to upload the git diff instead of a Windows executable.

 Step 3.5 suggestion: split that in two steps, allow us to
 upload the patch and download the .exe.

 so it's probably not all that useful to
 run sound and DirectDraw tests on them.

 Then we can take the .exe to machines with sound and DD/DX
 to complete the impact analysis.

Great suggestion, thanks. I'll make that a part of step 2 :-).

Greg.




Re: [PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread Ken Thomases
On Nov 30, 2009, at 4:35 AM, joerg-cyril.hoe...@t-systems.com 
joerg-cyril.hoe...@t-systems.com wrote:

 The issue is how to depart from the default.
 
 Now use LANG or LC_xyz to switch?
 
 The MacOS Terminal.app (as of 10.5.8) sets/shows very few environment
 variables.  LANG is among them, none of LC_xyz is.
 
 Therefore I argue that LANG= is the canonical and reasonable choice for
 a local override on MacOS.

That logic is exactly backwards, in my opinion.  Terminal.app is setting LANG 
as a backstop.  It's a fallback, not an override.  It's what should be used by 
programs which aren't Mac-aware.

The fact that Terminal sets LANG by default suggests that we shouldn't use it 
as an override, because it can't express the full range of user preferences as 
specified in System Preferences.  It will therefore produce results in Wine 
different from what the user has chosen for their system.

We specifically want to require that the user specify a variable _not_ set by 
Terminal by default if they want to override the settings in System Preferences.


 What's the relationship between LC_xyz and LANG? The official answer for
 programs using glibc is: the library will
 test the environment variables LC_ALL, LC_CTYPE, and LANG in that order
 But is glibc actually used on MacOS??

glibc is one implementation of the C standard libraries.  Mac OS X does not use 
glibc, but provides its own implementation of the C libraries in libSystem.  It 
follows the same general precedence rules for these environment variables, 
though.  For example, see the locale(1) man page.


 So I don't understand the isolated recommendation of using LC_MESSAGES
 in this thread.  My use-case is how to mimick a French, or Dutch, or Turkish,
 or any Asian MS-Windows environment, without switching my desktop to any of
 these (the sandbox idea again).  LC_MESSAGES is not enough AFAIK.

One should set the LC_* variable or variables that make sense for what one is 
trying to achieve.

If one wants all categories of locale information to be overridden, one should 
set LC_ALL.  If one only wants to change the language of displayed messages, 
one should set LC_MESSAGES.


 Ken Thomases writes:
 I see no upside at all to changing LANG into an override where that's  
 not how it functions in any other context.
 I see no override involved here.  On my Mac OSX 10.5.8 which is pretty
 much a base install, no LC_xyz is set.
 Therefore LANG does not override any LC_xyz setting.
 All I ask about LANG is that it overrides the desktop settings.
 If any LC_xyz were set, I expect them to take priority over LANG,
 like is documented and quoted above for glib and has been done for
 years in Linux.

You say you see no override and then you say LANG should override the desktop 
settings.  That's exactly the override that I'm talking about and recommending 
against.  LANG should not override the desktop settings.  It should not 
override anything, ever, anywhere.  It should be a fallback when nothing else 
has been specified.

I deem the settings in System Preferences to be roughly on par, in terms of 
precedence and user intention, as setting the individual LC_* variables (other 
than LC_ALL).

If a Wine user wishes to override the System Preferences settings, they should 
set the appropriate LC_* variables or possibly LC_ALL to override them all.


 Terminal (at least, recent versions) has a setting in its preferences
 to set the locale environment variables in shells it creates.  However,
 it really only sets LANG according to the Region selected on the Formats
 tab.  It does not set individual LC_* variables.  It completely ignores
 the user's preferred language.  
 I fail to see the problem.

The problem is that it produces results counter to what the user said they 
prefer in a number of cases.  One case is where the user language differs from 
the region.  Another is if the region is customized (i.e. it's not one of the 
presets).

  Only LANG is set, no LC_xyz therefore all UNIX
 apps launched within Terminal.app (or at least the glibc-based ones)
 should give a consistent answer, dictated by the LC_xyz/LANG defaulting rules.

Any program targeting Mac OS X should strive to do the right Mac-specific 
thing, not some generic Unix thing.  That most don't is no excuse for Wine not 
to.

 Should the next Apple update have Terminal.app set LC_xyz instead of
 LANG, I'd expect wine to obey them, because they take precedence over LANG.
 
 So actually, my wish is that Wine follows the LC_ALL/LC_xyz/LANG defaulting
 rules.  Currently it does not.

You're right that it does not, but we disagree about which direction it should 
go.  I think that Wine should not set LANG if it's unset.  I think it should 
set each of the LC_xyz variables based on the System Preferences settings, if 
it is not set.

As I've said repeatedly, I consider the System Preferences settings as 
analogous to LC_xyz in intent.  Therefore I think they should be treated 
analogously in precedence.

Re: [PATCH] [Server]: when getting the status of an exception, ensure the debugger continue information is not erased when releasing objects

2009-11-30 Thread Eric Pouech

Alexandre Julliard a écrit :

Eric Pouech eric.pou...@orange.fr writes:

  

diff --git a/server/debugger.c b/server/debugger.c
index 795a24a..4458a3b 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -677,6 +677,8 @@ DECL_HANDLER(get_exception_status)
 if ((event = (struct debug_event *)get_handle_obj( current-process, 
req-handle,
0, debug_event_ops )))
 {
+NTSTATUS status = STATUS_PENDING;
+
 close_handle( current-process, req-handle );
 if (event-state == EVENT_CONTINUED)
 {
@@ -686,10 +688,10 @@ DECL_HANDLER(get_exception_status)
 set_reply_data( event-context, size );
 current-context = NULL;
 }
-set_error( event-status );
+status = event-status;
 }
-else set_error( STATUS_PENDING );
 release_object( event );
+set_error( status );



Releasing an object should never change the error code. Where do you see
that happening?

  

what happens is something like:
process P being debugged by D
- while processing a debug event (fetched in P, P calls 
nt...@send_debug_event, and waits for the debugger to process the event)
- D gets the event, and the user asks for quit in D. D sends back to 
wineserver a DBG_CONTINUE response to the event

- D then dies before P runs again
- P then calls ser...@get_exception_status, where when getting the 
status from the debugger, (which should be DBG_CONTINUE, and it is 
before releasing the debug event). but while releasing the debug event, 
someone clears the status, and we get 0 from the get_exception_status event


I didn't check in details which clear_error() is to blame in server, but 
close_thread_desktop (from a cursory look) could be to blame


A+

--
Eric Pouech
The problem with designing something completely foolproof is to underestimate the 
ingenuity of a complete idiot. (Douglas Adams)






Re: [PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread Gert van den Berg
On Mon, Nov 30, 2009 at 22:01, Ken Thomases k...@codeweavers.com wrote:
 On Nov 30, 2009, at 4:35 AM, joerg-cyril.hoe...@t-systems.com 
 joerg-cyril.hoe...@t-systems.com wrote:
 What's the relationship between LC_xyz and LANG? The official answer for
 programs using glibc is: the library will
 test the environment variables LC_ALL, LC_CTYPE, and LANG in that order
 But is glibc actually used on MacOS??

POSIX specs:
http://www.opengroup.org/onlinepubs/007908799/xbd/envvar.html#tag_002_002

Short version: Order of checking:
LC_ALL
LC_whatever
LANG

Not sure how Wine's registry integration is implemented... I would
think that the most compatible (with the host *nix environment) way
would be:
Check saved locale variable values, if none was changed from last run,
use current registry settings. If any was changed in a way that would
affect behavior, rerun relevant parts below logic. (e.g. do not rerun
if LC_ALL stayed the same, since that override EVERYTHING). If
variable affecting locale code was not changed, change only the
relevant settings.

If LC_ALL is defined, set locale code from that, else set it from LANG
default to Windows default locale. Fill in defaults for locale.

If LC_ALL was not used above, go through LC_whatever and overwrite
settings in registry according to that. This leaves settings at
defaults (preferably Windows defaults) for language if only $LANG is
set. It uses the Unix settings if they are set, for consistency with
the host OS and allow the settings to be changed as for Unix apps.
Saving the values and comparing it, also allows the user to change the
settings, and not loose it each time Wine starts.

On my OS X 10.6, (Set to English, South African currency / numbers
(Which is actually correctly uses a decimal comma, unlike Ubuntu /
Windows)) LC_ALL is blank, LANG is blank LC_CTYPE is UTF-8 (affecting
toupper, etc according to POSIX page), all others are C. Following
above logic, this would result in US English settings everywhere. (Not
sure if Apple might be modifying the behavior of localized output
functions to match settings, even if C is set, need to test). (
http://images.apple.com/macosx/technology/docs/L416017A_UNIX_TB_FF.pdf
might help if OS X specific overwrites are needed.

IMHO, it should try replicating the OS X preferences (setting each
registry setting according to (potentially custom) settings in OS X
after setting locale code according to language and country), with a
way to overwrite. (LC_ALL would by my preferred method, since it has
the highest precedence in POSIX). This should then result in the
following locale logic: Saved Wine settings (if nothing changed) 
LC_ALL  OS specific  LC_*  LANG  C. As far as I can tell, this
should result in a configuration that mimics the host OS, unless
specifically overwritten.

Some settings might not be easy to map to the Wine version, and if no
setting Wine setting exist, a warning should be printed (e.g. if
Windows uses locale code rather than a separate setting for something
POSIX has a separate variable, a warning should be printed if the
POSIX settings would result in different behavior than configurable
from Windows) In addition, if any settings exist in Wine that can not
by set by LC_whatever, it should be easy to edit the Wine value from
Winecfg / Wine control panel. (If an OS specific method allows it to
be overwritten, it may be left out on those OSes)

Gert




Re: [PATCH] [Server]: when getting the status of an exception, ensure the debugger continue information is not erased when releasing objects

2009-11-30 Thread Alexandre Julliard
Eric Pouech eric.pou...@orange.fr writes:

 what happens is something like:
 process P being debugged by D
 - while processing a debug event (fetched in P, P calls
 nt...@send_debug_event, and waits for the debugger to process the
 event)
 - D gets the event, and the user asks for quit in D. D sends back to
 wineserver a DBG_CONTINUE response to the event
 - D then dies before P runs again
 - P then calls ser...@get_exception_status, where when getting the
 status from the debugger, (which should be DBG_CONTINUE, and it is
 before releasing the debug event). but while releasing the debug
 event, someone clears the status, and we get 0 from the
 get_exception_status event

 I didn't check in details which clear_error() is to blame in server,
 but close_thread_desktop (from a cursory look) could be to blame

That one probably shouldn't clear the error, but I don't see how you'd
get there by releasing an event. Do you have a backtrace?

-- 
Alexandre Julliard
julli...@winehq.org




work underway: Dependency on openal incoming

2009-11-30 Thread Maarten Lankhorst

Hi all,

This message is mostly aimed towards package maintainers, since one of 
the discussions at wineconf last year was that package maintainers would 
like to hear in advance about changing dependencies.


Wine's DirectSound implementation will, in the next release or the 
release after that, rely on OpenAL, the recommended library for linux or 
bsd's is openal-soft, and preferably a recent version, as old versions 
might miss certain experimental extensions that dsound will need. Mac 
users shouldn't need an external openal library, since it has its own 
openal implementation.


Without openal at compile-time, dsound will still build, but report no 
sound devices found. Some games or other applications may refuse to run 
if no dsound devices are found, so its recommended that you build with 
openal. If openal is compiled in, but missing at runtime, dsound.dll 
will refuse to load, which probably means most games will not run either.


Cheers,
Maarten




Re: [PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread Ken Thomases
On Nov 30, 2009, at 5:31 PM, Bruno Haible wrote:

 This means that a POSIX compliant program has to do the following steps in
 order to determine the locale for a certain category of settings.
  1) Inspect the LC_ALL environment variable. If it is set and non-empty,
 use its value.
  2) Otherwise: Inspect the LC_ environment variable that matches the
 specific category. If it is set and non-empty, use its value.
  3) Otherwise: Inspect the LANG environment variable. If it is set and
 non-empty, use its value.
  4) Otherwise: Use the default locale. On MacOS X systems, this means to
 use user preferences that can be retrieved using the
 CFLocaleCopyCurrent, CFPreferencesCopyAppValue functions. Note that
 these settings are similar but not entirely equal to Unix (glibc)
 conventions (e.g. zh-Hans vs. zh_CN), therefore some mapping of
 names has to be done.

By this logic, virtual no end-user program on any given Mac is compliant.

Gettext and POSIX-compliance is one thing.  The user-desired behavior for Mac 
programs is another.


 This algorithm is used in all programs that rely on GNU gettext and works
 perfectly fine:
  - By default, no LANG or LC_* environment variable is set, hence the
programs obey the user settings.
  - For users of Terminal.app, who set these environment variables, the
programs obey the environment variables.

It is Terminal.app itself which is setting LANG for all shells it creates, by 
default.  The user is most likely oblivious to this fact.


 Ken Thomases wrote:
 Mac OS X's Language  Text (formerly known as International) settings in
 System Preferences don't quite map exactly to Unix LANG or LC_* environment
 variables, which are a poor intermediary for mapping to Windows settings.  
 
 I agree that if you want to map from MacOS X locale names from CF* functions
 to Win32 locale names, you may want to do so without going through Unix
 (glibc) conventional names.

It's not about mapping from MacOS X locale names (whatever you mean by that) 
that's the problem.  It's the fact that no name or simple string properly 
represents the full range of settings available in System Preferences.


 One problem with trusting the LANG variable is that its UNIX semantics are
 as a fallback for the LC_* variables, not an override.  Given that the user
 has selected a language and formats in System Preferences, that's like
 setting all of the various LC_* variables, so LANG should be ignored.
 
 No. If a program ignores LANG while it is set, it is not POSIX compliant,
 and a user will wonder why it behaves differently than all the POSIX compliant
 programs on his system.

I would venture to say that the number of Mac users who will wonder that is 
vanishingly small.  Just about the only thing that will get a Mac user 
wondering is if the behavior of programs deviates from the settings in System 
Preferences.

I would further venture that the number of POSIX compliant programs on the 
system with which the user has any familiarity is negligible.  By your 
definition (which I don't question), no Mac applications are compliant.


 Allowing LANG to override the user's preference settings would make Wine
 behave badly when run from Terminal.app if the user's preferred language
 and formats don't match (e.g. Japanese language, U.S. formats).
 
 1. This is a rare case: Normally users run Terminal.app without setting LANG.

This is not a rare case.  It's the default case.  It will be nearly 100% of the 
time.  Users do not set LANG; Terminal.app does!

 2. If they do set LANG, POSIX requires the program to obey LANG.

And Wine is applying for POSIX certification?  News to me.


 If Wine were to rely on LANG, then all users with mismatched language and
 formats who launch it from Terminal would not get their preferred language.  

 
 This would be compliant with POSIX, and with what GNU gettext does for
 years. No one ever complained about it.

Very, very few Mac users use any program which uses gettext.


 If you as a user want to override the language that Wine displays, you can
 set LC_MESSAGES in your environment rather than LANG.  Setting LC_ALL would
 achieve that, plus override the various other locale categories.  Set LANG
 is the wrong approach, in my opinion.   
 
 According to POSIX, if a user sets
  LC_ALL=foo
 it is equivalent to
  unset LC_ALL; LC_CTYPE=foo LC_MESSAGES=foo LC_NUMERIC=foo LC_TIME=foo ...
 and equivalent to
  unset LC_ALL LC_CTYPE LC_MESSAGES LC_NUMERIC LC_TIME ...; LANG=foo
 Every program should treat these three ways to set the locale in the same way.
 If Wine was to behave differently in the second case than in the third case
 (by ignoring the LANG setting in the third case, as you propose), it would be
 buggy.

Buggy in a sense which completely ignores user expectation.  That's not the 
sense in which I'd use that word.

The vast majority of users of Wine on the Mac will expect what I've proposed 
and be surprised 

Re: RFC: EM_FORMATRANGE Patch for Wine-1.1.33

2009-11-30 Thread James McKenzie
Dan Kegel wrote:
 I can't do a deep review, but I did see that you have some
 commented out code, and IIRC AJ doesn't like that.  Better
 to remove it than comment it out.
   
Point taken.  I still would like to know where to break this up.  I know
that the removal of the todo_wine should be separate from the main patch
body.
 BTW, besides the three apps mentioned in
 http://bugs.winehq.org/show_bug.cgi?id=6254,
 what apps depend on this?
   
I don't know.  I had several apps that did not run under wine-1.1.6 but
do under wine-1.1.7.  I'm looking at this as well as the mismatched size
of the Print Preview for Wordpad/Wordpad.exe.

James McKenzie





dual platform win32/linux malware

2009-11-30 Thread Dan Kegel
The apocalypse approaches:
http://ask.slashdot.org/article.pl?sid=09/12/01/0025213

Perhaps this will drive people towards using totally locked down systems...




Re: [PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread James McKenzie
Ken Thomases wrote:
 On Nov 30, 2009, at 5:31 PM, Bruno Haible wrote:

   
 This means that a POSIX compliant program has to do the following steps in
 order to determine the locale for a certain category of settings.
  1) Inspect the LC_ALL environment variable. If it is set and non-empty,
 use its value.
  2) Otherwise: Inspect the LC_ environment variable that matches the
 specific category. If it is set and non-empty, use its value.
  3) Otherwise: Inspect the LANG environment variable. If it is set and
 non-empty, use its value.
  4) Otherwise: Use the default locale. On MacOS X systems, this means to
 use user preferences that can be retrieved using the
 CFLocaleCopyCurrent, CFPreferencesCopyAppValue functions. Note that
 these settings are similar but not entirely equal to Unix (glibc)
 conventions (e.g. zh-Hans vs. zh_CN), therefore some mapping of
 names has to be done.
 

 By this logic, virtual no end-user program on any given Mac is compliant.

 Gettext and POSIX-compliance is one thing.  The user-desired behavior for Mac 
 programs is another.


   
 This algorithm is used in all programs that rely on GNU gettext and works
 perfectly fine:
  - By default, no LANG or LC_* environment variable is set, hence the
programs obey the user settings.
  - For users of Terminal.app, who set these environment variables, the
programs obey the environment variables.
 

 It is Terminal.app itself which is setting LANG for all shells it creates, by 
 default.  The user is most likely oblivious to this fact.


   
The idea behind most of the MacIntosh 'magic' is that the user is
deliberately oblivous to this.  I just ran the set command in a
terminal.app session, of which I have several running right now, and it
was set to en_US.utf8, which is what I expect because the 'American'
flag is displayed in the top information bar (also called the 'Apple'
bar.)  Gert may want to run the set command in a terminal session and
given what was said, the LANG setting should be en_ZA.utf8, which is
what I expect for South African English.

The Wine project could use this as a default with the Mac, which is not
POSIX compliant.

James McKenzie





Re: [PATCH 4/5] dsound: Add support for OpenAL IDirectSoundCaptureBuffer

2009-11-30 Thread Chris Robinson
Hi.

On Monday 30 November 2009 1:56:20 pm Maarten Lankhorst wrote:
 +if (This-playing)
 +{
 +pos2 = This-format-nSamplesPerSec / 100;
 +pos2 *= This-format-nBlockAlign;
 +pos2 += pos1;
 +if (!This-looping  pos2  This-buf_size)
 +pos2 = 0;
 +else
 +pos2 %= This-buf_size;
 +}

Does non-looping capture let the write position get to This-buf_size? It 
looks like a position of This-buf_size should set the position to 0 too, if 
This-buf_size+1 would.

 +if (format-wFormatTag == WAVE_FORMAT_EXTENSIBLE)
 +{
 +WAVEFORMATEXTENSIBLE *wfe = (WAVEFORMATEXTENSIBLE*)format;
 +if (!IsEqualGUID(wfe-SubFormat,
 KSDATAFORMAT_SUBTYPE_IEEE_FLOAT))
 +return DSERR_BADFORMAT;
 +else if (format-cbSize  sizeof(WAVEFORMATEXTENSIBLE)-
 sizeof(WAVEFORMATEX))
 +return DSERR_INVALIDPARAM;
 +else if (format-cbSize  sizeof(WAVEFORMATEXTENSIBLE)-
 sizeof(WAVEFORMATEX)
 + format-cbSize != sizeof(WAVEFORMATEXTENSIBLE))
 +return DSERR_CONTROLUNAVAIL;
 +}

You should probably check the cbSize before accessing the extended 
information, otherwise it may indicate that there isn't enough space for the 
extended information. Also, is it necessary to reject formats with a higher 
cbSize than needed (IIRC, Wine's tests showed some Windows versions allowed 
it)?

 +buf_format = alGetEnumValue(fmt_str);

Unfortunately, you can't call this function when a context is not set (it'll 
probably work on some systems, but technically shouldn't). And setting a 
context makes no sense for capture. Setting buf_format directly to the enum in 
the switches should be all you need to do.. just make sure to initialize it to 
0 so the check won't use it uninitialized.

 +This-dev = alcCaptureOpenDevice(This-parent-device,
  This-format-nSamplesPerSec, buf_format, This-buf_size);

Note that the buffer size given to OpenAL is in sample frames, not bytes. It's 
not a direct problem here, per se, but it may be an issue if a large size is 
requested (ie, where n samples would work, but n*2 or n*4 won't).




Re: [PATCH] kernel32: Respect the LANG environment variable on Mac OS.

2009-11-30 Thread Ken Thomases
On Nov 30, 2009, at 9:34 PM, James McKenzie wrote:

 This algorithm is used in all programs that rely on GNU gettext and works
 perfectly fine:
 - By default, no LANG or LC_* environment variable is set, hence the
   programs obey the user settings.
 - For users of Terminal.app, who set these environment variables, the
   programs obey the environment variables.
 
 
 It is Terminal.app itself which is setting LANG for all shells it creates, 
 by default.  The user is most likely oblivious to this fact.
 
 
 The idea behind most of the MacIntosh 'magic' is that the user is
 deliberately oblivous to this.

I agree that Wine (well, anything) should meet the user's expectations without 
the user having to even be aware of their expectations.  Unfortunately, 
respecting LANG does not lead to this...

  I just ran the set command in a
 terminal.app session, of which I have several running right now, and it
 was set to en_US.utf8, which is what I expect because the 'American'
 flag is displayed in the top information bar (also called the 'Apple'
 bar.)  Gert may want to run the set command in a terminal session and
 given what was said, the LANG setting should be en_ZA.utf8, which is
 what I expect for South African English.

First, the language and formats have nothing to do with the keyboard layout 
(the U.S. flag in the input menu).

But, more importantly for this discussion, the fact that LANG will be 
appropriate for you and probably Gert does not mean it will be appropriate 
often enough for Wine to rely on.  As I have said, there are many ways in 
which users configure their language and formats settings that will not be 
properly reflected in LANG (and, indeed, cannot be).


 The Wine project could use this as a default with the Mac, which is not
 POSIX compliant.

You are suggesting using a proxy for the real thing rather than the real thing. 
 If we want to maintain the magic, Wine should just use the settings from 
System Preferences directly (via CFLocale, CFNumberFormatter, and 
CFDateFormatter), with an optional way to override them for those rare users 
who want Wine's behavior to deviate from the system's.

LANG doesn't help maintain the magic.  It's a hindrance.

Regards,
Ken





Re: dual platform win32/linux malware

2009-11-30 Thread Sir Gallantmon
On Mon, Nov 30, 2009 at 8:53 PM, Dan Kegel d...@kegel.com wrote:

 The apocalypse approaches:
 http://ask.slashdot.org/article.pl?sid=09/12/01/0025213

 Perhaps this will drive people towards using totally locked down systems...



Or just cause more insanity



Re: Introducing WineTestBot

2009-11-30 Thread Austin English
On Mon, Nov 30, 2009 at 3:21 AM, Paul Vriens paul.vriens.w...@gmail.com wrote:
 On 11/30/2009 10:05 AM, Greg Geldorp wrote:

 Or, for those who like to be buzzword compliant, the Wine Testing Cloud
 Service.

 Inspired by all the talk about testing during WineConf 2009, I set out to
 fill
 a gap in Wine testing. Most of the Wine developers don't have access to a
 battery of Windows machines to run the tests they write/modify on. As a
 result,
 there are quite a few regressions in the tests themselves. The WineTestBot
 provides a whole bunch of Windows machines, ready to accept and run your
 modified tests. In its current state you can submit Windows executables
 (most
 likely cross-compiled on a Linux box) to the bot, which will run it in VMs
 of
 your choice.

 So, how does this work in practice? First, go to
 https://winetestbot.geldorp.nl and click on Register to register an
 account.
 Once your account is approved (you'll receive a notification via email)
 you
 can log in. After log in, the menu in the sidebar changes to include an
 item
 Submit job. This allows you to upload an .exe from your local system to
 the
 bot. You can pick the VMs (Windows versions) you want to run the test on.
 From
 the Home page you can see the status of your job, by clicking on the job
 id
 you get a bit more info about the progress. Once the test is completed,
 the
 stdout generated by the test is retrieved from each VM and made available
 via
 that web page.

 The tests are run on VMware ESX VMs, so it's probably not all that useful
 to
 run sound and DirectDraw tests on them. Also, no Win9x VMs are available.
 I haven't set up 64-bit VMs yet, but those should be easy to add. Before
 each
 test run, the VMs are reset to a clean snapshot, so no cruft from old
 tests
 will be left around. Your test shouldn't take more than 5 minutes, which
 is
 more than the WineTest framework allows anyway.

 For each Windows version, there is a base VM and there can be additional
 VMs too. The idea is that the base VM is running the most up-to-date and
 most often used variation of that Windows version, so running your test on
 the base VMs should give you a good indication on how the test behaves.
 Additionally, you can run your tests on the other variations too. So, for
 example for XP the base VM is XP Professional SP3, but there are
 additional
 VMs like SP2, Media Center Edition, and a non-English version available
 too.
 Obviously, even when you use all available VMs you'll cover a very small
 subset of all possible configurations (most notably you won't test on a
 single physical system) so please do check http://test.winehq.org after
 your
 patch has been accepted to see if you introduced failures on other
 machines.

 The plan for the future is to extend this a bit. Speaking from my own
 experience, I know that programmers like to be as lazy as possible. Which
 means that having to cross-compile your test before you can send it off to
 the
 bot will be seen as a bit of a hurdle. So the next step will be to allow
 you
 to upload the git diff instead of a Windows executable. The bot will apply
 your diff to a git tree and take care of creating the cross-compiled
 Windows
 executable, which it will then run on the Windows VMs. Step 3 will be to
 have
 the bot watch wine-patches for anything that might impact the tests and do
 the
 apply diff/cross-compile/run thing automatically. Obviously I'll be
 looking at
 Dan's patch watcher for this 3rd step.

 Security is a concern, but perhaps more for me than for you :-). I have
 to trust you not to abuse this system. If you want to do something naughty
 please do it on your own machine. There are some safeguards in the system,
 like the timeout. In general, you should not expect any privacy, I do have
 access to the consoles of the VMs and firewall logs. If you want to use
 this
 system for something else than Wine tests, please talk to me first.

 I'd like to thank Paul Vriens who acted as beta tester and made some
 valuable
 suggestions. I welcome feedback so if you have any ideas on how to improve
 this thing further please let me know.

 Ge.




 Let me be the first to thank Ge for this awesome piece of work.

Seconded! On a slightly related note, would it be possible to add a
16-bit display VM? I finally got around to testing wine on a 16-bit
display again, and several things have regressed. It would be good to
test the testsuite on windows in that configuration to see what
happens.

-- 
-Austin




File owner permissions

2009-11-30 Thread Ben Peddell
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

What do you think is the best course of action for setting the owner
permissions on a file:
1. Base the file owner permissions on the DACL permissions of the groups
the file owner is a member of? (My patch or similar)
2. Change the file owner permissions only if they are listed in the
DACL? (Paul Chitescu's patch or similar)
3. Allow the file owner read/write/traverse access (u+rwX) to their own
files by default? (similar to #2)
4. Bypass the file-owner-permissions-cannot-be-overridden issue by
having a third-party trustee (like SYSTEM) own and have full access to
the files.
-BEGIN PGP SIGNATURE-
Version: GnuPG v2.0.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAksUuqAACgkQTHDAI68NsunuQACePqDXjcfvvDXhoEI0rH4WB5Ri
3+YAnjqioPVg9li+Axbo3vUMueqn9phd
=pNiD
-END PGP SIGNATURE-