Changeset 762


Ignore:
Timestamp:
Aug 4, 2007, 11:19:21 PM (13 years ago)
Author:
Steven Levine
Message:

Use two pass logic to free CNRITEMs and ARCITEMs
Rename pszLongname to pszLongName
More compare directories rework
Make directory sizes item draw placement deterministic - how did it ever work?

Location:
trunk/dll
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/arccnrs.c

    r751 r762  
    6161#include <limits.h>
    6262#include <process.h>                    // _beginthread
     63
     64#if 0
    6365#include <malloc.h>                     // _heapchk
     66#endif
    6467
    6568#include "fm3dll.h"
     
    317320{
    318321  // DbgMsg(pszSrcFile, __LINE__, "FreeArcItemData %p", pai);
    319 
    320   if (pai->pszFileName && pai->pszFileName != NullStr)
    321     xfree(pai->pszFileName);
     322  PSZ psz;
     323
     324  if (pai->pszFileName && pai->pszFileName != NullStr) {
     325    psz = pai->pszFileName;
     326    pai->pszFileName = NullStr;
     327    free(psz);
     328  }
    322329}
    323330
    324331/**
    325  * Remove item from archive container and free associated storage if requested
     332 * Remove item(s) from archive container and free associated storage if requested
     333 * @param paiFirst points to first item to remove or NULL to remove all
     334 * @param usCnt is remove count or 0 to remove all
    326335 */
    327336
    328 static VOID RemoveArcItems(HWND hwnd, PARCITEM pai, USHORT usCnt, USHORT usFlags)
     337static VOID RemoveArcItems(HWND hwnd, PARCITEM paiFirst, USHORT usCnt, USHORT usFlags)
    329338{
    330   if (usCnt == 0) {
    331     if (pai != NULL)
    332       Runtime_Error(pszSrcFile, __LINE__, "pai not NULL");
    333     else {
    334       for (;;) {
     339  INT remaining = usCnt;
     340  PARCITEM pai;
     341
     342  if ((usCnt && !paiFirst) || (!usCnt && paiFirst))
     343    Runtime_Error(pszSrcFile, __LINE__, "paiFirst %p usCnt %u mismatch", paiFirst, usCnt);
     344  else {
     345    // Free our buffers if free requested
     346    if (usFlags & CMA_FREE) {
     347      if (paiFirst)
     348        pai = paiFirst;
     349      else {
    335350        pai = (PARCITEM)WinSendMsg(hwnd, CM_QUERYRECORD, MPVOID,
    336351                                   MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    337         if (!pai)
     352        if ((INT)pai == -1) {
     353          Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_QUERYRECORD");
     354          remaining = -1;
     355          pai = NULL;
     356        }
     357      }
     358      while (pai) {
     359        FreeArcItemData(pai);
     360        pai = (PARCITEM)pai->rc.preccNextRecord;
     361        if (remaining && --remaining == 0)
    338362          break;
    339         else if ((INT)pai == -1) {
    340           Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_QUERYRECORD");
    341           break;
    342         }
    343         else
    344           RemoveArcItems(hwnd, pai, 1, usFlags);
    345363      }
    346364    }
    347365  }
    348   else if (usCnt != 1)
    349     Runtime_Error(pszSrcFile, __LINE__, "count not 1");
    350   else {
    351     // DbgMsg(pszSrcFile, __LINE__, "RemoveArcItems %p %u %s", pai, usCnt, pai->pszFileName);
    352 
    353     if (usFlags & CMA_FREE)
    354       FreeArcItemData(pai);
    355 
    356     if ((INT)WinSendMsg(hwnd, CM_REMOVERECORD, MPFROMP(&pai), MPFROM2SHORT(usCnt, usFlags)) == -1) {
     366
     367  // DbgMsg(pszSrcFile, __LINE__, "RemoveArcItems %p %u %s", pai, usCnt, pai->pszFileName);
     368
     369  if (remaining != - 1) {
     370    remaining = (INT)WinSendMsg(hwnd, CM_REMOVERECORD, MPFROMP(&paiFirst), MPFROM2SHORT(usCnt, usFlags));
     371    if (remaining == -1) {
    357372      // Win_Error2(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,IDS_CMREMOVEERRTEXT);
    358       Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_REMOVERECORD hwnd %x pai %p", hwnd, pai);
     373      Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_REMOVERECORD hwnd %x pai %p cnt %u", hwnd, paiFirst, usCnt);
    359374    }
    360375  }
     
    362377
    363378/**
    364  * Empty all records from an archive container and free associated storage and
    365  * Free up field infos
     379 * Empty all records from an archive container and
     380 * free associated storage and free up field infos
    366381 */
    367382
    368383static VOID EmptyArcCnr(HWND hwnd)
    369384{
    370 #if 1 // fixme to disable or to be configurable
     385#if 0 // fixme to disable or to be configurable
    371386  {
    372387    int state = _heapchk();
    373388    if (state != _HEAPOK)
    374389      Runtime_Error(pszSrcFile, __LINE__, "heap corrupted %d", state);
     390    else
     391      DbgMsg(pszSrcFile, __LINE__, "_memavl %u", _memavl());
    375392  }
    376393#endif
     
    659676                pai->flags = ARCFLAGS_REALDIR;
    660677              pai->pszFileName = xstrdup(fname,pszSrcFile, __LINE__);
    661               pai->pszDisplayName = pai->pszFileName;
    662               pai->rc.pszIcon = pai->pszDisplayName;
     678              pai->pszDisplayName = pai->pszFileName;
     679              pai->rc.pszIcon = pai->pszDisplayName;
    663680              if (fdate)
    664681                strcpy(pai->szDate, fdate);
     
    12111228      cni.pDragInfo = (PDRAGINFO) mp1;
    12121229      li = DoFileDrop(dcd->hwndCnr,
    1213                       dcd->directory, FALSE, MPVOID, MPFROMP(&cni));
     1230                      dcd->directory, FALSE, MPVOID, MPFROMP(&cni));
    12141231      CheckPmDrgLimit(cni.pDragInfo);
    12151232      if (li) {
     
    18431860              if (li->type == IDM_MCIPLAY) {
    18441861
    1845                 FILE *fp;
     1862                FILE *fp;
    18461863
    18471864                fp = xfopen("$FM2PLAY.$$$", "w", pszSrcFile, __LINE__);
     
    18511868                    fprintf(fp, "%s\n", li->list[x]);
    18521869                  fprintf(fp, ";end\n");
    1853                   fclose(fp);
    1854                   RunFM2Util("FM2PLAY.EXE", "/@$FM2PLAY.$$$");
    1855                 }
     1870                  fclose(fp);
     1871                  RunFM2Util("FM2PLAY.EXE", "/@$FM2PLAY.$$$");
     1872                }
    18561873              }
    18571874              else if (li->type == IDM_PRINT) {
     
    22422259      }
    22432260      if ((dcd->arcfilled && !dcd->totalfiles) ||
    2244           !IsArcThere(hwnd, dcd->arcname))
     2261          !IsArcThere(hwnd, dcd->arcname))
    22452262        PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);
    22462263    }
     
    26112628          WinSetFocus(HWND_DESKTOP,
    26122629                      hwndActive == hwnd ?
    2613                         WinWindowFromID(dcd->hwndClient, ARC_EXTRACTDIR) :
    2614                         hwnd);
     2630                        WinWindowFromID(dcd->hwndClient, ARC_EXTRACTDIR) :
     2631                        hwnd);
    26152632        }
    26162633        break;
     
    31113128          DosBeep(500, 100);            // fixme to know why beep?
    31123129          li = DoFileDrop(hwnd, dcd->arcname, FALSE, mp1, mp2);
    3113           DosBeep(50, 100);             // fixme to know why beep?
    3114           CheckPmDrgLimit(((PCNRDRAGINFO)mp2)->pDragInfo);
     3130          DosBeep(50, 100);             // fixme to know why beep?
     3131          CheckPmDrgLimit(((PCNRDRAGINFO)mp2)->pDragInfo);
    31153132          if (li) {
    31163133            li->type = li->type == DO_MOVE ? IDM_ARCHIVEM : IDM_ARCHIVE;
  • trunk/dll/comp.c

    r756 r762  
    442442                // Other side is not blank - update just this side
    443443                FreeCnrItemData(pci);
    444                 pci->pszFileName = NullStr;
    445444                pci->pszDisplayName = pci->pszFileName;
    446445                pci->rc.pszIcon = pci->pszFileName;
    447                 pci->pszLongname = NullStr;
    448                 pci->pszSubject = NullStr;
    449446                pci->flags = 0;
    450447                WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pci),
     
    503500              }
    504501              // 02 Aug 07 SHL fixme to know Longname transfer is correct?
    505               pciD->pszLongname = pci->pszLongname;
     502              pciD->pszLongName = pci->pszLongName;
    506503              if (pciD->pszSubject != NullStr) {
    507504                xfree(pciD->pszSubject);
     
    510507              pciD->attrFile = pci->attrFile;
    511508              pciD->pszDispAttr = pci->pszDispAttr;
    512               pciD->flags = 0;
     509              pciD->flags = CNRITEM_EXISTS;     // 04 Aug 07 SHL
    513510              pciD->date = pci->date;
    514511              pciD->time = pci->time;
     
    593590              FreeCnrItemData(pciD);
    594591              pciD->pszFileName = xstrdup(newname, pszSrcFile, __LINE__);
    595               pciD->pszLongname = NullStr;
    596               pciD->pszSubject = NullStr;
    597592              if (hwndCnrS == WinWindowFromID(cmp->hwnd, COMP_RIGHTDIR)) {
    598593                pciD->pszDisplayName = pciD->pszFileName + strlen(cmp->leftdir);
     
    623618              }
    624619              // 02 Aug 07 SHL fixme to know why - should already be set?
    625               pci->flags = CNRITEM_EXISTS;
     620              // pci->flags = CNRITEM_EXISTS;
    626621
    627622              WinSendMsg(hwndCnrS, CM_INVALIDATERECORD, MPFROMP(&pci),
     
    12531248          }
    12541249
    1255 #if 0 //============================ fixme to be gone =================
    1256 
    1257           if (filesl && filesl[l] && filesr && filesr[r]) {
    1258             // Got two names
    1259             x = stricmp(filesl[l]->fname, filesr[r]->fname);
    1260             if (!x) {
    1261               // Names match - insert on both sides
    1262               sprintf(szBuf, "%s%s%s", cmp->leftdir,
    1263                       (cmp->leftdir[strlen(cmp->leftdir) - 1] == '\\') ?
    1264                       NullStr : "\\", filesl[l]->fname);
    1265               // pcil->rc.hptrIcon = hptrFile;
    1266               pcil->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__); // 31 Jul 07 SHL
    1267               pcil->pszDisplayName = pcil->pszFileName + lenl;
    1268               pcil->attrFile = filesl[l]->attrFile;
    1269               y = 0;
    1270               for (x = 0; x < 6; x++) {
    1271                 if (attrstring[x])
    1272                   pcil->szDispAttr[y++] =
    1273                     (CHAR) ((pcil->
    1274                              attrFile & (1 << x)) ? attrstring[x] : '-');
    1275               }
    1276               pcil->szDispAttr[5] = 0;
    1277               pcil->cbFile = filesl[l]->cbFile;
    1278               pcil->easize = filesl[l]->easize;
    1279               pcil->date.day = filesl[l]->date.day;
    1280               pcil->date.month = filesl[l]->date.month;
    1281               pcil->date.year = filesl[l]->date.year + 1980;
    1282               pcil->time.seconds = filesl[l]->time.twosecs * 2;
    1283               pcil->time.minutes = filesl[l]->time.minutes;
    1284               pcil->time.hours = filesl[l]->time.hours;
    1285               pcil->ladate.day = filesl[l]->ladate.day;
    1286               pcil->ladate.month = filesl[l]->ladate.month;
    1287               pcil->ladate.year = filesl[l]->ladate.year + 1980;
    1288               pcil->latime.seconds = filesl[l]->latime.twosecs * 2;
    1289               pcil->latime.minutes = filesl[l]->latime.minutes;
    1290               pcil->latime.hours = filesl[l]->latime.hours;
    1291               pcil->crdate.day = filesl[l]->crdate.day;
    1292               pcil->crdate.month = filesl[l]->crdate.month;
    1293               pcil->crdate.year = filesl[l]->crdate.year + 1980;
    1294               pcil->crtime.seconds = filesl[l]->crtime.twosecs * 2;
    1295               pcil->crtime.minutes = filesl[l]->crtime.minutes;
    1296               pcil->crtime.hours = filesl[l]->crtime.hours;
    1297               if (*cmp->dcd.mask.szMask) {
    1298                 if (!Filter((PMINIRECORDCORE) pcil, (PVOID) & cmp->dcd.mask)) {
    1299                   pcil->rc.flRecordAttr |= CRA_FILTERED;
    1300                   pcir->rc.flRecordAttr |= CRA_FILTERED;
    1301                 }
    1302               }
    1303               sprintf(szBuf, "%s%s%s", cmp->rightdir,
    1304                       (cmp->rightdir[strlen(cmp->rightdir) - 1] == '\\') ?
    1305                       NullStr : "\\", filesr[r]->fname);
    1306               pcir->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__); // 31 Jul 07 SHL
    1307               pcir->pszDisplayName = pcir->pszFileName + lenr;
    1308               pcir->attrFile = filesr[r]->attrFile;
    1309               // pcir->rc.hptrIcon = hptrFile;
    1310               y = 0;
    1311               for (x = 0; x < 6; x++)
    1312                 if (attrstring[x])
    1313                   pcir->szDispAttr[y++] =
    1314                     (CHAR) ((pcir->
    1315                              attrFile & (1 << x)) ? attrstring[x] : '-');
    1316               pcir->szDispAttr[5] = 0;
    1317               pcir->cbFile = filesr[r]->cbFile;
    1318               pcir->easize = filesr[r]->easize;
    1319               pcir->date.day = filesr[r]->date.day;
    1320               pcir->date.month = filesr[r]->date.month;
    1321               pcir->date.year = filesr[r]->date.year + 1980;
    1322               pcir->time.seconds = filesr[r]->time.twosecs * 2;
    1323               pcir->time.minutes = filesr[r]->time.minutes;
    1324               pcir->time.hours = filesr[r]->time.hours;
    1325               pcir->ladate.day = filesr[r]->ladate.day;
    1326               pcir->ladate.month = filesr[r]->ladate.month;
    1327               pcir->ladate.year = filesr[r]->ladate.year + 1980;
    1328               pcir->latime.seconds = filesr[r]->latime.twosecs * 2;
    1329               pcir->latime.minutes = filesr[r]->latime.minutes;
    1330               pcir->latime.hours = filesr[r]->latime.hours;
    1331               pcir->crdate.day = filesr[r]->crdate.day;
    1332               pcir->crdate.month = filesr[r]->crdate.month;
    1333               pcir->crdate.year = filesr[r]->crdate.year + 1980;
    1334               pcir->crtime.seconds = filesr[r]->crtime.twosecs * 2;
    1335               pcir->crtime.minutes = filesr[r]->crtime.minutes;
    1336               pcir->crtime.hours = filesr[r]->crtime.hours;
    1337               pcil->flags |= CNRITEM_EXISTS;
    1338               pcir->flags |= CNRITEM_EXISTS;
    1339               pch = szBuf;
    1340               // Subject field holds status messages
    1341               // pch = pcil->pszSubject;
    1342               *pch = 0;
    1343               if (pcil->cbFile + pcil->easize > pcir->cbFile + pcir->easize) {
    1344                 pcil->flags |= CNRITEM_LARGER;
    1345                 pcir->flags |= CNRITEM_SMALLER;
    1346                 strcpy(pch, GetPString(IDS_LARGERTEXT));
    1347                 pch += 6;
    1348               }
    1349               else if (pcil->cbFile + pcil->easize <
    1350                        pcir->cbFile + pcir->easize) {
    1351                 pcil->flags |= CNRITEM_SMALLER;
    1352                 pcir->flags |= CNRITEM_LARGER;
    1353                 strcpy(pch, GetPString(IDS_SMALLERTEXT));
    1354                 pch += 7;
    1355               }
    1356               if ((pcil->date.year > pcir->date.year) ? TRUE :
    1357                   (pcil->date.year < pcir->date.year) ? FALSE :
    1358                   (pcil->date.month > pcir->date.month) ? TRUE :
    1359                   (pcil->date.month < pcir->date.month) ? FALSE :
    1360                   (pcil->date.day > pcir->date.day) ? TRUE :
    1361                   (pcil->date.day < pcir->date.day) ? FALSE :
    1362                   (pcil->time.hours > pcir->time.hours) ? TRUE :
    1363                   (pcil->time.hours < pcir->time.hours) ? FALSE :
    1364                   (pcil->time.minutes > pcir->time.minutes) ? TRUE :
    1365                   (pcil->time.minutes < pcir->time.minutes) ? FALSE :
    1366                   (pcil->time.seconds > pcir->time.seconds) ? TRUE :
    1367                   (pcil->time.seconds < pcir->time.seconds) ? FALSE : FALSE) {
    1368                 pcil->flags |= CNRITEM_NEWER;
    1369                 pcir->flags |= CNRITEM_OLDER;
    1370                 if (pch != szBuf) {
    1371                   strcpy(pch, ", ");
    1372                   pch += 2;
    1373                 }
    1374                 strcpy(pch, GetPString(IDS_NEWERTEXT));
    1375                 pch += 5;
    1376               }
    1377               else if ((pcil->date.year < pcir->date.year) ? TRUE :
    1378                        (pcil->date.year > pcir->date.year) ? FALSE :
    1379                        (pcil->date.month < pcir->date.month) ? TRUE :
    1380                        (pcil->date.month > pcir->date.month) ? FALSE :
    1381                        (pcil->date.day < pcir->date.day) ? TRUE :
    1382                        (pcil->date.day > pcir->date.day) ? FALSE :
    1383                        (pcil->time.hours < pcir->time.hours) ? TRUE :
    1384                        (pcil->time.hours > pcir->time.hours) ? FALSE :
    1385                        (pcil->time.minutes < pcir->time.minutes) ? TRUE :
    1386                        (pcil->time.minutes > pcir->time.minutes) ? FALSE :
    1387                        (pcil->time.seconds < pcir->time.seconds) ? TRUE :
    1388                        (pcil->time.seconds > pcir->time.seconds) ? FALSE :
    1389                        FALSE) {
    1390                 pcil->flags |= CNRITEM_OLDER;
    1391                 pcir->flags |= CNRITEM_NEWER;
    1392                 if (pch != szBuf) {
    1393                   strcpy(pch, ", ");
    1394                   pch += 2;
    1395                 }
    1396                 strcpy(pch, GetPString(IDS_OLDERTEXT));
    1397                 pch += 5;
    1398               }
    1399               *pch = 0;
    1400               pcil->pszSubject = *szBuf ? strdup(szBuf) : NullStr;
    1401               r++;
    1402               l++;
    1403             }
    1404             else if (x < 0) {
    1405               // Left side name less than right side name
    1406               // Insert name on left, leave blank filler on right
    1407               sprintf(szBuf, "%s%s%s", cmp->leftdir,
    1408                       cmp->leftdir[strlen(cmp->leftdir) - 1] == '\\' ?
    1409                         NullStr : "\\",
    1410                       filesl[l]->fname);
    1411               pcil->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__);
    1412               pcil->pszDisplayName = pcil->pszFileName + lenl;
    1413               pcil->attrFile = filesl[l]->attrFile;
    1414               // pcil->rc.hptrIcon = hptrFile;
    1415               y = 0;
    1416               for (x = 0; x < 6; x++)
    1417                 if (attrstring[x])
    1418                   pcil->szDispAttr[y++] =
    1419                     (CHAR) ((pcil->
    1420                              attrFile & (1 << x)) ? attrstring[x] : '-');
    1421               pcil->szDispAttr[5] = 0;
    1422               pcil->cbFile = filesl[l]->cbFile;
    1423               pcil->easize = filesl[l]->easize;
    1424               pcil->date.day = filesl[l]->date.day;
    1425               pcil->date.month = filesl[l]->date.month;
    1426               pcil->date.year = filesl[l]->date.year + 1980;
    1427               pcil->time.seconds = filesl[l]->time.twosecs * 2;
    1428               pcil->time.minutes = filesl[l]->time.minutes;
    1429               pcil->time.hours = filesl[l]->time.hours;
    1430               pcil->ladate.day = filesl[l]->ladate.day;
    1431               pcil->ladate.month = filesl[l]->ladate.month;
    1432               pcil->ladate.year = filesl[l]->ladate.year + 1980;
    1433               pcil->latime.seconds = filesl[l]->latime.twosecs * 2;
    1434               pcil->latime.minutes = filesl[l]->latime.minutes;
    1435               pcil->latime.hours = filesl[l]->latime.hours;
    1436               pcil->crdate.day = filesl[l]->crdate.day;
    1437               pcil->crdate.month = filesl[l]->crdate.month;
    1438               pcil->crdate.year = filesl[l]->crdate.year + 1980;
    1439               pcil->crtime.seconds = filesl[l]->crtime.twosecs * 2;
    1440               pcil->crtime.minutes = filesl[l]->crtime.minutes;
    1441               pcil->crtime.hours = filesl[l]->crtime.hours;
    1442               if (*cmp->dcd.mask.szMask) {
    1443                 if (!Filter((PMINIRECORDCORE) pcil, (PVOID) & cmp->dcd.mask)) {
    1444                   pcil->rc.flRecordAttr |= CRA_FILTERED;
    1445                   pcir->rc.flRecordAttr |= CRA_FILTERED;
    1446                 }
    1447               }
    1448               free(filesl[l]);
    1449               l++;
    1450             }
    1451             else {
    1452               // Left side name larger than right side name
    1453               // Insert name on right, leave blank filler on left
    1454               sprintf(szBuf, "%s%s%s", cmp->rightdir,
    1455                       cmp->rightdir[strlen(cmp->rightdir) - 1] == '\\' ?
    1456                         NullStr : "\\",
    1457                       filesr[r]->fname);
    1458               pcir->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__);
    1459               pcir->pszDisplayName = pcir->pszFileName + lenr;
    1460               pcir->attrFile = filesr[r]->attrFile;
    1461               // pcir->rc.hptrIcon = hptrFile;
    1462               y = 0;
    1463               for (x = 0; x < 6; x++) {
    1464                 if (attrstring[x])
    1465                   pcir->szDispAttr[y++] =
    1466                     (CHAR) ((pcir->
    1467                              attrFile & (1 << x)) ? attrstring[x] : '-');
    1468               }
    1469               pcir->szDispAttr[5] = 0;
    1470               pcir->cbFile = filesr[r]->cbFile;
    1471               pcir->easize = filesr[r]->easize;
    1472               pcir->date.day = filesr[r]->date.day;
    1473               pcir->date.month = filesr[r]->date.month;
    1474               pcir->date.year = filesr[r]->date.year + 1980;
    1475               pcir->time.seconds = filesr[r]->time.twosecs * 2;
    1476               pcir->time.minutes = filesr[r]->time.minutes;
    1477               pcir->time.hours = filesr[r]->time.hours;
    1478               pcir->ladate.day = filesr[r]->ladate.day;
    1479               pcir->ladate.month = filesr[r]->ladate.month;
    1480               pcir->ladate.year = filesr[r]->ladate.year + 1980;
    1481               pcir->latime.seconds = filesr[r]->latime.twosecs * 2;
    1482               pcir->latime.minutes = filesr[r]->latime.minutes;
    1483               pcir->latime.hours = filesr[r]->latime.hours;
    1484               pcir->crdate.day = filesr[r]->crdate.day;
    1485               pcir->crdate.month = filesr[r]->crdate.month;
    1486               pcir->crdate.year = filesr[r]->crdate.year + 1980;
    1487               pcir->crtime.seconds = filesr[r]->crtime.twosecs * 2;
    1488               pcir->crtime.minutes = filesr[r]->crtime.minutes;
    1489               pcir->crtime.hours = filesr[r]->crtime.hours;
    1490               if (*cmp->dcd.mask.szMask) {
    1491                 if (!Filter((PMINIRECORDCORE) pcir, (PVOID) & cmp->dcd.mask)) {
    1492                   pcir->rc.flRecordAttr |= CRA_FILTERED;
    1493                   pcil->rc.flRecordAttr |= CRA_FILTERED;
    1494                 }
    1495               }
    1496               free(filesr[r]);
    1497               r++;
    1498             }
    1499           }
    1500           else if (filesl && filesl[l]) {
    1501             // Left side list longer than right side list
    1502             // Insert name on left, leave blank filler on right
    1503             sprintf(szBuf, "%s%s%s", cmp->leftdir,
    1504                     cmp->leftdir[strlen(cmp->leftdir) - 1] == '\\' ?
    1505                       NullStr : "\\",
    1506                     filesl[l]->fname);
    1507             pcil->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__);
    1508             pcil->pszDisplayName = pcil->pszFileName + lenl;
    1509             pcil->attrFile = filesl[l]->attrFile;
    1510             // pcil->rc.hptrIcon = hptrFile;
    1511             y = 0;
    1512             for (x = 0; x < 6; x++)
    1513               if (attrstring[x])
    1514                 pcil->szDispAttr[y++] = (CHAR) ((pcil->attrFile & (1 << x)) ?
    1515                                                 attrstring[x] : '-');
    1516             pcil->szDispAttr[5] = 0;
    1517             pcil->cbFile = filesl[l]->cbFile;
    1518             pcil->easize = filesl[l]->easize;
    1519             pcil->date.day = filesl[l]->date.day;
    1520             pcil->date.month = filesl[l]->date.month;
    1521             pcil->date.year = filesl[l]->date.year + 1980;
    1522             pcil->time.seconds = filesl[l]->time.twosecs * 2;
    1523             pcil->time.minutes = filesl[l]->time.minutes;
    1524             pcil->time.hours = filesl[l]->time.hours;
    1525             pcil->ladate.day = filesl[l]->ladate.day;
    1526             pcil->ladate.month = filesl[l]->ladate.month;
    1527             pcil->ladate.year = filesl[l]->ladate.year + 1980;
    1528             pcil->latime.seconds = filesl[l]->latime.twosecs * 2;
    1529             pcil->latime.minutes = filesl[l]->latime.minutes;
    1530             pcil->latime.hours = filesl[l]->latime.hours;
    1531             pcil->crdate.day = filesl[l]->crdate.day;
    1532             pcil->crdate.month = filesl[l]->crdate.month;
    1533             pcil->crdate.year = filesl[l]->crdate.year + 1980;
    1534             pcil->crtime.seconds = filesl[l]->crtime.twosecs * 2;
    1535             pcil->crtime.minutes = filesl[l]->crtime.minutes;
    1536             pcil->crtime.hours = filesl[l]->crtime.hours;
    1537             if (*cmp->dcd.mask.szMask) {
    1538               if (!Filter((PMINIRECORDCORE) pcil, (PVOID) & cmp->dcd.mask)) {
    1539                 pcil->rc.flRecordAttr |= CRA_FILTERED;
    1540                 pcir->rc.flRecordAttr |= CRA_FILTERED;
    1541               }
    1542             }
    1543             free(filesl[l]);
    1544             l++;
    1545           }
    1546           else {
    1547             // filesr && filesr[r]
    1548             // Right side list longer than left side
    1549             // Insert name on right, leave blank filler on left
    1550             sprintf(szBuf, "%s%s%s", cmp->rightdir,
    1551                     cmp->rightdir[strlen(cmp->rightdir) - 1] == '\\' ?
    1552                       NullStr : "\\",
    1553                     filesr[r]->fname);
    1554             pcir->pszFileName = xstrdup(szBuf, pszSrcFile, __LINE__);
    1555             pcir->pszDisplayName = pcir->pszFileName + lenr;
    1556             pcir->attrFile = filesr[r]->attrFile;
    1557             // pcir->rc.hptrIcon = hptrFile;
    1558             y = 0;
    1559             for (x = 0; x < 6; x++) {
    1560               if (attrstring[x])
    1561                 pcir->szDispAttr[y++] = (CHAR) ((pcir->attrFile & (1 << x)) ?
    1562                                                 attrstring[x] : '-');
    1563             }
    1564             pcir->szDispAttr[5] = 0;
    1565             pcir->cbFile = filesr[r]->cbFile;
    1566             pcir->easize = filesr[r]->easize;
    1567             pcir->date.day = filesr[r]->date.day;
    1568             pcir->date.month = filesr[r]->date.month;
    1569             pcir->date.year = filesr[r]->date.year + 1980;
    1570             pcir->time.seconds = filesr[r]->time.twosecs * 2;
    1571             pcir->time.minutes = filesr[r]->time.minutes;
    1572             pcir->time.hours = filesr[r]->time.hours;
    1573             pcir->ladate.day = filesr[r]->ladate.day;
    1574             pcir->ladate.month = filesr[r]->ladate.month;
    1575             pcir->ladate.year = filesr[r]->ladate.year + 1980;
    1576             pcir->latime.seconds = filesr[r]->latime.twosecs * 2;
    1577             pcir->latime.minutes = filesr[r]->latime.minutes;
    1578             pcir->latime.hours = filesr[r]->latime.hours;
    1579             pcir->crdate.day = filesr[r]->crdate.day;
    1580             pcir->crdate.month = filesr[r]->crdate.month;
    1581             pcir->crdate.year = filesr[r]->crdate.year + 1980;
    1582             pcir->crtime.seconds = filesr[r]->crtime.twosecs * 2;
    1583             pcir->crtime.minutes = filesr[r]->crtime.minutes;
    1584             pcir->crtime.hours = filesr[r]->crtime.hours;
    1585             if (*cmp->dcd.mask.szMask) {
    1586               if (!Filter((PMINIRECORDCORE) pcir, (PVOID) & cmp->dcd.mask)) {
    1587                 pcir->rc.flRecordAttr |= CRA_FILTERED;
    1588                 pcil->rc.flRecordAttr |= CRA_FILTERED;
    1589               }
    1590             }
    1591             free(filesr[r]);
    1592             r++;
    1593           }
    1594 
    1595 #endif //=========================== fixme to be gone =================
    1596 
    15971250          // Ensure empty buffers point somewhere
    15981251          if (!pcil->pszFileName) {
     
    16091262          pcir->rc.pszIcon = pcir->pszDisplayName;
    16101263
    1611           pcil->pszLongname = NullStr;
    1612           pcir->pszLongname = NullStr;
     1264          pcil->pszLongName = NullStr;
     1265          pcir->pszLongName = NullStr;
    16131266
    16141267          if (!pcil->pszSubject)
  • trunk/dll/dircnrs.c

    r761 r762  
    30453045          CHAR s[CCHMAXPATHCOMP + 91], tb[81], tf[81];
    30463046
    3047           pci = (PCNRITEM) ((pre) ? pre->pRecord : NULL);
     3047          pci = (PCNRITEM) (pre ? pre->pRecord : NULL);
    30483048          if (!pci) {
    30493049            if (hwndStatus2)
  • trunk/dll/dirsize.c

    r761 r762  
    185185  // fixme to know why - it appears to be indirectly saving length, but why?
    186186  pci->pszDisplayName = pci->pszFileName + strlen(pci->pszFileName);
    187   pci->pszLongname = pci->pszFileName;          // fixme to be sure?
     187  pci->pszLongName = pci->pszFileName;          // fixme to be sure?
    188188  pci->rc.pszIcon = pci->pszFileName;
    189189  pci->rc.flRecordAttr |= CRA_RECORDREADONLY;
     
    304304        }
    305305        // Need unique buffer 23 Jul 07 SHL
    306         pci->pszLongname = xmalloc(2, pszSrcFile, __LINE__);
    307         pci->pszLongname[0] = 0;                // Make null string
    308         pci->pszLongname[1] = 1;                // Flag root - hack cough
     306        pci->pszLongName = xmalloc(2, pszSrcFile, __LINE__);
     307        pci->pszLongName[0] = 0;                // Make null string
     308        pci->pszLongName[1] = 1;                // Flag root - hack cough
    309309      }
    310310      else
     
    699699              /* fill box with graph bar, flags is integer % */
    700700              if (pci->flags) {
    701                 if (*(pci->pszLongname + 1) == 1)       /* is root record */
     701                if (*(pci->pszLongName + 1) == 1)       /* is root record */
    702702                  GpiSetColor(oi->hps, CLR_DARKGREEN);
    703703                else
     
    711711
    712712                /* draw highlights and shadows on graph */
    713                 if (*(pci->pszLongname + 1) == 1)
     713                if (*(pci->pszLongName + 1) == 1)
    714714                  GpiSetColor(oi->hps, CLR_GREEN);
    715715                else
     
    728728                ptl.x = oi->rclItem.xLeft + pci->flags;
    729729                GpiLine(oi->hps, &ptl);
    730                 if (*(pci->pszLongname + 1) != 1) {
     730                if (*(pci->pszLongName + 1) != 1) {
    731731                  GpiSetColor(oi->hps, CLR_DARKRED);
    732732                  ptl.x = oi->rclItem.xLeft + 2;
  • trunk/dll/filldir.c

    r760 r762  
    310310
    311311  /* load the object's longname */
    312   pci->pszLongname = 0;
     312  pci->pszLongName = 0;
    313313  if (fLoadLongnames &&
    314314      dcd &&
     
    346346          value[pfea->cbValue] = 0;
    347347          if (*(USHORT *) value == EAT_ASCII)
    348             pci->pszLongname = xstrdup(value + (sizeof(USHORT) * 2), pszSrcFile, __LINE__);
     348            pci->pszLongName = xstrdup(value + (sizeof(USHORT) * 2), pszSrcFile, __LINE__);
    349349        }
    350350        free(pfealist);
     
    353353    }
    354354  }
    355   if (!pci->pszLongname)
    356     pci->pszLongname = NullStr;
     355  if (!pci->pszLongName)
     356    pci->pszLongName = NullStr;
    357357
    358358  /* do anything required to case of filename */
     
    527527    pci->pszSubject = NullStr;
    528528
    529   pci->pszLongname = 0;
     529  pci->pszLongName = 0;
    530530  if (fLoadLongnames &&
    531531      dcd &&
     
    564564          if (*(USHORT *) value == EAT_ASCII) {
    565565            p = value + sizeof(USHORT) * 2;             // Point at value string
    566             pci->pszLongname = xstrdup(p, pszSrcFile, __LINE__);
     566            pci->pszLongName = xstrdup(p, pszSrcFile, __LINE__);
    567567          }
    568568        }
     
    572572    }
    573573  }
    574   if (!pci->pszLongname)
    575     pci->pszLongname = NullStr;
     574  if (!pci->pszLongName)
     575    pci->pszLongName = NullStr;
    576576
    577577  if (fForceUpper)
     
    964964    pci = WinSendMsg(hwndCnr, CM_QUERYRECORD, MPFROMP(pciParent),
    965965                     MPFROM2SHORT(CMA_FIRSTCHILD, CMA_ITEMORDER));
    966     while (pci && (INT) pci != -1) {
     966    while (pci && (INT)pci != -1) {
    967967      if (pci->attrFile & FILE_DIRECTORY)
    968968        Stubby(hwndCnr, pci);
     
    996996  DosPostEventSem(CompactSem);
    997997
    998 #if 0 // fixme to disable or to be configurable
     998#if 0 // fixme to be gone or to be configurable
    999999  {
    10001000    int state = _heapchk();
     
    12511251                                MPVOID,
    12521252                                MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    1253     while (pci && (INT) pci != -1) {
     1253    while (pci && (INT)pci != -1) {
    12541254      if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulCurDriveNum) {
    12551255        WinSendMsg(hwndCnr,
     
    13521352                              MPVOID,
    13531353                              MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    1354   while (pci && (INT) pci != -1) {
     1354  while (pci && (INT)pci != -1) {
    13551355    pciNext = (PCNRITEM) WinSendMsg(hwndCnr,
    13561356                                    CM_QUERYRECORD,
     
    14011401                              MPVOID,
    14021402                              MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    1403   while (pci && (INT) pci != -1) {
     1403  while (pci && (INT)pci != -1) {
    14041404    pciNext = (PCNRITEM) WinSendMsg(hwndCnr,
    14051405                                    CM_QUERYRECORD,
     
    14121412                                  MPFROM2SHORT(CMA_FIRSTCHILD,
    14131413                                               CMA_ITEMORDER));
    1414       while (pci && (INT) pci != -1) {
     1414      while (pci && (INT)pci != -1) {
    14151415        if (pci->flags & RECFLAGS_ENV)
    14161416          FleshEnv(hwndCnr, pci);
     
    14981498  PFIELDINFO pfi;
    14991499
    1500 #if 0 // fixme to disable or to be configurable
     1500#if 0 // fixme to be gone or to be configurable
    15011501  {
    15021502    int state = _heapchk();
     
    15211521/**
    15221522 * Free storage associated with container item
    1523  * Caller is responsible for correcting pointers
    15241523 */
    15251524
    15261525VOID FreeCnrItemData(PCNRITEM pci)
    15271526{
     1527  PSZ psz;
    15281528  // DbgMsg(pszSrcFile, __LINE__, "FreeCnrItemData %p", pci);
    15291529
    1530   if (pci->pszSubject && pci->pszSubject != NullStr)
    1531     xfree(pci->pszSubject);
    1532 
    1533   if (pci->pszLongname && pci->pszLongname != NullStr &&
    1534       pci->pszLongname != pci->pszFileName && pci->pszLongname != pci->pszDisplayName)
    1535     xfree(pci->pszLongname);
    1536 
    1537   if (pci->pszFileName && pci->pszFileName != NullStr)
    1538     xfree(pci->pszFileName);
     1530  if (pci->pszSubject && pci->pszSubject != NullStr) {
     1531
     1532    psz = pci->pszSubject;
     1533    pci->pszSubject = NullStr;
     1534    free(psz);
     1535  }
     1536
     1537  // +1 in case long name pointing after last backslash
     1538  if (pci->pszLongName &&
     1539      pci->pszLongName != NullStr &&
     1540      pci->pszLongName != pci->pszFileName &&
     1541      pci->pszLongName != pci->pszDisplayName &&
     1542      pci->pszLongName != pci->pszDisplayName + 1) {
     1543    psz = pci->pszLongName;
     1544    pci->pszLongName = NullStr;
     1545    free(psz);
     1546  }
     1547
     1548  if (pci->pszFileName && pci->pszFileName != NullStr) {
     1549    psz = pci->pszFileName;
     1550    pci->pszFileName = NullStr;
     1551    free(psz);
     1552  }
    15391553}
    15401554
    15411555/**
    1542  * Free container item and associated storage
     1556 * Free single container item and associated storage
    15431557 */
    15441558
    1545 INT FreeCnrItem(HWND hwnd, PCNRITEM pci)
     1559VOID FreeCnrItem(HWND hwnd, PCNRITEM pci)
    15461560{
    1547   INT remaining;
    1548 
    15491561  // DbgMsg(pszSrcFile, __LINE__, "FreeCnrItem hwnd %x pci %p", hwnd, pci);
    15501562
    15511563  FreeCnrItemData(pci);
    15521564
    1553   remaining = (INT)WinSendMsg(hwnd, CM_FREERECORD, MPFROMP(&pci), MPFROMSHORT(1));
    1554   if (remaining == -1) {
     1565  if (!WinSendMsg(hwnd, CM_FREERECORD, MPFROMP(&pci), MPFROMSHORT(1))) {
    15551566    // Win_Error2(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,IDS_CMFREEERRTEXT);
    15561567    Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_FREERECORD hwnd %x pci %p", hwnd, pci);
    15571568  }
    1558   return remaining;
    15591569}
    15601570
     
    15671577  PCNRITEM pci = pciFirst;
    15681578  PCNRITEM pciNext;
    1569 
    1570   while (pci) {
     1579  USHORT usCount;
     1580
     1581  for (usCount = 0; pci; usCount++) {
    15711582    pciNext = (PCNRITEM) pci->rc.preccNextRecord;
    1572     if (FreeCnrItem(hwnd, pci) == -1)
    1573       break;                            // Avoid cascading errors
     1583    FreeCnrItemData(pci);
    15741584    pci = pciNext;
     1585  }
     1586
     1587  if (usCount) {
     1588    if (!WinSendMsg(hwnd, CM_FREERECORD, MPFROMP(&pci), MPFROMSHORT(usCount))) {
     1589      // Win_Error2(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,IDS_CMFREEERRTEXT);
     1590      Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_FREERECORD hwnd %x pci %p cnt %u", hwnd, pci, usCount);
     1591    }
    15751592  }
    15761593}
     
    15781595/**
    15791596 * Remove item(s) from container and free associated storage if requested
     1597 * @param pciFirst points to first item to remove or NULL to remove all
     1598 * @param usCnt is remove count or 0 to remove all
    15801599 * @returns count of items remaining in container or -1 if error
    15811600 */
    15821601
    1583 INT RemoveCnrItems(HWND hwnd, PCNRITEM pci, USHORT usCnt, USHORT usFlags)
     1602INT RemoveCnrItems(HWND hwnd, PCNRITEM pciFirst, USHORT usCnt, USHORT usFlags)
    15841603{
    1585   INT remaining;
    1586 
    1587   if (usCnt == 0) {
    1588     if (pci != NULL) {
    1589       Runtime_Error(pszSrcFile, __LINE__, "pci not NULL");
     1604  INT remaining = usCnt;
     1605  PCNRITEM pci;
     1606
     1607  if ((usCnt && !pciFirst) || (!usCnt && pciFirst)) {
     1608      Runtime_Error(pszSrcFile, __LINE__, "pciFirst %p usCnt %u mismatch", pciFirst, usCnt);
    15901609      remaining = -1;
    1591     }
    1592     else {
    1593       for (;;) {
     1610  }
     1611  else {
     1612    // Free our buffers if free requested
     1613    if (usFlags & CMA_FREE) {
     1614      if (pciFirst)
     1615        pci = pciFirst;
     1616      else {
    15941617        pci = (PCNRITEM)WinSendMsg(hwnd, CM_QUERYRECORD, MPVOID,
    15951618                                   MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));
    1596         if (!pci) {
    1597           remaining = 0;
    1598           break;                        // Done
    1599         }
    1600         else if ((INT)pci == -1) {
     1619        if ((INT)pci == -1) {
    16011620          Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_QUERYRECORD");
    16021621          remaining = -1;
     1622          pci = NULL;
     1623        }
     1624      }
     1625      while (pci) {
     1626        FreeCnrItemData(pci);
     1627        pci = (PCNRITEM)pci->rc.preccNextRecord;
     1628        if (remaining && --remaining == 0)
    16031629          break;
    1604         }
    1605         else {
    1606           remaining = RemoveCnrItems(hwnd, pci, 1, usFlags);
    1607           if (remaining == -1)
    1608             break;
    1609         }
    1610       } // for
    1611     }
    1612   }
    1613   else if (usCnt != 1) {
    1614     Runtime_Error(pszSrcFile, __LINE__, "count not 1");
    1615     remaining = -1;
    1616   }
    1617   else {
    1618     // DbgMsg(pszSrcFile, __LINE__, "RemoveCnrItems %p %u %s", pci, usCnt, pci->pszFileName);
    1619 
    1620     if (usFlags & CMA_FREE)
    1621       FreeCnrItemData(pci);
    1622 
    1623     remaining = (INT)WinSendMsg(hwnd, CM_REMOVERECORD, MPFROMP(&pci), MPFROM2SHORT(usCnt, usFlags));
     1630      }
     1631    }
     1632  }
     1633
     1634  // DbgMsg(pszSrcFile, __LINE__, "RemoveCnrItems %p %u %s", pci, usCnt, pci->pszFileName);
     1635
     1636  if (remaining != - 1) {
     1637    remaining = (INT)WinSendMsg(hwnd, CM_REMOVERECORD, MPFROMP(&pciFirst), MPFROM2SHORT(usCnt, usFlags));
    16241638    if (remaining == -1) {
    16251639      // Win_Error2(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,IDS_CMREMOVEERRTEXT);
    1626       Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_REMOVERECORD hwnd %x pci %p", hwnd, pci);
    1627     }
    1628   }
     1640      Win_Error(hwnd, HWND_DESKTOP, pszSrcFile, __LINE__,"CM_REMOVERECORD hwnd %x pci %p cnt %u", hwnd, pciFirst, usCnt);
     1641    }
     1642  }
     1643
    16291644  return remaining;
    16301645}
  • trunk/dll/fm3dll.h

    r751 r762  
    419419  CDATE crdate;                 /* Creation date of file */
    420420  CTIME crtime;                 /* Creation time of file */
    421   CHAR *pszLongname;            // Points to long name buffer - used by code and by CFA_STRING
     421  CHAR *pszLongName;            // Points to long name buffer - used by code and by CFA_STRING
    422422  ULONGLONG cbFile;             /* File size */
    423423  ULONGLONG easize;             // Size of EAs - dirsize uses this - hack cough
     
    639639                              const PSZ pszFileName, const PFILESTATUS4 pfsa4,
    640640                              const BOOL partial, DIRCNRDATA *pdcd);
    641 INT FreeCnrItem(HWND hwnd, PCNRITEM pci);
     641VOID FreeCnrItem(HWND hwnd, PCNRITEM pci);
    642642VOID FreeCnrItemList(HWND hwnd, PCNRITEM pciFirst);
    643643VOID FreeCnrItemData(PCNRITEM pci);
  • trunk/dll/misc.c

    r756 r762  
    514514    pfi->flTitle = CFA_CENTER | CFA_FITITLEREADONLY;
    515515    pfi->pTitleData = GetPString(IDS_LNAME);
    516     pfi->offStruct = FIELDOFFSET(CNRITEM, pszLongname);
     516    pfi->offStruct = FIELDOFFSET(CNRITEM, pszLongName);
    517517
    518518    // Store the current pfi value as that will be used to indicate the
     
    740740          return (MRESULT) TRUE;
    741741        }
    742         else if (pfi && pfi->offStruct == FIELDOFFSET(CNRITEM, pszLongname)) {
     742        else if (pfi && pfi->offStruct == FIELDOFFSET(CNRITEM, pszLongName)) {
    743743
    744744          CHAR longname[CCHMAXPATHCOMP];
     
    749749          longname[retlen + 1] = 0;
    750750          //chop_at_crnl(longname);
    751           pci->pszLongname = xrealloc(pci->pszLongname, retlen + 1, pszSrcFile, __LINE__);
     751          pci->pszLongName = xrealloc(pci->pszLongName, retlen + 1, pszSrcFile, __LINE__);
    752752          WinSetWindowText(hwndMLE, longname);
    753753          pci->pszFileName = xrealloc(pci->pszFileName, retlen + 1, pszSrcFile, __LINE__);
  • trunk/dll/objcnr.c

    r761 r762  
    104104    pciP->pszDispAttr = NullStr;
    105105    pciP->pszSubject = NullStr;
    106     pciP->pszLongname = NullStr;
     106    pciP->pszLongName = NullStr;
    107107    if (strlen(filename) < 4)
    108108      pciP->pszDisplayName = pciP->pszFileName;
  • trunk/dll/saveclip.c

    r761 r762  
    478478                      break;
    479479                    case 'l':
    480                       fputs(pci->pszLongname, fp);
     480                      fputs(pci->pszLongName, fp);
    481481                      break;
    482482                    case 'L':
    483                       fprintf(fp, "%-40s", pci->pszLongname);
     483                      fprintf(fp, "%-40s", pci->pszLongName);
    484484                      break;
    485485                    case 'F':
  • trunk/dll/select.c

    r751 r762  
    2121  14 Jun 07 SHL SelectAll: make odd expression go away
    2222  02 Aug 07 SHL Sync with CNRITEM mods
     23  04 Aug 07 SHL Use Runtime_Error
    2324
    2425***********************************************************************/
     
    574575#pragma alloc_text(SELECT4,FreeCnrs,SpecialSelect2,CompSSNames,CompSSNamesB)
    575576
     577/**
     578 * Do select actions for compare directories containers
     579 *
     580 */
     581
    576582VOID SpecialSelect(HWND hwndCnrS, HWND hwndCnrD, INT action, BOOL reset)
    577583{
     
    582588
    583589
    584   if (!hwndCnrS || !hwndCnrD)
     590  if (!hwndCnrS || !hwndCnrD) {
     591    Runtime_Error(pszSrcFile, __LINE__, "hwndCnrS %p hwndCnrD %p", hwndCnrS, hwndCnrD);
    585592    return;
     593  }
    586594
    587595  memset(&cnri, 0, sizeof(CNRINFO));
     
    596604  numS = (INT) cnri.cRecords;
    597605  if (!numD || numS != numD) {
    598     saymsg(MB_ENTER,
    599            HWND_DESKTOP,
    600            DEBUG_STRING, "numD (%lu) != numS (%lu)", numD, numS);
     606    Runtime_Error(pszSrcFile, __LINE__, "numD %u != numS %u", numD, numS);
    601607    return;
    602608  }
     
    630636                                   MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER));
    631637    if (!(x % 500))
    632       DosSleep(1L);
     638      DosSleep(1);
    633639    else if (!(x % 50))
    634640      DosSleep(1);
    635   }
     641  } // while
     642
    636643  if (numD != x) {
    637644    if (!slow) {
     
    641648    free(pciDa);
    642649    free(pciSa);
    643     saymsg(MB_ENTER,
    644            HWND_DESKTOP, DEBUG_STRING, "numD (%lu) != x (%lu)", numD, x);
     650    Runtime_Error(pszSrcFile, __LINE__, "numD %u != x %lu", numD, x);
    645651    return;
    646652  }
     
    660666                                   MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER));
    661667    if (!(x % 500))
    662       DosSleep(1L);
     668      DosSleep(1);
    663669    else if (!(x % 50))
    664670      DosSleep(1);
    665   }
     671  } // while
     672
    666673  if (numS != x) {
    667674    if (!slow) {
     
    725732      }
    726733      if (!(x % 500))
    727         DosSleep(1L);
     734        DosSleep(1);
    728735      else if (!(x % 50))
    729736        DosSleep(1);
     
    11861193  DosPostEventSem(CompactSem);
    11871194}
     1195
     1196/**
     1197 * Do select actions for single container
     1198 *
     1199 */
    11881200
    11891201VOID SpecialSelect2(HWND hwndParent, INT action)
Note: See TracChangeset for help on using the changeset viewer.