Changeset 544


Ignore:
Timestamp:
Dec 21, 2006, 6:41:59 AM (18 years ago)
Author:
root
Message:

Correct FillPathListBox regression

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/dll/walkem.c

    r518 r544  
    1414  29 Jul 06 SHL Use xfgets
    1515  20 Oct 06 SHL Correct . .. check
     16  06 Nov 06 SHL Oops - need to allow .. here
     17  14 Nov 06 SHL Correct FillPathListBox regression
    1618
    1719***********************************************************************/
     
    264266            else
    265267            {
    266                 /* if adding manual directory, remove from auto list if present */
     268                /* if adding manual directory, remove from auto list if present */
    267269                info = ldirhead;
    268                 temp = NULL;
     270                temp = NULL;
    269271                while (info)
    270272                {
     
    393395}
    394396
    395 VOID FillPathListBox(HWND hwnd, HWND hwnddrive, HWND hwnddir, CHAR * path,
     397VOID FillPathListBox(HWND hwnd, HWND hwnddrive, HWND hwnddir, CHAR *pszPath,
    396398                     BOOL nounwriteable)
    397399{
     
    416418        WinSendMsg(hwnddir, LM_DELETEALL, MPVOID, MPVOID);
    417419
    418     if (hwnddrive)
    419     {
     420    if (hwnddrive) {
     421        // Fill drive listbox
    420422        for (sDrive = 0; sDrive < 26; sDrive++)
    421423        {
     
    429431            }
    430432        }
    431         if (hwnddrive != hwnddir && path && isalpha(*path) && path[1] == ':')
    432         {
    433             *szDrive = toupper(*path);
     433        if (hwnddrive != hwnddir && pszPath && isalpha(*pszPath) && pszPath[1] == ':')
     434        {
     435            *szDrive = toupper(*pszPath);
    434436            WinSetWindowText(hwnddrive, szDrive);
    435437        }
    436438    }
    437439
    438     if (hwnddir)
    439     {
     440    if (hwnddir) {
     441        // Fill directory listbox
    440442        sprintf(szTemp,
    441443                "%s%s*",
    442                 path,
    443                 (path[strlen(path) - 1] == '\\') ? "" : "\\");
     444                pszPath,
     445                (pszPath[strlen(pszPath) - 1] == '\\') ? "" : "\\");
    444446        DosError(FERR_DISABLEHARDERR);
    445447        if (!DosFindFirst(szTemp,
     
    453455                          FIL_STANDARD))
    454456        {
    455             do
    456             {
     457            do {
    457458                if (findbuf.attrFile & FILE_DIRECTORY) {
    458                     if (strlen(path) > 3 || path[1] != ':') {
    459                         // Skip . and .. too
    460                         if (findbuf.achName[0] != '.' ||
    461                             (findbuf.achName[1] &&
    462                              (findbuf.achName[1] != '.' ||
    463                               findbuf.achName[2]))) {
     459                    // Skip .. unless full path supplied
     460                    if (strcmp(findbuf.achName, "..") ||
     461                        strlen(pszPath) > 3 || pszPath[1] != ':') {
     462                        // Skip . allow ..
     463                        if (findbuf.achName[0] != '.' || findbuf.achName[1]) {
    464464                            WinSendMsg(hwnddir,
    465465                                       LM_INSERTITEM,
    466466                                       MPFROM2SHORT(LIT_SORTASCENDING, 0),
    467467                                       MPFROMP(findbuf.achName));
    468                         }
     468                        }
    469469                    }
    470470                }
    471471                ulSearchCount = 1L;
    472             }
    473             while (!DosFindNext(hDir,
    474                                 &findbuf,
    475                                 sizeof(FILEFINDBUF3),
    476                                 &ulSearchCount));
     472            } while (!DosFindNext(hDir,
     473                                  &findbuf,
     474                                  sizeof(FILEFINDBUF3),
     475                                  &ulSearchCount));
    477476            DosFindClose(hDir);
    478477        }
     
    516515        if (!mp2)
    517516        {
    518             Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
     517            Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
    519518            WinDismissDlg(hwnd, 0);
    520519            break;
     
    823822                APIRET rc;
    824823
    825                 // *szBuffer = 0;
     824                // *szBuffer = 0;
    826825                // WinQueryDlgItemText(hwnd,WALK_RECENT,CCHMAXPATH,szBuffer);
    827826                if (!*szBuffer)
     
    846845                }
    847846                if (rc)
    848                     Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosFindFirst");
     847                    Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosFindFirst");
    849848                else if (~findbuf.attrFile & FILE_DIRECTORY)
    850                     Runtime_Error(pszSrcFile, __LINE__, "not a directory");
     849                    Runtime_Error(pszSrcFile, __LINE__, "not a directory");
    851850                else
    852851                {
     
    899898                }
    900899                if (rc)
    901                     Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosFindFirst");
     900                    Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__,"DosFindFirst");
    902901                else if (~findbuf.attrFile & FILE_DIRECTORY)
    903                     Runtime_Error(pszSrcFile, __LINE__, "not a directory");
     902                    Runtime_Error(pszSrcFile, __LINE__, "not a directory");
    904903                else
    905904                {
     
    10661065                MakeFullName(szBuff);
    10671066                if (!add_udir(TRUE, szBuff))
    1068                     Runtime_Error(pszSrcFile, __LINE__, "add_udir");
     1067                    Runtime_Error(pszSrcFile, __LINE__, "add_udir");
    10691068                else {
    10701069                    WinSendDlgItemMsg(hwnd,
Note: See TracChangeset for help on using the changeset viewer.