Ignore:
Timestamp:
Jan 14, 2001, 6:16:55 PM (25 years ago)
Author:
sandervl
Message:

odininst update, CreateProcess fix & workaround for PM hang in WaitForSingleObject (process handle)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/kernel32/wprocess.cpp

    r4682 r4946  
    1 /* $Id: wprocess.cpp,v 1.110 2000-11-23 19:23:51 sandervl Exp $ */
     1/* $Id: wprocess.cpp,v 1.111 2001-01-14 17:16:55 sandervl Exp $ */
    22
    33/*
     
    15681568        sprintf(cmdline, "%s", lpCommandLine);
    15691569    }
     1570
    15701571    char szAppName[255];
     1572    DWORD fileAttr;
    15711573    char *exename = szAppName;
    15721574    strncpy(szAppName, cmdline, sizeof(szAppName));
     
    15761578        while(*exename != 0 && *exename != '"')
    15771579             exename++;
     1580
     1581        if(*exename != 0) {
     1582             *exename = 0;
     1583        }
     1584        exename = &szAppName[1];
    15781585    }
    15791586    else {
     1587        BOOL fTerminate = FALSE;
     1588        DWORD fileAttr;
     1589
    15801590        //TODO: doesn't work for directories with spaces!
    1581         while(*exename != 0 && *exename != ' ' && *exename != '"')
    1582              exename++;
    1583     }
    1584     if(*exename != 0) {
    1585          *exename = 0;
    1586     }
    1587     if(szAppName[0] == '"') {
    1588         exename = &szAppName[1];
    1589     }
    1590     else exename = szAppName;
    1591 
    1592     if(GetFileAttributesA(exename) == -1) {
     1591        while(*exename != 0) {
     1592             while(*exename != 0 && *exename != ' ')
     1593                  exename++;
     1594
     1595             if(*exename != 0) {
     1596                  *exename = 0;
     1597                  fTerminate = TRUE;
     1598             }
     1599
     1600             fileAttr = GetFileAttributesA(szAppName);
     1601             if(fileAttr != -1 && !(fileAttr & FILE_ATTRIBUTE_DIRECTORY)) {
     1602                  break;
     1603             }
     1604             if(fTerminate) {
     1605                  *exename = ' ';
     1606                  exename++;
     1607                  fTerminate = FALSE;
     1608             }
     1609        }
     1610        exename = szAppName;
     1611    }
     1612    fileAttr = GetFileAttributesA(exename);
     1613    if(fileAttr == -1 || (fileAttr & FILE_ATTRIBUTE_DIRECTORY)) {
    15931614        dprintf(("CreateProcess: can't find executable!"));
    15941615        SetLastError(ERROR_FILE_NOT_FOUND);
    15951616        return FALSE;
    15961617    }
     1618
    15971619    dprintf(("KERNEL32:  CreateProcess %s\n", cmdline));
    15981620
Note: See TracChangeset for help on using the changeset viewer.