http://bugs.winehq.org/show_bug.cgi?id=35398
Bug ID: 35398 Summary: Unable to run internal linux programs Product: Wine Version: 1.7.10 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: cmd Assignee: wine-bugs@winehq.org Reporter: lovyagin@mail.com Classification: Unclassified
Since wine version 1.6.x or so on I'm not able to run linux applications from applications running under wine. For example, I can't open terminal from Far Manager or even run ls from cmd.exe shell. Since using Far Manager is very comfortable and important for me, I can't update from wine 1.5.x where everything works properly.
I've looked through source file wcmdmain.c and found that all things related to running internal command wiped out from function
void WCMD_run_program (WCHAR *command, BOOL called);
The following lines absent:
BOOL assumeInternal = FALSE;
/* Internal programs won't be picked up by this search, so even though not found, try one last createprocess and wait for it to complete. Note: Ideally we could tell between a console app (wait) and a windows app, but the API's for it fail in this case */ if (!found && pathposn == NULL) { WINE_TRACE("ASSUMING INTERNAL\n"); assumeInternal = TRUE; } else { WINE_TRACE("Found as %s\n", wine_dbgstr_w(thisDir)); }
following changed
from
/* Once found, launch it */ if (found || assumeInternal) {
to
/* Once found, launch it */ if (found) {
from
status = CreateProcessW(assumeInternal?NULL : thisDir, command, NULL, NULL, TRUE, 0, NULL, NULL, &st, &pe);
to
status = CreateProcessW(thisDir, command, NULL, NULL, TRUE, 0, NULL, NULL, &st, &pe);
from
if (assumeInternal || !interactive || (console && !HIWORD(console))) WaitForSingleObject (pe.hProcess, INFINITE);
to
if (!interactive || (console && !HIWORD(console))) WaitForSingleObject (pe.hProcess, INFINITE);
Restoring them all results that at last cmd.exe staring to work properly. I suppose that every other attempt to run linux app from windows app will work too.
Forum thread also: http://forum.winehq.org/viewtopic.php?f=8&t=20709
Why this very reasonable feature was removed? I suppose that everything should be restored back.