Changeset 3781 for trunk/src


Ignore:
Timestamp:
Jul 1, 2000, 11:50:24 AM (25 years ago)
Author:
sandervl
Message:

cmd line parser bug fixed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/peldr/pe.cpp

    r3376 r3781  
    1 /* $Id: pe.cpp,v 1.16 2000-04-14 22:56:11 sandervl Exp $ */
     1/* $Id: pe.cpp,v 1.17 2000-07-01 09:50:24 sandervl Exp $ */
    22
    33/*
     
    8484 PPIB   ppib;
    8585 char  *cmdline, *win32cmdline;
     86 BOOL   fQuote = FALSE;
    8687
    8788  if(argc >= 2) {
     
    9091                cmdline += strlen(cmdline)+1;   //skip pe.exe
    9192                while(*cmdline == ' ')  cmdline++; //skip leading space
    92                 if(*cmdline == '"')     cmdline++;
     93                if(*cmdline == '"') {
     94                        cmdline++;
     95                        fQuote = TRUE;
     96                }
    9397                win32cmdline = cmdline;
    9498
    9599                strncpy(exeName, cmdline, sizeof(exeName)-1);
    96100                exeName[sizeof(exeName)-1] = 0;
     101                char *p = exeName;
     102                if(fQuote) {
     103                        while(*p != '"' && *p != 0) p++;
     104                }
     105                else {
     106                        while(*p != ' ' && *p != 0) p++;
     107                }
     108                *p = 0;
    97109                strupr(exeName);
    98110                cmdline = strstr(exeName, ".EXE");
     
    102114                }
    103115                else {
    104                         cmdline = exeName;
    105                         while(*cmdline && *cmdline != ' ')      cmdline++; //skip exe name
    106                         *cmdline = 0;
    107                         win32cmdline += ((ULONG)cmdline - (ULONG)exeName);
     116                        win32cmdline += strlen(exeName);
    108117                        if(strstr(exeName, ".") == NULL) {
    109118                                strcat(exeName, ".EXE");
    110119                        }
    111120                }
     121                if(fQuote) win32cmdline++;
    112122                while(*win32cmdline == ' ') win32cmdline++; //skip spaces
    113123
Note: See TracChangeset for help on using the changeset viewer.