Ignore:
Timestamp:
Nov 24, 1999, 8:33:34 PM (26 years ago)
Author:
sandervl
Message:

exe loader fixes + updates

File:
1 edited

Legend:

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

    r1811 r1833  
    1 /* $Id: winimagepeldr.cpp,v 1.14 1999-11-22 20:35:52 sandervl Exp $ */
     1/* $Id: winimagepeldr.cpp,v 1.15 1999-11-24 19:31:23 sandervl Exp $ */
    22
    33/*
     
    7070//******************************************************************************
    7171//******************************************************************************
    72 Win32PeLdrImage::Win32PeLdrImage(char *pszFileName, int loadtype) :
     72Win32PeLdrImage::Win32PeLdrImage(char *pszFileName, BOOL isExe, int loadtype) :
    7373    Win32ImageBase(-1),
    7474    nrsections(0), imageSize(0),
     
    8383  strcpy(szFileName, pszFileName);
    8484  strupr(szFileName);
    85   if(!strchr(szFileName, (int)'.')) {
    86         strcat(szFileName,".DLL");
    87   }
    88   dllfile = OSLibDosOpen(szFileName, OSLIB_ACCESS_READONLY|OSLIB_ACCESS_SHAREDENYNONE);
    89   if(dllfile == NULL) {//search in libpath for dll
    90         strcpy(szModule, kernel32Path);
    91         strcat(szModule, szFileName);
    92         strcpy(szFileName, szModule);
    93   }
    94   else  OSLibDosClose(dllfile);
    95 
     85  if(isExe) {
     86        dllfile = OSLibDosOpen(szFileName, OSLIB_ACCESS_READONLY|OSLIB_ACCESS_SHAREDENYNONE);
     87        if(dllfile == NULL) {
     88                if(!strstr(szFileName, ".EXE")) {
     89                        strcat(szFileName,".EXE");
     90                }
     91        }
     92        else    OSLibDosClose(dllfile);
     93  }
     94  else {
     95        dllfile = OSLibDosOpen(szFileName, OSLIB_ACCESS_READONLY|OSLIB_ACCESS_SHAREDENYNONE);
     96        if(dllfile == NULL) {//search in libpath for dll
     97                strcpy(szModule, kernel32Path);
     98                strcat(szModule, szFileName);
     99                strcpy(szFileName, szModule);
     100
     101                dllfile = OSLibDosOpen(szFileName, OSLIB_ACCESS_READONLY|OSLIB_ACCESS_SHAREDENYNONE);
     102                if(dllfile == NULL) {
     103                        if(!strstr(szFileName, ".DLL")) {
     104                                strcat(szFileName,".DLL");
     105                                dllfile = OSLibDosOpen(szFileName, OSLIB_ACCESS_READONLY|OSLIB_ACCESS_SHAREDENYNONE);
     106                                if(dllfile == NULL) {
     107                                        strcpy(szModule, kernel32Path);
     108                                        strcat(szModule, szFileName);
     109                                        strcpy(szFileName, szModule);
     110                                }
     111                                else    OSLibDosClose(dllfile);
     112                        }
     113                }
     114                else    OSLibDosClose(dllfile);
     115        }
     116        else    OSLibDosClose(dllfile);
     117  }
    96118  strcpy(szModule, OSLibStripPath(szFileName));
    97119  strupr(szModule);
Note: See TracChangeset for help on using the changeset viewer.