<kc version="0.1.0">

<title>Wine Traffic</title>

<author contact="mailto:vinn@theshell.com">Brian Vincent</author>

<issue num="137" date="26 Sep 2002 23:00:00 -0800" />

<intro>

<p>This is the 137th release of the Wine's kernel cousin publication. It's
main goal is to distribute widely what's going on around Wine (the Un*x 
windows emulator).</p>
</intro>



<stats posts="188" size="556" contrib="61" multiples="31" lastweek="24">

<person posts="19" size="58" who="Dimitrie O. Paun &lt;dpaun@rogers.com&gt;" />
<person posts="15" size="56" who="Martin Wilck &lt;Martin.Wilck@Fujitsu-Siemens.com&gt;" />
<person posts="12" size="30" who="Alexandre Julliard &lt;julliard@winehq.com&gt;" />
<person posts="10" size="41" who="Steven Edwards &lt;Steven_Ed4153@yahoo.com&gt;" />
<person posts="8" size="18" who="Francois Gouget &lt;fgouget@free.fr&gt;" />
<person posts="7" size="19" who="Bill Medland &lt;billmedland@look.ca&gt;" />
<person posts="7" size="15" who="Lionel Ulmer &lt;lionel.ulmer@free.fr&gt;" />
<person posts="6" size="15" who="Andriy Palamarchuk &lt;apa3a@yahoo.com&gt;" />
<person posts="10" size="20" who="Eric Pouech &lt;eric.pouech@wanadoo.fr&gt;" />
<person posts="5" size="15" who="Thomas Wickline &lt;twickline2@triad.rr.com&gt;" />
<person posts="5" size="15" who="Michael Stefaniuc &lt;mstefani@redhat.de&gt;" />
<person posts="4" size="15" who="Greg Turner &lt;gmturner007@ameritech.net&gt;" />
<person posts="4" size="13" who="steve.lustbader@philips.com" />
<person posts="4" size="11" who="Dmitry Timoshkov &lt;dmitry@baikal.ru&gt;" />
<person posts="4" size="10" who="Rein Klazes &lt;rklazes@xs4all.nl&gt;" />
<person posts="4" size="10" who="Fabian Cenedese &lt;Cenedese@indel.ch&gt;" />
<person posts="3" size="8" who="Yong Chi &lt;yong28chi@yahoo.com&gt;" />
<person posts="3" size="8" who="Chris Morgan &lt;cmorgan@alum.wpi.edu&gt;" />
<person posts="3" size="8" who="Mason Kidd &lt;mrkidd@nettaxi.com&gt;" />
<person posts="3" size="6" who="Luke Howard &lt;lukeh@PADL.COM&gt;" />
<person posts="3" size="6" who="&lt;chrismorgan@rcn.com&gt;" />
<person posts="3" size="6" who="Sylvain Petreolle &lt;spetreolle@yahoo.fr&gt;" />
<person posts="2" size="11" who="Steve Langasek &lt;vorlon@dodds.net&gt;" />
<person posts="2" size="7" who="Jon &lt;jon_p_griffiths@yahoo.com&gt;" />
<person posts="2" size="6" who="tom &lt;twickline2@triad.rr.com&gt;" />
<person posts="2" size="6" who="Joerg Mayer &lt;jmayer@loplof.de&gt;" />
<person posts="2" size="5" who="Ove Kaaven &lt;ovehk@ping.uio.no&gt;" />
<person posts="2" size="5" who="Rafal Szczesniak &lt;mimir@diament.ists.pwr.wroc.pl&gt;" />
<person posts="2" size="4" who="Sean Young &lt;sean@mess.org&gt;" />
<person posts="2" size="4" who="Per Wigren &lt;wigren@home.se&gt;" />
<person posts="1" size="8" who="Patrick J. McNerthney &lt;pat@mcnerthney.com&gt;" />
<person posts="1" size="6" who="John Coppens &lt;jcoppens@usa.net&gt;" />
<person posts="1" size="5" who="Simo Sorce &lt;simo.sorce@xsec.it&gt;" />
<person posts="1" size="4" who="Shachar Shemesh &lt;fribidi-discuss@sun.consumer.org.il&gt;" />
<person posts="1" size="3" who="Rolf Kalbermatter &lt;r.kalbermatter@hccnet.nl&gt;" />
<person posts="1" size="3" who="Andrew Bartlett &lt;abartlet@samba.org&gt;" />
<person posts="1" size="3" who="Rick Romero &lt;rick@valeoinc.com&gt;" />
<person posts="1" size="3" who="Guy L. Albertelli &lt;galberte@neo.lrun.com&gt;" />
<person posts="1" size="3" who="Vincent Beron &lt;vberon@mecano.gme.usherb.ca&gt;" />
<person posts="1" size="3" who="Patrik Stridvall &lt;ps@leissner.se&gt;" />
<person posts="1" size="2" who="Richard Sharpe &lt;rsharpe@ns.aus.com&gt;" />
<person posts="1" size="2" who="Paul Rupe &lt;prupe@myrealbox.com&gt;" />
<person posts="1" size="2" who="Bobby Bingham &lt;uhmmmm@ameritech.net&gt;" />
<person posts="1" size="2" who="Ann and Jason Edmeades &lt;us@the-edmeades.demon.co.uk&gt;" />
<person posts="1" size="2" who="Tom Hibbert &lt;cartel@cryptocracy.hn.org&gt;" />
<person posts="1" size="2" who="Tim Potter &lt;tpot@samba.org&gt;" />
<person posts="1" size="2" who="Shachar Shemesh &lt;wine-devel@sun.consumer.org.il&gt;" />
<person posts="1" size="2" who="Rizsanyi Zsolt &lt;rizsanyi@myrealbox.com&gt;" />
<person posts="1" size="2" who="Raul Dias &lt;chaos@swi.com.br&gt;" />
<person posts="1" size="2" who="Uwe Bonnes &lt;bon@elektron.ikp.physik.tu-darmstadt.de&gt;" />
<person posts="1" size="2" who="Andreas Schuldei &lt;andreas@schuldei.org&gt;" />
<person posts="1" size="2" who="jra@dp.samba.org" />
<person posts="1" size="2" who="Jeff Smith &lt;whydoubt@hotmail.com&gt;" />
<person posts="1" size="2" who="David D. Hagood &lt;wowbagger@sktc.net&gt;" />
<person posts="1" size="2" who="Jeremy Newman &lt;jnewman@codeweavers.com&gt;" />
<person posts="1" size="1" who="Juergen Schmied &lt;juergen.schmied@debitel.net&gt;" />
<person posts="1" size="1" who="T'aZ &lt;tazdev@altern.org&gt;" />
<person posts="1" size="1" who="Gustavo Junior Alves &lt;alves@coslinux.com.br&gt;" />
<person posts="1" size="1" who="Brian Vincent &lt;vinn@theshell.com&gt;" />

</stats>


<section 
	title="News: Wine Status Update" 
	subject="News"
	archive="http://www.winehq.com/about/index.php?status" 
	posts="1" 
	startdate="20 Sep 2002 23:00:00 -0800"
	enddate="26 Sep 2002 23:00:00 -0800" 
>
<topic>News</topic>
<mention></mention>
<mention>News</mention>
<mention>Thomas Wickline</mention>

<p>Thomas Wickline spent some time recently updating the 
<a href="http://www.winehq.com/about/index.php?status">Wine
Status</a> page.  Previous to this, it had been about a
year since it had been updated.  It's nice to see green
overtaking red.  Look for more updates soon, there's still
a lot of things on the page that need correcting.</p>

</section>








<section 
	title="MS Write Support (con't)" 
	subject="notepad vs write"
	archive="http://www.winehq.com/hypermail/wine-devel/2002/09/0473.html" 
	posts="3" 
	startdate="19 Sep 2002 23:00:00 -0800"
	enddate="20 Sep 2002 23:00:00 -0800" 
>
<topic>Fixes</topic>
<mention>Jason Edmeades</mention>
<mention></mention>

<p>Back in June there was a thread 
 <kcref subject="notepad vs write" startdate="15 Jun 2002 23:00:00 -0800" /> about
supporting RTF documents and MS Write.  Jason Edmeades had an application that
expected to find Write in order to view a document.  The current built-in notepad
with Wine does not handle RTF documents.  Dmitry Timshokov suggested having notepad
support RTF documents by feeding them to a RichEdit control and then have write be a 
symlink to notepad.  </p>

<p>Sean Young has done some work and posted the following message:</p>
<quote who="Sean Young"><p>
I've written a .wri to RTF converter, which is available here:
<ul>
	<a href="http://www.msxnet.org/word2rtf/write.c">http://www.msxnet.org/word2rtf/write.c</a>
</ul></p>
<p>
It should be almost complete. The output is almost the same as the microsoft
converter (including bugs, if desired).
</p><p>
Now I have enough information to write write32.cnv, but is there any
need for this?
</p></quote>

<p>The initial license was under GPL, but Sean relicensed it as LGPL and added
a note in Bugzilla on where to find the code.</p>




</section>






<section 
	title="Proposal for Developer CVS Tree" 
	subject="[Controversial] Developper only CVS sandbox"
	archive="http://www.winehq.com/hypermail/wine-devel/2002/09/0592.html" 
	posts="14" 
	startdate="24 Sep 2002 23:00:00 -0800"
	enddate="25 Sep 2002 23:00:00 -0800" 
>
<topic>Project Management</topic><mention></mention>
<mention>Patrik Stridvall</mention>

<p>
Lately there's been some patches coming through
reorganizing and cleaning up parts of Wine.  Some
are common sense, others are more controversial.
Not to feel left out, Lionel Ulmer wanted to get
feedback for an idea:</p>
<quote who="Lionel Ulmer"><p>
 As Dimi is not the only one that can start flames on wine-devel, let's start
 a new one :-)
</p><p>
 When I see the work that is starting to go on on D3D8 or even on my old D3D
 code, I think that it would be nice if there was some CVS 'sandbox' where
 Wine developper could interact on shared code without going the Alexandre
 round-trip. This would be much less painful than sending patches back and
 forth between developpers.
</p><p>
 This sandbox would be closed (ie it would be a developper only Wine tree) to
 NOT start another Wine fork and all development on this sandbox would be
 merged back in Wine when they are ready (and then would still go the
 Alexandre way of course).
</p><p>
 Now, what does the Wine community think about this ? If people agree, what
 would be the best way to handle this ?
</p></quote>

<p>Patrik Stridvall thought he should just do it and then tell
everyone where the CVS tree was.  But Lionel said he didn't have
enough bandwidth to support it himself.  He didn't want to use
SourceForge because he wouldn't be able to restrict access to it
(Lionel didn't want people who weren't developers poking around
and complaining it was broke.)  Not to mention the fact he hates
CVS.  Dimi Paun liked the idea of Alexandre just being able to
pull things from a different CVS tree to do commits.  And as far
as Alexandre was concerned, he didn't object to the idea but wasn't
sure it would be useful:</p>
<quote who="Alexandre Julliard"><p>
Well, I don't think it would make much difference for me, so I don't
really care either way (as long as you don't start sending me URLs
instead of patches...)
</p><p>
I'm not convinced that it would really help all that much though; CVS
is not good at managing parallel lines of development, and the extra
work needed to maintain that tree probably offsets the gains in
sharing patches. In fact it's probably easier for developers who need
to share code to each maintain a local CVS tree on their machine and
use that to generate incremental diffs. At least this way there's no
need to setup a server, manage user accounts, etc.
</p><p>
Of course the real solution would be to switch to a source control
system with better support for parallel branches of development. Now
*that* should be a good flamewar topic &lt;g&gt;
</p></quote>

<p>We'll see if anyone volunteers to set this up and maintain it.</p>

</section>







<section 
	title="Updating Developer Info" 
	subject="Call to update the 'Who's Who' page"
	archive="http://www.winehq.com/hypermail/wine-devel/2002/09/0469.html" 
	posts="1" 
	startdate="19 Sep 2002 23:00:00 -0800"
	enddate="19 Sep 2002 23:00:00 -0800" 
>
<topic>Documentation</topic>
<mention></mention>

<p>Jeremy Newman put out a call to update some of the info
on <a href="http://www.winehq.com">WineHQ</a>:</p>
<quote who="Jeremy Newman"><p>
 It's time to update the Wine 
 <a href ="http://www.winehq.com/about/index.php?who">Who's Who</a> page.
</p><p>
 I need all current developers to send me their info for this page. It is
 optional to be listed here of course. If you are on the list now and do
 not wish be be listed let me know. I'll also take anyone's suggestions
 on how to improve this page.
</p><p>
 Optional info I'd like from everyone.
</p><p>
 Your name, e-mail, home page url, location, role, and bio.
</p></quote>



</section>










<section 
	title="CreateProcessA() and Environment Settings" 
	subject="another MZ_Exec() problem..."
	archive="http://www.winehq.com/hypermail/wine-devel/2002/09/0553.html" 
	posts="14" 
	startdate="23 Sep 2002 23:00:00 -0800"
	enddate="24 Sep 2002 23:00:00 -0800" 
>
<topic>Fixes</topic>
<mention></mention>
<mention>Ove K&#229;ven</mention>
<mention>Eric Pouech</mention>

<p>
 Chris Morgan was having some problems with one DOS app spawning
 another.  The first problem was just getting MZ_Exec() to 
 run a PE executable.  So he 
 <a href="http://www.winehq.com/hypermail/wine-devel/2002/09/0495.html">posted</a> a small patch to
 check if program being called is PE, and if so to call <code>CreateProcess</code>
 to handle it.  But, Chris needed to pass some info around and first thought
 he could do it through the commandline.  He seemed to run into a
 problem and wondered why:</p>
<quote who="Chris Morgan"><p>
 I have a script that passes a long argument string when calling a command 
 handler(command.com or other comspec replacement).  This code inside of 
 <code>MZ_FillPSP()</code>
 <ul><code>

	if(length &gt; 126) {<br />
  		ERR("Command line truncated! (length %d &gt; maximum length 126)\n", length;<br />
  	length = 126;<br />
	}
 </code></ul>
</p>
<p>
 is breaking my application by truncating the 200+ character argument at 
 126 characters.  Do we still need to truncate at 126?  Afaict having more 
 than 126 characters may exceed some command.com default.  Can someone 
 shed more light on the historical reasons behind this code and whether 
 more intelligent truncation can be performed?
</p></quote>

<p>Ove K&#229;ven gave the reason for the boundary:</p>
<quote who="Ove Kaaven"><p>
 Yes, it's an intrinsic DOS limitation from the early DOS days. The PSP is
 a fixed-length structure of 256 bytes, half of which is reserved for the
 command line; the layout of it is the same as the PDB16 structure (which
 is the Win16 version of the PSP) in include/task.h. There's no way to fit
 a longer command line into it; even trying to make the PSP larger won't
 help for long since the first byte is the command-line length, so it can't
 be made longer than 255 characters this way anyway. So apps that need
 unlimited command lines must use a different protocol to pass them. One
 way could be to use environment variables - for example, I've noticed
 before that NT's cmd.exe puts the last command line in the "_" environment
 variable when invoking apps, so I can imagine that apps that take
 advantage of this look something like
 <ul><code>
	cmd = dos_cmdline();
	env_cmd = getenv("_");
	if (strncmp(cmd, env_cmd, strlen(env_cmd)) == 0) cmd = env_cmd;
	main(cmd);
 </code></ul></p><p>

 This is only a guess, though, I don't know to what extent something like
 this is supported by DOS or Windows itself, nor what protocol they really
 use.
</p></quote>

<p>Francois added, 
<quote who="Francois Gouget">
 Note that this limitation should only be in effect when calling Dos
 applications. Win32 console applications can receive command lines of up
 to 32KB on NT and any size on Win9x. So maybe the problem is that you
 are using command.com as the COMSPEC. Does this happen with wcmd.exe (or
 the native cmd.exe)?</quote></p>

<p>Chris wasn't using command.com, but seemed to be using something 
similar.  





Next, Chris thought he'd use environment variables,
<quote who="Chris Morgan">
 Inside of MZ_Exec() I call out to CreateProcessA() if the executable
 is PE.  I've set the lpEnvironment parameter of CreateProcessA() to
 null to have it inherit the environment of the caller but this isn't
 working correctly.  The path and other environment variables aren't
 being inherited.  Ideas on how to either get CreateProcessA() to
 inherit properly or where I can find the environment settings?  I
 noticed the env_ptr in the parmeter block but I'm unsure if this is
 what I'm looking for or where to find more information about it.
</quote></p>

<p>Eric Pouech mentioned it was currently broken, Ove K@aring;ven
explained:</p>
<quote who="Ove Kaaven"><p>
In the same fashion that MZ_Exec() extract the command line from the PSP
with
<ul>
 <code>LPBYTE cmdline = PTR_REAL_TO_LIN(SELECTOROF(blk->cmdline),OFFSETOF(blk->cmdline));</code>
</ul>
you can get the environment block from the EXEC parameter block with
<ul>
 <code>LPBYTE envblock = PTR_REAL_TO_LIN(blk->envseg,0);</code>
</ul>
(this is currently ignored by MZ_Exec, which is a bug, it should really be
passed to MZ_DoLoadImage and be used as "oldenv")
</p><p>
or, if desired, you can grab the current environment block from the
current PSP (which is currently what MZ_DoLoadImage does) with
<ul><code>
 PDB16 *psp = psp_start;<br />
 LPBYTE envblock = PTR_REAL_TO_LIN(psp->environment,0);</code>
</ul></p><p>
 The format of the environment block should be the same as that returned by
 GetEnvironmentStringsA(), so you can probably pass this pointer straight
 to CreateProcessA(). (Letting CreateProcessA() just inherit from its idea
 of the parent process doesn't work since its idea of the parent would be
 the Wine process that runs the DOS VM, not the DOS app currently running
 inside.)
</p></quote>

</section>









<section 
	title="Programming with Wine and COM" 
	subject="how to declare COM class?"
	archive="http://www.winehq.com/hypermail/wine-devel/2002/09/0533.html" 
	posts="5" 
	startdate="22 Sep 2002 23:00:00 -0800"
	enddate="24 Sep 2002 23:00:00 -0800" 
>
<topic>Winelib</topic>
<mention>J&#252;rgen Schmied</mention>
<mention></mention>

<p>Yong Chi asked:</p>
<quote who="Yong Chi"><p>
Hello!  I am one of those lurkers who finally decide to write code after 
many attempts.
</p><p>
I declared a COM class best I can from looking at other COM class but I 
am getting syntax errors.  I could not find any guide/manual on COM 
development.
</p><p>
Can someone help or point to a guide on COM development?
</p></quote>

<p>It was unclear whether he meant COM in general or specifically how 
Wine implements the interfaces.  For general COM programming, Lionel
Ulmer suggested a Microsoft resource, 
<quote who="Lionel Ulmer">
 the nicest introduction I found about it is
 this URL '
 <a href="http://www.microsoft.com/Com/news/drgui.asp">
 http://www.microsoft.com/Com/news/drgui.asp</a>'.</quote></p>

<p>J&#252;rgen Schmied pointed out that Wine implements COM objects
in pure C, so a guide might not be too helpful.   However, the
URL Lionel gave does talk about that, he explained,
<quote who="Lionel Ulmer">
 in the Dr GUI URL I sent yesterday, there are some examples of C COM
 objects (and a link to Inside OLE where there is some actual C code for a
 COM object). As for 'Inside OLE' one can find it in .PS form on the web
 using Google :-)</quote></p>

<p>Francois Gouget said the best Wine-related resource was to simply 
<quote who="Francois Gouget"> read the comments in '
 <a href="http://cvs.winehq.com/cvsweb/wine/include/wine/obj_base.h?rev=1.47&amp;content-type=text/x-cvsweb-markup">include/wine/obj_base.h</a>'.
</quote></p>

</section>

</kc>

