[Bug 13861] New: Use of stdio functions in wine programs

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Jun 11 16:56:39 CDT 2008


http://bugs.winehq.org/show_bug.cgi?id=13861

           Summary: Use of stdio functions in wine programs
           Product: Wine
           Version: 1.0-rc4
          Platform: All
        OS/Version: All
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P1
         Component: programs
        AssignedTo: wine-bugs at winehq.org
        ReportedBy: wine at mkarcher.dialup.fu-berlin.de


Winelib applications get linked to native libc (not msvcrt), and thus use
native stdio. This is a problem if these winelib applications are run from a
wineconsole (user backend), as native linux libc does not send the output to
stdio to wineserver, but to the terminal wineconsole was started from. This is,
in my oppinion, an undesired effect.

Following programs use printf(...), fprintf(stderr,...) 
 - uninstaller
 - msiexec
 - regsvr32
 - net
 - winepath
 - winetest
 - icinfo
 - taskmgr (in dbgchnl.c)
 - expand
 - wordpad (one error message that should never appear)

Following programs print correctly to the console
 - reg
 - xcopy
 - winedbg
 - cmd
 - regedit (surprise!)

Following programs have commented (or #if 0) out printf(...), which should
probably get deleted or converted to TRACE debug logs messages.
 - progman

I tested behaviour of all listed programs. The big surprise was regedit, which
correctly outputs to the console despite of using printf. Probably this is some
build option (it uses the msvcrt headers, for example).

If one looks at two programs that get it right, reg and xcopy, one sees the
functions reg_printfW and XCOPY_wprintf respectively, that do approximately the
same thing: Print a string into a wide char buffer (fixed length in both
cases!), and then try WriteConsoleW, if that fails, WideCharToMultiByte and
WriteFile(GetStdHandler(STD_OUTPUT_HANDLE),..). This function would have to be
cut-and-pasted into the other 10 programs needing it. I don't think this is a
good idea. (WCMD_output_asis_len is also a close match)

If the programs are crosscompiled to Windows/msvcrt, output is OK for all of
them, because msvcrt's stdio is not based on unix/posix/K&R stdio, but on
WriteFile(...)

How to handle this issue?


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list