WineHQ

World Wine News

All the news that fits, we print.

01/06/2004
by Brian Vincent
Issue: 209

XML source
More Issues...

This is the 209th issue of the Wine Weekly News publication. Its main goal is to officially begin procrastinating on taxes. 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 www.winehq.org


This week, 164 posts consumed 762 K. There were 59 different contributors. 30 (50%) posted more than once. 29 (49%) posted last week too.

The top 5 posters of the week were:

  1. 19 posts in 50K by Dimitrie O. Paun
  2. 18 posts in 60K by Fabian Cenedese
  3. 7 posts in 17K by Eric Pouech
  4. 7 posts in 42K by Abdul-Haseeb Ahmad
  5. 6 posts in 14K by Mike Hearn

News: WineConf 2004 Resources 01/31/2004 Archive
News

The WineConf page is serving as a repository for the various resources from the conference. So far you can find:

In case you missed it, I put out separate issue this week to summarize the event. We had 29 developers from 8 different countries in attendance (I apologize if any of the city information is wrong in the list below):

    Name Affiliation (if any) From
    Alexandre Julliard CodeWeavers San Francisco, California
    Jeremy White CodeWeavers St. Paul, Minnesota
    Ulrich Czekalla CodeWeavers Toronto, Canada
    Francois Gouget CodeWeavers Paris, France
    Mandi Gagne CodeWeavers St. Paul, Minnesota
    Jeremy Newman CodeWeavers Minneapolis, Minnesota
    Mike McCormack CodeWeavers Seoul, South Korea
    Aric Stewart CodeWeavers St. Paul, Minnesota
    Huw Davies CodeWeavers Oxford, UK
    Gavriel State TransGaming Ottawa, Canada
    Steven Vizzini ReactOS US
    Mark Tempel ReactOS US
    Steven Edwards ReactOS US
    Art Yerkes ReactOS US
    Shachar Shemesh Tel Aviv, Israel
    Boaz Harrosh Israel
    Tom Wickline North Carolina
    Michael Stefaniuc Stuttgart, Germany
    Marcus Meissner Erlangen, Germany
    Brian Vincent Breckenridge, Colorado
    Lionel Ulmer Toulouse, France
    Dimi Paun Toronto, Canada
    Vincent Béron Montreal, Canada
    Arthur Bergmann UK
    Mike Hearn Macclesfield, England
    Joe Baker Madison, Wisconsin
    Juan Lang Anchorage, Alaska
    Jan Kratochvil Czech Republic
    Christopher Hertel Samba Team St. Paul, Minnesota


New Filesystem Code Merge Commencing 02/04/2004 Archive
Filesystems

The big filesystem merge has begun, well, at least the patch submissions. If you're just tuning in, you may want to refer back to issues #184 , #189 and #204 . I think it's useful to reiterate exactly what the problems are, this list comes from Eric's initial post back on August 19th:

  1. no dynamicity in DOS drive management: user should be able, in his/her session(1), to either change the mapping of a DOS drive letter, or mount a SMB share somewhere...)
  2. mounting should be done session wide and not process wide, and of course shared across processes
  3. ntdll and kernel32 are not separated regarding file management
  4. devices (vxd and DOS) management is still a hack
  5. it may be necessary to introduce a notion of filesystem for some operations (open, read, write, seek, close, dir_enum, ioctl) in order to support several FS (unix, smb...)
  6. poor management of ejectable devices
  7. short/long file name conversion should be consistent (across several processes in the same session, across several sessions)

About a month ago Eric posted a somewhat complete implementation. At the time he had some details to work through, but the basic structure was complete. Of course, the secondary problem now becomes how to merge this code without completely throwing the CVS tree into turmoil. It seems Eric has found a way and now individual patches have been created. Below is a list of the new patches and the Changelogs. Eric has been tracking all of his NTDll/Kernel32 DLL separation patches with a number. This patchset began at #41:

let's start submitting the new fs code...

basically, you will need to have run this new tool on your configuration directory before we can go any further (otherwise, wine will give you some nice warning messages, and breakages could appear) winefs --config--assign

see the previous wine-devel post for some more details.

ChangeLog:

  • winefs, a tool for creating the files needed for the new fs infrastructure

...#42:

New volume management functions from NT

  • implementation of Find{First|Next}Volume[AW], FindVolumeClose,
  • partial implementation of DeleteVolumeMountPoint[AW], GetVolumeNameForVolumeMountPoint[AW], SetVolumeMountPoint[AW] (only works when mount point is at root)
  • rewrite of QueryDosDevice, DefineDosDevice for new fs scheme

Note: DefineDosDevice is now broken (until patch 47)

...#43:

Changes for device & VxD management (kernel)

  • remove server/device.c and all the associated hacks
  • opening a device is now implemented as opening a unix file (either a real unix device, or an empty file for VxDs & TSRs)

Notes: server/device.c has to be removed

...#44:

New scheme for type, label & serial number reading on drives

  • rewrote GetDriveType[AW], GetDiskFreeSpace[AW], GetDiskFreeSpaceEx[AW], GetVolumeInformation[AW], SetVolumeLabel[AW], GetLogicalDriveStrings[AW], GetLogicalDrives according to new drive scheme (either from device or from files on hd)
  • removed no longer needed part from files/drive.c and include/drive.h

...#45:

Moved NT => unix path translation to ntdll

  • moved path transformation (according to new scheme) into ntdll
  • rewrote wine_get_unix_path_name accordingly (and exported it from ntdll)
  • rewrote RtlDoesFileExists_U to use these new features

...#46:

Moved file opening to ntdll

  • implementation of NtCreateFile
  • modification of server protocol:
    • create_file now uses NtCreateFile parameters (not CreateFile's) as well as NT path names
    • create_named_pipe also uses NT path names
  • NtCreateFile can also open directory handles (CreateFile couldn't)
  • CreateFile now calls NtCreateFile
  • misc. cleanups

...#47:

Moved directory browsing to ntdll

  • Added NtQueryDirectoryFile
  • Implemented FindFile{First|Next} on top of NtQueryDirectoryFile

...#48:

Reviewed directory initialisation & management

  • now storing system dirs as full & long path names
  • rewrote a bit DIR_SearchPath to use better ntdll functions
  • nuked DOS_FULL_NAME structure
  • in Win NT mode, no longer remember the per drive current directory
  • in Win 9x mode, store per drive current directory in =?: environment variable (? being the drive)

...#49:

Various clean-ups

  • got rid of include/drive.h and include/file.h
  • move remaining functions of files/dos_fs.c to dlls/kernel

Note: files/dos_fs.c shall be removed

that's all for now


To Do List Updated 01/03/2004 Archive
Status Updates

Based on discussion at WineConf, Dimi put together a detailed to do list for a 0.9 release. What's somewhat confusing is this is about as large as the current to do list on WineHQ. So why have we suddenly shifted gears and trashed the current plan? Well, we haven't. The current To Do list has items like "Cleanup the directory structure". Below this is expressed in detail as section I. Other tasks have been merged into a more logical order. So...

Here is the detailed TODO in all it's glory. We _really_ need to get this over with, so please help us out to get this release out the door. I'll mark names by the tasks based on conversations I had with folks at WineConf (and on the list). If you notice any mistakes, please let me know. Items marked with (???) have no owner. If you think you can help on any of these (including ones that do have owners!), please let me know. Help is needed and appreciated. If it's not clear what needs to be done for any of these, get in touch with me, I'll be more than happy to help you get started.

Enjoy!

A. WineHQ.org

  1. History page (Brian) [IN PROGRESS]
  2. Testing status (Ferec) [IN PROGRESS]
  3. I18n status (Vincent) [IN PROGRESS]
  4. Porting status (Dimi, Steven) [IN PROGRESS]
  5. Who's Who (Tom)
  6. Documentation page update (???)
  7. Download page (esp. source) needs work (???)
  8. Acknowledgement page (???)
  9. UI status update (???)
  10. Integrate API status into WineHQ (???)

B. Documentation

  • User Guide
    1. Update configuration instructions based winecfg & regedit (???)
    2. Suggest winefile instead of Calmira (???)
    3. Misc cleanups (Dimi)
  • Devel Guide
    1. Update COM section/widl (???)
    2. Redo Multimedia section (???)
    3. Add i18n section (Vincent)
    4. Suggest adding tests w/ patches (Dimi)
    5. Cross compilation on RH (Michael)
    6. Add section on KERNEL32 (???)
    7. Misc cleanups (Dimi)
  • Winelib Guide
    1. Update around MinGW/winegcc (Dimi, Francois)
    2. Misc updates (Dimi)

C. Configuration

  1. Complete regedit (Attila) [IN PROGRESS]
  2. Complete winecfg (Chris, Mike)
  3. Setup API .inf scripts (Chris) [IN PROGRESS]

D. UI Code

  1. Visible region handling in server (Alexandre)
  2. Inter-process handle management (Urlich, Alexandre)

E. File Formats

  1. .spec files [DONE]
  2. .reg files [DONE]
  3. I18n output (Vincent) [IN PROGRESS]

F. Exported API

  1. DLL separation I [DONE]
  2. DLL separation II (Alexandre, Eric) [IN PROGRESS]
  3. wineserver protocol (Alexandre)

G. Tools

  1. winebuild: build DLLs from .def files (Alexandre)
  2. winegcc: add simple gcc-independence (Dimi)
  3. winegcc: generate DLLs/-shared (Dimi)
  4. winemaker: generate MinGW compatible makefiles (???)
  5. winemaker: use dsw2make from MinGW (???)
  6. winemaker: no configure script (???)
  7. autoconf: add all Wine-specific macros to the aclocal (???)
  8. winedesktop: create new tool (Alex) [IN PROGRESS]

H. Miscellaneous

  1. Testing daemon to run as a Windows service (???)
  2. Exec-shield support (???)
  3. Prelink support (???)
  4. Version symbols in libwine & libwine_unicode (Alexandre)
  5. Find packager for a PE-build of Wine on SF (???)
  6. Standardize Wine handling in autoconf (Dimi)

I. Source Code

  1. Move controls/*, windows/* -> dlls/user/ (Alexandre)
  2. Move graphics/*, objects/* -> dlls/gdi/ (Alexandre)
  3. Move files/*, misc/* -> dlls/kernel/ (Alexandre)
  4. Flatten dlls/: msacm/*, msvideo/msrle32, winmm/* (Alexandre)
  5. Move documentation/ddraw.txt somewhere (???)
  6. Move documentation/samples/generic.ppd -> dlls/wineps (Alexandre)
  7. Move documentation/samples/config -> winedefault.reg (???)
  8. Move documentation/samples/system.ini -> winedefault.reg (???)

Under section H. item #1 as creating a "testing daemon". Dimi wrote back to the list to clarify exactly what that meant. Basically the idea is to write a Windows program and run it as a service on Windows to automate testing. It's feared that when we complete this great testing framework and get it integrated into the website we're going to run into a problem with people downloading and running tests. At first it will work, but then people may stop doing it. So if we have a service set up that checks for new tests, then automatically downloads and runs them, we can get a solid community behind it. More important is getting the tests integrated into the website.


WineConf Wrapup 02/03/2004 Archive
WineConf 2004

Jeremy White put together a nice overview of how the WineConf logistics worked.

Say, I wanted to thank everyone for coming to WineConf 2004; as far as I can tell, a good time was had by all, and we may even have accomplished one or two useful things <grin>. I really appreciate that so many of you braved -30C temperature and two days of constant snowfall to come work with us on Wine - such insanity^H^H^H^H^H^H^H^H dedication is admirable.

I wanted to suggest that we get to planning WineConf 2005 sooner rather than later; I'm curious to see which European city hosts the event <grin>. For the record, we're willing to be the major sponsor for the next WineConf; we'll kick in some funds and person power to help make sure it happens. However, I think it'll only work well in conjunction with one or more locals.

I did have some closing thoughts and advice I wanted to get off my chest; there are some things I would do differently next time, and it's probably also wise to touch on the things that worked well.

In no particular order, here are a number of thoughts:

  1. Screw fancy audio/video streaming.
    Find an inexpensive telephone conference service, and use it. Test it, several weeks in advance, *with the intended audience* (the stream worked fine on this side of the Atlantic, afaict), and *with the expected load*. Our tests were always done with less load than we had during wineconf, because the streaming traffic used the same pipe as the 'net connection everyone was using.
    We wasted a lot of time and energy on this, against my initial better judgement, and it proved to be largely useless, afaict from the #wineconf comments.
    Go low tech. Swallow your geek pride. Just get simple audio that works.
    /me kicks self
  2. Things that worked well:
    • An inexpensive location
      Not one person opted for the expensive hotel I listed; cost really matters to this crowd. The last thing we want to do is scare away young people; they often have enormous energy and no cash. Help with hostels and friends with floors was appreciated.
    • Breaks
      The only times that I was sure that productive conversations were occurring was during the breaks. Provide lots of 'em. Go very light on scheduled topics.
    • Do lunch in; that worked really well.
      Have lots of food and beverages about, that also seems to work well. Bring the water cooler down on the *first* day <grin>.
    • Internet connectivity is a must. Really.
      And provide both wireless and wired. We had some grumpy campers when we initially didn't have enough cat5 ports.
    • All of the professional conference paraphenalia was invaluable. A wireless mic (preferably two) and someone to operate it. A PA type system. A projector. Even with the relatively small group we had it was invaluable.
  3. Suggestion - blue collar location
    I know it's fashionable to suggest fancy vacation spots for WineConf 2005, but I honestly think it would be much better to pick a 'blue collar' venue. Pick somewhere that is a transportation hub, with modest prices. Someplace where some Wine hackers live; having local help is incredibly valuable (thanks to Mandi, Chris, Jon, Aric, Zak, Newman, and all of the gang who did so much work).
    In fact, when we did go to the fancy tourist night spot, we ended up at a bar where it was too loud to talk; conversation amongst folks from 10 different countries is hard enough without load blaring music or odd ball distractions.
    A quite room and a good supply of ale, perhaps with a whiteboard, is what folks mostly craved.
    This is just my $0.02; I think others would differ sharply.
  4. The final, critical piece of advice
    Don't type 'ifconfig eth0 down' in a terminal Window on the Mac in an attempt to reinitialize it's DHCP settings, unless you're dead certain you haven't ssh'd over to the server that is the life blood of your community, and is physically miles away behind locked doors...
    ...and I still can't figure out why Alexandre won't take my patches! <grin>

At any rate, I feel much better now - thanks for listening, and thanks for coming.

It definitely seems a lot more was done right than what wasn't. The streaming audio/video was a bummer, and a lot of people genuinely tried hard to get it working. The facilities worked out extremely well though. I think we all took it for granted we had basic amenities like conference tables and a video projector.


Creation of #winehackers 02/01/2004 Archive
Project Management

A new irc channel has been set up expressly for people developing Wine. The goal of this channel has nothing to do getting applications to run or serving as tech support. It's for developers to get together and solve problems. We have lots of forums available for helping with using Wine, including documentation , mailing lists , and BugZilla . Mike Hearn announced the new IRC channel on Sunday:

One of the action items decided on at wineconf was to set up an IRC channel for Wine developers. This channel now exists and is #winehackers. Key points to be aware of are:

  • It's on freenode
  • It is for developers only, user tech support (how do i run counterstrike?) etc should be/will be bounced to #winehq
  • There are a lot of ops. This is intentional. Often on #winehq there are problems caused by users but there are no ops around (only like 3 guys have op access to it). Me (TD), Mike McCormack (mike_m) and Francois Gouget (fgouget) have the ability to add people to the auto-op list through virtue of being the first guys into the channel.
  • The channel is modelled after #gnome-hackers on gimpnet, which has been a great success with buy-in from even their busiest, most core hackers (hint hint alexandre :)
  • All wine hackers are welcome, this most explicitly includes WineX dudes
  • No topic is offtopic.

Have fun! I'll submit a patch to add mention of it to the WineHQ website, but #gnome-hackers grew to a huge number of people just through word of mouth so there's no real hurry. Tell your friends, rescue budding wine hackers from the helpdesk that is #winehq etc. It's a resource that is there to be used, so use it.


Differences in Windows' Long/Short Names 02/06/2004 Archive
Filesystems

Fabian Cenedese wrote:

I'm trying to find a file copy tool which works on windows as well as wine. I tried several and this looked promising:

On Windows it copied all files without problems and kept the long filenames even if the name implies that it's DOS-only, but it worked fine on W2K. But on wine the long names where all shortened to something like CINO~E2H.CPP. So it doesn't look like normal DOS short names ...~1.cpp but it's not the long name either. Can anybody try this out?

My wine (actual cvs) config is set to windows version nt40.

Ove Kåven explained the differences:

It's the short names Wine makes when there is no DOS short name (i.e. when you're not on a VFAT partition).

Try win95. Wine currently only emulates the DOS long file name API on win9x, since it did not exist on nt4.

Dimi thought that was odd, That makes no sense: we get short names on a system (nt4) that fundamentally had long names. Shouldn't we get long names by default in that case?

Ove went into more detail:

No, you couldn't get long file names in DOS programs under NT4. Try to run command.com (a DOS app) instead of cmd.exe (a Win32 console app) under NT4 sometime. NT4 had generally poor DOS support, mostly because its kernel was not DOS; Win95 had much better DOS support because of its DOS-based kernel, and that kernel provided long file name services to DOS programs running under it (on a VFAT partition).

Now it's possible that 2000 and XP added Win95-compatible long file name services for DOS programs, in which case the version check in Wine for the LFN DOS API could be updated. The version check is anyway (probably) mostly there to prevent winver=win311 from enabling the LFN API.


All Kernel Cousin issues and summaries are copyright their original authors, and distributed under the terms of the
GNU General Public License, version 2.0.