Wine Traffic #129 For 18�Jul�2002

By Brian Vincent

Table Of Contents

Introduction

This is the 129th 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).

Mailing List Stats For This Week

We looked at 166 posts in 611K.

There were 56 different contributors. 29 posted more than once. 30 posted last week too.

The top posters of the week were:

1. News

10�Jul�2002�-�16�Jul�2002 (1 post) Archive Link: "News"

Topics: News

People: Alexandre Julliard,�,�Eric Pouech,�News,�Andriy Palamarchuk

Wine-20020710 fell out of the CVS tree last week. Alexandre noted the following:

WHAT'S NEW with Wine-20020710: (see ChangeLog for details)

Also worth noting is some of the attention the Wine programs are receiving. Rolled into this release is some attention for Notepad (it now uses the RichText edit control) courtesy of Andriy Palamarchuk. Eric Pouech also submitted a patch to begin resurrecting Winhelp, though it didn't make it into this release.

2. Using NT Pathnames

15�Jul�2002 (3 posts) Archive Link: "Re: FindFirstFile/FindNextFile on SMB shares"

Topics: Filesystems

People: Eric Pouech,�Mike McCormack,�

Mike McCormack submitted a patch implementing some filesystem functions on public windows shares. Eric Pouech responded, " I think the FS implementation gets more and more awful we need to structure it a bit more (like introducing a real FS driver model in Wine, and then implement several drivers DOS, SMB...) comments are welcome "

Obviously Mike had thought about this too and replied with some ideas:

I agree with you, the FS implementation is a total mess.

My thoughts for the FS implementation are this:

  • Modify the wineserver interface to pass NT pathnames. Wineserver will decide what is a device, a path etc. One possible exception is UNC path names. (preliminary patch already posted to wine-patches)
  • In the client side, convert dos path names, device names and any other filenames to NT path names. Call NTDLL functions only and let NTDLL talk to the server. Kernel32 should contain few or no server calls. The server should decide whether the file is a device or a normal disk file.
    eg. CreateFile("COM1:") -> NtCreateFile("\Devices\Serial0") -> server
    CreateFile("A:) -> NtCreateFile("\Devices\A:") -> server
    CreateFile("#topofpage") -> NtCreateFile("#topofpage")
  • Implement "a real driver model" in the client side for dealing with ReadFile, WriteFile, delete, rename, SetFilePointer, etc. Probably a structure containing function pointers for each operation, which can be registered with the client and refered to from wineserver by an index.
  • Make directories use real server handles, rather than pointers to client structures. NtCreateFile supports taking a directory handle and a relative path name from that directory to open files. I've tried to keep my SMB implementation seperate from everything else to facilitate this.
  • As you probably know, I've been working on #1 (see my patch from a few weeks ago). Dmitry Tmishkov has also been doing some work to unicodify the entire file API. His work should be available in two weeks or so.

    The blocker for #1 is to convince Alexandre that NT really deals with pathes the way my patch does... which involves writing some test programs on NT. We need to understand the NtQueryDirectoryFile function in more detail to do this.

    3. AppDB Hits 1000 Entries

    11�Jul�2002 (3 posts) Archive Link: "AppDB: great news !"

    Topics: Project Management

    People: Andreas Mohr,�Francois Gouget,�,�codeweavers,�Roland

    Andreas Mohr reported, " I just wanted to let you know that the appliation database (http://appdb.codeweavers.com) just managed to reach 1000 entries !! "

    Roland pointed out that it would be better if there were a 1000 apps that worked flawlessly. Francois Gouget provided a link to the apps that work the best:

    Look for applications with a rating of 5. For instance in a fake_windows configuration:

    [ link (http://appdb.winehq.com/stdquery.php?fields%5B%5D=appFamily.appId&fields%5B%5D=appFamily.appName&fields%5B%5D=appFamily.webPage&rating=5&system=fake&linesPerPage=100) ]

    And remember, preventing rating inflation is the responsibility of everyone.

    4. Configuring for Sparc Solaris

    16�Jul�2002�-�17�Jul�2002 (8 posts) Archive Link: "solaris configure strangness"

    Topics: Integration

    People: Shachar Shemesh,�Francois Gouget,�Gregg Mattinson,�

    Shachar Shemesh tried to compile Wine on Sparc Solaris 2.8. He reported a lot of problems trying to configure it that were similar to:

    Francois Gouget explained:

    It means that:

    does not compile, but that /usr/include/resolv.h exists.

    In other words, resolv.h depends on other headers that you must include before including resolv.h itself.` So to have a clean configure, the above header must be moved out of the big AC_CHECK_HEADERS and into their individual checks where we can specifically test for these dependencies. See for instance XShm.h (only a vague quide).

    Shachar explained exactly why he was trying to get Wine to work on Sparc:

    I'll try, but I only have solaris machines at work, and this is far from my main focus on Wine (I'm working on BiDi, if you remeber correctly ;-). I am only looking into solaris at all because at work we use some windows compat library for solaris (don't remeber the name, but it wasn't mainsoft's) for the GUI part of the product. I am sprinkling the idea to the Unix GUI team here to check Wine out.

    The response so far has been moderetely positive. (using those compat libraries incures a non-trivial per-seat license that goes to MS, as well as horrible support. They have been complaining that response time on one incident was ONE YEAR!!!! and the idea of having the sources to the library itself were appealing to them). The main problem was that it would take over two days of effort just looking into it, and they cannot spare the time.

    Francois just suggested hacking the autoconf script to get it to work. Gregg Mattinson mentioned he might have some time to work on the Solaris issues. Two hours later he replied with a patch and noted, " This patch fixes the configure problems reported to wine-devel by Shachar Shemesh. I have only tested it on sparc/solaris. This patch must be applied after my __sparc__ not defined patch sent to wine-patches on July 17."

    Francois tested it on FreeBSD and reported configure warnings on that platform also went away.

    5. Memory Handling Problem Found

    17�Jul�2002 (4 posts) Archive Link: "Virtual Pages difference - Spotted with VirtualQuery()"

    Topics: Memory Management

    People: Max,�Andreas Mohr,�

    Max wrote in with a detailed bug report after finding VirtualQuery() turned up a memory handling problem:

    As usual, AutoCAD seems to be a good test-bench for wine :-) I spotted the problem that seemed coming from VirtualQuery function, but that is (I guess... hmmmm) more a problem of memory handling in wine.

    Attached (http://www.winehq.com/hypermail/wine-devel/2002/07/att-0292/01-VirtualQueryTest.cpp) is the test source (compiled in Borland CBuilder, but should work with any compiler, apart some unuseful pragma's). If needed I can post the compiled too :-)

    To get around the particular problem he was having he made AutoCAD 2000 think it had a different protection flag. Andreas Mohr provided more information regarding the problem, " PE files don't get their image mapping done correctly (i.e. wrong page protection flags for various memory image sections). I once tried to fix it, but it turned out to be a bit problematic (crashes), so I gave up on it again. See relevant code in loader/* (probably pe_image.c). "

    Sharon And Joy

    Kernel Traffic is grateful to be developed on a computer donated by Professor Greg Benson and Professor Allan Cruse in the Department of Computer Science at the University of San Francisco. This is the same department that invented FlashMob Computing. Kernel Traffic is hosted by the generous folks at kernel.org. All pages on this site are copyright their original authors, and distributed under the terms of the GNU General Public License version 2.0.