Wine Traffic #143 For 8�Nov�2002

By Brian Vincent

Table Of Contents

Introduction

This is the 143rd 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 541 posts in 1596K.

There were 96 different contributors. 55 posted more than once. 53 posted last week too.

The top posters of the week were:

1. News: Wine-20021031 and Commercial Devel

2�Nov�2002�-�8�Nov�2002 (4 posts) Archive Link: "News"

Topics: News

People: Alexandre Julliard,�CodeWeavers,�,�codeweavers,�Xandros,�News,�TransGaming,�Gavriel State

Oops. As I as doing last minute additions to last weeks' issue I missed announcing wine-20021031. Alexandre broke from his usual one month cycle and released this a mere 24 days since the last one. No doubt in part to the recent flurry of activity. From the announcement:

WHAT'S NEW with Wine-20021031: (see ChangeLog (http://cvs.winehq.com/cvsweb/wine/ChangeLog?rev=1.64&content-type=text/x-cvsweb-markup) for details)

CodeWeavers released CrossOver Office 1.3.1 on Monday. This is basically a bugfix release as noted by the minor version number. Check out the release notes (http://www.codeweavers.com/about/press_releases/?id=20021104) to find out what's new. One thing I found interesting was this note, " Warns user if they are about to run an executable attachment from the /tmp directory. This protects users against viruses such as KLEZ."

Gavriel State updated his column (http://www.transgaming.com/gavstates.php) over at TransGaming. In it he discusses some of the more intangible aspects of selecting development work. Viktas Gupta (http://www.transgaming.com/presmsg.php) also updated his column. In it he discusses he discusses how cool TransGaming is.

Xandros (http://www.xandros.com) revamped their web site. Things seem a lot smoother than a few weeks ago. And if you order now you get free fedex shipping.

2. Wine 0.9 To Do

7�Nov�2002�-�8�Nov�2002 (19 posts) Archive Link: "Wine 0.9 TODO v0.2"

Topics: Project Management

People: Dimitrie Paun,�Vincent Beron,�,�Huw Davies,�Francois Gouget,�Thomas Wickline,�Marcus Meissner,�Alexandre Julliard,�Andreas Mohr,�Gerald Pfeifer,�Jeremy White,�Bill Medland,�Jeremy Newman,�Shachar Shemesh,�Dustin Navea,�Carlos Lozano

Dimi Paun posted a link to the (official?) Wine 0.9 To Do list: http://www.dssd.ca/Wine-0.9-TODO.html (http://www.dssd.ca/Wine-0.9-TODO.html) . Most likely you'll find that page the most up to date, however I'll reproduce some of it below for reference. Dimi seems to be adding/updating/changing things on a daily basis as he gets more feedback.

I should also point out, if you've wanted to get involved with Wine this is an excellent opportunity. Many of the tasks don't require any coding ability. Wanna make some screenshots? Send them to me (mailto:vinn@theshell.com?subject=Wine screenshot) . Don't even worry about thumbnails or resolution, I can take care of that. (I'd prefer if they were in a compressed format though.) Other tasks, such as nailing down the default Wine configuration, provide an excellent chance at getting your feet wet with minimal knowledge of Wine or C needed.

Wine 0.9 TODO

Introduction

Before I start, a quick reminder for the 0.9 criteria:

What is not in 0.9:

Please review it, and let me know if:

Please send all comments, flames, and suggestions to Dimitrie O. Paun (mailto:dpaun@rogers.com) .

Resources

ChangeLog

TODO

A. WineHQ work
Beta available here (http://lostwages.winehq.org)

  1. Website redesign [IN PROGRESS]
  2. Reorganize the navigational menu [DONE]
  3. Create some really sexy screenshots [IN PROGRESS]
  4. Rework the FAQ interface [IN PROGRESS]
  5. Enlist some 'official' distribution maintainers [DONE]
  6. Create nice page with apps that run virtually flawless [IN PROGRESS]

B. Documentation work

  1. We need to first figure what is out of date. [TODO]
  2. Move CVS docu from User Guide to Devel Guide [IN PROGRESS]

Wine configuration

  1. Merge configuration into the registry [TODO]
  2. Write control panel applets for editing it [TODO]
  3. Have decent defaults so we can start control panel without prior configuration [TODO]
  4. Have wizard like app to autoconfigure wine [TODO]
  5. Make Wine's DLLs register themselves to avoid manual merging of the winedefault.reg [TODO]
  6. Write wine.inf script to setup a new Wine installation [TODO]
  7. Have a wineboot script for RunOnce stuff [IN PROGRESS]

Stabilize utilities

  1. Get rid of the init directive from .spec files [DONE]
  2. Make sure the .spec file format is fairly stable [IN PROGRESS]
  3. Ensure the various utilities' options are stable [IN PROGRESS]
  4. Get rid of the Perl testing framework [TODO]

Important fixes

  1. Window management rewrite, so we can install apps in managed mode. [TODO]
  2. Finish DLL separation Phase 1 [IN PROGRESS]
  3. Detect printing system at runtime [TODO]
  4. Detect OpenGL system at runtime [TODO]

3. Testing Apps: Tucows' Top 20 Apps

2�Nov�2002�-�3�Nov�2002 (14 posts) Archive Link: "Today wine's compatibility with 20 popular apps from tucows"

Topics: Testing

People: Carlos Lozano,�Carl Lozano,�,�Apple,�Unknown

Carlos Lozano announced:

I have taken the 20 first entries of the top 100 tucows list, except that some entries has been removed, mainly antivirus and programs what need other different program to work. (URL: http://tucows.uam.es/toppicks.html)

Every application was tested with:

Results:
Total apps tested: 21 (*)

(*) Really 20, but two different Internet Explorer versions was tested.

Applications:

  1. Irfan View - This feature-rich image viewer and converter supports many formats.

    VERSION 3.75.
      * Install: No, Required mfc42.dll. (with mfc42.dll native works) * Run: No (with mfc42.dll native works, but some options likeA thumbnails crashes)
  2. Winace - If you need to compress and archive, try out this tool.

    VERSION 2.20.
      * Install: No, crashes. * Run: Unknown
  3. Internet Explorer - This listing includes 5.01, 5.01 High Encryption Pack, 5.5, 6.0 Beta and the long awaited, official release of 6.0.

    VERSION 5.5. (from cdrom)
      * Install: No, with native urlmon stops a bit later. * Run: Unknown.


    VERSION 6.0. (from cdrom)
      * Install: No, with urlmon native stops in crypt. With crypt32+msoss native stops with a CRC error. * Run: Unknown.
  4. WinZip - The most popular compression utility for Windows just got better.

    VERSION 8.1.
      * Install: Yes. (Dlls installed none) * Run: No, it needs riched20.dll to shown the text in zipped files what includes a message, zipped files without messages works fine.
  5. ICQ for Windows - The new and improved ICQ is here with all the great features you've come to expect -- plus a whole new set!

    VERSION 2002a.
      * Install: Yes, but it need "touch /c/windows/system/setupapi.dll" (Dlls installed atl.dll,msvcrt.dll) * Run: No, required comctl32 and riched32 native. (it wasn't able to add users to contact list even with this native dlls, i don't know if it was a different problem, or wine related)
  6. Acrobat Reader - This is the solution to your PDF troubles.

    VERSION 5.0.5.
      * Install: Yes. (Dlls installed by the program: advpack.dll, msvcrt.dll, shfolder.dll, w95inf32.dll, msvcp60.dll, oleaut32.dll, w95inf16.dll). * Run: Yes.
  7. VCDEasy - This is a VCD authoring freeware.

    VERSION 1.1.1.
      * Install: Yes. (License and more info is not visible - riched32) (Dlls installed none) * Run: No, crashes.
  8. Go!Zilla - Let this program do all the work of downloading and disconnecting.

    VERSION 4.11.39.
      * Install: Yes. (License is not visible - riched32) (Dlls installed none) * Run: No, crashes.
  9. WS-FTP LE - WS-FTP LE is a great application that allows remote file edits, chmods on UNIX boxes and file moves.

    VERSION 5.08.
      * Install: Yes. (Dlls installed none) * Run: Yes.
  10. Winamp - This program has so many possibilities and offers such a wide range of interfaces, you'll need no other player.

    VERSION 3.0:
      * Install: Yes. (Dlls installed none) * Run: No. (Need native msvcrt.dll then works)
  11. WinRAR - This is a version of the popular RAR compression format, offering significantly improved compression ratios.

    VERSION 3.00:
      * Install: Yes. (It will install winrar in the directory what you are when run the installer, it is a buggy because you must stop the instalation with ctrl+c when it will ask by "overwrite files", but it works). * Run: Yes. (minnor glitches in bugzilla)
  12. Fruityloops - Make your own MIDIs, WAVs and MP3s in minutes.

    VERSION 3.56:
      * Install: Yes. (It will install fruitloops in the directory what you are when run the installer, it is a buggy because you must stop the instalation with ctrl+c when it will ask by "overwrite files", but it works). * Run: No. (Need hhctrl.ocx native, with it the program runs, but i haven't used it before :/)
  13. Download Accelerator Plus - Automatically manage your downloads while accelerating them with multiple server connections.

    VERSION 5.3:
      * Install: Yes. (Dlls installed AniGIF.ocx,atl.dll) * Run: No. (the program starts, but when you press in some option it will stops)
  14. QuickTime Player - View almost any movie out there with the added benefits of Apple's exclusive formats. QuickTime Player is one of the best around.

    VERSION 6.
      * Install: Yes. (Dlls installed Indeo4.qtx,QuickTimeMusicalInstruments.qtx, IR41_QC.dll,QTPlugin.ocx,QuickTimeCheck.ocx,QuickTime.qts,IR41_QCX.dll, QuickTime.cpl,QuickTimeVR.qtx) * Run: No. (the program runs with massive gfx problems)
  15. Easy CD-DA Extractor - This program rips CDs, converts audio files between different formats, and creates audio CDs from WAV and MP3 files.

    VERSION 5.0.
      * Install: Yes. (Dlls installed advpack.dll, drmv2clt.dll,msdmo.dll, w95inf16.dll,wmnetmgr.dll,asfsipc.dll,l3codeca.acm,msnetobj.dll, w95inf32.dll,wmstream.dll,blackbox.dll,laprxy.dll,msvcrt.dll,wmadmoe.dll, wmvcore.dll,drmclien.dll,npwmsdrm.dll,WMASF.dll, drmstor.dll,msaud32.acm, sl_anet.acm,wmidx.ocx) * Run: No, crashes. (sysparams.c:1646 - user.dll.so)
  16. WordWeb - An extremely popular dictionary and thesaurus in one.

    VERSION 2.0a.
      * Install: Yes. (It will install wordweb in the directory what you are when run the installer, it is a buggy because you must stop the instalation with ctrl+c when it will ask by "overwrite files", but it works). * Run: No. Freeze, it will not show any window.
  17. mIRC - This is a popular IRC client. (www.mirc.co.uk)

    VERSION 6.03.
      * Install: Yes. (Dlls installed) * Run: Yes.
  18. CD Mate - This is a powerful CD backup utility.

    VERSION 2.2.8.1.
      * Install: Yes. (License and more info is not visible - riched32) (Dlls installed none) * Run: No, crashes. (sysparams.c:1646 - user.dll.so) (the audioplayer included with the program works)
  19. ACDSee - This is a picture viewer, graphics converter and image management program.

    VERSION 4.02.
      * Install: No. (wininet dll problem) * Run: Unknown
  20. Putty - This simple Telnet application could hang with the big boys.

    VERSION 0.52.
      * Install: No needed install. * Run: No. (it doesn't show the right part of the window, regression????)

A couple people wondered why bother testing many of the applications since there were clear Linux alternatives. Carl replied, " It is the same that when you are doing a videogame console emulator. You don't start testing the comercial games first, you start with simple demos, when you will get the basic working, then start with more complex one, and so. The important is not run this applications, the important is that sure that the authors of this applications have used features what are the base of other more complex. So if this features are working correctly, it will be easier run more complex software in the future :) "

4. Testing Apps: Mozilla and Multimedia Players

3�Nov�2002�-�5�Nov�2002 (6 posts) Archive Link: "Mozilla 1.0.1 Win32 works almost flawlessly"

Topics: Testing

People: Jakob Eriksson,�Dimitrie Paun,�,�Max

Jakob Eriksson reported success running a Win32 version of Mozilla. His note was pretty short, " Works mostly fine. Resizing works, I think it didn't a couple of months ago."

In addition to the Tucows apps listed above, Dimi Paun decided to try out some multimedia apps and see how well they ran. He reported the following results:

A2 Media Player (http://thenewsmonsters.tucows.com/mmedia/preview/193593.html)
"A2 Media Player allows you to play MP3, MIDI and WAV files. The interface has retractable playlists, mixers, equalizers, visual displays and an ID3 tag editor. The GUI engine is capable of pop-up animated interface architecture, and Karaoke emulation provides synchronized lyrics and image display."
Installs OK, runs almost fine. This one is special in that the main window is supposed to be round, but we also create a rectangular window behind it. I think we should try to get this one to Gold.
Maximus 3.4 CD Player (http://solair.eunet.yu/~muaddib/)
"Maximus is a CD player for Windows 95, 98, NT and 2000. It is freeware, which means that you don't need to pay any money for it but you mustn't be payed to distribute or give it to anyone."
Seems to install & run just fine
AxelCD (http://www.accelware.com/axelcd/)
"AxelCD is an attractive, free replacement for the default CD player that comes loaded with the Windows9x/Me/NT/2000 Operating System."
This one installs OK, and runs OK. And it's cool. I haven't tried playing CDs, but I think we should try to include it on the list.
QCD (http://www.quinnware.com/news.html)
"QCD has a fully skinnable interface that covers a powerful plug-in architecture. QCD's flexibility allows it to be as simple or as feature rich as you like. QCD has full support for many audio formats and includes crossfading and gapless CD Audio playback."
Another success story

5. RPCSS.exe Replacement

4�Nov�2002�-�5�Nov�2002 (14 posts) Archive Link: "RFC: rpcss skeleton prototype #2"

Topics: Status Updates

People: Greg Turner,�Ove Kaaven,�

Greg Turner has been working on a standalone equivalent to NT4/2000's rpcss.exe. That executable is responsble for lots of remote procedure call stuff, a lot of which still isn't fully understood. One functionality it provides is endpoint mapping. Distributed applications like SQL server and Exchange assign RPC services dynamically to TCP and UDP ports. The endpoint mapper is responsible for mapping the RPC services to their currently assigned ports. So when a client requires access to a service using RPC first it must request a port mapping. After that it can communicate directly with the service. Greg explained part of the problem with that:

There's a chicken-and-egg problem. We're trying to implement RPC, but, to do the full implementation, we're supposed to provide endpoint mapping API's, and these API's are, themselves, supposed to use RPC to accomplish their task... that puts us in a catch-22.

This is where the pipes hack comes into play; instead of implementing the endpoint mapping API's using RPC, like we're supposed to, I plan to use pipes to do the IPC between the endpoint mapper (rpcss) and the processes calling these API's.

This is what the unmerged server parts do, as well. Once the rest of the RPC implementation works, we'll be in a position to reimplement the endpoint mapping API's the right way (using RPC), and get rid of the pipes hack.

Greg set about building the app using named pipes for communication. His latest version, #2 () added more functionality:

This one implements "pseudo-fork" behavior, a main workhorse loop, pseudo-debug log emitter, and command-line interpretation. In particular I'm looking for comments/criticism/flames/etc for:

Alexandre didn't think it was worth having the fork stuff in there since it would only be invoked from within Wine. Greg felt otherwise:

that's largely correct, except it should also support a "daemon" mode ("/s/index.html" command-line argument). For local RPC's, the "lazy" (from rpcrt4.dll) invocation method will be enough. But -- to be a "real," fully functional RPC server, we will need it running in "server" mode. Otherwise, networked RPC's, from without, will always fail, finding no endpoint mapper or name service to converse with at the local host.

This is why you will always find rpcss.exe running on W2K, even when nobody's logged in. Turn off the Remote Procedure Call service (rpcss), and your W2K host is basically dead, or, at best, incapable of networked communications, like domain browsing, mmc administration (even local), filesharing, etc.

So, to sum up my point... supporting some kind of daemon-like mode will become increasingly important as the implementation progresses, and at least marginally useful in the relatively near future (i.e., to test basic networked RPC's, I'll need this).

Alexandre still felt that the approach was wrong for now and the problem was best solved later. Ove pointed out another potential problem, " Note that to be a "real, fully functional RPC server", it would have to bind to a privileged port and such, providing all the DCE RPC daemon services that should live on that port. I'm not sure I would trust a complex Winelib app to run as root, listening on an open network port. It'd probably be much better to let the user run a real DCE RPC daemon (like freedce's) as root, and just have Wine's rpcss communicate with it as necessary to update this real daemon's registrations. Then several (Unix) users could run RPC services on the same host, too."

Greg kept working on it, saving some of that as things to worry about later.

6. Avoiding ASCII/Unicode Function Duplication

5�Nov�2002 (8 posts) Archive Link: "Avoiding FunctionA/W Duplication"

People: Jaco Greeff,�Vincent Beron,�Eric Pouech,�Dimitrie Paun,�

Jaco Greeff wanted some input on how to best avoid code duplication when implementing a function that had both an ASCII and Unicode version:

I would like some comments on somthing that has been bugging me quite a bit. Implementing parts of the API can lead to duplication of code inside the same file. In my example, let's take two functions, one operating on a ASCII string and one one a Unicode string, let's call them "funcA" and "funcW".

Upon implementation, the only real difference between these are the parameters, "funcA(const char *p)" and "funcW(const WCHAR *p)". What is the best way to keep the code maintainable and making sure that we don't have to fix a single bug in two places in the same file? I see 3 (maybe more) approaches:

  1. Implement funcA, making funcW and exact copy with the relevant parameters and local variables changed;
  2. Implement a generic solution as a macro and get both funcA and funcW to call it will specific parameters;
  3. Do some preprosessor magic as implemented in dlls/msvcrt/scanf.[hc]

What is the general feeling as to the right way to approach this? What is the preferred approach? (And maybe it is something I haven't listed here.)

Dimi Paun didn't like the macro idea at all. Vincent Beron suggested, " >From what I saw in a couple of places: from funcA, do some magic on the parameters (convert to Unicode), then call funcW, then reconvert the result from Unicode to ASCII. Yes you have to convert twice, but you use the same function."

Eric Pouech had another approach, " duplicating the code (in that case) is one solution (in your example, you could use a shared function between A & W familly, using as parameters

  1. a pointer to a memory zone to write from
  2. the length to be written
"

And Dimi Paun suggested yet another, " Implement the meat in a funcT that takes a boolean as an argument telling it if the input is A or W, and just have the func[AW] forward the call to funcT This works only within one module, and there are other problems. "

Alexandre really didn't like that though because of the casts required and the compiler not being able to do type checking.

7. Thanks from Bob

6�Nov�2002 (6 posts) Archive Link: "Forgive the intrusion"

Topics: Project Management

People: Bob Amstadt,�Alexandre Julliard,�,�Thomas Wickline

If you've ever dug around through Wine docs you might have noticed references such as "..Wine was started in 1993 by Bob Amstadt.." And probably the next thing you'll notice is no other mention of his name in recent history. Bob's early involvement was crucial toward developing the goals of the project. Anyway, this message appeared on the list this week:

Please don't let me distract you from your important work, but Thomas Wickline asked me to stop in and say hello to all of you. I understand that we are approaching the 10 year anniversary of Wine. That is a remarkable feat. All of you should be proud to be contributing to this effort. It is an amazing piece of software.

Though many of the names I see on the WineHQ web site are new to me. I continue to see Alexandre Julliard's name on this work. I had the pleasure of meeting Alexandre many years ago and I am so glad to see that he continues the work after so many years. Alexandre, if you read this, thank you very much for all that you have done for free software.

Thank you to the rest of you as well. Wine has been a team effort from the start and is so successful because it is a team effort. When I stepped down from leading this project, I knew it would continue due to the efforts of all the people that have helped along the way. It not only has continued, but it clearly thrives. I'm amazed at the number of people that know what Wine is.

Congratulations to all of you Wine developers. You are amazing people.

Someone inquired further about the early days of Wine, and Bob explained, " As far as the very beginning, it started from a discussion on USENET. Some people said it couldn't be done which inspired me to begin writing a loader. Another person (unfortunately I don't remember who) started to do the same thing at the same time. I don't remember the details, but my work became the base system that everyone adopted. Eric Youngdale contributed a substantial amount of code in the early days. Someone else took the lead on developing the windowing code. I don't remember who. Was that you, Alexandre or did you join in after that?"

Alexandre said it was him, " Yes that was me. I remember the first patch I did was a hack to tie together the loader you had written with the tcl/tk menu stuff written by Peter MacDonald so that the menudemo program worked. After that I set out to implement GDI to replace tcl/tk..."

8. Author Needed for Winelib Article

1�Nov�2002 (1 post) Archive Link: "C/C++ Users Journal is looking for a WINE author"

Topics: Documentation

People: Joe Casad,�

A request was posted to wine-devel for someone to write an article:

Is anyone interested in writing an article on the winelib development toolkit for the C/C++ Users Journal? This article would be a great way to bring some practical information about winelib to advanced C/C++ programmers who may not be familiar with it (plus you get paid).

We're looking for an article that will give some background on winelib and also provide a practical example of how to use winelib to port a Windows app to Linux. Our focus is on the code. We'd be looking for a very detailed description of how to use winelib in a specific, real-world situation.

Let me know if you, or someone you know, would be interested in helping us.

You can contact me at: jcasad -at- cmp.com

-Joe Casad
Editor-in-Chief
C/C++ Users Journal

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.