<?xml version="1.0" ?>
<kc>

<title>Wine Traffic</title>

<author contact="http://www.theshell.com/~vinn">Brian Vincent</author>
<issue num="299" date="25 Nov 2005 00:00:00 -0800" />
<intro> <p>This is the 299th issue of the Wine Weekly News publication.
Its main goal is to not fall behind on WWN issues. It also serves to inform you of what's going on around Wine. Wine is an open source implementation of the Windows API on top of X and Unix.  Think of it as a Windows compatibility layer.  Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available.   You can find more info at <a href="http://www.winehq.org">www.winehq.org</a></p> </intro>
<stats posts="721" size="1289" contrib="137" multiples="93" lastweek="56">

<person posts="36" size="67" who="wino at piments.com" />
<person posts="33" size="33" who="julliard at winehq.org (Alexandre Julliard)" />
<person posts="27" size="37" who="saulius2 at ar.fi.lt (Saulius Krasuckas)" />
<person posts="27" size="69" who="rob at codeweavers.com (Robert Shearman)" />
<person posts="26" size="57" who="oliver_stieber at yahoo.co.uk (Oliver Stieber)" />
<person posts="23" size="36" who="wine-devel at kievinfo.com (Vitaliy Margolen)" />
<person posts="23" size="25" who="dmitry at baikal.ru (Dmitry Timoshkov)" />
<person posts="20" size="22" who="stefandoesinger at gmx.at (Stefan D&#246;singer)" />
<person posts="19" size="24" who="eric.pouech at wanadoo.fr (Eric Pouech)" />
<person posts="18" size="28" who="speeddymon at gmail.com (Dustin Navea)" />
<person posts="17" size="17" who="andi at rhlx01.fht-esslingen.de (Andreas Mohr)" />
<person posts="16" size="17" who="dimi at lattica.com (Dimi Paun)" />
<person posts="13" size="18" who="wine at eternaldusk.com (Evil)" />
<person posts="12" size="19" who="infyquest at gmail.com (Vijay Kiran Kamuju)" />
<person posts="11" size="21" who="mjung at iss.tu-darmstadt.de (Michael Jung)" />
<person posts="11" size="16" who="willie at zeitgeistmedia.net (Willie Sippel)" />
<person posts="11" size="11" who="juan_lang at yahoo.com (Juan Lang)" />
<person posts="10" size="38" who="fenix at club-internet.fr (Raphael)" />
<person posts="10" size="24" who="p.beutner at gmx.net (Peter Beutner)" />
<person posts="10" size="19" who="pebl at math.ku.dk (Peter Berg Larsen)" />
<person posts="10" size="12" who="truiken at gmail.com (James Hawkins)" />
<person posts="10" size="12" who="Paul.Vriens at xs4all.nl (Paul Vriens)" />
<person posts="9" size="19" who="jrliggett at cox.net (James Liggett)" />
<person posts="9" size="19" who="bon at elektron.ikp.physik.tu-darmstadt.de (Uwe Bonnes)" />
<person posts="9" size="16" who="ivg2 at cornell.edu (Ivan Gyurdiev)" />
<person posts="9" size="11" who="molle.bestefich at gmail.com (Molle Bestefich)" />
<person posts="9" size="10" who="lionel.ulmer at free.fr (Lionel Ulmer)" />
<person posts="8" size="22" who="cihan at uq.edu.au (Cihan Altinay)" />
<person posts="8" size="9" who="seorge at gmail.com (seorge)" />
<person posts="8" size="6" who="mike at codeweavers.com (Mike McCormack)" />
<person posts="12" size="13" who="meissner at suse.de (Marcus Meissner)" />
<person posts="7" size="7" who="wine.dev at web.de (Detlef Riekenberg)" />
<person posts="6" size="26" who="reif at earthlink.net (Robert Reif)" />
<person posts="6" size="17" who="markknecht at gmail.com (Mark Knecht)" />
<person posts="6" size="12" who="scott at open-vote.org (Scott Ritchie)" />
<person posts="6" size="10" who="jwhite at codeweavers.com (Jeremy White)" />
<person posts="6" size="9" who="paul.vriens at xs4all.nl (Paul Vriens)" />
<person posts="6" size="7" who="the3dfxdude at gmail.com (Jesse Allen)" />
<person posts="5" size="21" who="a_villacis at palosanto.com (=?ISO-8859-1?Q?Alex_Villac=ED=ADs_Lasso?=)" />
<person posts="5" size="18" who="gladiac.lists at gmail.com (Christian Lachner)" />
<person posts="5" size="6" who="jakob at vmlinux.org (Jakob Eriksson)" />
<person posts="5" size="5" who="wine at electrozaur.com (Boaz Harrosh)" />
<person posts="5" size="4" who="brian.vincent at gmail.com (Brian Vincent)" />
<person posts="5" size="4" who="ivanleo at gmail.com (Ivan Leo Puoti)" />
<person posts="4" size="14" who="geri at aplusnet.hu (=?ISO-8859-2?Q?S=FCt=F5?= Gergely)" />
<person posts="4" size="13" who="jonathan at ernstfamily.ch (Jonathan Ernst)" />
<person posts="4" size="11" who="oldium.pro at seznam.cz (Oldrich Jedlicka)" />
<person posts="4" size="9" who="tyler.nielsen at corniceco.com (Tyler Nielsen)" />
<person posts="4" size="9" who="rwalls at gwi.net (Randall Walls)" />
<person posts="4" size="7" who="sdaswani at boalthall.berkeley.edu (Susheel Daswani)" />
<person posts="4" size="5" who="bobl at optushome.com.au (Robert Lunnon)" />
<person posts="4" size="4" who="daniel.skorka at stud.uni-karlsruhe.de (Daniel)" />
<person posts="4" size="3" who="mike at plan99.net (Mike Hearn)" />
<person posts="4" size="3" who="winehacker at gmail.com (Steven Edwards)" />
<person posts="3" size="21" who="astrand at cendio.se (=?iso-8859-1?Q?Peter_=C5strand?=)" />
<person posts="3" size="17" who="vitaliy at kievinfo.com (Vitaliy Margolen)" />
<person posts="3" size="10" who="frick at sc-networks.de (Christoph Frick)" />
<person posts="3" size="6" who="vberon at mecano.gme.usherb.ca (Vincent B&#233;ron)" />
<person posts="3" size="5" who="n0dalus+wine at gmail.com (n0dalus)" />
<person posts="3" size="5" who="mstefani at redhat.com (Michael Stefaniuc)" />
<person posts="3" size="5" who="dj015 at yahoo.com (Damjan Jovanovic)" />
<person posts="3" size="5" who="jack at itma.pwr.wroc.pl (Jacek Caban)" />
<person posts="3" size="4" who="fgouget at free.fr (Francois Gouget)" />
<person posts="3" size="4" who="wijn at wanadoo.nl (Rein Klazes)" />
<person posts="3" size="3" who="twickline at gmail.com (Tom Wickline)" />
<person posts="3" size="3" who="wowbagger at sktc.net (David D. Hagood)" />
<person posts="3" size="3" who="hverbeet at gmail.com (H. Verbeet)" />
<person posts="3" size="2" who="kuba at mareimbrium.org (Kuba Ober)" />
<person posts="3" size="2" who="lav at etersoft.ru (Vitaly Lipatov)" />
<person posts="2" size="18" who="markus.amsler at oribi.org (Markus Amsler)" />
<person posts="2" size="8" who="arrenlex at msn.com (Arren Lex)" />
<person posts="2" size="8" who="davmac at davmac.org (Davin McCall)" />
<person posts="2" size="6" who="curritoamores at hotmail.com (Curro Amores)" />
<person posts="2" size="5" who="Jonathan at ErnstFamily.ch (Jonathan Ernst)" />
<person posts="2" size="3" who="cihan at uq.edu.au (Mr Cihan ALTINAY)" />
<person posts="2" size="3" who="michael at drueing.de (=?us-ascii?Q?Michael_Druing?=)" />
<person posts="2" size="3" who="tioduke at gmail.com (Sergio)" />
<person posts="2" size="3" who="tony.lambregts at gmail.com (Tony Lambregts)" />
<person posts="2" size="2" who="patrol at sinus.cz (Pavel Troller)" />
<person posts="2" size="2" who="Aric.Cyr at gmail.com (Aric Cyr)" />
<person posts="2" size="2" who="gerald at pfeifer.com (Gerald Pfeifer)" />
<person posts="2" size="2" who="wine at troy.rollo.name (Troy Rollo)" />
<person posts="2" size="2" who="titan.costa at wanadoo.fr (Christian Costa)" />
<person posts="2" size="2" who="zhilla at spymac.com (zhilla)" />
<person posts="2" size="2" who="n0dalus at gmail.com (n0dalus)" />
<person posts="2" size="1" who="stefandoesinger at gmx.at (Stefan D&#246;singer)" />
<person posts="2" size="1" who="marcelotduarte at gmail.com (Marcelo Duarte)" />
<person posts="2" size="1" who="Phil.Lodwick at EFI.COM (Phil Lodwick)" />
<person posts="2" size="1" who="rufoo2001 at yahoo.com (Rufoo)" />
<person posts="2" size="1" who="hallo at michael-kaufmann.ch (Michael Kaufmann)" />
<person posts="2" size="1" who="daniel.r.kegel at gmail.com (Dan Kegel)" />
<person posts="2" size="1" who="jonathan at narrowp.ath.cx (Jonathan Adamczewski)" />
<person posts="1" size="8" who="jmorash at gmail.com (Jim Morash)" />
<person posts="1" size="8" who="lamber45 at cse.msu.edu (David Lee Lambert)" />
<person posts="1" size="7" who="fourie_willem at hotmail.com (Willem Fourie)" />
<person posts="1" size="4" who="guile-listas at hispafuentes.com (=?iso-8859-1?b?RulsaXg=?= Ortega)" />
<person posts="1" size="4" who="sh at sourcecode.de (Stephan Hermann)" />
<person posts="1" size="4" who="charlesa at aditi.com (Charles A)" />
<person posts="1" size="3" who="heiko.nardmann at secunet.com (Nardmann, Heiko)" />
<person posts="1" size="3" who="proski at gnu.org (Pavel Roskin)" />
<person posts="1" size="2" who="quantum_liam at yahoo.co.jp (Liam Kurmos)" />
<person posts="1" size="2" who="jeremy.coleman at schriever.af.mil (Coleman Jeremy D SrA 50 OSS/OSOT1)" />
<person posts="1" size="2" who="mizvekov at gmail.com (Matheus Izvekov)" />
<person posts="1" size="2" who="daniel.stone at ubuntu.com (Daniel Stone)" />
<person posts="1" size="2" who="nicholasniro at gmail.com (Nicholas Niro)" />
<person posts="1" size="2" who="rayjones at gmx.net (Ray Jones)" />
<person posts="1" size="2" who="jwhite at winehq.org (Jeremy White)" />
<person posts="1" size="2" who="dank at kegel.com (Daniel Kegel)" />
<person posts="1" size="2" who="comargo at gmail.com (Cyril Margorin)" />
<person posts="1" size="2" who="syncokdayn at gmail.com (Maris Paupe)" />
<person posts="1" size="1" who="tioduke at gmail.com (Sergio Tridente)" />
<person posts="1" size="1" who="m.goemmel at compulab.de (Markus Gommel" />
<person posts="1" size="1" who="multescugeorge at yahoo.com (george multescu)" />
<person posts="1" size="1" who="belxjander_serechai at yahoo.com.au (Belxjander Serechai)" />
<person posts="1" size="1" who="dank at kegel.com (Dan Kegel)" />
<person posts="1" size="1" who="frank.richter at gmail.com (Frank Richter)" />
<person posts="1" size="1" who="alleykat at gmail.com (Travis Watkins)" />
<person posts="1" size="1" who="kcleung at arcor.de (Kai-Cheung Leung)" />
<person posts="1" size="1" who="shlomif at gmail.com (Shlomi Fish)" />
<person posts="1" size="1" who="fenix at club-internet.fr" />
<person posts="1" size="1" who="burnus at gmx.de (Tobias Burnus)" />
<person posts="1" size="1" who="a.chavasse at gmail.com (Antoine Chavasse)" />
<person posts="1" size="1" who="wine at shadovald.dyndns.org (Aneurin Price)" />
<person posts="1" size="1" who="robbiew at us.ibm.com (Robert Williamson)" />
<person posts="1" size="1" who="dclark at akamail.com (Duane Clark)" />
<person posts="1" size="0" who="gvg at reactos.org (Ge van Geldorp)" />
<person posts="1" size="0" who="xerox_xerox2000 at yahoo.co.uk (L. Lenders)" />
<person posts="1" size="0" who="hijinio at yahoo.com (Hiji)" />
<person posts="1" size="0" who="sergio.t at videotron.ca (Sergio)" />
<person posts="1" size="0" who="wine-patches at reactsoft.com (Thomas Weidenmueller)" />
<person posts="1" size="0" who="hans at it.vu.nl (Hans Leidekker)" />
<person posts="1" size="0" who="pgr at arcelectronicsinc.com (paul)" />
<person posts="1" size="0" who="jadamcze at utas.edu.au (Jonathan Adamczewski)" />
<person posts="1" size="0" who="al_battani at yahoo.com (Yaser)" />

</stats>
<section 
	title="News: Two Releases and Three Reviews"
	subject="News"
	archive="http://www.winehq.com/?announce=1.106"
	posts="5"
>
<topic>News</topic>
<mention>CodeWeavers</mention>
<mention>eweek</mention>
<mention>WineHQ</mention>
<mention>News</mention>
<mention>cvs</mention>

<p>I took a bit of a break since things have been pretty busy, but
we're finally back this week.  There's a lot that's been going on around
Wine and this issue won't do nearly enough justice toward catching up
on that.  

</p><p>
Let's start off by covering the <i>two</i> CVS drops we've had this month.
Keep in mind, these are just drops - I have no idea how it fits in with
the whole beta thing other than the naming scheme seems in line with the
beta release.  First, we had Wine 0.9.1 released on November 9th and  
Alexandre noted the following changes:</p>
<quote who="Alexandre Julliard"><p><ul>
  <li> Support for Find function in regedit.</li>
  <li> Winelib app to eject a CD.</li>
  <li> Many MSI improvements.</li>
  <li> Better support for running text-mode apps without X.</li>
  <li> Improved support for various code obfuscation tools.</li>
  <li> Lots of bug fixes.</li></ul></p></quote>

<p>Less than two weeks later on November 22nd Wine 0.9.2 appeared:</p>
<quote who="Alexandre Julliard"><p>
What's new in this release:<ul>
  <li> Winelib Explorer app (just a wrapper around winefile for now).</li>
  <li> Debugger cleanups and improvements.</li>
  <li> Many wininet fixes.</li>
  <li> Better autogenerated API manpages.</li>
  <li> A bunch of Korean translations.</li>
  <li> Lots of bug fixes.</li></ul></p></quote>

<p>As always, check out the <a href="http://cvs.winehq.com/cvsweb/wine/ChangeLog?rev=1.102&amp;content-type=text/x-cvsweb-markup">ChangeLog</a> for complete
details of what's gone into the releases.  Head over to the 
<a href="http://www.winehq.org/site/download">WineHQ download page</a> to snag 
the latest release. </p>

<p>In other news, Wine was recently reviewed by TuxJournal.net and
<a href="http://www.tuxjournal.net/wine.html">received a 5-star</a> rating.
For those of you who don't speak italian, here's a 
<a href="http://translate.google.com/translate?u=http%3A%2F%2Fwww.tuxjournal.net%2Fwine.html&amp;langpair=it%7Cen&amp;hl=en&amp;ie=UTF-8&amp;oe=UTF-8&amp;prev=%2Flanguage_tools">Google translation</a>.  
They included some technical bits to illustrate using Wine.</p>

<p>Steven J. Vaughan-Nichols 
<a href="http://www.eweek.com/article2/0,1895,1886920,00.asp">reviewed</a> u
CrossOver Office 5 for eWeek and had a lot of positive comments.  Interestingly,
Steven included a link to a CrossOver mailing list post which shows he's
more familiar with the product than just being a casual reviewer.  From his
review:</p>
<quote who="eWeek"><p>
Surprisingly, I found there to be little difference between the applications' 
performance running on Linux with CrossOver Office and on XP. Indeed, I found 
some applications, such as Word 2000, to actually run faster on Linux.
</p><p>
Who knew? </p></quote>

<p>
<a href="http://www.thejemreport.com/mambo/content/view/193/41/">Another 
review</a>, by Jem Matzan, included a nice interview with Jon Parshall.
Jon is the COO of CodeWeavers and does a lot of behind the scenes work
to promote Wine and CrossOver Office.  From that interview:</p>
<quote who="Jem Matzan"><p>
<i>How likely is it that someday all Windows programs will work perfectly through CrossOver Office? </i>
</p><p>
Jon: I think the answer to your question really hinges on the effort level 
behind Wine. Right now, the Wine community and CodeWeavers comprise a 
relatively small group of developers. And while we've managed to achieve a 
minor technological miracle with that limited resource pool, we could continue 
advancing that miracle a whole lot quicker if there were more developers and 
more money behind the effort. With proper backing, I'm convinced that Wine can 
move itself from being a niche technology--something that works brilliantly in 
some cases, but poorly in others--and towards a technology that 1) people 
perceive as being widely and generally useful, and 2) is relatively easily 
fixable from a development standpoint. Not perfect. But broadly accepted and 
easier to improve. That's the goal.
</p></quote>


</section>
<section 
	title="Safedisc Update"
	subject="safedisc"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042661.html"
	posts="1"
>
<topic>Status Updates</topic>
<mention>Rob Shearman</mention>
<mention>Raphael Junqueira</mention>

<p>We've talked about Safedisc for several months now.  Things are starting
to get sorted out, but there's a few projects that need to get sorted out
surrounding it.  Ivan Leo Puoti sent a message to the list this week
about it:</p>
<quote who="Ivan Leo Puoti"><p>
Raphael Junqueira asked on bugzilla what the safedisc status is. Currently it works fine, and I 
believe what we have is more or less ready for CVS. However Vitaliy told me Alexandre didn't like the 
object manager Vitaliy wrote, mostly he didn't like permanent objects, that drivers depend on. I 
haven't talked to Alexandre about this but hopefully some reasonable solution can be found so we can 
get Vitaliy's OM into wineserver (I mean my original implementation that uses pointers as handles 
also works, but things look better with a real OM). So let's try and trigger some community 
discussion, we are talking about the guts of wine after all. Vitaliy, what's the OM status currently? 
Alexandre, what didn't you like about it?
</p></quote>

<p>Vitaliy Margolen replied:</p>
<quote who="Vitaliy Margolen"><p>
Following Alexandre's suggestions I've managed to get OM working without
support for permanent objects. There will be some modification required
for ntoskrnl for that to work. I'm just about finished integrating new OM
into ntoskrnl tree and almost ready to give it a try.
</p><p>
As far as OM goes it's mostly finished and passes all but two of om
tests. Also it don't see any side-affects from it either. All the
programs I've tested work in the same way as they were before. All named
object moved to directories and using RootDirectory part of
OBJECT_ATTRIBUTES for create/open.
</p><p>
Attached is the final revision of the directory object implementation. If
it looks ok I'm ready to send some patches &lt;g&gt;</p></quote> 

<p>The next day the patches he referred to began appearing.  This touches on
some very low-level components of Wine, including wineserver.  Both Alexandre
and Rob Shearman had some ideas for improving the implementation.  It looks
like Vitaliy will need to make at least one more round of changes before
they'll get in.  </p>

<p>Based on
what Ivan said, the next step will be to have the ntoskrnl.exe implementation
be based off the directory objects.  From there, ntoskrnl.exe can go into
Wine and Safedisc will begin loading it's special copy protection driver.
</p>

</section>
<section 
	title="WineD3D and DirectX 7/8"
	subject="D3D7 &amp; WineD3D success"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042566.html"
	posts="16"
>
<topic>DirectX</topic>
<mention>Max</mention>
<mention>Dustin Navea</mention>
<mention>Raphael Junqueira</mention>
<mention>cvs</mention>

<p>Followers of WWN will remember the threads we've covered about the
new WineD3D library that was implemented for Direct3D 9.  The eventual
goal is to shift Direct3D 7 and 8 over to it as well.  Currently that
process seems to be divvied up between Stephan D&#246;singer and 
Oliver Stieber.  Stephan is working on D3D7 and Oliver on D3D8.  Stephan
reported success this week in getting things to render:</p>
<quote who="Stephan Dosinger"><p>

Today I have finally managed to get some useable graphics with D3D7 and
WineD3D. The Tomb Raider 3 Demo is running. :)
</p><p>
The only visible problem I can see are textures: They only have a solid color,
all other things seem to work.  I've uploaded a screenshot to
<a href="http://doesi.gmxhome.de/tomb3-2.png">http://doesi.gmxhome.de/tomb3-2.png</a> , if anyone wants to have a look.
</p><p>
I'll try to fix the textures and get some more games running, then I'll upload
a beta patch somewhere for others to try. (Well, if anyone is interested, I
can mail the current code too).
</p></quote>

<p>He must have kept plugging away at it, because 4 hours later he replied to
himself:</p>
<quote who="Stephan Dosinger"><p>

I have sorted that texture problem out now(Incorrect Loading and the
TEXTUREHANDLE render state was missing), and to my eyes Tomb Raider 3 runs
correct now with WineD3D.
</p><p>
Does anyone know any other games which are running with the old Direct3D 7
implementation? I will give Prince of Persia 3D a try tomorrow, but the last
time I tried it crashed before initialising DDraw.
</p></quote>

<p>Raphael Junqueira had some ideas about other games to try:</p>
<quote who="Raphael Junqueiera"><p>
Many users want wine to play Diablo2, Starcraft, Civ3, Sacrifice, ...
(I don't know if these games use ProcessVertices or Multithreading)
</p><p>
You can see most wanted games  (and how to download demos) here :)
 <a href="http://appdb.winehq.org/votestats.php">
 http://appdb.winehq.org/votestats.php</a>
</p></quote>

<p>Dustin Navea replied and mentioned Starcraft is actually DX5 based.</p>

<p>Over on the D3D8 side of things, Oliver wrote in a few weeks ago about
what he was doing:</p>
<quote who="Oliver Stieber"><p>
I've put together a Direct3D 8 wrapper for wined3d which should hopefully 
replace the current Direct3D 8 code. The patch needs a little bit of tidying, 
some work of vertex declarations and a hell of a lot of testing before it 
can go into Wine. 
</p><p>
So far I've tested Rail Road Tycoon 3, Celebrity Death match, Madden NFL 2004 
all the d3d8 demos from 
<a href="http://www.codesampler.com">http://www.codesampler.com</a>, a few 
more games I can't remember at the moment and everything's seems to be working 
as good as or better than the current Direct3D 8 code.
</p><p>
I would be grateful if anyone with DirectX 8 games or applications that 
currently work or they would like to get working could test the patch and 
report back any errors they come across.
</p><p>
The patch is against Wine cvs 2005-11-05 and can be downloaded from
<a href="https://sourceforge.net/project/shownotes.php?release_id=368929">
https://sourceforge.net/project/shownotes.php?release_id=368929</a> for the 
time being.
</p></quote>

<p>Varying degrees of success, mostly centered around varying degrees of
crashing, were initially reported.  It appears things are beginning to work 
though.  Oliver then followed up this week with:</p>

<quote who="Oliver Stieber"><p>

 I've updated the directX 8 wrapper with a load more bug fixes notably Max 
 Payne 2 now works correctly. For anyone who's interested the update patch is 
 available here:
<a href="https://sourceforge.net/project/shownotes.php?release_id=371929&amp;group_id=134206">
https://sourceforge.net/project/shownotes.php?release_id=371929&amp;group_id=134206</a></p></quote>


</section>
<section 
	title="Wine API Docs"
	subject="Wine API Documentation"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042126.html"
	posts="7"
>
<topic>Documentation</topic>
<mention>WineHQ</mention>
<mention>Microsoft</mention>
<mention>cvs</mention>

<p>Wine has documented the Win32 similar to how Microsoft has done with
MSDN.  While it's definitely a work in progress, it does provide an
alternative source of information for various API's.  Robert Shearman
mentioned WineHQ was out of date regarding it:</p>
<quote who="Robert Shearman"><p>
At the moment we have a very outdated version of the auto-generated
"make htmlpages" Wine API documentation at 
<ul><a href="http://source.winehq.org/WineAPI/">
http://source.winehq.org/WineAPI/</a></ul>
I want to fix this.
</p><p>
I believe that the API documentation is important for a number of reasons:
<ol>
<li> It might provide info to ISVs that might think about porting an app
to Wine as to whether the APIs that they use are implemented or not.</li>
<li> It provides info about undocumented functions.</li>
<li> It provides an alternative source to MSDN in case it becomes
unavailable for whatever reason.</li>
<li> It spreads the word about Wine through high search engine rankings,
making it more likely that someone will stumble upon Wine and start
coding for fun.</li></ol>
</p><p>
It appears that this was previously generated at release time by the
wine_release script (<a href="http://cvs.winehq.org/cvsweb/tools/wine_release">http://cvs.winehq.org/cvsweb/tools/wine_release</a>),
but was disabled over 2 years ago. I was wondering what the reason was,
but I guess it is that it takes a long time to build and a lot of CPU
time. We don't really want the WineHQ web server to be running at 100%
CPU for ~20 minutes while it builds the API documentation.
</p><p>
Therefore I propose that I could send a tarball of the documentation to
Newman every release, every month, or after a major update of the
documentation (whichever is sooner) and he can put it up in the
appropriate location. Alternatively, we could also put the
auto-generated docs in cvs and generate diffs.
</p><p>
Alexandre, any comments about how the release process should work with
regard to the Wine API documentation?
Newman, which method of updating would you prefer?
Any one else have any comments at all about this?
</p></quote>

<p>Everyone was in agreement it should be done, but there was concern
about the load it would generate to make the docs.  Alexandre didn't
think it was a big deal though and added it back into the Wine release
script.  Since we had a release a few weeks ago and again this week, the docs 
are now up to date.
</p>
</section>
<section 
	title="A Destroyed MBR"
	subject="MBR was destroyed"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042537.html"
	posts="36"
>
<topic>Security</topic>
<mention>Dustin Navea</mention>

<p>Don't run Wine as root.  We've mentioned that before, right?  The
corrollary to that rule is don't run Wine as a user who has root-like
access.  A problem was reported a few weeks ago that sparked a large
discussion.  It began with this post:</p>
<quote who="seorge_at_gmail.com"><p>
I've just submitted a bug (3889) about destroyed MBR and Dustin Navea asked me
to subscribe to this list.
Here comes some detailed description:
</p><p>
As a regular user I've launched winecfg as a regular user, then proceeded to
the dist setup. I've tried several options like automatic configuration,
manual configuration. Then I've tried to change some drive letters manually.
After reboot a "PRESS A KEY TO REBOOT" message appeared instead of a GRUB
screen.
Next time I booted with grub-floppy and then restored the MBR with
grub-install /dev/hda.
Please let me know what additional information you need.
It's happend on Slackware 10.2 system, 2.6.14 kernel with ck-3 patches. 
</p></quote>

<p>A bunch of people asked for different output to try to figure out
the exact cause of the problem.  This is what it ended up being.. see
if you can spot the issue:</p>
<quote who="seorge_at_gmail.com"><p><code>
bash-3.00$ ls -l /dev/hda*<br />
brw-rw----  1 root disk 3, 0 2005-11-20 20:33 /dev/hda<br />
brw-rw----  1 root disk 3, 1 2005-11-20 20:33 /dev/hda1<br />
brw-rw----  1 root disk 3, 2 2005-11-20 20:33 /dev/hda2<br />
brw-rw----  1 root disk 3, 3 2005-11-20 20:33 /dev/hda3<br />
brw-rw----  1 root disk 3, 4 2005-11-20 20:33 /dev/hda4<br />
brw-rw----  1 root disk 3, 5 2005-11-20 20:33 /dev/hda5<br />
brw-rw----  1 root disk 3, 6 2005-11-20 20:33 /dev/hda6<br />
<br />
bash-3.00$ groups <br />
users disk lp floppy audio video cdrom scanner

</code></p></quote>

<p>That's right, the user was a member of the <i>disk</i> group and therefore
had access to the raw Linux device.  That prompted a lot of discussion
and at one point Peter Beutner said:</p>
<quote who="Peter Beutner"><p>

This never would have been possible with a normal user account. But if somebody "creates a special user" by extending his rights and putting him into the 
disks group, he should be aware of the implications.  I don't think there is 
a "documentation bug".
</p><p>
Of course that is <i>not</i> an excuse why Wine wants to write to the MBR ;)
</p></quote>

<p>Then it was discovered that simply making some winecfg changes with
a user who had those kinds of permissions would do the damage.  Alexandre
took a stab at what the problem was,
<quote who="Alexandre Julliard">
Yes, changing the label is the most likely culprit. It's supposed to
check for a FAT filesystem first, but maybe the detection is broken.
</quote> </p>

<p>Various folks asked for more info to help debug the problem, but
nothing more was provided.  Instead, Alexandre committed two changes
to CVS that will hopefully prevent Wine (though not an app) from doing 
bad things even when the permissions are set that way:</p>
<quote who="Alexandre Julliard"><p>
	(dlls/kernel/volume.c) Don't try to set the label in the superblock of 
        FAT filesystems, that doesn't do the right thing anyway.
</p></quote>
<p>And in winecfg:</p>
<quote who="Alexandre Julliard"><p>
	Only set label and serial number when they are actually changed.
</p></quote>


</section>
<section 
	title="What Would Most Aid Wine Development?"
	subject="What would most aid WINE development?"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042484.html"
	posts="22"
>
<mention>Microsoft</mention>
<mention>ReactOS</mention>

<p>Susheel Daswani started off a thread that generated a lot of 
response:</p>
<quote who="Susheel Daswani"><p>
My name is Susheel Daswani.  I am a second-year law student at
Berkeley School of Law.  I am also a software engineer - I used to
develop the LimeWire open source Gnutella p2p application.  Nice to
meet everyone.
</p><p>
For my 'Antitrust &amp; IP' course this semester I am writing a brief
about why I think the remedy in the Microsoft antitrust case was
inadequate.  My main recommendation is that the 'applications barrier
to entry' phenomenon (users like OSes with lot of applications,
developers like OSes that users like) need not aid Windows' dominance.
 This is of course familiar thinking to the WINE community - if a *nix
(or any other OS) could effortlessly run every Windows application,
then we wouldn't have a monopolist over in Redmond, or at least we'd
have some fervent competition in the personal desktop OS space.
</p><p>
So my question for the WINE developers is "What materials from
Microsoft would most aid the development of WINE"?  The Windows API is
of course public, so my guess is that isn't a huge bar to creating
WINE.  So what are the bars?  Is it simply the scope of the project?
Is there information that MS could divulge that would greatly aid the
WINE effort?  Would open sourcing part of Windows help?
</p><p>
I plan to use your answers for no other purpose than educating my
professor on what, alas, *could* have been done to help restore
competition to the personal desktop OS market.
</p></quote>

<p>Juan Lang replied first:</p>
<quote who="Juan Lang"><p>

Unfortunately, you guess incorrectly.  While the API may legally be public
(the interface can't be protected, as far as we know,) it isn't always
documented.  MS uses undocumented APIs very, very frequently in its own
products, and I don't just mean in its applications:  parts of its API
depend on other, hidden parts of its API.  Even the parts that are
documented are not documented completely.  For example, many APIs take
32-bit flags parameters, some of whose meanings are documented.  But the
behavior for all possible values is not well-specified, nor are the return
values.  I continue this thread next:
</p><p>
<i>&gt; Is it simply the scope of the project?</i>
</p><p>
This is a large part of the problem.  It's difficult to appreciate just
how large it is.  (There was a presentation about this once, maybe by
David Korn, but I've lost track of it.)  We can only learn the behavior
through experimentation, and so do application developers.  The
application developers depend on undocumented behaviors, so we have to
replicate them, including bugs.  The problem is, there are many more of
application developers (and Windows developers) than there are of us.
</p><p>
Also part of the problem, though I don't think it comes close to scale as
far as its impact, is that our architectures are different.  For example,
the code obfuscation tools (securom, safedisk et al) depend on device
drivers being loaded by ntoskrnl.exe.  This is related to the hidden
assumpmtions problem I described already, but sometimes we have to
implement a large amount of silliness that we didn't anticipate having to
do, or reimplement stuff that was already working for some apps.  ReactOS
can potentially avoid some of these issues, since they're copying much
more of Windows's architecture.
</p></quote>

<p>Dmitry Timoshkov described the bundling problem Microsoft is known
for and gave a specific example:</p>
<quote who="Dmitry Timoshkov"><p>

One of the problems is that microsoft uses a vague term "Operating System
component" for almost everything one might expect to get free access to. This
includes Internet Explorer and its components including upgrades, Windows Media
Player and its components, MDAC, and many other things like MFC which don't exist
in older Windows versions, and which are allowed to download only for "genuine
windows" users. It effectively removes a visible border between an application,
a redistributable component, and the OS itself. Microsoft simply wants to tell
the users that everything it develops is Windows OS, and therefore is illegal
to use on any other platform. It's nonsense to require an OS license to install
an application.
</p><p>
For instance Office 2003 does not install MFC dlls while its components don't
work without MFC. Since Wine doesn't have MFC, and clearly MFC is not an OS
component, and developing MFC is out of the Wine scope, that's a problem.
</p></quote>

<p>Jeremy White agreed with both points:</p>
<quote who="Jeremy White"><p>
That is, the documentation of the API has gotten substantially
better.  However, there is no way for anyone in the
'public' to request a clarification or visibility into this process.
The process is overseen by a committee and they are not responsible
to anyone but the judge.  So, the documentation gets better,
but it happens overnight, invisibly.  We have no way of
knowing that the documenation was improved, and no way of
knowing where further improvements are coming next, and no
way to ask for specific clarifications.
</p><p>
I think Dmitry was quite right in his point as well.
Given that the original lawsuit was over the illegal
use of Internet Explorer, I find it quite bitter indeed
that Microsoft is still able to claim IE as part of the
operating system.  That is, there are a wide range
of applications that will not function without Internet
Explorer.  Their failure is not because of a simple
API that can be replaced with Firefox, but because of
deep interwoven dependencies.
</p><p>
So, to summarize, the punishment to Microsoft for illegally
pushing IE and destroying Netscape is...the continued
use of IE as an monopolistic lever.  Nice.</p></quote>

<p>From there the thread went in different directions.</p>
</section>
<section 
	title="Running Non-Graphical Programs"
	subject="wine command is not working in crontab"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042497.html"
	posts="4"
>
<topic>Fixes</topic>
<mention>Microsoft</mention>

<p>Charles A wanted to know how to go about using Wine on a machine
without X running, specifically running a cron job:</p>
<quote who="Charles A"><p>
   I'm not able to use wine command in crontab it giving following error
<tt>"Error opening terminal: unknown"</tt>
</p><p>
I'm using wine 0.9, i have added following command in crontab
<ul><code>
      20 10 * * * /home/Maven/test.sh
</code></ul>
</p><p>
      In the "test.sh" file has the following wine comments
<ul><code>

      ssdir=/mnt/VSS-DB  &lt; VSS DB mounted folder --&gt;
      path=$path;......<br /><br />

      export ssdir<br />
      export path<br /><br />

      wine "z:/mnt/winsys/Program Files/Microsoft Visual Studio/Common/VSS/win32/ss.exe" Workfold $/xyz/Development/src "z:/mnt/workfold/" -Yarunm,maven<br />

      wine "z:/mnt/winsys/Program Files/Microsoft Visual Studio/Common/VSS/win32/ss.exe" get $/xyz/Development/src -yarunm,maven -R -f
</code></ul>
</p></quote>

<p>Vitaliy Margolen replied that it should just work out of the box
with a new version of Wine:</p>
<quote who="Vitaliy Margolen"><p>

What you need is to upgrade to 0.9.1. It should work, as aforementioned
ttydriver is no more and replaced with nulldriver.</p></quote>

<p>Paul Millar gave a longer solution that would also work for apps
requiring a graphical display but not actually using it:</p>
<quote who="Paul Millar"><p>

OK, so what I suspect is happening is crontab has no DISPLAY variable set, so
wine is defaulting to using the ttydriver.  Unfortunately, crontab
environment isn't attached to any tty, so that fails too with the error
message you see.
</p><p>
What you really want is the nulldriver (which I think Alexandre mentioned once
a while back) but that doesn't exist yet. [<i>ed. note: it does exist</i>]

I'm not sure how to start up a pseudo-tty for your crontab entry.  It should
be possible but I'm not sure if there's standard tools to achieve it.
</p><p>
What I do for WRT is start up a VNC for the duration, then shut it down again.
See script snippets below for some ideas.  This should work for you, but its
something of a hammer to crack a nut.
</p><p>
I used to use Xvfb (from XFree86) as the (virtual) frame-buffer device and
have some scripts to support that.  Unfortunately, that had a nasty habit of
crashing whenever one tried any openGL/glx stuff and the XF86 people weren't
interested in fixing the bugs.
</p><p>

Do something like:
</p><p>
crontab-script.sh:
<ul><code>
 #!/bin/bash<br /><br />

 . /usr/local/share/wine/wine-functions # or wherever<br /><br />

 eval $(startVNC)<br />
 wine some-prog.exe<br />
 eval $(stopVNC)</code></ul>
</p><p>
wine-functions:
<ul><code>

function startVNC()<br />
{<br />
 &#160;res=${XVFB_RESOLUTION:-1600x1200}<br />
 &#160;depth=${XVFB_DEPTH:-16}<br />
 &#160;disp=${XVFB_DISPLAY:-1}<br /><br />

 &#160;$VNCDIR/vncserver :$disp -geometry ${res} -depth $depth<br />
 &#160;echo "export DISPLAY=:${disp};"<br />
 &#160;echo "echo vncserver up and running..."<br />
}<br /><br />

function stopVNC()<br />
{<br />
 &#160;disp=${XVFB_DISPLAY:-1}<br /><br />

 &#160;$VNCDIR/vncserver -kill :$disp<br /><br />

 &#160;echo "unset DISPLAY;"<br />
 &#160;echo "echo vncserver stopped."<br />
}
</code></ul>
</p><p>
Unfortunately, I had to patch vncserver script to stop it from writing to
~/.vnc.  Here's the patch:
<ul><code>
--- /usr/bin/vncserver  Fri Feb 27 09:19:42 2004<br />
+++ VNC/vncserver       Sun Sep 25 21:18:34 2005<br />
@@ -18,6 +18,8 @@
 &#160;#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,<br />
 &#160;#  USA.<br />
 &#160;#<br />
+#  APM - 2005-05-13:  work solely out of WRT directory.  Unfortunately, this<br />
+#                     requires patching this executable<br />

 &#160;#<br />
 &#160;# vncserver - wrapper script to start an X VNC server.<br />
@@ -37,7 +39,7 @@<br />
 &#160;$depth = 24;<br />
 &#160;$desktopName = "X";<br />
 &#160;$vncClasses = "/usr/share/vnc/classes";<br />
-$vncUserDir = "$ENV{HOME}/.vnc";<br />
+$vncUserDir = "$ENV{VNCDIR}" || "$ENV{HOME}/.vnc";<br />
 &#160;$fontPath = "unix/:7100";
</code></ul>
so, running this patched version of vncserver with VNCDIR set somewhere
writable by cron's userid should work.</p></quote>

</section>
<section 
	title="Winemailer/Winebrowser Extension"
	subject="WINEMAILER: a new winelib app"
	archive="http://www.winehq.com/pipermail/wine-patches/2005-November/022290.html"
	posts="4"
>
<topic>Utilities</topic>
<p>Hans Leidekker came up with a little Winelib app in the spirit of
winebrowser to handle sending email:</p>
<quote who="Hans Leidekker"><p>
Modeled after winebrowser. Local testing found that thunderbird
(know as mozilla-thunderbird on Debian-based systems) and evolution
accept a mailto: url on the command line. kmail however has it's
own interface. Any other GUI-based mail client of interest that
handles these urls? Test it like so:
<ul><code>
 $ mua 'mailto:wine-devel at winehq.org?subject=test&amp;body=test'
</code></ul></p><p>
This should bring up a new mail window with To: and Subject:
fields and text body set accordingly.
</p></quote>

<p>Alexandre didn't think it was necessary to have a separate app
just for that,
<quote who="Alexandre Julliard">

I think this could just as well go into winebrowser, it's really a
very similar functionality.
</quote></p>

<p>Hans redid the patch to move the functionality into winebrowser and
it was committed to CVS.  </p>
</section>
<section 
	title="Desktop Summit"
	subject="RFC: Presentation for Desktop Architecture meeting"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042340.html"
	posts="16"
>
<topic>Project Management</topic>
<mention>CodeWeavers</mention>
<mention>ReactOS</mention>
<mention>Dimi Paun</mention>

<p>In about a week in a half there's going to be a conference hosted by
OSDL about desktop integration on Linux.  An invite was sent to wine-devel:</p>
<quote who="Jeremy White"><p>
On December 1-2, OSDL is hosting a meeting for the desktop architects from
the various Linux desktop organizations to help decide on ways to improve
and promote Linux on the Desktop. An electronic copy of the invitation can
be found at the following URL. This contains a full agenda, preparation
info, and logistical info.

</p><p>
<a href="http://groups.osdl.org/apps/group_public/download.php/1522/osdl_invite_L2_P7.pdf">
http://groups.osdl.org/apps/group_public/download.php/1522/osdl_invite_L2_P7.pdf</a>

</p><p>
If anyone from wine is interested in participating, they are encouraging
everyone to register for the meetings. They will be limiting attendance to
45, so they may only be able to accept 2 or 3 from every desktop
organization, but they need your name on the list. A finalized list of
attendees will be sent out afterwards. To register go to the following web
site:
</p><p>
 <a href="http://groups.osdl.org/apps/DTL_Architects_Meeting_Dec2005/register.php">
 http://groups.osdl.org/apps/DTL_Architects_Meeting_Dec2005/register.php</a>
</p></quote>

<p>After some discussion, Jeremy White wrote back to the list that he
was planning on attending.  He asked for input from the Wine community about
things we need help with from other projects.  He posted a prelimary outline
of things he plans on covering:</p>
<quote who="Jeremy White"><p>

Wine Project Overview<br />
Purpose: Implement Windows API for Unix
<ul>
 Wine loader - run Windows Applications<br />
 Winelib - port Windows applications</ul>
Deliverables (the dream)
<ul>
 All PE format files (.exe + .dll) 'just work' with binary loader.<br />
 C/C++ code recompiles and 'just works' with Winelib</ul>
Affiliations
<ul>
 CodeWeavers<br />
 ReactOS project</ul>
</p><p>
Wine Project History
<ul>
 Founded 1993<br />
 Single Maintainer<br />
 797 Contributors over Lifetime, ~40 active<br />
 Alpha Software, limited functionality, through 2005<br />
 First Beta (0.9) released October 2005<br />
 Many things work<br />
 Server interface stable<br />
 Some ABI stability</ul>
</p><p>
Associations With Other Desktop Organizations
<ul>
 Wine is a power user of the kernel, glibc, and x.org<br />
 Have very specific needs around memory, threading, and display control<br />
 We break X more than any other app I know<br />
 We get no respect<br />
 exec shield, glibc threading changes, feels like a constant arms race; be nice if we could be more involved, given time to respond<br />
 Also touch:  OpenGL, ALSA/Jack/ESD/Arts/OSS<br />
 Hurray for Freedesktop.org<br />
 Menu Specifications<br />
 Xembed Protocol</ul>
</p><p>
Gap Analysis In Current Implementations
<ul>
 Missing capabilities<br />
 Many things don't work == a whole lotta bugs<br />
 Developing capabilities<br />
 Most core pieces are there, most things 'should' work<br />
 DirectX coming along nicely<br />
 Sound still needs work<br />
 Many things at 90%+, but still need work<br />
 Top priority development items in plan<br />
 "We have not yet begun to optimize"<br />
 Regression testing<br />
 Driving to 1.0</ul>

</p><p>
Major Plans
<ul>
 6 month plan<br />
 Refine beta releases of 0.9, drive towards 1.0<br />
 2 year plan<br />
 World Domination?</ul></p></quote>

<p>There was a lot of response with specific details on things Jeremy
had outlined.  Dimi Paun added:</p>
<quote who="Dimitrie Paun"><p>

I guess we need to spell out what we need from other projects
to better integrate Win32 apps with the rest of Linux. These
things take time, and we need to bring them on their radar.
</p><p>
Also, if OSDL is willing to put some of their uber-kernel hackers
on Desktop Linux, would be nice if we could come up with a spec
on what needs to be done on the kernel side to speed up Wine.
I know, this has been hashed out to death before, but I guess it
would be interesting to probe and find out their willingness to
help us out on the kernel side of things.</p></quote>

<p>Dmitry Timoshkov wanted a deficiency in X fixed:</p>
<quote who="Dmitry Timoshkov"><p>

How about inability of X server to handle pixmaps larger than
32767 x 32767 and an ugly workaround introduced by the following
patch:
<ul>
<a href="ftp://ftp.x.org/pub/X11R6.8.2/patches/xorg-CAN-2005-2495.patch">
ftp://ftp.x.org/pub/X11R6.8.2/patches/xorg-CAN-2005-2495.patch</a></ul>
</p><p>
This has been discussed under the "Re: Regression: Winrar fails to start"
topic.
</p></quote>

<p>Lionel Ulmer then wrote a long email with other items that fell into
the realm of X:</p>
<quote who="Lionel Ulmer"><p>
OK, here is my wish list from the X.org guys:
<ul>

 <li> relative mouse movement reporting. This is a must-have to have proper
  DInput support without the hacks we currently have in the code. Extension
  already discussed with X people on the mailing lists and they seem OK
  with it. Now we just need to find someone who codes it :-)<br /><br />

  As said, need to check if the XInput stuff could be re-used (last time I
  checked no as you cannot take control with XInput of the 'core' device -
  i.e. the mouse).</li>

 <li> full support for resolution / depth switching. A nice idea was discussed
  the other day on the fd.o lists: what about being able to easily start a
  new display using an X API which would start a new X screen. This screen
  could then be used for full-screen games and would support any requested
  depth / resolution change (the problem with the former - depth change -
  is that clients need to support it and so the 'new screen' idea would
  solve this problem as one could still have legacy X applications running
  on the 'main screen' while still have complete control of depth /
  resolution on this secondary screen).</li></ul>
</p><p>
Then some 'nice to have' which would help in the GL / D3D front but may be
out of FD.O scope (and for which work-arounds are known):
<ul>

 <li> GL (GLX ?) extension which would remove the 'thread-affinity' from GL.
  I.e. a GL context would be at the process level and not at an application
  level. An even better solution would to be able to create 'shareable'
  contexts which another thread could attach to (i.e. remove the one thread
  &lt;=&gt; one context rule).</li>

 <li> GLX extension that would export the 'clip-list' functionnalities of cards
  (or at lest the one which is in the X code itself). Would help on
  applications (like Wine) that do their own in-window clipping.</li>

 <li> same point as before but for Xv the day we will re-add this code for
  accelerated YUV display.</li></ul>
</p><p>
Some 'misc' stuff that is really in the 'we could use it' category:
<ul>

 <li> have 'connection-level' configuration. Basically, if a client X change an
  X setting (resolution, mouse acceleration, ...), as soon as this client
  exits, restore the previous configuration. Would be useful to prevent
  having people restarting X because Wine crashed after having changed the
  resolution using XRand.</li>

 <li> have a non-connection limited mouse-grab. To explain better, this would
  enable one to grab the pointer into a window (i.e. the mouse would never
  leave this window) while still sending events to all connections and not
  only to the connection which started the grab. This could be nice to
  simulate 'full-screen desktop mode' or for DXGrab. No idea if with Wine's
  current event model this is still usefull though.</li></ul>
</p><p>
Another 'let's dream' possibilities:
<ul>

 <li> direct frame buffer access :-)</li></ul>
</p><p>
And finally, not in my domain, but investigate re-using something from FD.O
for the fabled DIB engine (extensions to Cairo, ...) ?</p></quote>
</section>
<section 
	title="Starting Without WinMain"
	subject="Question about contents of STARTUPINFO structure and non WinMain entry points"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042086.html"
	posts="7"
>
<p>James Liggett went through an interesting little exercise last week.  
It goes to show if there's multiple ways of doing something that a 
sufficiently large enough programmer population will eventually try to find 
all of them:</p> 

<quote who="James Liggett"><p>
First, apologies for the length. It's quite a complex issue:
</p><p>
A few days ago someone sent to the list asking why a program he'd
written on WinXP runs under WineDbg but not under plain wine. Over the
weekend I debugged the program and found out that his program doesn't
use the standard WinMain entrypoint function. As such, he was using
GetStartupInfo to get startup flags. He uses the wShowWindow flag to
control the showing of the program's main window. Trouble is, this value
is zero unless the program is started as a child process using
CreateProcess, given a STARTUPINFO with wShowWindow set to something
other than 0 (usually SW_SHOWNORMAL or SW_SHOW.) So my question is, how
does the information in STARTUPINFO get set initially? I looked through
the code for winecrt0 and found that before WinMain is called, the
wShowWindow flag is set to SW_SHOWNORMAL. But because this program does
not use WinMain, this value doesn't get set. However, the program works
fine on native Windows XP. I looked at ntdll and kernel32 dll code, but
I'm not sure I'm looking in the right place. Can someone give me some
hints as to how to attack this problem?</p></quote>

<p>Eric Pouech had a quick tip,
<quote who="Eric Pouech">
You likely have to fix dlls/ntdll/thread.c (in thread_init) so that the 
RTL_USER_PROCESS_PARAMETERS has the correct flag set (or alternatively, in 
dlls/kernel/process.c, in for example build_initial_environment).
Note that winecrt0 is only used for winelib apps, so it's not used in case of 
windows native program.</quote></p>

<p>James replied,
<quote who="James Liggett">
I tried modifying the RTL_USER_PROCESS_PARAMATERS settings after
creation in dlls/ntdll/thread.c (in thread_init, right after the
structure is allocated,) but that didn't work. So I put the change in
dlls/kernel/process.c, at the end of build_initial_environment, and that
worked. But it seems a little out of place there. Do you think such a
change stands a chance of getting into CVS?  
</quote></p>

<p>Eric must have thought about it a bit because he followed up a few days
later with a one-liner that fixed the problem.  </p>

</section>
<section 
	title="VB Apps &amp; OLEAUT32"
	subject="Time to get serious about supporting VB database apps?"
	archive="http://www.winehq.com/pipermail/wine-devel/2005-November/042411.html"
	posts="2"
>
<mention>Roderick Colenbrander</mention>

<p>Dan Kegel has been putting a lot of time into coaxing apps to run.
This week he took on Visual Basic apps and wanted to know where the
monsters lurked:</p>
<quote who="Dan Kegel"><p>
What would it take to really support MS database client apps
in Wine?  The situation is not copacetic; everywhere you
turn, it's easy to find enough problems to stop the average VB
database app.
</p><p>
I tried installing a real world small government app.
It used VBSQL.OCX, and required a file from
the SQL 7.0 Client redistributables.
Here's the script I used to install it (yikes):
http://www.kegel.com/wine/initvbapp.sh.txt
I lost touch with the guy who needed this app,
presumably he gave up because it was so hard to install under Wine.
Here are all the bugs related to mdac installation:
<a href="http://bugs.winehq.org/buglist.cgi?product=Wine&amp;long_desc_type=substring&amp;long_desc=mdac_typ">
http://bugs.winehq.org/buglist.cgi?product=Wine&amp;long_desc_type=substring&amp;long_desc=mdac_typ</a>
</p><p>
Another VB database app installed (after some effort),
but failed with an "automation error".
<a href="http://bugs.winehq.org/buglist.cgi?long_desc_type=substring&amp;long_desc=automation+error">
http://bugs.winehq.org/buglist.cgi?long_desc_type=substring&amp;long_desc=automation+error</a>
</p><p>
Other VB apps use "dbgrid32", and a small sample app that
uses that currently fails.  See
<a href="http://bugs.winehq.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=dbgrid32.ocx">
http://bugs.winehq.org/buglist.cgi?short_desc_type=allwordssubstr&amp;short_desc=dbgrid32.ocx</a>
</p><p>
Perhaps it's time to create an open source torture test in VB 6 that
exhibits as many of these problems as possible, and
use that as a regression test in Wine.
</p><p>
Anyone willing/able to take that on?  Roderick Colenbrander
wrote the DBGRID32.OCX test; perhaps he'd be willing to
write an expanded set of tests?
</p></quote>

<p>Michael Stefaniuc, who worked on Wine's OLEAUT32.DLL over the summer
explained what some of the likely problems were:</p>
<quote who="Michael Stefaniuc"><p>

I do not know what special needs the VB database apps have but for sure 
they need a good oleaut32.dll. At least the variant arithmetic functions 
aren't good enough for your requirements. With good enough I mean is 
that they do not handle all the input variants that native oleaut32 are 
handling. That isn't hard to implement but requires a lot of tests as 
this functions are very poorly documented and are designed specificaly 
to support only the variants they get passed down by the VB runtime. 
Good examples of such tests and implementation are VarMul, VarAdd and 
1-2 other functions (from which I adapted the tests for VarMul and 
VarAdd). A sign for a not "fully" implemented variant arithmetic 
function is a fixme which says something like "VarXxx partial 
implementation, doesn't support vt ..." (if you get this it is the 
source of the automation error you more than probably got too) or if the 
function returns E_FAIL. From my experience so far with variant 
arithmetic functions those return in the native oleaut32 
DISP_E_BADVARTYPE or DISP_E_TYPEMISMATCH.
</p><p>
Automation errors are of different kinds: easy to fix and hard to fix. 
#2480 would be an easier one to fix: The problem is in the VarCmp 
(variant arithmetic) function and the function would need to be changed 
to accept that combination of variant types the fixme is complaining 
about. No need to do it here as I resumed my work on VarCmp to make it 
accept the same input variants as native function in WinXP does.
#1713 is a hard to fix bug as the OLE object functionality isn't 
implemented yet for richedit. Nor will it be according to the last 
comment in the bug report.
</p></quote>

<p>With regard to Dan's idea about a VB torture test, Michael didn't
think it was needed to uncover problems with oleaut32.  Wine's own
test suite worked just fine for that.</p>

</section></kc>
