WWN #93 - #96

Brian Vincent vinn at theshell.com
Mon Jun 9 00:31:26 CDT 2003

In the beginning WWN relied on a custom markup language that
was generated into HTML.  Eric did strange and mystical things
to post WWN issues.  Then, Zack decreed all issues on his web 
site would be written in XML.  But the XML was evil and horribly 
malformed.  The tools were primitive and I was ignorant.  It was 
decided that the entire backend of the Kernel Traffic site would 
be redesigned. All was good.

(With the exception of the fact I had to manually edit about 100
back issues of WWN to make them XML compliant.)

The correct markup is now:

<?xml version="1.0" ?>

I doubt Zack or Jeremy's parsers would care if you threw in some
extra attributes on the kc tag.  Strangely enough, the scripts I
use to generate issues seem to have reverted to an older version
of this.. hm.. I should fix that.

I suppose those early issues of WWN should be preserved, so here
they are in all their ugliness.  I'm fairly certain I had no idea
what I was writing about when I created them.  (I think 92 was the
first issue I did.)

If anyone is bored I'm sure there's a lot of hyperlinks that could
be fixed in old issues.  I considered doing it, but decided it's not 
worth the time.


-------------- next part --------------
<?xml version="1.0" ?>


<title>Wine Traffic</title>

<author contact="mailto:brianv at REMOVETHIS.ski-copper.com" date="29 Apr 2001 00:00:00 -0800" />


<p>This is the 93rd release of the Wine's kernel cousin publication. It's
main goal is to distribute widely what's going on around Wine (a port of
the Windows API to Unix-based operating systems).</p>

<p>I'm currently having major ISP problems.  If you've sent me an
email in the last few weeks I haven't gotten it.  As a result I've 
changed the address above to one that will work, however it's not a
permanent solution for me.</p>


<stats posts="58" size="159" contrib="27" multiples="13" lastweek="12">

<person posts="5" size="14" who="Francois Gouget &lt;fgouget&gt;" />
<person posts="5" size="13" who="lawson_whitney" />
<person posts="5" size="12" who="Andreas Mohr &lt;a.mohr&gt;" />
<person posts="5" size="11" who="eric pouech &lt;eric.pouech&gt;" />
<person posts="4" size="12" who="Mike Bond &lt;mbond.com&gt;" />
<person posts="4" size="17" who="Dan Engel &lt;dengel&gt;" />
<person posts="3" size="8" who="Dmitry Timoshkov &lt;dmitry&gt;" />
<person posts="4" size="9" who="gerard patel &lt;gerard.patel&gt;" />
<person posts="3" size="6" who="Alexandre Julliard &lt;julliard&gt;" />
<person posts="2" size="10" who="Marcus Meissner &lt;marcus.de&gt;" />
<person posts="2" size="5" who="Jeremy White &lt;jwhite&gt;" />
<person posts="2" size="4" who="Uwe Bonnes &lt;bon.physik.tu-darmstadt.de&gt;" />
<person posts="2" size="4" who="Ove Kaaven &lt;ovehk.no&gt;" />
<person posts="1" size="3" who="Mike Bond &lt;mbond.com&gt;" />
<person posts="1" size="3" who="Gavriel State &lt;gav&gt;" />
<person posts="1" size="2" who="Michael Mauch &lt;michael.mauch&gt;" />
<person posts="1" size="2" who="Marcus Meissner &lt;Marcus.Meissner&gt;" />
<person posts="1" size="2" who="Juergen Schmied &lt;juergen.schmied&gt;" />
<person posts="1" size="2" who="Mike McCormack  &lt;mike_mccormack.au&gt;" />
<person posts="1" size="2" who="Dan Kegel &lt;dank&gt;" />
<person posts="1" size="2" who="Martin Pilka &lt;mpilka&gt;" />
<person posts="1" size="2" who="Matthew Cline &lt;matt&gt;" />
<person posts="1" size="2" who="juergen.schmied" />
<person posts="1" size="1" who="Stefan Leichter &lt;Stefan.Leichter&gt;" />


  title="Dropping Syslevel Checks from Debugging"
  subject="GDI syslevel held during psdrv init ... bad"
  startdate="24 Apr 2001 00:00:00 -0800"
  enddate="25 Apr 2001 00:00:00 -0800"

<mention>Marcus Meissner</mention>

<p>Marcus Meissner was doing some debugging and ran across a problem
and asked for thoughts on how to fix it.  Alexandre Julliard replied
with, <quote who="Alexandre Julliard">We could probably get rid of the 
check. Syslevel locking is reasonably stable now, and dll separation 
will cause more and more false alarms here.</quote>  So soon in the CVS
changelog an entry came across that read:</p>

<quote who="">

<p>        Changelog:<br />
           Drop SYSLEVEL checks from relay debugging, since they break debugging
           builtin GDI dlls.</p>


<p>The effect of this is you get less information printed out when debugging.
Andreas Mohr felt it was simply not appropriate to take this out and
responded to the change with:</p>

  <quote who="Andreas Mohr">

  <p>Hmm, do we really want to do this ?<br />
  (I know it's already been applied)</p>
  <p>Shouldn't we create a different SYSLEVEL_CheckNotLevel_unenforced() function
  instead which simply doesn't call DebugBreak() ?</p>
  <p>That way we don't lose the important information about possible syslevel
  <p>Syslevel violations are an *ongoing* problem. They are not simply "solved".
  OTOH I could take Alexandre's cvs commit as his firm promise to go through
  every future patch line by line to check for syslevel mishaps/omissions ;-)</p>
  <p>Oh yeah, and in case you didn't notice: it's me again complaining about
  yet another silencing ;-)</p>
  <p>This patch is not even "too early", it's simply "wrong" IMHO, as it is
  an ongoing problem (I did mention this before, didn't I ? :).</p>
  <p>Sorry for me being of such an opposing nature ;-)      </p>

<p>A few more messages went back and forth between Marcus and Andreas 
about other ways to get around dropping the check, but the change stayed
in CVS.</p> 


  title="Fault Handling?"
  subject="fault handling - oof"
  startdate="24 Apr 2001 00:00:00 -0800"
  enddate="26 Apr 2001 00:00:00 -0800"

<mention>Alexandre Julliard</mention>

<p>Lawson Whitney was working on a mail application and suddenly had 
problems with its fault handling.  He suspected it was because of
something recently added to Wine and began reverting patches until
it seemed to be narrowed down.  Lawson wrote:</p>

<quote who="Lawson Whitney">

<p> It _might_ be a local
misconfiguration, so don't waste too much time on it, but if you spot
something that could be a bit wrong in one of these patches, please let
me know.</p>

  N   1 Apr 23 Alexandre Julliard  (2,414) wine/dlls/msvcrt time.c<br />
  N   2 Apr 23 Alexandre Julliard  (2,089) wine/include/msvcrt stddef.h<br />
  N   3 Apr 23 Alexandre Julliard  (2,071) wine/debugger types.c<br />


<p>This report generated a fair number of emails that left a lot of people
scratching their heads.  Francois Gouget first wondered, <quote who="Francois
Gouget">If you're using native msvcrt then the first two should have no
impact. If you meant that the crash only occurs when you try using the
builtin msvcrt then maybe it's the patch to time.c. But I would still don't
see why... quite the opposite.</quote></p>

<p>Eric Pouech then questioned the debugger patch and asked, <quote who="Eric
Pouech">I don't see how a fix in the debugger could change the way an app
work when the debugger is not launched...  did you try to run the app with
the debugger started before the crash to see where you get the first fault

<p>Lawson began messing around and narrowed it down to what he thought was
the patch to the debugger.  He took a break and when he came back to working
on it discovered the problem, <quote who="Lawson Whitney"> If you get this,
it comes by wine with the debugger patch in.  It seems I was getting HD errors
which were causing wine to hang and otherwise misbehave.  Load a library, and
when you are done there is nothing there, so when the init code gets called,
it faults.  reverting moved the files to sectors that happened to work.
I should have known when the same version of wine worked on one box and not
on the other for the same app (shared by nfs) but at the time it only made
my head hurt.  e2fsck -c has fixed it for now, but sterner measures may
become necessary.</quote></p>

<p>Looks like its time to start trying to find that warranty information..</p>



-------------- next part --------------
<?xml version="1.0" ?>

<title>Wine Traffic</title>
<author contact="mailto:brianv at REMOVETHIS.ski-copper.com">Brian Vincent</author>
<issue num="94" date="06 May 2001 00:00:00 -0800" />
<p>This is the 94th 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>

<stats posts="58" size="172" contrib="23" multiples="11" lastweek="10">
<person posts="10" size="22" who="Alexandre Julliard &lt;julliard&gt;" />
<person posts="7" size="24" who="Gerard Patel &lt;gerard.patel&gt;" />
<person posts="7" size="20" who="Ian Pilcher &lt;ian.pilcher&gt;" />
<person posts="4" size="13" who="Francois Gouget &lt;fgouget&gt;" />
<person posts="4" size="11" who="Andreas Mohr &lt;a.mohr&gt;" />
<person posts="3" size="17" who="Dmitry Timoshkov &lt;dmitry&gt;" />
<person posts="3" size="7" who="Eric Pouech &lt;eric.pouech&gt;" />
<person posts="3" size="6" who="Bang Jun-Young &lt;bjy&gt;" />
<person posts="2" size="8" who="Gavriel State &lt;gav&gt;" />
<person posts="2" size="4" who="Marcus Meissner &lt;marcus&gt;" />
<person posts="2" size="3" who="David Howells &lt;dhowells&gt;" />
<person posts="1" size="2" who="Dan Kegel &lt;dank&gt;" />
<person posts="1" size="1" who="Chris Morgan &lt;cmorgan&gt;" />
<person posts="1" size="1" who="David.Goodenough" />
<person posts="1" size="1" who="Christopher Morgan &lt;cmorgan&gt;" />
  subject="CUPS Support"
  startdate="27 Apr 2001 00:00:00 -0800"
  enddate="27 Apr 2001 00:00:00 -0800"

<p>Gerard Patel, quite rightly, pointed out that I had missed an
interesting CVS commit last week.  In particular Gerard wrote,
  <quote who="Gerard Patel">
     I noticed on LinuxToday that the last Kernel Cousin Wine was showing
     a 'slow week' - the week where Marcus posted CUPS support - IMHO the
     more interesting patch since months for all non-games apps. He is not
     following wine-patches and wine-cvs it seems :-/
<p>That patch by Marcus Meissner was posted with the following note:</p>
<quote who="Marcus Meissner"><p>
I have implemented CUPS support in WINE.</p>
<p>Rerun autoconf ; autoheader -l include</p>
<p>The only dangerous option currently is that in win.ini it modifies the
   line: <br />
        [windows] <br />
        device=... <br />
marking the default printer.</p>
<p>I used a hack with 'CUPS:CupsPrinterName' to pass the information
on which printer to use down to the spooling code, since this appears to
be otherwise impossible.</p>
<p>I have also added some gotos to get rid of the huge unnecessary code
duplication in PSDRV_FindPrinterInfo().</p>
<p>I have tested it with: <br />
        notepad.exe <br />
        mspaint.exe <br />
        winhelp.exe <br />
        uedit32.exe <br /></p>
<p>Printing now works out of the box, if you have [afmdirs] set up and .afms

<p>In addition to this, in the last few weeks there has been other work done
on printing.  Changes have affected getting the page setup dialogs functional,
work on font handling (see below), and fixes to the Postscript driver.</p>
  title="Font Handling Issues"
  subject="TrueType font metrics for PostScript driver"
  startdate="29 Apr 2001 00:00:00 -0800"
  enddate="30 Apr 2001 00:00:00 -0800">

<p>Ian Pilcher was working on on the Postscript driver and ran into the
following dilemna:</p>

<quote who="Ian Pilcher"><p>
   In order to Unicode-enable the PostScript driver, it needs information
   about about font encodings that isn't present in Adobe's AFM file
   format (glyph names for character encodings greater than 256).  For
   Type 1 fonts with a standard encoding, the driver can use the encoding
   in the Adobe Glyph List.  (There's no other choice.)</p>
   TrueType font designers, however, seem to regard glyph naming as an
   opportunity to express their creativity.  Besides, the information is
   present in the TrueType font files, so the driver might as well use it.</p>
   The driver could read this information directly from the font files, but
   this would make Wine dependant on the FreeType libraries, and that
   doesn't strike me as a wonderful idea.  Instead, I have cobbled together
   a small program which reads a TrueType font file and creates a "TrueType
   Font Metrics" file, which is very similar to an AFM file.  (This program
   does use the FreeType library.)</p>
   Anyone have any objections to using this approach as a interim measure?  </p>

<p>Gavriel State responded to this by describing a general
   framework for working with fonts:</p>
<quote who="Gavriel State"><p>                                   
   From the end user perspective, printing in Wine sucks right now due to
   the fact that you've got to manually make all these AFM files (or now
   your proposed TT equivalent), and then just kind of hope that the printer
   has the font available.  If you're printing to a local inkjet or something
   and you have Ghostscript set up just so, it'll work, but it acts horribly
   if you're printing to a remote PS device.</p>
   The only way that that problem can be solved is if we can automatically
   upload a T1 version of any given font to the PS file.  We can only do
   that if we have access to the glyph outline data, which would require
   linking to something like FreeType in some way.</p>
   When we were doing WPO2K for Linux at Corel, we used Bitstream's commercial
   font server for this purpose.  It had an extended API that you could use
   to get at additional font characteristics and glyph outlines.  It was
   a major pain to use, and it appears to be the top reason that end users
   have problems with the product (font server configuration is a nightmare
   for newbies).  It's a shame that we didn't use FreeType instead.</p>
   What I'd love to see happen with fonts in Wine is this:</p>
 <li> shift the x11drv and wineps over to using the DDK Font Engine APIs
   that are currently just stubs.</li>
 <li> Implement a FreeType font driver that links to Freetype and uses
   the FreeType APIs for all font metrics data as well as rasterization.</li>

 <li> Implement an X11-dependant font driver in the Font Engine to rely
   on as a backup if FreeType isn't available.</li></ul></p>
   Using FreeType more directly would also allow Wine to do serious
   typography - the metrics data available from X is awful compared to
   what you can get directly from FreeType, and doing anything less gives
   you subtle variations in glyph placement that can completely mess up
   the decision of where to break a line.  If we ever want to see people
   using Wine for serious graphics and page layout applications, we
   have no choice but to go for the FreeType approach.</p>
   Now, all of that said, I don't actually have the time to help with
   any of this directly (unless someone wants to throw a contract
   my way, of course).  All I can really do is cheer you on from the
   sidelines should you decide to go for it, and perhaps offer the
   occasional nugget of advice. Speaking of which, I do hope that you've
   seen the font &amp; printing code in the Corel wine tree.  It may not
   do you much immediate good, but I suspect that it could be a usefull
   reference point.                                </p></quote>
<p>He also asked, <quote who="Gavriel State">
  What do you find objectionable about making wine work more closely with
  FreeType? </quote>
   Ian replied,
 <quote who="Ian Pilcher">
  Absolutely nothing.  I just don't think the immediate benefit of getting
  at TrueType encodings justifies creating the dependency at this time. </quote>
  Ian also agreed with Gavriel's ideas, but pointed out that for now he was
  just interested in getting the driver Unicode-enabled.</p>
<p>Alexandre Julliard wondered though, <quote who="Alexandre Julliard">
  But doesn't your solution also require FreeType anyway?  Linking it
  into Wine or into a separate program is not really different for the
  user, he still needs to install it. </quote>
   Ian responded,
 <quote who="Ian Pilcher">
  With a separate program, FreeType is only required for people who want
  to print TrueType fonts.  If I put FreeType calls directly into the
  driver, FreeType will be required to build/run Wine at all, even for
  users that derive no benefit from it.       </quote></p>
<p>Alexandre didn't seem to mind putting the calls right within
   the driver, noting that
 <quote who="Alexandre Julliard">
  We will have to use FreeType at some point anyway, so we might as well
  start now.  Besides it seems it will be easier to use if everything is
  built-in instead of having to run a separate tool. </quote></p>
<p>From there the discussion evolved into ways of setting up the autoconf
checks and exactly what versions of Freetype should be supported.  Red Hat
shipped FreeType 1.4 with their 7.0 distribution while with 7.1 they
included FreeType 2.0.1 too.  The concensus seemed to be that FreeType
2.0 API should be used.   From there Ian went on to add autoconf checks for
the FreeType header files.</p>
  title="Wine and NetBSD"
  subject="Wine and NetBSD"
  startdate="01 May 2001 00:00:00 -0800"
  enddate="02 May 2001 00:00:00 -0800"
<mention>Francois Gouget</mention>
<mention>Eric Pouech</mention>

<p>Bang Jun-Young posted an interesting message to the list:</p>
<quote who="Bang Jun-Young"><p>
  For the last couple of weeks I spent some time doing porting Wine to
  NetBSD (there used to be a port but was too out of date). After applying
  patches my own, it has been successfully compiled and started running.</p>
  The most serious problem occurs, however, whenever I try to run a
  Windows binary with it:</p>
        $ wine c:\\windows\\sol.exe<br />
        No built-in EXE module loaded!  Did you create a .spec file?
  Obviously sol.exe doesn't need a .spec file to run. When/Why do I get
  such an error?           </p></quote>
<p>Eric Pouech thought the problem was a loader issue.  At some point the
  native DLL's weren't being registered most likely because Wine's
  initialization functions weren't being called. </p>
<p>Francois Gouget was digging through configure.in and noticed that
  for NetBSD it didn't really specify how to link a builtin DLL.
  Jun-Young noted that as of NetBSD 1.5 the native binary format had
  completely switched over to ELF so most GNU tools could be used just
  like on Linux and FreeBSD.  Of course this also means that older
  versions of NetBSD likely won't work. </p>
  title="Wine Manuals"
  subject="Script to get committed patches"
  startdate="01 May 2001 00:00:00 -0800"
  enddate="02 May 2001 00:00:00 -0800"
<mention>Gerard Patel</mention>

<p>Gerard Patel was trying to retrieve a patch and couldn't figure
   why it didn't look like the normal output from diff.  Eric Pouech
   replied to that by mentioning,
   <quote who="Eric Pouech">
   this type of issue has been introduced when I added the ability of
   listing the added files in a patch (before only the diffs to existing
   files were printed) </quote>.  </p>
<p>In the course of more discussion Gerard mentioned he had just read
   the Wine user manual.  Francois Gouget then gave pointers to the official
  <quote who="Francois Gouget"><p>
  right there on the WineHQ site:</p>
  <li>there's a big 'Help!' heading with 'WINE Documentation and Support,
      FAQ and HOWTO.' as the subtitle. Click on it.</li>
  <li>there, the first item is 'Official Wine documentation', click on it</li>
  <li>and then you have the choice of:</li>
   <li> the 'Wine User Guide'
     <a href="http://www.winehq.com/Docs/wine-user/">http://www.winehq.com/Docs/wine-user</a></li>
   <li> the 'Winelib User Guide'
     <a href="http://www.winehq.com/Docs/winelib-user/">http://www.winehq.com/Docs/winelib-user</a></li>
   <li> the 'Wine Developers Guide'
     <a href="http://www.winehq.com/Docs/wine-devel/">http://www.winehq.com/Docs/wine-devel</a></li>
   <li> the 'Wine Packagers Guide'
     <a href="http://www.winehq.com/Docs/wine-pkg/">http://www.winehq.com/Docs/wine-pkg/</a></li>
   It should even be up to date but I'm not entirely sure. If not then  
something must be done about it.</p></quote>
<p>There's a lot of interesting reading in there for users and developers

  title="Update: InstallShield and OLE Question..."
  subject="Re: InstallShield and ole question..."
  startdate="18 Apr 2001 00:00:00 -0800"
  enddate="01 May 2001 00:00:00 -0800"


<p>I was a bit premature in covering the InstallShield thread a few
weeks ago
<kcref subject="InstallShield and ole question..." startdate="17 Apr 2001 23:00:00 -0800"></kcref>.
Shortly afterward the thread spun off in a few different
directions.  It was decided that some method of marshalling was needed
to get InstallShield v6 installers to work because some method was needed
to get function calls to go between processes.  That led into various
people discussing attempts to take a stab at supporting COM/DCOM protocols.</p>
<p>Dan Kegel pointed to the FreeDCE project: </p>

<quote who="Dan Kegel">

   <a href="http://freedce.sourceforge.net/">http://freedce.sourceforge.net/</a>
   is an open source project to implement COM.
   It's been around quite some time, and started off from the same
   DCE sources that Microsoft based its stuff on.  (See also
   <a href="http://linas.org/linux/corba.html">http://linas.org/linux/corba.html</a></p>
   <p>I wonder if that might not be useful here?</p>

<p>Jeremy White felt there were a lot of legal implications to consider:</p>

<quote who="Jeremy White"><p>
   With COM, the other issue is that someone needs to look at the MS           
   patents in this area.  Mainsoft is telling people that they can't use Wine to
   port COM code, because Microsoft holds patents on some of the Vtable
   logic used in COM (and no, I don't have any more detail than that, this came
   to me third hand).  I've also asked the FSF for help tracking this FUD down
   and refuting it.</p>
   <p>The upshot of my comment is that it's critical that we use our own
   marshalling/ipc protocol.</p>
   <p>DCOM is documented, and what's more it appears to be well documented,
   and what's more, it doesn't look as though the implementation will
   be particularly hard...</p></quote>
<p>Dan Kegel provided some more information:</p>
<quote who="Dan Kegel"><p>
   For the curious:<br />
   Snooping on his conversation using google.com, I see it's patent number
   5297284 he's worried about.</p>
   <a href=";p=1&amp;u=%2Fnetahtml%2Fsearch-bool.html&amp;r=1&amp;f=G&amp;l=50&amp;d=PALL&amp;RefSrch=yes&amp;Query=PN%2F5297284">;p=1&amp;u=%2Fnetahtml%2Fsearch-bool.html&amp;r=1&amp;f=G&amp;l=50&amp;d=PALL&amp;RefSrch=yes&amp;Query=PN%2F5297284</a>
<p>Gavriel State pointed out the
following problems with the relevancy of the patent:  </p>

<quote who="Gavriel State">

<p>Hmmm - a few points to consider:</p>
 <li> The patent seems very much oriented towards compilers for object
    oriented languages.  I'm not sure how broadly that patent can be
    applied to code like ours that uses C to mimic the behaviour of
    a OO language.  If there's an issue anywhere, I'd suspect that
    it's with g++, not Wine.</li>
 <li> Even with g++, the work described in the patent that's actually new
    (ie: wasn't implemented in other C++ compilers as of April 1991) mostly
    seems to cover multiple inheritance related issues - adjusting the
    this pointer to the right part of an MI object's vtable, etc.  Since
    a COM interface is nothing but a flat array of function pointers,
    I fail to see any relevance at all to the Wine side of things.</li>
 <li> At least some of the g++ people seem to know something about this
    patent.  There's a small thread here:                        
      <a href="http://gcc.gnu.org/ml/gcc/1999-08/msg00862.html">http://gcc.gnu.org/ml/gcc/1999-08/msg00862.html</a>    
      And there's some further discussion wrt the ia64 C++ abi here:
      <a href="http://reality.sgi.com/dehnert_engr/cxx/cxx-closed.html">http://reality.sgi.com/dehnert_engr/cxx/cxx-closed.html</a></p></li>
 <li> G++ was around for quite some time prior to the patent application.
    You can download an archival copy of g++ 1.39.0, which predates the
    patent here:
      <a href="http://planetmirror.com/pub/gcc/old-releases/gcc-1/?N=D">http://planetmirror.com/pub/gcc/old-releases/gcc-1/?N=D</a></p></li>

Anyhow, this is just from a very cursory analysis, but I'd say that the
Mainsoft FUD is just that: FUD.          </p>

  title="Library Freeing"
  subject="FreeLibrary() library freeing"
  startdate="01 May 2001 00:00:00 -0800"
  enddate="02 May 2001 00:00:00 -0800"

<p>Andreas Mohr received a trace of a crash from an install program.  The
root of the problem was that libraries weren't being freed in Freelibrary().
Andreas wrote:</p>
<quote who="Andreas Mohr"><p>
   This happened because the program did some FileVersionGet*() calls before
   on uninst.exe, which do LoadLibrary()/FreeLibrary() internally, but of
   course the file handle didn't get freed any more.</p>
   I believe the potential problems that this can cause are way more important
   than some claims that "there are some problems with library freeing".     
   I've had that FreeLibrary() #if hack removed for a long time,
   and I haven't see any adverse effects (not that it's too easy to spot
   and attribute to this problem probably, though).</p>
   Besides, Musicmatch Jukebox used zillions of MB (yes, that's a leak for you)
   due to that Wine "feature".</p>
   I for one would truly like to see it fixed ASAP.</p>
   If FreeLibrary() has a problem, then we need to fix it.
   Running away from the problem by implementing strange hacks does no good
   to anybody.</p></quote>
<p>The main problems right now center on various versions of glibc and
the fact that the DLL separation is continuing.  Alexandre responded
with, <quote who="Alexandre Julliard">
   Agreed; I have uncommented the VirtualFree, and you are hereby
   volunteered to track down and fix any crash caused by this ;-)</quote></p>
<p>Some discussion went back and forth concerning potential problems
this might cause with older glibc versions.  Alexandre clarified the
change with, <quote who="Alexandre Julliard">Actually we still cannot 
  dlclose builtin libraries; the change I made
  is to free memory used by PE dlls. Freeing builtins properly will
  require dll separation to be completed first. And once this is done we
  will no longer rely on glibc dlclose reference counting so the bug
  shouldn't impact us.</quote></p>
-------------- next part --------------
<?xml version="1.0" ?>

<title>Wine Traffic</title>
<author contact="mailto:brianv at REMOVETHIS.ski-copper.com">Brian Vincent</author>
<issue num="95" date="13 May 2001 00:00:00 -0800" />
<p>This is the 95th 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>

<p>Next week's issue will likely arrive on Tuesday, or possibly later depending 
on how many threads there are.  I'll be on vacation next week.  On a related note,
does anyone have any suggestions as to what to see or do at Lake Powell, UT?</p>


<stats posts="2" size="182" contrib="2" multiples="13" lastweek="0">
<person posts="9" size="32" who="Francois Gouget &lt;gouget&gt;" />
<person posts="8" size="35" who="Marcus Meissner &lt;marcus.de&gt;" />
<person posts="6" size="18" who="Ian Pilcher &lt;ian.pilcher&gt;" />
<person posts="3" size="8" who="Andreas Mohr &lt;a.mohr&gt;" />
<person posts="3" size="7" who="Alexandre Julliard &lt;julliard&gt;" />
<person posts="3" size="7" who="Eric Pouech &lt;eric.pouech&gt;" />
<person posts="3" size="6" who="Uhmmmm &lt;uhmmmm&gt;" />
  subject="A new vintage and some interesting press"
  startdate="10 May 2001 00:00:00 -0800"
  enddate="10 May 2001 00:00:00 -0800"

<p>Alexandre has unleashed a new snapshot unto the world.  On
Thursday Wine-20010510 was cut and made available.  The source
is available via http at 
<a href="http://www.ibiblio.org/pub/Linux/ALPHA/wine/development/Wine-20010510.tar.gz">
or through ftp at  
<a href="ftp://ftp.infomagic.com/pub/mirrors/linux/sunsite/ALPHA/wine/development/Wine-20010510.tar.gz">
<p>The main changes include:</p>

  	<li> a ton of printing enhancements (check out last weeks issue about the 
          addition of CUPS support)</li>
 	<li> graphics driver restructurations</li>
	<li> changes to facilitate a port to NetBSD</li>
	<li> and lots of other fixes for bugs</li>

<p>Also out this week were a pair of interesting stories in the press.</p>  

<p>The first one, from 
<a href="http://www.gamespy.com">GameSpy.Com</a>, is titled 
<a href="http://www.gamespy.com/articles/may01/wine/">Ports vs. Wine</a>.
As <a href="http://www.linuxtoday.com">Linux Today</a> describes it,
"GameSpy takes on the question of whether Linux gamers are better off 
waiting for Linux ports (which aren't as plentiful as many would like) 
or getting behind Wine. Includes commentary from Gavriel State of Transgaming, 
which is working on bringing DirectX to Wine; and an assortment of pro-ports 
people including Scott Draeker of Loki, who maintain that compatibility layers 
are bad news".  This is what Gavriel had to say in the article:</p>  

<quote who="Gavriel State"><p>
TransGaming doesn't see WineX as competition for source level porting efforts from 
companies such as TribSoft and Loki. Rather the opposite: WineX compliments the 
existing Linux games market by keeping Linux users in Linux to play their games, even 
when the developer or publisher has decided against a direct Linux port. TransGaming 
is certainly not going to be spending any effort on games that have already been ported 
by Loki or TribSoft. </p>

<p>Keep in mind also that WineX can be used for source level compatibility (aka 
Winelib) to speed up the process of recompiling games using Linux-based compilers 
and development tools, and thus taking advantage of Linux-specific features where 
they make sense. In fact, internally we use the Winelib approach for regression 
testing with the various Microsoft Direct3D samples. </p>

<p>It's not an either/or situation. We'll see some games being played under the 
Wine binary loader, some ported"natively" to Linux using Winelib and some direct 
access to Linux APIs, and others rewritten from the ground up using APIs like SDL.</p>

<p>The true strength of Linux and Open Source lies in diversity and choice, and having 
multiple approaches to game portability is just one more aspect of that strength. </p>


<p>Also included in the article is a nice 
<a href="http://www.gamespy.com/asp/image.asp?/articles/may01/wine/1.jpg">screenshot</a> 
of Shiny's Sacrifice running with WineX.</p>

<p>The second article out this week is 
<a href="http://www.eet.com/story/OEG20010508S0061">"Plug-ins 
to enhance browsers of Linux-based appliances"</a> from 
<a href="http://www.eet.com">EETimes</a>.  It starts off:</p>

<quote who="eetimes">

<p>Looking to narrow the gap in features between Windows- 
and Linux-based platforms, CodeWeavers Inc. has developed a series of browser 
plug-ins such as Shockwave and QuickTime for Linux-based Internet appliances.</p>

<p>CodeWeavers' Crossover plug-in software, scheduled for a May 15 launch, will 
be offered to Internet appliance manufacturers building platforms that run Linux 
or any Unix-like operating system. </p>


<p>And then further down:</p>

<p><quote who="eetimes">In addition to the Crossover plug-ins, CodeWeavers plans this 
fall to launch Crossover display, which will let an Internet appliance start up a 
Windows application installed on a nearby PC with a click of a button, but without 
a Windows OS. And Crossover server, scheduled for release in mid-2002, is a complete 
Windows-compatible Linux-based server. </quote></p>

  title="doors IPC"
  subject="doors IPC"
  startdate="08 May 2001 00:00:00 -0800"
  enddate="09 May 2001 00:00:00 -0800">

<p>Damjan Lango posted note about speeding up the wineserver:</p>

<quote who="Damjan Lango"><p>
Some time ago here was a discussion about speeding up the communication
between the wineserver and the application with various kernel patches.
I was reading "Unix Network Programming, volume 2 - IPC" and ran over
a "doors" IPC api that is implemented on Solaris and has the lowest latency.
According to the book it is ~3 times faster than pipe.
Actual values for Solaris 2.6 in the book are: (in miliseconds)</p>
doors:      121<br />
sysv msgq:  260<br />
pipe:       324<br />
unix dom. socket: 465<br />
posix msgq: 584<br />

<p>There is also a link to a Linux implementation of doors on:
<a href="http://www.rampant.org/doors/">http://www.rampant.org/doors/</a></p>

<p>On this link you will find also more info on doors.</p>

<p>But according to the performance tests that the author made,
the linux pipe is somewhat the same speed as doors so 
maybe it could be optimized more or maybe is Linux's pipe
already so optimized that doors are unnecesary.</p>

<p>So what do you think, would this be useful for speeding up wine?
	I apologoize if you already know about this...</p></quote>

<p>Marcus Meissner replied with:</p>
<quote who="Marcus Meissner"><p>What a coincidence ;)</p>

<p>I just did a patch changing the critical section handling to become more of a

<p>I have attached it. This should reduce the critical section based
reschedules between:<br />
	<ul><code>wine &lt;-&gt; wineserver &lt;-&gt; wine</code></ul><br /> 
to:<br />
	<ul><code>wine &lt;-&gt; wine</code></ul></p>

<p>Since critical sections are thought to be 'fast' and 'short time' locking
primitives, and Win32 threads should not sleep in a critical section,
we can just give up our timeslice and wait for the other thread that
has the lock to continue.</p>

<p>This is a preliminary version, but it works.
It uses 'LockSemaphore' as differentation between process-local and
global critical sections.</p>

<p>It uses 'sched_yield', which is a POSIX feature, to give up the timeslice.
How does one force a reschedule on another UNIX? Is<br />

<p>This patch can give spinning processes on SMP systems, but I do not 
consider this a real problem at this time.</p>

<p>I would like to know if there is something wrong with the concept ;)</p>

<p>At least winword feels a bit snappier now.</p></quote>


  title="Helping with Wine"
  subject="Re: where do I go to find out who needs help"
  startdate="09 May 2001 00:00:00 -0800"
  enddate="09 May 2001 00:00:00 -0800">


<p>Sean Callahan sent a message that asked what could be done to help
out with Wine.  Francois Gouget sent a lengthy reply that listed a lot
of items:</p>

<quote who="Francois Gouget">

   Hmmm, I think I can also find a list of bugs in bugzilla that could
   easily be fixed by someone new to Wine:</p>



   Builtin msvcrt mishandles the cmdline to argv conversion #234: <a
   This prevents 'wine /mnt/win/Program\ Files\whatever\foo.exe' from working
   if you're using the builtin msvcrt!</li>

 <li> I'm almost 100% certain that there's another bug in the same function
   in its handling of the environment variable.</li>

 <li> PrgWin95/98: System metrics differ from the Win9x values
   #48: <a
   One day I'll fix this one... I swear. Unless you want to work on it
   first. In that case I'll provide you with my test application and dumps
   of the metrics for Win95, Win98, NT4, ...</li>

 <li> The doc about the command line arguments and the config file is out
   of date. I'm sure there are plenty of other things that are out of

 <li> Get the VXCL samples, test them with Wine and report the bugs in the
   bugzilla database. I know there's lots of them. Then people (or
   yourself) can start fixing these bugs in a distributed fashion.</li>

 <li> PrgWin95: Listbox getting a recessed border instead of a flat one
   #56: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=56">
   (I can provide you with the sample application)</li>

 <li> I think it would be nice to add a tool that displays the dlls version
   information like 'About' does in the windows explorer. I have some
   code you could use as a starting point and I think it could be
   merged with winver. In fact this would be almost stabdard windows

 <li> There's a bug in the drawing of the border of the common control
   tabs. Fixing each of the four instances of the code is easy. It would
   be interesting to find a way to factorize some of this code.</li>


<p>Medium (I expect these would take longer or be a bit harder)</p>


 <li> Provide a pedump utility
   #91: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=91">
   I know there's sample code that does that already floating around so
   it should be relatively simple.</li>

 <li> wrc fails on preprocessed files
   #115: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=115">
   I believe it's just a grammar problem. You'll need to know
   (or to get cozy with) lex/yacc...</li>

 <li> CreateIcon does not resize bitmaps
   #175: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=175">
   I did a similar fix somewhere some time ago. I can provide a
   sample application and I might be able to point you in the right 

 <li> winemaker: 'winemaker --nomfc' does not have the intended effect
   #227: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=227">

 <li> winemaker: Ignores the '--with-{mfc,wine}' options once they are
   #225: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=225">
   If you're familiar with autoconf and know how configure scripts
   should behave...</li>

 <li> StrokePath ignores PS_JOIN_xxx
   #11: <a href="http://wine.codeweavers.com/bugzilla/show_bug.cgi?id=11">
   This should not be too difficult to fix but it would certainly help
   if you are familiar with GDI.</li>

 <li> Checking the differences between what's in the Windows dlls and
   what's in our spec files... and fix the contents of our spec files
   as appropriate. I already have a list of all the APIs in
   each of the dlls for Win95, Win98, NT4 and Wine2000, plus a script
   that can show the differences.</li>

 <li> Enhancing the above perl script.</li>


<p>   But let us know also what kind of work you would like to do and what 
kind of things you're best at:<br />
 - C programming<br />
 - Debugging<br />
 - Windows programming<br />
 - tweaking shell scripts<br />
 - writing/fixing documentation<br />
 - doing web stuff<br />

<p>   It also depends on what motivates you: getting an application to
work, implementing some new functionality, getting applications to
compile, fixing scripts, fixing documentation or writing new

<p>   And the last parameter is how much time you have for Wine
work. In any case it's probably better to start with something simple to
see if you like it.</p>


<p>And in a completely different thread it was asked how to submit code
once something has been fixed.  Francois also replied to that with:</p>

<quote who="Francois Gouget"><p>
		&gt; Have a look at http://www.winehq.com</p>

<p>   More precisely:</p>

   <a href="http://www.winehq.com/dev.shtml#CVS">http://www.winehq.com/dev.shtml#CVS</a>
   The best way to stay up to date.</li>

 <li> wine-patches
   <a href="http://www.winehq.com/mailman/listinfo/wine-patches">
   It's best if you subscribe to wine-patches
   (otherwise each of your emails will go through the moderator)</li>

 <li> Wine Developer's Guide: Chapter 4. Submitting Patches
   <a href="http://www.winehq.com/Docs/wine-devel/patches.shtml">
   All you need to know about submitting patches (I hope)</li>

   Should you run out of FIXMEs (!), don't hesitate to ask for ideas of
things to hack on this list.



  title="GDB Remote Debugging"
  subject="GDB remote debugging"
  startdate="09 May 2001 00:00:00 -0800"
  enddate="09 May 2001 00:00:00 -0800">

<mention>Ove K&#229;ven</mention>
<mention>Eric Pouech</mention>

<p>Ove K&#229;ven posted a patch on the wine-patches list with updates on
some code he wrote for using gdb to debug Wine apps:</p>

<quote who="Ove Kaaven">

<p>For any sufficiently disillusioned Wine hackers, here's my current
experimental code for letting GDB attach to a Wine process. It's
reasonably featured (exceptions are caught, changing threads work,
single-stepping works, software breakpoints work, you can do backtraces,
change registers and variables, etc). You can also do "info shared" to get
a list of loaded .sos, and use the "sharedlibrary" command to load their
symbols, but I strongly recommend against loading symbols for
libpthread.so, or you'll destroy the neat "info thread" display.</p>

<p>This code has helped me quite a bit in my debugging, actually, when
winedbg couldn't be used...</p>

<p>Apply autoconf after patching.
Engage with ./configure --enable-remote-gdb</p>

<p>I assume Alexandre isn't going to like some of the stuff in here, but I
suppose it's up to him whether to take it or leave it...</p>


<p>He was right, Alexandre responded with:</p>

<quote who="Alexandre Julliard">

<p>How did you guess I wouldn't like it? ;-)</p>

<p>Actually I think it's a neat hack, but it doesn't belong in the server
at all. You should be able to do the same thing as a client-side
process using the Win32 debugging API. It could be either a
stand-alone Winelib app, or a special mode inside winedbg so that you
can reuse some of the code in there.</p>

<p>Ove responded to this and said that he could attach and detach gdb
to a running process whereas the winedebugger can't do that.  Eric 
Pouech cleared this up with some instructions:</p>

<p>&gt; winedbg can't, at least nobody knows<br />
   &gt; how to attach winedbg to a running process.</p>

<p>well, winedbg can... and now everybody *SHOULD* know</p>

<p>start winedbg without any argument on commande line
then, use command <br />
<ul><code>walk process</code></ul></p>

<p>you'll get a list of running processes
using the command<br />
<ul><code>attach &lt;pid&gt;</code></ul><br />
really attaches to the running process</p>

<p>the only drawback of the method (compared to gdb interface) is that
the Win32 API doesn't allow to detach the debugger from a running
process the only issue is to kill the debuggee (or the debugger)</p>




-------------- next part --------------
<?xml version="1.0" ?>


<title>Wine Traffic</title>

<author contact="mailto:brianv at ski-copper.com">Brian Vincent</author>

<issue num="96" date="26 May 2001 00:00:00 -0800" />


<p>This is the 96th 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>


<stats posts="79" size="218" contrib="26" multiples="13" lastweek="14">
<person posts="12" size="27" who="Gerard Patel &lt;gerard.patel&gt;" />
<person posts="10" size="23" who="Alexandre Julliard &lt;julliard&gt;" />
<person posts="10" size="32" who="Francois Gouget &lt;fgouget&gt;" />
<person posts="9" size="19" who="Ove Kaaven &lt;ovehk&gt;" />
<person posts="4" size="12" who="Ian Pilcher &lt;ian.pilcher&gt;" />
<person posts="4" size="14" who="Heiko Nardmann &lt;h.nardmann&gt;" />
<person posts="4" size="9" who="Steve Fox &lt;stevefx&gt;" />

  title="Wine.conf Addition"
  startdate="22 May 2001 00:00:00 -0800"
  enddate="23 May 2001 00:00:00 -0800"

<mention>Mike Bond</mention>

<p>Eric Pouech posted the following announcement concerning 
the addition of a new section to the wine.conf configuration
file and some new registry keys:</p>

<quote who="Eric Pouech">

 with today's CVS commit (for those who stay up to date with 
 the latest developments), you'll have to modify your Wine 
 configuration to reflect the changes.</p>

<p>First of all, your Wine configuration file now needs a WinMM section
 containing the following:</p>

 <p><ul><code>[WinMM]<br />
 "Drivers" = "wineoss.drv"<br />
 "WaveMapper" = "msacm.drv"<br />
 "MidiMapper" = "midimap.drv"<br /></code></ul></p>

<p>Not adding this will print the following message</p>

&gt; You didn't setup properly the config file for the Wine multimedia modules.<br />
&gt; Will use the hard-coded setup, but this will disapear soon.<br />
&gt; Please add a WinMM section to your Wine config file.<br />

<p>Note that the above configuration will be shortly required, so don't
 wait before setting your configuration up</p>

<p>Next, you have also to add a key to your registry. To do so, 
create a sample file (let's call it foo) containing the following text:</p>

989041554<br />
"AutoScheme"=dword:00000000<br />
"CurrentInstrument"="#0"<br />
"UseScheme"=dword:00000000<br /></code></ul></p>

<p>then goto the &lt;wine&gt;/programs/regapi and compile the program
the run:</p>
<p><ul><code>regapi setValue &lt; foo</code></ul></p>
<p>that's it</p>

<p>Not applying the key in the registry will result in various errors in 
MIDIMAP_ functions (mainly if Wine is set up to use a native 
Windows system)</p>

<p>Maintainers are welcome to update theirs packages accordingly (default 
values are in documentation/samples/config &amp; winedefault.reg)</p>

<p>Detailed information is available in documentation/multimedia.sgml.</p>

<p>Mike Bond pointed out it should be <code>[HKEY_CURRENT_USER]</code>
rather than <code>[HKEY_LOCAL_USER]</code>.</p>

<p>In addition, Alexandre thought that it would be a bad idea to have
the hard-coded setup disappear.  He thought it wouldn't be very user
friendly to make these values go away when Wine had a reasonable chance
at guessing the configuration.</p>


  title="What About XP?"
  subject="What about XP?"
  startdate="18 May 2001 00:00:00 -0800"
  enddate="20 May 2001 00:00:00 -0800"

<p>A question was posted wondering what will happen with Wine 
with regards to Microsoft's latest XP incarnation.  Basically
this comes down to new applications taking advantages of 
additions to the Windows API.  In the past a lot of vendors
have avoided immediately using new stuff because they would
break backwards capatibility with the older versions
of Windows that users are inevitably using.  Francois Gouget
summed it up by saying:</p>
<quote who="Francois Gouget"><p>

   I understand what you mean, but nope, I think we don't really care
about XP.</p>

<p>   Sure, one day we'll have to implement whatever new APIs are in XP,
but this will come when an application needs it.</p>
<p>   The Wine development is application driven, not Windows driven: what
we want is for applications to run in Wine and the release of a new
version of Windows changes nothing for the 99.99999% of applications
that are already out there (and solitaire XP is not the most important
app although I quite sure that it will be one of the first XP apps to

<p>   Now, if you were to ask about Office XP (if such a thing exists)...</p>

<p>In regards to Office XP, here's a little  
<a href="http://www.zdnet.com/products/stories/reviews/0,4161,2694583,00.html">
info</a> on it. </p> 


  title="Installing Office the Wrong Way"
  subject="problem starting winword 97SR2"
  startdate="21 May 2001 00:00:00 -0800"
  enddate="22 May 2001 00:00:00 -0800"


<p>Heiko Nardmann was trying to get Office up and running by copying
some of the required files and creating the registry entries.  In
particular he was copying winword.exe, mso97.dll, and wwintl32.dll.
By trial and error he was putting files into place as the app 
required them.  In addition he added a font alias to take care
of the annoying message you get upon starting office, namely with 
<code>"Alias0" = "Tahoma,-adobe-helvetica-"</code>.  But as 
James Juran pointed out, that doesn't always work:</p>
<quote who="James Juran"><p>
 You will need to run the installation program or manually copy all the
 registry entries from an existing installation.  The Microsoft Office
 applications put tons of stuff in the registry which is necessary for
 them to run.</p></quote>

  title="Differences in FreeType Versions"
  subject="wineps include fix"
  startdate="20 May 2001 00:00:00 -0800"
  enddate="20 May 2001 00:00:00 -0800"

<mention>David Hammerton</mention>

<p>David Hammerton submitted a small change because the
version of FreeType on his system had a different name
for the header file.  He was unable to #include
<code>&lt;freetype/ftnames.h&gt;</code> because on
his system it was <code>&lt;freetype/ftsnames.h&gt;</code>.
After looking into the problem Ian Pilcher realized the difference in
names between what he and David were using:</p>

<quote who="Ian Pilcher"><p>
I just checked, and they appear to have changed the name between 2.0.1
and 2.0.2.  I can't help wondering how the FreeType people expect any-
one to keep up with this.</p></quote>

<p>I guess I can do an autoconf check specifically for 2.0.1.  I simply
refuse to try to #ifdef every point release of FreeType.  Down that road
lies madness.</p>

  title="DLL Separation"
  subject="DLL separation and PROFILE functions"
  startdate="15 May 2001 00:00:00 -0800"
  enddate="16 May 2001 00:00:00 -0800"

<mention>Ove K&#229;ven</mention>

<p>I won't comment on this too much because the two emails pretty
much speak for themselves.  If you've heard this term of "DLL
separation" in past issues this kind of summarizes an example. 
Ian Pilcher wrote to the list with:</p>
<quote who="Ian Pilcher"><p>
 DLL separation has been mentioned quite a few times on this list
 (usually as the ultimate solution to a problem), but I don't think I've
 ever seen it actually defined.  Based on my own misadventures in this
 area, however, I would hazard a guess that is essentially the conversion
 of all inter-DLL function calls from OS-based dynamic linking to the
 Wine DLL loading mechanism.</p>

<p>Under this assumption, adding 'IMPORTS = ntdll' to a DLL's Makefile.in
 file (in order to use one of the PROFILE functions) seems like a
 definite step backwards.  I think that the proper approach is to add the
 function in question to dlls/ntdll/ntdll.spec and make sure that the
 importing DLL lists ntdll.dll as an import in its own SPEC file.</p>

<p> All of which is wonderful until you consider the following in

<p><ul><code>##################<br />
# Wine extensions<br />
#<br />
# All functions must be prefixed with '__wine_' (for internal functions)<br />
# or 'wine_' (for user-visible functions) to avoid namespace conflicts.<br />

<p>This would seem to indicate that the PROFILE functions (in
files/profile.c) need to have their names changed before they are
exported.  Is this an appropriate time to go crazy with grep and sed?
(For example, PROFILE_EnumWineIniString would become

<p>Ove K&#229;ven replied that DLL separation is  
<quote who="Ove Kaaven">needed to be able to have Wine DLLs and Winelib apps be 
able to seamlessly import and use native PE DLLs</quote>.  He also added:</p>
<quote who="Ove Kaaven"><p>
The profile functions are not exported and you should not use them. If
you're trying to access the config file, use the registry API instead; for
an example, see what Alexandre did in dlls/x11drv/x11drv_main.c. You'll
see the reason Alexandre changed the .wine/config file format to the
registry format.</p>

<p>You could use #defines in a .h file too, but you shouldn't add wine
extensions without a *very* good reason. Alexandre has even advocated code
duplication in some instances to keep DLL separation tight.</p></quote>


  title="Wine Networking With SuSE and Mandrake Distributions"
  subject="Networking with Mandrake 8.0 and SuSE 7.1"
  startdate="17 May 2001 00:00:00 -0800"
  enddate="21 May 2001 00:00:00 -0800"

<mention>Gerard Patel</mention>

<p>Steve Fox was wondering why networking in Wine no longer worked
after he upgraded to Mandrake 8.0:</p>
<quote who="Steve Fox"><p>
I'm running Lotus Notes 5.04a under WINE with one of the January releases
and its been working great for months. However, any release since February
does not seem to do reliable networking on my Mandrake 8.0 system. I can
occassionally actually get into my inbox and even open up a message, but
I've never been able to read more than one.</p>

<p>Some cow-orkers using this same setup on Redhat 7.1 do not have this
problem, but others using SuSE 7.1 do too.</p>

<p>Does anyone have any ideas why only networking would be affected and only
on select distributions? It stumps me because all three mentioned distros
use  glibc-2.2 and gcc-2.96 (SuSE may use 2.95...not sure). On a related
note, another cow-orker who is using Mandrake Cooker (development distro)
and his own compiled kernel does not have this problem. I am on a token
ring network, which I don't think should matter.</p></quote>

<p>Rob Maurizzi said he had experienced the same problem with SuSE and 
their 2.2.18 kernel.  However, if he compiled a stock kernel it worked
ok.  Gerard Patel mentioned that it would be better to try out a 2.4
kernel and work from there.  But Steve couldn't try that with Mandrake's
distribution because they didn't have the PCMCIA token ring patch
applied in the standard distribution.  However, he did try out 
the kernel from Mandrake's "Cooker" distribution and discovered it worked: 
<quote who="Steve Fox">This weekend I upgraded to Mandrake's 2.4.4 kernel 
from Cooker (since it fixed both my mouse and token ring) and suddenly 
this problem has gone away (using Notes 5.0.7 and wine-20010305).</quote></p>

  title="Exposing Non-Windows Functions from DLL's"
  subject="Question on exposing non-windows functions from dlls..."
  startdate="18 May 2001 00:00:00 -0800"
  enddate="18 May 2001 00:00:00 -0800"

<mention>Ove K&#229;ven</mention>

<p>Mike Bond was wondering how to go about exposing functions:</p>
<quote who="Mike Bond"><p>
 I just submitted a patch to wine-patches that provides the implementation
 of spawnl and spawnlp. I had been hoping to implement execl and execlp as
 well but found that the underlying functionality that I would need is not
 exposed outside scheduler/process.c. My question is what guidelines are
 there, if any, are there to exposing non-win functions, such as
 exec_wine_binary in scheduler/process.c?</p>

<p>Also, from just a cursory glance at exec_wine_binary that I may need to
wrap it to do some of the work that fork_and_exec and PROCESS_Create are
doing, such as calling DOSFS_GetFullName. I'm not sure what, if anything,
the server would need to know about this.</p></quote>

<p>Ove K&#229;ven replied, <quote who="Ove Kaaven">
The guidelines are pretty simple and easy to understand: with a very few
*very* exceptional exceptions, never ever expose them. And definitely
never to non-core DLLs such as msvcrt - there's no reason an application
DLL like msvcrt can't be implemented on top of the Win32 API the same way
it's implemented on Windows.</quote></p>

<p>Mike wondered how to go about implementing those functions using the
standard Win32 API.  He wanted to know how to go about loading and
running an image in-process.  Ove reminded him to be careful of assuming
that was what was actually happening (Unix semantics are not the same
as Microsoft's).  Similarly Alexandre mentioned:</p>

<quote who="Alexandre Julliard">

<p>You cannot do this with the Win32 API, that's true. And since the
 native msvcrt is implemented on top of the Win32 API, this means that
 msvcrt exec functions cannot possibly behave exactly like the Unix

<p>What you must do is find out the expected behavior of the msvcrt exec,
and implement the same behavior; you should then be able to do this
using the Win32 API, since this is how the native one does it.</p>


<p>Mike wrote back:</p>

<quote who="Mike Bond">

 I have gone ahead and implemented most of the exec variants as described
 just terminating the previous process, the internal spawn implementation
 already provided a flag to accomplish this easily.</p>

 <p>On the question of determining compatibility, what methods are we "allowed"
 to persue? For instance, I created a small test app for the exec variants,
 tested it under Windows NT then under Wine. I would hope this is a valid
 method, but with the way the lawyers work, it's sometimes hard to tell.</p>

 <p>As a note, it seems NT is doing the same thing as they end up with different
 address spaces and pids after execl.</p>


<p>And with in regards to the old argument that goes into the extent to which
backwards engineering is legal.  Ian Pilcher responded with:</p>

<quote who="Ian Pilcher">

<p>Big disclaimer: <b>I am not a lawyer;</b> 
if you end up in court because you pay attention to anything I say, that's 
just too darn bad.</p>

<p>It depends on which country you're in.  What you've done is classic
"black box" reverse engineering, which has historically been protected
by the U.S. legal system.  Even the DMCA protects it as long as you
don't decrypt anything.</p>

<p>UCITA in its unaltered form, however, legitimizes all those software
license agreements that U.S. courts have found unenforceable.  So I
guess it's starting to depends on what state you're in if you're in the



More information about the wine-patches mailing list