WineHQ

World Wine News

All the news that fits, we print.

10/25/2002
by Brian Vincent
Issue: 141

XML source
More Issues...

This is the 141st release of the Wine's kernel cousin publication. Its main goal is to distribute widely what's going on around Wine (the Un*x Windows emulator).


This week, 236 posts consumed 947 K. There were 61 different contributors. 33 (54%) posted more than once. 35 (57%) posted last week too.

The top 5 posters of the week were:

  1. 47 posts in 115K by Dimitrie O. Paun
  2. 17 posts in 48K by Alexandre Julliard
  3. 13 posts in 139K by Greg Turner
  4. 10 posts in 24K by Jeff Smith
  5. 9 posts in 28K by Martin Wilck

News: Xandros Release, WineX with Lycoris, Klez Virus 10/19/2002 Archive
> News

Xandros released their Desktop Linux product this week. You can find coverage from eWeek , NewsForge , and the press release itself. >From the eWeek article:

CrossOver for Xandros will combine functionality from CrossOver Office, which lets applications such as Microsoft Office and IBM's Lotus Software division's Notes run; and CrossOver Plugin, which lets Linux Web browsers use Windows Web applications, such as Windows Media Player, QuickTime and Shockwave.

Xandros Desktop users will be able to run or view these applications without having to buy, configure or install additional software on top of the operating system, officials said.

There is one hook: CodeWeavers will not provide support or maintenance upgrades for Xandros customers, who will have to pay separately for a CrossOver support contract.

From the NewsForge article, Of course, with CrossOver Office and CrossOver Plugin installed by default, you'll also be able to install your Windows programs. Let me tell you: Internet Explorer 5.5 runs beautifully in Xandros. I've used CrossOver to install Explorer on Mandrake and SuSE, with only partial success. But everything about Explorer is right this time: the fonts, the javascript, the layouts, the speed -- everything.

Xandros also revamped their website in anticipation of the launch. One page discusses Windows compatibility and shows how Xandros integrates with Samba and Wine (though not specifically mentioning either). You can also purchase the Debian-based distribution from their new store for $99. So what's next for the company? Coming soon (possibly with a very liberal definition of "soon") will be a server edition with SOAP-based remote management tools and Xandros Networks integrated into both the desktop and server products to provide updates and new releases.

But the question really begs, is any of this the least bit new? I mean, we've been able to buy distributions in the store and online for a heck of a long time. Automatic updates aren't really new. Even the configuration and management of lots of desktops really isn't that cutting edge. CodeWeavers' Wine preview has been available for Mandrake users for years. However, if you think back to when Corel released their distribution you'll remember that it raised the bar for all distributions. In general, Linux distributions seem to go through spurts of changes, and it seems like its happening again. Perhaps within the next year it will just be expected that all distributions will be designed to have tight Samba integration, limited Windows application support, and a desktop that's even easier to navigate. For more on what really differentiates Xandros, check out this interview with Ming Poon, Xandros' VP of Software Development.

In other disto news, Lycoris will be releasing it's distribution with WineX included. The press release reads:

Redmond, WA -- (press release) -- Continuing its leadership role in providing alternative desktop software, Lycoris partners with TransGaming to bring unprecedented cross-platform gaming into the hands of Desktop/LX users.

With the new Lycoris GamePak, Desktop/LX users gain simple installation of improved and enhanced Open Source games, plus the ability to play top Windows games, all in one box. Access to TransGaming's WineX software, which allows DirectX games to run on other platforms, will be included with the Lycoris GamePak, on retail store shelves this Holiday season.

Lycoris and TransGaming have reached an agreement that will also enable GamePak subscribers to get discounts on major Linux gaming titles such as TimeGate Studios' award winning game series Kohan, and promises to add value for users who move over to the Desktop/LX platform during the holidays.

Lycoris sees this as an important step to offering a viable alternative to Windows and giving gamers the excitement and action they expect.

Speaking of TransGaming, happy birthday! They're a whopping one-year old. To celebrate, they gave a discount for all subscribers buying products on Tuesday, Oct 22nd. Unfortunately I got the press release too late on Friday to include in last weeks' issue, so if you didn't hear about it you're out of luck. Part of that announcement read: This is our way of letting you know how much we appreciate TransGamers. Many of you who signed on last year when TransGaming first launched its subscription service supporting a mere six games, are still with us today, now enjoying over 150 titles on Linux. That's awesome and this anniversary gift is our way of thanking you, and all members of the TransGamer community, for the support and interest we have received.

But none of the above happened to be the big of the week. That prize goes to an article on linuxguru.net about Wine running the Klez virus. This isn't the first time Wine has had the distinction of running viruses intended for other operating systems, but Klez is a little more known than the others. Several people pointed out KMail really does ask whether programs should be executed, as shown in this screenshot . It should also be noted that Wine only runs with the same permissions as the user executing it. So if a user can mailbomb friends by accessing a local MTA, so can Wine. Securing Wine, daemons, and anything else is left as an exercise for the reader.


RPC Update 10/22/2002 Archive
Status Updates

Greg Turner set about merging a ton of RPC code written by Ove Kåven <kcref></kcref> and wrote in with an update about the status of the merge and some of the new stuff he's working on:

Above what Ove already implemented, I really haven't done all that much. Frankly, in its current state, it is quite possible that the RPC work I am doing will /detract/ from the stability of wine, until the implementation is more complete. RPC is painfully complicated, and a victim of serious creeping featurism. Microsoft makes it worse by providing poorly documented extensions to the protocol, and a largely undocumented marshalling API (much of which developers typically don't have to learn because the API calls are generated by the MIDL compiler).

My target right now is to get a "hello world" API invocation to work across processes using wine RPC. Once that is achieved, I plan to create a unit test for this. Then, we'll have a framework that we can begin to extend and implement "properly." I am not there yet, but I think I'm getting close. I just have to implement marshalling for strings, which, in theory, looks pretty easy. There are probably many bugs that need squashing before it works, and maybe some additional gaps in functionality that I don't even realize exist yet... but I do think I'm pretty near.

Now, what remains to be done? Well, as Ove mentions in the TODO for his units, "a whole lot." Here are several things in no particular order:

  • widl is like MIDL for wine. For wine to be a useful RPC platform, quite a bit of work needs to be done here. widl currently doesn't generate stubs for RPC invocation -- it will need to; this is tricky because the MIDL compiler does some really weird stuff. Then again, we don't necessarily have to make widl work like MIDL, so it could be worse.
  • RPC has a quite featureful error handling mechanism; none of it is implemented right now.
  • The server portions of the patch don't seem to be getting accepted by Alexandre. My guess is that once I have a working test he'll conceed to let this in. To implement this properly is tricky and possibly beyond my abilities; Ove seems to think the right way to do this is to use LPC (Local Procedure Call, another undocumented monster). LPC has no implementation in wine and is not going to be trivial to create.
  • there are several different memory allocation schemes for MSRPC. I don't even understand what they all are yet, much less have them properly implemented.
  • MSRPC provides impersonation capabilities which currently are not possible to implement in wine.
  • Some transports are not yet implemented. The existing transport implementations are incomplete. (By transports I mean, tcp/ip, named-pipes, local procedure call, etc --- the various types of low-level plumbing that can be used to connect the client and the server).
  • Data marshalling is the means by which RPC represents data across process and machine boundaries. MSRPC extends NDR format for this. The wire protocol is mostly documented, but the MS API's to convert data-types in memory into NDR are not. This, alone, is a sizable chunk of work.
  • ORPC is RPC for OLE; once we have a working RPC framework, we can use it to implement out-of-process OLE client/server communications. This will be a huge win for wine. But again, it's a lot of work, and I'm no OLE expert (hell, I'm no RPC expert :)
  • Surely there is much more stuff I am forgetting. Like Ove said, it's "a whole lot" of stuff, approximately as big a project as, say, DirectX.

Basically, RPC for wine is a huge beast of a project. IMO it is probably the biggest and most difficult-to-fill hole in wine's feature-completeness ATM. In the short term, don't expect any miracles --- I really doubt that I'm going to "solve" this (in my spare time!) anytime soon. But, once I start getting some results, I imagine others will be enticed to help out, as contributors like Ove already have. (To be clear: Ove enticed me, not the other way around: He did all the "real" work, and deserves way more credit than me for any success I may achieve in the near future).

Greg made available some of his work that hadn't been split up yet and announced a large patch :

I'm holding back on submitting an "official" patch to give Alexandre the chance to catch up so I can start a new "F" series and not stay forever conceptually forked from CVS wine. But I thought he or somebody else might like to see what's I'm up to so here goes (I'm also having some HD troubles so, in case I have a meltdown, this will prevent me from losing my work!)

I'm enclosing a diff relative to E_PL15 and also a bigger one of uncomitted changes relative to CVS wine (the E_PLxx series are inclusive of this latter diff, so there is nothing new there). I've indexed it as F_PL1 because presumably F_PL0 will be yet another copy of the unmerged server parts.

the E_PL15_unmerged patch does not include the F_PL1_pre0 patch, so if you take CVS wine, apply E_PL15_unmerged.diff, and then apply F_PL1_pre0.diff on top of that, you have my tree. As usual, this is not a hint to apply.

CHANGELOG (for rpc_F_PL1_pre0 only):
dlls/rpcrt4: ndr_marshall.c, ndr_midl.c, ndr_misc.h; include: rpcndr.h, wine/rpcfc.h:
Greg Turner

  • make explicit some hidden include dependencies
  • Implement NdrGetBuffer, NdrFreeBuffer, and NdrConformantStringBufferSize
  • define the RPC_FC_C_CSTRING constant
  • perhaps I don't want those MIDL structs after all. removed.


Listview Update (con't) 10/22/2002 Archive
Status Updates

Dimi Paun wrote in with another update about his Listview progress:

With my latest W-series patches, the listview should now be a pleasure to work with: fast, *no* flicker, etc. It should be a lot better than before I started working on it. If this is not the case (there are regressions, there is nasty flicker *anywhere*, it's slow, or in general it's not a pleasure to interact with it, i.e. you don't get a warm and fuzzy feeling) let me know now.

Internally, the code is a lot cleaner. I have started on Sep. 9, 2002, at revision 1.138. A month and a half, and almost 150 revisions later, most of the code has changed multiple times. Large number of visible, and mostly invisible bugs have been fixed, a lot of corner cases covered, features implemented, listview has been made scalable, flicker has been eliminated by redrawing the absolute minimum, etc. We are now on solid ground to implement more stuff.

This has been an extenuating exercise. I am tired, and on top of it all, real life has knocked on my door. This does not mean I'll stop working on it, but it probably means that I will not be able to put as much time into it.

For the above mentioned reasons, I think it's best for everybody if we stabilize the code as much as possible, before we start working on the large number of missing features. For this I need your help -- the few apps that I test with work just fine now.

I would like to thank everybody that helped me with testing, patches, or reporting bugs. I couldn't have done the half of it without that support.

This sounds like this is a done deal. It's not. There's a lot of stuff that remains to be done, but I needed some closure. :)

This pretty much generated a flurry of reports. Dimi squashed a lot more bugs and fixed many of the problems reported. Then he announced:

After my latest X-series patches (currently at X6), I am aware of the following listview bugs:

Yes, you read correctly: NONE. :)

So I ask you for one of two things: bug reports or success stories

Otherwise, I'm gonna declare listview the coolest, nicest, most huggable piece of code out there <g>.


Commctrl Update 10/22/2002 Archive
Status Updates

Christian Neumair noticed Dimi's update for listview added to the header, so he decided to do the same for commctrl.c.

This code was audited for completeness against the documented features of Comctl32.dll version 6.0 on Oct. 21, 2002, by Christian Neumair. Unless otherwise noted, we believe this code to be complete, as per the specification mentioned above. If you discover missing features, or bugs, please note them below.

TODO

  • implement GetMUILanguage + InitMUILanguage
  • LibMain => DLLMain ("DLLMain takes over the functionality of both the LibMain and the WEP function.", MSDN)
  • finish NOTES for MenuHelp, GetEffectiveClientRect and GetStatusTextW
  • FIXMEs + BUGS (search for them)

Control Classes

  • ICC_ANIMATE_CLASS
  • ICC_BAR_CLASSES
  • ICC_COOL_CLASSES
  • ICC_DATE_CLASSES
  • ICC_HOTKEY_CLASS
  • ICC_INTERNET_CLASSES
  • ICC_LINK_CLASS (not yet implemented)
  • ICC_LISTVIEW_CLASSES
  • ICC_NATIVEFNTCTL_CLASS
  • ICC_PAGESCROLLER_CLASS
  • ICC_PROGRESS_CLASS
  • ICC_STANDARD_CLASSES (not yet implemented)
  • ICC_TAB_CLASSES
  • ICC_TREEVIEW_CLASSES
  • ICC_UPDOWN_CLASS
  • ICC_USEREX_CLASSES
  • ICC_WIN95_CLASSES


Wanted: AppDB Maintainer 10/19/2002 Archive
Project Management

Andreas Mohr put out a call for help for the Application Database:

as I'm currently in my studies duties again and the AppDB submissions are piling up enormously (> 20 new entries in less than two weeks), I'm looking for one or two additional AppDB maintainers to do the Beowulf thingy ;-) (I'm talking about http://appdb.winehq.org , here)

The job description can be found at http://www.winehq.org/about/index.php?contrib#active Sadly enough, this description page has been online for several months now, with (almost ?) nobody applying for any jobs listed.

Thomas Wickline, Bobby Bingham, and an unknown person offered to help out. Of course the job remains open for anyone else who wants to help the Wine project.


Wine PR Manager Needed 10/19/2002 Archive
Project Management

Thomas Wickline looked at the page Andi Mohr referenced above about jobs available and noticed there was one posted for a PR Manager. He reposted it to wine-devel:

PR manager

Currently we almost have no Public Relationship management at all. This should change for the better.

Currently almost the only form of PR is "preaching to the choir", since we're having articles on online IT sites (by far most are Linux only !). We should have much more coverage on traditional Windowsish sites and, most importantly, in dead-tree newspapers, to enlighten the general public also known as The Great Unwashed Masses !

He went on with some other ideas for drawing attention to Wine:

Wine users, CodeWeavers, & WineX customers could do Previews/Demo's at their local lug meetings as well.. This is what I did a couple months back and it was a huge success there were Windows users at the meeting to see Linux and Win app's being run on Linux ... Also it gives Linux users a look at wine as well. So I suggest that we try to encourage wine users to volinteer to show Wine at their local user groups/Installfest/Computer shows and so on.

This is not a PR manager but it is PR......

Anyone out there ever demo Wine for their LUG? If you'd like to write up some guidelines for how you did it, what you demonstrated, questions asked, etc, I'll post it here to help others out. Send email to vinn -at- theshell.com .


Web Browser Integration Needed 10/19/2002 Archive
Project Management

Malte Starostik posted a patch adding typedefs for IWebBrowser. IWebBrowser is a set of interfaces Microsoft defined for Internet Explorer that allow you to embed it within another program. It provides methods navigation, hyperlinking, etc. Dimi Paun asked if anyone wanted to work on actually hooking the IWebBrowser interface into the Gecko API so that applications could use Mozilla to do page rendering and such.

Malte replied, Hmm, we're implementing the absolutely necessary parts in reaktivate with Konqueror, but that's run from inside Konq already, so it's a bit special. Maybe there would be a way to use either browser with those interfaces? :-)

Dante Aliegri gave a link to some Mozilla hooks that implemented the needed functionality, Fwiw, this has already been done in mozilla, and there is documentation on it at http://www.iol.ie/~locka/mozilla/control.htm . So depend on how we want to do this, we could use this, and/or konq. I would think more people would want to go the mozilla way since its tri-licence, and the fact that it already works in windows :) But, that's just something to think about.

Dimi thought it would be possible to use it, but cautioned, The only problem is that it's in C++. And it's using ATL, which is, IIRC, some MS lib, right?


Running Australia's eTax 10/22/2002 Archive
Fixes

Ben Stanley wanted to let everyone he used Wine to prepare his tax return:

I have now completed using the eTax program from the Australian Taxation Office ( http://www.ato.gov.au/ ) under wine, and have some concluding remarks.

I'll interrupt and point out some things..

  • Australia's taxes are due October 31st, so that would translate into Really Soon.
  • Australia's government is cool enough to provide tax software for it's citizens.
  • And on their web page they actually suggest using an emulator if you don't have Windows (rather than assuming you're running an OS from Redmond.)

Ben's notes were:

  • Yellow Note Popups over buttons: these notes pop up almost immediately you put your mouse over a button, and if you click on them, the button does not respond. This causes great user frustration, as you point the mouse at a button, click the mouse, and nothing happens because the popup note appeared and stole the mouse click. Perhaps this could be solved by moving the popup note position so that it's not directly under the mouse pointer? I don't know if this is an etax problem or a wine problem. Workaround: move mouse over button and click again, or be very quick with your mouse click the first time.
  • ListView (tree): when hovering over items with long names, the same popup note appears, and also greedily steals mouse clicks, preventing you from selecting the item underneath. The note must pass the mouse click through for proper handling by the list item. Workaround: Wait for popup to disappear and then click on list item.
  • I had some refresh issues with the print preview section of the program. When it draws a page for the first time, all form fields appear to be filled in correctly, but when scrolling the form fields are often left blank when they should be filled in. This may be verified by going forward and then back a page, to force a complete re-draw of the original page, and verifying that fields which were previously blank are now drawn properly.
  • I didn't try to submit the tax return under wine, as I did not know about the wine integration of the web browser which would be used to perform the submission. (I failed to download the security codes under Mozilla, so I resorted to a Windows box for downloanding security codes and submission.)
  • Help problems, partly to do with launching winhelp from within etax, and also partly because WINE help can't yet read the etax help file properly.

I used etax in the desktop windowing mode, as I had problems with both the managed and unmanaged modes. I set all dlls to builtin (except for "*").

This is the first year that I have been able to use eTax to do the tax return. I want to thank all of the wine contributors for making it possible! Last year I gave up and used a Windows box for the whole thing.


Running Native Windows Utilities 10/22/2002 Archive
Fixes

Jeff Smith wanted to run Windows' native reegedit, but he couldn't figure out how:

I know I must be missing something very simple, but I cannot seem to get native regedit to run. The builtin version always runs instead. The only thing I could think of was an entry in DllOverrides:

    "regedit.exe" = "native, builtin".

That did not work.

Greg Turner suggested just renaming it to winregedit.exe before running it. Jeff thought that might be okay, but then a while later found the solution he was looking for:

Found something: it works if I fully qualify the command name.

I was trying this in the DllOverrides / command-line respectively:

    "regedit.exe" = "native, builtin"
    --dll regedit.exe=n,b

What I have to do for it to work is this:

    "C:\\Windows\\regedit.exe" = "native, builtin"
    --dll C:\\Windows\\regedit.exe=n,b

Some people thought this was pretty confusing, especially because it wasn't really documented. Alexandre explained the reasoning, It's the way it's supposed to work, because it mimics the way loadorder works for dlls: a simple "regedit.exe" matches only if regedit is in the system directory. Otherwise you need to specify the full path, or use a wildcard entry like "*regedit.exe".

Sylvain Petreolle changed the sample config to explain this:

; you can specify applications too
; this one will apply for all notepad.exe
;"*notepad.exe" = "native, builtin"
; this one will apply only for a particular file
;"C:\\windows\\regedit.exe" = "native, builtin"


Compiling Wine With glibc 2.3 10/20/2002 Archive
Patches

Ove Kåven posted a patch with the following note, Now that glibc 2.3 is available for those bleeding-edge folks on debian unstable, it seems that Wines compiled on 2.2 won't run on 2.3 systems. The glibc folks did warn us about this a while ago though, so here's a patch that implements their suggestion for making wine compatible with as many glibc versions as possible. Perhaps Alexandre wants to use his WINE_GET_SONAME stuff to detect the name of the libc at configure time instead of at runtime like I do, though.

Ove's patch resolved fork and sigaction at runtime using dlsym() rather than having it defined when compiled. Alexandre replied, Funny, I was working on the same thing right now... But do you really need to fetch the real libc handle? It seems to me RTLD_NEXT should be enough.

Ove thought it might not be enough and wondered about other DLLs breaking it, I'm not sure, what happens if opengl32.dll.so or d3d8.dll.so links against a libGL.so that links against libpthread.so that overrides fork() ? Would RTLD_NEXT then not go to the pthread fork() ? Or perhaps, it seems, you grab the entry point before those dlls are loaded. Hmm.

Alexandre said that was exactly the case and it shouldn't cause any problems, Yes, that's the idea. By the time we do PTHREAD_init_done only the wine binary and ntdll.dll.so should be loaded, all the rest will be loaded later. I guess it would be possible to break it by doing an LD_PRELOAD of a library linked with pthreads, but I don't think we need to worry about that.


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.