Changeset 1163 for trunk/dll/objcnr.c


Ignore:
Timestamp:
Sep 5, 2008, 11:43:52 PM (17 years ago)
Author:
John Small
Message:

Ticket 187: Draft 1: Functions only

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/objcnr.c

    r1063 r1163  
    2828#include <string.h>
    2929#include <ctype.h>
    30 #include <process.h>                    // _beginthread
     30#include <process.h>                    // _beginthread
    3131
    3232#define INCL_DOS
     
    3737#include "fm3dlg.h"
    3838#include "fm3str.h"
    39 #include "errutil.h"                    // Dos_Error...
    40 #include "strutil.h"                    // GetPString
     39#include "errutil.h"                    // Dos_Error...
     40#include "strutil.h"                    // GetPString
     41#include "objcnr.h"
    4142#include "fm3dll.h"
     43#include "select.h"                     // ExpandAll
    4244
    4345#include "fortify.h"
     
    6769
    6870static VOID ProcessDir(HWND hwndCnr,
    69                        CHAR *filename,
    70                        PCNRITEM pciParent,
    71                        CHAR *stopflag)
     71                       CHAR *filename,
     72                       PCNRITEM pciParent,
     73                       CHAR *stopflag)
    7274{
    7375  CHAR maskstr[CCHMAXPATH], *endpath, *p;
     
    8486  pffbArray = xmalloc(ulBufBytes, pszSrcFile, __LINE__);
    8587  if (!pffbArray)
    86     return;                             // Error already reported
     88    return;                             // Error already reported
    8789  strcpy(maskstr, filename);
    8890  if (maskstr[strlen(maskstr) - 1] != '\\')
     
    9395  ulFindCnt = 1;
    9496  rc = xDosFindFirst(filename, &hdir,
    95                      FILE_NORMAL | FILE_READONLY | FILE_ARCHIVED |
    96                      FILE_SYSTEM | FILE_HIDDEN | MUST_HAVE_DIRECTORY,
    97                      pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
     97                     FILE_NORMAL | FILE_READONLY | FILE_ARCHIVED |
     98                     FILE_SYSTEM | FILE_HIDDEN | MUST_HAVE_DIRECTORY,
     99                     pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
    98100  if (!rc)
    99101    DosFindClose(hdir);
     
    104106  if ((!rc && (pffbArray->attrFile & FILE_DIRECTORY))) {
    105107    pciP = WinSendMsg(hwndCnr,
    106                       CM_ALLOCRECORD,
    107                       MPFROMLONG(EXTRA_RECORD_BYTES),
    108                       MPFROMLONG(1));
     108                      CM_ALLOCRECORD,
     109                      MPFROMLONG(EXTRA_RECORD_BYTES),
     110                      MPFROMLONG(1));
    109111    if (!pciP) {
    110112      Win_Error(hwndCnr, HWND_DESKTOP, pszSrcFile, __LINE__, "CM_ALLOCRECORD");
     
    121123      p = strrchr(pciP->pszFileName, '\\');
    122124      if (!p)
    123         pciP->pszDisplayName = pciP->pszFileName;
     125        pciP->pszDisplayName = pciP->pszFileName;
    124126      else if (*(p + 1))
    125         p++;
     127        p++;
    126128      pciP->pszDisplayName = p;
    127129    }
     
    136138    free(pffbArray);
    137139    Dos_Error(MB_ENTER, rc, HWND_DESKTOP, pszSrcFile, __LINE__,
    138               GetPString(IDS_CANTFINDDIRTEXT), filename);
     140              GetPString(IDS_CANTFINDDIRTEXT), filename);
    139141    return;
    140142  }
     
    144146    pciP->rc.hptrIcon = hptr;
    145147
    146   if (!pciP->rc.hptrIcon || pciP->rc.hptrIcon == hptrFile)      /* OS/2 bug bug bug bug */
     148  if (!pciP->rc.hptrIcon || pciP->rc.hptrIcon == hptrFile)      /* OS/2 bug bug bug bug */
    147149    pciP->rc.hptrIcon = hptrDir;
    148150
     
    166168  ulFindCnt = ulFindMax;
    167169  rc = xDosFindFirst(maskstr, &hdir,
    168                      FILE_NORMAL | FILE_READONLY | FILE_ARCHIVED |
    169                      FILE_SYSTEM | FILE_HIDDEN | MUST_HAVE_DIRECTORY,
    170                      pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
     170                     FILE_NORMAL | FILE_READONLY | FILE_ARCHIVED |
     171                     FILE_SYSTEM | FILE_HIDDEN | MUST_HAVE_DIRECTORY,
     172                     pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
    171173  if (!rc) {
    172174    PFILEFINDBUF3L pffbFile;
     
    176178      pffbFile = pffbArray;
    177179      for (x = 0; x < ulFindCnt; x++) {
    178         if (*stopflag)
    179           break;
    180         if ((pffbFile->attrFile & FILE_DIRECTORY) &&
    181             // Skip . and ..
    182             (pffbFile->achName[0] != '.' ||
    183              (pffbFile->achName[1] &&
    184               (pffbFile->achName[1] != '.' || pffbFile->achName[2])))) {
    185           strcpy(endpath, pffbFile->achName);
    186           ProcessDir(hwndCnr, maskstr, pciP, stopflag);
    187         }
    188         if (!pffbFile->oNextEntryOffset)
    189           break;
    190         pffbFile = (PFILEFINDBUF3L)((PBYTE)pffbFile + pffbFile->oNextEntryOffset);
     180        if (*stopflag)
     181          break;
     182        if ((pffbFile->attrFile & FILE_DIRECTORY) &&
     183            // Skip . and ..
     184            (pffbFile->achName[0] != '.' ||
     185             (pffbFile->achName[1] &&
     186              (pffbFile->achName[1] != '.' || pffbFile->achName[2])))) {
     187          strcpy(endpath, pffbFile->achName);
     188          ProcessDir(hwndCnr, maskstr, pciP, stopflag);
     189        }
     190        if (!pffbFile->oNextEntryOffset)
     191          break;
     192        pffbFile = (PFILEFINDBUF3L)((PBYTE)pffbFile + pffbFile->oNextEntryOffset);
    191193      } // for
    192       DosSleep(0);                      // Let's others at same priority get some work done
     194      DosSleep(0);                      // Let's others at same priority get some work done
    193195      if (*stopflag)
    194         break;
     196        break;
    195197      ulFindCnt = ulFindMax;
    196198      rc = xDosFindNext(hdir, pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
     
    201203  if (rc && rc != ERROR_NO_MORE_FILES) {
    202204    Dos_Error(MB_ENTER, rc, HWND_DESKTOP, pszSrcFile, __LINE__,
    203               GetPString(IDS_CANTFINDDIRTEXT), filename);
     205              GetPString(IDS_CANTFINDDIRTEXT), filename);
    204206  }
    205207
    206208  free(pffbArray);
    207209  WinSendMsg(hwndCnr, CM_INVALIDATERECORD, MPFROMP(&pciP),
    208              MPFROM2SHORT(1, 0));
     210             MPFROM2SHORT(1, 0));
    209211}
    210212
     
    231233      WinCancelShutdown(hmq, TRUE);
    232234      ProcessDir(dirsize->hwndCnr, dirsize->filename, (PCNRITEM) NULL,
    233                 dirsize->stopflag);
     235                dirsize->stopflag);
    234236      DosPostEventSem(CompactSem);
    235237      WinDestroyMsgQueue(hmq);
     
    238240  }
    239241  PostMsg(WinQueryWindow(dirsize->hwndCnr, QW_PARENT), UM_CONTAINER_FILLED,
    240           MPVOID, MPVOID);
     242          MPVOID, MPVOID);
    241243  free(dirsize);
    242244# ifdef FORTIFY
     
    254256      Runtime_Error(pszSrcFile, __LINE__, "objcnrwnd set");
    255257      WinSetWindowPos(objcnrwnd, HWND_TOP, 0, 0, 0, 0,
    256                       SWP_RESTORE | SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER);
     258                      SWP_RESTORE | SWP_SHOW | SWP_ACTIVATE | SWP_ZORDER);
    257259      WinDismissDlg(hwnd, 0);
    258260      break;
     
    280282      dirsize = xmalloc(sizeof(DIRSIZE), pszSrcFile, __LINE__);
    281283      if (!dirsize) {
    282         WinDismissDlg(hwnd, 0);
    283         break;
     284        WinDismissDlg(hwnd, 0);
     285        break;
    284286      }
    285287      dirsize->stopflag = (CHAR *)&data->stopflag;
     
    287289      dirsize->hwndCnr = WinWindowFromID(hwnd, OBJCNR_CNR);
    288290      if (_beginthread(FillCnrsThread, NULL, 65536 * 8, (PVOID) dirsize) ==
    289           -1) {
    290         Runtime_Error(pszSrcFile, __LINE__,
    291                       GetPString(IDS_COULDNTSTARTTHREADTEXT));
     291          -1) {
     292        Runtime_Error(pszSrcFile, __LINE__,
     293                      GetPString(IDS_COULDNTSTARTTHREADTEXT));
    292294        free(dirsize);
    293295#       ifdef FORTIFY
    294296        Fortify_LeaveScope();
    295297#        endif
    296         WinDismissDlg(hwnd, 0);
    297         break;
     298        WinDismissDlg(hwnd, 0);
     299        break;
    298300      }
    299301      else
    300         data->working = TRUE;
     302        data->working = TRUE;
    301303    }
    302304    PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     
    311313      cnri.cb = sizeof(CNRINFO);
    312314      WinSendDlgItemMsg(hwnd, OBJCNR_CNR, CM_QUERYCNRINFO,
    313                         MPFROMP(&cnri), MPFROMLONG(sizeof(CNRINFO)));
     315                        MPFROMP(&cnri), MPFROMLONG(sizeof(CNRINFO)));
    314316      cnri.cyLineSpacing = 0;
    315317      cnri.cxTreeIndent = 12L;
    316318      cnri.pszCnrTitle = GetPString(IDS_WORKINGTEXT);
    317319      cnri.flWindowAttr = CV_TREE | CV_FLOW |
    318         CA_CONTAINERTITLE | CA_TITLESEPARATOR | CA_TREELINE;
     320        CA_CONTAINERTITLE | CA_TITLESEPARATOR | CA_TREELINE;
    319321      if (WinQueryWindowUShort(hwnd, QWS_ID) == QTREE_FRAME)
    320         cnri.flWindowAttr |= CV_MINI;
     322        cnri.flWindowAttr |= CV_MINI;
    321323      WinSendDlgItemMsg(hwnd, OBJCNR_CNR, CM_SETCNRINFO, MPFROMP(&cnri),
    322                         MPFROMLONG(CMA_FLWINDOWATTR | CMA_LINESPACING |
    323                                    CMA_CXTREEINDENT));
     324                        MPFROMLONG(CMA_FLWINDOWATTR | CMA_LINESPACING |
     325                                   CMA_CXTREEINDENT));
    324326    }
    325327    return 0;
     
    329331//      WinEnableWindowUpdate(WinWindowFromID(hwnd,OBJCNR_CNR),TRUE);
    330332    WinSendDlgItemMsg(hwnd, OBJCNR_CNR, CM_INVALIDATERECORD, MPVOID,
    331                       MPFROM2SHORT(0, CMA_ERASE | CMA_INVALIDATE));
     333                      MPFROM2SHORT(0, CMA_ERASE | CMA_INVALIDATE));
    332334    data = INSTDATA(hwnd);
    333335    if (data) {
    334336      data->working = FALSE;
    335337      if (data->dying)
    336         WinDismissDlg(hwnd, 0);
     338        WinDismissDlg(hwnd, 0);
    337339      {
    338         PCNRITEM pci;
    339         USHORT id;
    340 
    341         id = WinQueryWindowUShort(hwnd, QWS_ID);
    342         pci = (PCNRITEM) WinSendDlgItemMsg(hwnd, OBJCNR_CNR,
    343                                            CM_QUERYRECORD,
    344                                            MPVOID,
    345                                            MPFROM2SHORT(CMA_FIRST,
    346                                                         CMA_ITEMORDER));
    347         if (pci && (INT) pci != -1) {
    348           ExpandAll(WinWindowFromID(hwnd, OBJCNR_CNR), TRUE, pci);
    349           if (id == QTREE_FRAME)
    350             pci = (PCNRITEM) WinSendDlgItemMsg(hwnd, OBJCNR_CNR,
    351                                                CM_QUERYRECORD,
    352                                                MPFROMP(pci),
    353                                                MPFROM2SHORT(CMA_FIRSTCHILD,
    354                                                             CMA_ITEMORDER));
    355         }
    356         if ((!pci || (INT) pci == -1) && id == QTREE_FRAME) {
    357           Notify(GetPString(IDS_NODIRSUNDERTEXT));
    358           WinDismissDlg(hwnd, 0);
    359           break;
    360         }
     340        PCNRITEM pci;
     341        USHORT id;
     342
     343        id = WinQueryWindowUShort(hwnd, QWS_ID);
     344        pci = (PCNRITEM) WinSendDlgItemMsg(hwnd, OBJCNR_CNR,
     345                                           CM_QUERYRECORD,
     346                                           MPVOID,
     347                                           MPFROM2SHORT(CMA_FIRST,
     348                                                        CMA_ITEMORDER));
     349        if (pci && (INT) pci != -1) {
     350          ExpandAll(WinWindowFromID(hwnd, OBJCNR_CNR), TRUE, pci);
     351          if (id == QTREE_FRAME)
     352            pci = (PCNRITEM) WinSendDlgItemMsg(hwnd, OBJCNR_CNR,
     353                                               CM_QUERYRECORD,
     354                                               MPFROMP(pci),
     355                                               MPFROM2SHORT(CMA_FIRSTCHILD,
     356                                                            CMA_ITEMORDER));
     357        }
     358        if ((!pci || (INT) pci == -1) && id == QTREE_FRAME) {
     359          Notify(GetPString(IDS_NODIRSUNDERTEXT));
     360          WinDismissDlg(hwnd, 0);
     361          break;
     362        }
    361363      }
    362364    }
     
    368370      if (SHORT2FROMMP(mp1) == CN_ENTER) {
    369371
    370         PCNRITEM pci = (PCNRITEM) ((PNOTIFYRECORDENTER) mp2)->pRecord;
    371 
    372         if (pci && (INT) pci != -1)
    373           WinSendDlgItemMsg(hwnd, DID_OK, BM_CLICK, MPVOID, MPVOID);
     372        PCNRITEM pci = (PCNRITEM) ((PNOTIFYRECORDENTER) mp2)->pRecord;
     373
     374        if (pci && (INT) pci != -1)
     375          WinSendDlgItemMsg(hwnd, DID_OK, BM_CLICK, MPVOID, MPVOID);
    374376      }
    375377      break;
     
    382384      if (hwndHelp) {
    383385
    384         USHORT id;
    385 
    386         id = WinQueryWindowUShort(hwnd, QWS_ID);
    387 
    388         if (id == QTREE_FRAME)
    389           WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
    390                      MPFROM2SHORT(HELP_QUICKTREE, 0),
    391                      MPFROMSHORT(HM_RESOURCEID));
    392         else
    393           WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
    394                      MPFROM2SHORT(HELP_OBJECTPATH, 0),
    395                      MPFROMSHORT(HM_RESOURCEID));
     386        USHORT id;
     387
     388        id = WinQueryWindowUShort(hwnd, QWS_ID);
     389
     390        if (id == QTREE_FRAME)
     391          WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     392                     MPFROM2SHORT(HELP_QUICKTREE, 0),
     393                     MPFROMSHORT(HM_RESOURCEID));
     394        else
     395          WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     396                     MPFROM2SHORT(HELP_OBJECTPATH, 0),
     397                     MPFROMSHORT(HM_RESOURCEID));
    396398      }
    397399      break;
     
    402404      if (data) {
    403405
    404         PCNRITEM pci;
    405 
    406         if (data->working) {
    407           Runtime_Error(pszSrcFile, __LINE__, "working unexpected");
    408           break;
    409         }
    410         if (SHORT1FROMMP(mp1) == OBJCNR_DESKTOP) {
    411           WinDismissDlg(hwnd, 2);
    412           break;
    413         }
    414         pci = (PCNRITEM) WinSendDlgItemMsg(hwnd, OBJCNR_CNR,
    415                                            CM_QUERYRECORDEMPHASIS,
    416                                            MPFROMLONG(CMA_FIRST),
    417                                            MPFROMSHORT(CRA_CURSORED));
    418         if (pci && (INT) pci != -1)
    419           strcpy(data->dirname, pci->pszFileName);
    420         WinDismissDlg(hwnd, 1);
     406        PCNRITEM pci;
     407
     408        if (data->working) {
     409          Runtime_Error(pszSrcFile, __LINE__, "working unexpected");
     410          break;
     411        }
     412        if (SHORT1FROMMP(mp1) == OBJCNR_DESKTOP) {
     413          WinDismissDlg(hwnd, 2);
     414          break;
     415        }
     416        pci = (PCNRITEM) WinSendDlgItemMsg(hwnd, OBJCNR_CNR,
     417                                           CM_QUERYRECORDEMPHASIS,
     418                                           MPFROMLONG(CMA_FIRST),
     419                                           MPFROMSHORT(CRA_CURSORED));
     420        if (pci && (INT) pci != -1)
     421          strcpy(data->dirname, pci->pszFileName);
     422        WinDismissDlg(hwnd, 1);
    421423      }
    422424      break;
     
    425427      data = INSTDATA(hwnd);
    426428      if (data) {
    427         if (data->working) {
    428           data->dying = (CHAR)TRUE;
    429           data->stopflag = (CHAR)0xff;
    430           break;
    431         }
    432         WinDismissDlg(hwnd, 0);
     429        if (data->working) {
     430          data->dying = (CHAR)TRUE;
     431          data->stopflag = (CHAR)0xff;
     432          break;
     433        }
     434        WinDismissDlg(hwnd, 0);
    433435      }
    434436      break;
Note: See TracChangeset for help on using the changeset viewer.