Changeset 1158 for trunk/dll


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

Ticket 187: Draft 1: Functions only

Location:
trunk/dll
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/avl.c

    r1082 r1158  
    5151#include "strutil.h"                    // GetPString
    5252#include "errutil.h"                    // Runtime_Error
     53#include "avv.h"                        // ArcReviewDlgProc, rewrite_archiverbb2
     54#include "droplist.h"                   // FullDrgName
    5355#include "fm3dll.h"
    5456#include "fortify.h"
  • trunk/dll/draglist.c

    r1039 r1158  
    3535
    3636#include "errutil.h"                    // Dos_Error...
     37#include "draglist.h"
     38#include "valid.h"                      // IsValidDrive
    3739#include "fm3dll.h"
    3840#include "fortify.h"
  • trunk/dll/getnames.c

    r907 r1158  
    2525#include "errutil.h"                    // Dos_Error...
    2626#include "strutil.h"                    // GetPString
     27#include "getnames.h"
     28#include "walkem.h"                     // load_udirs, remove_udir
    2729#include "fm3dll.h"
    2830
  • trunk/dll/loadbmp.c

    r1104 r1158  
    3030
    3131#include "errutil.h"                    // Dos_Error...
     32#include "loadbmp.h"
    3233#include "fm3dll.h"
    3334
    3435static PSZ pszSrcFile = __FILE__;
     36
     37static HBITMAP LoadBitmapFromFile(CHAR * pszFileName);
    3538
    3639HBITMAP LoadBitmapFromFileNum(USHORT id)
  • trunk/dll/mainwnd.c

    r1140 r1158  
    1 
    21/***********************************************************************
    32
     
    9796#include "avl.h"                        // free_archivers
    9897#include "walkem.h"                     // free_setups...
     98#include "key.h"                        // AboutDlgProc
     99#include "menu.h"                       // AddToMenu
     100#include "mainwnd.h"
     101#include "cmdline.h"                    // CmdLine2DlgProc, save_cmdlines
     102#include "common.h"                     // CommonCreateMainChildren, CommonDriveCmd, CommonMainWndProc
     103#include "notify.h"                     // DoNotify, HideNote, ShowNote
     104#include "draglist.h"                   // DragOne
     105#include "chklist.h"                    // DropListProc
     106#include "avv.h"                        // EditArchiverDefinition
     107#include "assoc.h"                      // EditAssociations
     108#include "fm2cmd.h"                     // FM2Command
     109#include "misc.h"                       // FindDirCnr, FixSwitchList, PaintSTextWindow,
     110                                        // SetConditionalCascade, SetMenuCheck, SetSysMenu
     111                                        // SwitchCommand
     112#include "instant.h"                    // InstantDlgProc
     113#include "killproc.h"                   // KillDlgProc
     114#include "loadbmp.h"                    // LoadBitmapFromFileNum
     115#include "presparm.h"                   // SavePresParams
     116#include "treecnr.h"                    // ShowTreeRec, StartTreeCnr
     117#include "inis.h"                       // StartIniEditor
     118#include "sysinfo.h"                    // SysInfoDlgProc
     119#include "viewinf.h"                    // ViewInfProc
     120#include "walkem.h"                     // WalkDlgProc, WalkTwoCmpDlgProc, add_setup, add_udir
     121                                        // fill_setups_list, free_ldir, free_udirs, load_udirs
     122                                        // remove_setup, remove_udir, save_setups, save_udirs
     123#include "winlist.h"                    // WindowList
     124#include "cmdline.h"                    // add_cmdline
     125#include "assoc.h"                      // free_associations
    99126#include "fm3dll.h"
    100127
  • trunk/dll/saveclip.c

    r1119 r1158  
    4141#include "strutil.h"                    // GetPString
    4242#include "pathutil.h"                   // BldFullPathName
     43#include "saveclip.h"
     44#include "literal.h"                    // fixup
    4345#include "fm3dll.h"
    4446#include "fortify.h"
    4547
    4648static PSZ pszSrcFile = __FILE__;
     49
     50//static VOID ListToClipboard(HWND hwnd, CHAR ** list, ULONG append);
     51
     52static BOOL SaveToClipHab(HAB hab, CHAR * text, BOOL append);
     53
    4754#define MAX_PATTERN_BYTES 80
    4855
     
    101108}
    102109
     110#if 0   // JBS
    103111VOID ListToClipboard(HWND hwnd, CHAR ** list, ULONG append)
    104112{
     
    107115  ListToClipboardHab(hab, list, append);
    108116}
     117#endif
    109118
    110119VOID ListToClipboardHab(HAB hab, CHAR ** list, ULONG append)
     
    10061015
    10071016#pragma alloc_text(FMCLIPBOARDIN,SaveToClip,SaveToClipHab)
    1008 #pragma alloc_text(FMCLIPBOARDOUT,ListToClipboard,ListToClipboardHab)
     1017#pragma alloc_text(FMCLIPBOARDOUT,ListToClipboardHab)
    10091018#pragma alloc_text(FMCLIPBOARDOUT,ListFromClipboard,ListFromClipboardHab)
    10101019#pragma alloc_text(SAVELIST,SaveListDlgProc,SaveAllListDlgProc)
  • trunk/dll/seeall.c

    r1116 r1158  
    5454#include "fm3dlg.h"
    5555#include "fm3str.h"
    56 #include "pathutil.h"                   // BldQuotedFullPathName...
    57 #include "makelist.h"                   // AddToList
    58 #include "errutil.h"                    // Dos_Error...
    59 #include "strutil.h"                    // GetPString
     56#include "pathutil.h"                   // BldQuotedFullPathName...
     57#include "makelist.h"                   // AddToList
     58#include "errutil.h"                    // Dos_Error...
     59#include "strutil.h"                    // GetPString
    6060#include "notebook.h"                   // targetdirectory
     61#include "copyf.h"                      // AdjustWildcardName, make_deleteable
     62#include "attribs.h"                    // AttrListDlgProc
     63#include "chklist.h"                    // CenterOverWindow, CheckListProc
     64#include "colors.h"                     // ColorDlgProc
     65#include "draglist.h"                   // DragList
     66#include "extract.h"                    // ExtractDlgProc
     67#include "info.h"                       // FileInfoProc
     68#include "valid.h"                      // GetDesktopName, IsNewer, TestFDates
     69#include "saveclip.h"                   // ListToClipboardHab, SaveAllListDlgProc
     70#include "shadow.h"                     // MakeShadows
     71#include "mkdir.h"                      // MassMkdir
     72#include "objcnr.h"                     // ObjCnrDlgProc
     73#include "codepage.h"                   // PickCodepage
     74#include "printer.h"                    // PrintDlgProc, PrintListThread
     75#include "rename.h"                     // RenameProc
     76#include "uudecode.h"                   // UUD
     77#include "walkem.h"                     // WalkCopyDlgProc, WalkMoveDlgProc
    6178#include "fm3dll.h"
     79#include "seeall.h"
     80#include "misc.h"                       // SetConditionalCascade
    6281
    6382#include "fortify.h"
     
    186205      WinCheckButton(hwnd, DUPE_CRCS, ((flags & DP_NAMES) != 0));
    187206      if (!(flags & DP_NAMES))
    188         WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE);
     207        WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE);
    189208    }
    190209    break;
     
    194213    case DUPE_NAMES:
    195214      if (WinQueryButtonCheckstate(hwnd, DUPE_NAMES))
    196         WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), TRUE);
     215        WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), TRUE);
    197216      else {
    198         WinCheckButton(hwnd, DUPE_EXTS, FALSE);
    199         WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE);
     217        WinCheckButton(hwnd, DUPE_EXTS, FALSE);
     218        WinEnableWindow(WinWindowFromID(hwnd, DUPE_EXTS), FALSE);
    200219      }
    201220      break;
    202221    case DUPE_SIZES:
    203222      if (!WinQueryButtonCheckstate(hwnd, DUPE_SIZES))
    204         WinCheckButton(hwnd, DUPE_CRCS, FALSE);
     223        WinCheckButton(hwnd, DUPE_CRCS, FALSE);
    205224      break;
    206225    case DUPE_CRCS:
    207226      if (WinQueryButtonCheckstate(hwnd, DUPE_CRCS))
    208         WinCheckButton(hwnd, DUPE_SIZES, TRUE);
     227        WinCheckButton(hwnd, DUPE_SIZES, TRUE);
    209228      break;
    210229    }
     
    215234    case DID_OK:
    216235      {
    217         USHORT flags = 0;
    218 
    219         if (WinQueryButtonCheckstate(hwnd, DUPE_NAMES)) {
    220           flags |= DP_NAMES;
    221           if (WinQueryButtonCheckstate(hwnd, DUPE_EXTS))
    222             flags |= DP_EXTS;
    223         }
    224         if (WinQueryButtonCheckstate(hwnd, DUPE_DATES))
    225           flags |= DP_DATES;
    226         if (WinQueryButtonCheckstate(hwnd, DUPE_SIZES)) {
    227           flags |= DP_SIZES;
    228           if (WinQueryButtonCheckstate(hwnd, DUPE_CRCS))
    229             flags |= (DP_CRCS | DP_SIZES);
    230         }
    231         if (!flags)
    232           saymsg(MB_ENTER,
    233                 hwnd,
    234                 GetPString(IDS_ERRORTEXT),
    235                 "%s", GetPString(IDS_CHECKONETEXT));
    236         else
    237           WinDismissDlg(hwnd, flags);
     236        USHORT flags = 0;
     237
     238        if (WinQueryButtonCheckstate(hwnd, DUPE_NAMES)) {
     239          flags |= DP_NAMES;
     240          if (WinQueryButtonCheckstate(hwnd, DUPE_EXTS))
     241            flags |= DP_EXTS;
     242        }
     243        if (WinQueryButtonCheckstate(hwnd, DUPE_DATES))
     244          flags |= DP_DATES;
     245        if (WinQueryButtonCheckstate(hwnd, DUPE_SIZES)) {
     246          flags |= DP_SIZES;
     247          if (WinQueryButtonCheckstate(hwnd, DUPE_CRCS))
     248            flags |= (DP_CRCS | DP_SIZES);
     249        }
     250        if (!flags)
     251          saymsg(MB_ENTER,
     252                hwnd,
     253                GetPString(IDS_ERRORTEXT),
     254                "%s", GetPString(IDS_CHECKONETEXT));
     255        else
     256          WinDismissDlg(hwnd, flags);
    238257      }
    239258      break;
     
    245264    case IDM_HELP:
    246265      if (hwndHelp)
    247         WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
    248                    MPFROM2SHORT(HELP_DUPES, 0), MPFROMSHORT(HM_RESOURCEID));
     266        WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     267                   MPFROM2SHORT(HELP_DUPES, 0), MPFROMSHORT(HM_RESOURCEID));
    249268      break;
    250269    }
     
    279298      register CHAR *p, *pp;
    280299      BOOL dontask = FALSE, wildcarding = FALSE,
    281         overold = FALSE, overnew = FALSE;
     300        overold = FALSE, overnew = FALSE;
    282301
    283302      if (!list || !list[0])
    284         goto Abort;
     303        goto Abort;
    285304      *path = *wildname = 0;
    286305
    287306      switch (SHORT1FROMMP(mp1)) {
    288307      case IDM_MOVEPRESERVE:
    289         {
    290           CHAR preserve[CCHMAXPATH], *end;
    291 
    292           mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1));
    293           strcpy(preserve, list[0] + 2);
    294           end = strrchr(preserve, '\\');
    295           if (end) {
    296             end++;
    297             for (x = 1; list[x]; x++) {
    298               p = preserve;
    299               pp = list[x] + 2;
    300               while (p < end && toupper(*p) == toupper(*pp)) {
    301                 p++;
    302                 pp++;
    303               }
    304               if (*p == '\\')
    305                 p++;
    306               if (p < end)
    307                 end = p;
    308             }
    309             *end = 0;
    310           }
    311           else
    312             *preserve = 0;
    313           plen = strlen(preserve);
    314           if (plen)
    315             plen += 2;
    316         }
    317         break;
     308        {
     309          CHAR preserve[CCHMAXPATH], *end;
     310
     311          mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1));
     312          strcpy(preserve, list[0] + 2);
     313          end = strrchr(preserve, '\\');
     314          if (end) {
     315            end++;
     316            for (x = 1; list[x]; x++) {
     317              p = preserve;
     318              pp = list[x] + 2;
     319              while (p < end && toupper(*p) == toupper(*pp)) {
     320                p++;
     321                pp++;
     322              }
     323              if (*p == '\\')
     324                p++;
     325              if (p < end)
     326                end = p;
     327            }
     328            *end = 0;
     329          }
     330          else
     331            *preserve = 0;
     332          plen = strlen(preserve);
     333          if (plen)
     334            plen += 2;
     335        }
     336        break;
    318337      case IDM_COPYPRESERVE:
    319         {
    320           CHAR preserve[CCHMAXPATH], *end;
    321 
    322           mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1));
    323           strcpy(preserve, list[0] + 2);
    324           end = strrchr(preserve, '\\');
    325           if (end) {
    326             end++;
    327             for (x = 1; list[x]; x++) {
    328               p = preserve;
    329               pp = list[x] + 2;
    330               while (p < end && toupper(*p) == toupper(*pp)) {
    331                 p++;
    332                 pp++;
    333               }
    334               if (*p == '\\')
    335                 p++;
    336               if (p < end)
    337                 end = p;
    338             }
    339             *end = 0;
    340           }
    341           else
    342             *preserve = 0;
    343           plen = strlen(preserve);
    344           if (plen)
    345             plen += 2;
    346         }
    347         break;
     338        {
     339          CHAR preserve[CCHMAXPATH], *end;
     340
     341          mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1));
     342          strcpy(preserve, list[0] + 2);
     343          end = strrchr(preserve, '\\');
     344          if (end) {
     345            end++;
     346            for (x = 1; list[x]; x++) {
     347              p = preserve;
     348              pp = list[x] + 2;
     349              while (p < end && toupper(*p) == toupper(*pp)) {
     350                p++;
     351                pp++;
     352              }
     353              if (*p == '\\')
     354                p++;
     355              if (p < end)
     356                end = p;
     357            }
     358            *end = 0;
     359          }
     360          else
     361            *preserve = 0;
     362          plen = strlen(preserve);
     363          if (plen)
     364            plen += 2;
     365        }
     366        break;
    348367      case IDM_WILDMOVE:
    349         wildcarding = TRUE;
    350         mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1));
    351         break;
     368        wildcarding = TRUE;
     369        mp1 = MPFROM2SHORT(IDM_MOVE, SHORT2FROMMP(mp1));
     370        break;
    352371      case IDM_WILDRENAME:
    353         wildcarding = TRUE;
    354         mp1 = MPFROM2SHORT(IDM_RENAME, SHORT2FROMMP(mp1));
    355         break;
     372        wildcarding = TRUE;
     373        mp1 = MPFROM2SHORT(IDM_RENAME, SHORT2FROMMP(mp1));
     374        break;
    356375      case IDM_WILDCOPY:
    357         wildcarding = TRUE;
    358         mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1));
    359         break;
     376        wildcarding = TRUE;
     377        mp1 = MPFROM2SHORT(IDM_COPY, SHORT2FROMMP(mp1));
     378        break;
    360379      }
    361380
     
    363382      case IDM_OBJECT:
    364383      case IDM_SHADOW:
    365         {
    366           APIRET rc;
    367 
    368           GetDesktopName(path, sizeof(path));
    369           rc = WinDlgBox(HWND_DESKTOP,
    370                         hwndFrame,
    371                         ObjCnrDlgProc,
    372                         FM3ModHandle, OBJCNR_FRAME, MPFROMP(path));
    373           if (rc) {
    374             if (rc > 1)
    375               strcpy(path, "<WP_DESKTOP>");
    376           }
    377           else {
    378             FreeList(list);
    379             break;
    380           }
    381           MakeShadows(hwndFrame,
    382                       list, (SHORT1FROMMP(mp1) == IDM_SHADOW), path, NULL);
    383         }
    384         FreeList(list);
    385         break;
     384        {
     385          APIRET rc;
     386
     387          GetDesktopName(path, sizeof(path));
     388          rc = WinDlgBox(HWND_DESKTOP,
     389                        hwndFrame,
     390                        ObjCnrDlgProc,
     391                        FM3ModHandle, OBJCNR_FRAME, MPFROMP(path));
     392          if (rc) {
     393            if (rc > 1)
     394              strcpy(path, "<WP_DESKTOP>");
     395          }
     396          else {
     397            FreeList(list);
     398            break;
     399          }
     400          MakeShadows(hwndFrame,
     401                      list, (SHORT1FROMMP(mp1) == IDM_SHADOW), path, NULL);
     402        }
     403        FreeList(list);
     404        break;
    386405
    387406      case IDM_PRINT:
    388         {
    389           LISTINFO *li;
     407        {
     408          LISTINFO *li;
    390409#         ifdef FORTIFY
    391410          Fortify_EnterScope();
    392411#          endif
    393           li = xmallocz(sizeof(LISTINFO), pszSrcFile, __LINE__);
    394           if (li) {
    395             li->hwndS = WinWindowFromID(hwndFrame, FID_CLIENT);
    396             li->type = IDM_PRINT;
    397             li->list = list;
    398             if (WinDlgBox(HWND_DESKTOP,
    399                           li->hwndS,
    400                           PrintDlgProc,
    401                           FM3ModHandle, PRN_FRAME, MPFROMP(li))) {
    402               if (li && li->list && li->list[0]) {
    403                 strcpy(li->targetpath, printer);
    404                 if (_beginthread(PrintListThread, NULL, 65536, (PVOID) li) ==
    405                     -1) {
    406                   Runtime_Error(pszSrcFile, __LINE__,
    407                                 GetPString(IDS_COULDNTSTARTTHREADTEXT));
    408                   FreeListInfo(li);
    409                 }
    410               }
    411             }
    412           }
    413         }
    414         break;
     412          li = xmallocz(sizeof(LISTINFO), pszSrcFile, __LINE__);
     413          if (li) {
     414            li->hwndS = WinWindowFromID(hwndFrame, FID_CLIENT);
     415            li->type = IDM_PRINT;
     416            li->list = list;
     417            if (WinDlgBox(HWND_DESKTOP,
     418                          li->hwndS,
     419                          PrintDlgProc,
     420                          FM3ModHandle, PRN_FRAME, MPFROMP(li))) {
     421              if (li && li->list && li->list[0]) {
     422                strcpy(li->targetpath, printer);
     423                if (_beginthread(PrintListThread, NULL, 65536, (PVOID) li) ==
     424                    -1) {
     425                  Runtime_Error(pszSrcFile, __LINE__,
     426                                GetPString(IDS_COULDNTSTARTTHREADTEXT));
     427                  FreeListInfo(li);
     428                }
     429              }
     430            }
     431          }
     432        }
     433        break;
    415434
    416435      case IDM_EAS:
    417         if (WinDlgBox(HWND_DESKTOP,
    418                       hwndFrame,
    419                       DisplayEAsProc, FM3ModHandle, EA_FRAME, (PVOID) list)) {
    420           if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    421                        UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
    422             FreeList(list);
    423         }
    424         else
    425           FreeList(list);
    426         break;
     436        if (WinDlgBox(HWND_DESKTOP,
     437                      hwndFrame,
     438                      DisplayEAsProc, FM3ModHandle, EA_FRAME, (PVOID) list)) {
     439          if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     440                       UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
     441            FreeList(list);
     442        }
     443        else
     444          FreeList(list);
     445        break;
    427446
    428447      case IDM_INFO:
    429         if (WinDlgBox(HWND_DESKTOP,
    430                       hwndFrame,
    431                       FileInfoProc,
    432                       FM3ModHandle, FLE_FRAME, (PVOID) list) == 2) {
    433           if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    434                        UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
    435             FreeList(list);
    436         }
    437         else
    438           FreeList(list);
    439         break;
     448        if (WinDlgBox(HWND_DESKTOP,
     449                      hwndFrame,
     450                      FileInfoProc,
     451                      FM3ModHandle, FLE_FRAME, (PVOID) list) == 2) {
     452          if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     453                       UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
     454            FreeList(list);
     455        }
     456        else
     457          FreeList(list);
     458        break;
    440459
    441460      case IDM_ARCHIVE:
    442         {
    443           DIRCNRDATA ad;
    444           CHAR szBuffer[1025];
    445 
    446           memset(&ad, 0, sizeof(ad));
    447           ad.namecanchange = 1;
    448           ad.info = arcsighead;         // Hide dups
    449           if (!WinDlgBox(HWND_DESKTOP,
    450                         hwndFrame,
    451                         SBoxDlgProc,
    452                         FM3ModHandle,
    453                         ASEL_FRAME, (PVOID) & ad.info) || !ad.info) {
    454             // we blew it
    455             FreeList(list);
    456             break;
    457           }
    458           if (!ad.info->create &&
    459               !ad.info->move &&
    460               !ad.info->createwdirs &&
    461               !ad.info->movewdirs && !ad.info->createrecurse) {
    462             // 14 Aug 07 SHL fixme to tell user why we failed
    463             FreeList(list);
    464             break;
    465           }
    466           if (!WinDlgBox(HWND_DESKTOP, hwndFrame, ArchiveDlgProc, FM3ModHandle, ARCH_FRAME, (PVOID) & ad) || !*ad.arcname || !*ad.command) {    /* we blew it */
    467             FreeList(list);
    468             break;
    469           }
    470           // Build archiver command line
    471           strcpy(szBuffer, ad.command);
    472           strcat(szBuffer, " ");
    473           strcat(szBuffer, ad.arcname);
    474           p = &szBuffer[strlen(szBuffer)];
    475           if (ad.mask.szMask) {
    476             strcat(szBuffer, " ");
    477             strcat(szBuffer, ad.mask.szMask);
    478           }
    479           strcat(szBuffer, " ");
    480           x = 0;
    481           while (list[x]) {
    482             FILESTATUS3 fsa;
    483             memset(&fsa, 0, sizeof(fsa));
    484             DosError(FERR_DISABLEHARDERR);
    485             DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa));
    486             if (fsa.attrFile & FILE_DIRECTORY) {
    487               BldQuotedFullPathName(szBuffer + strlen(szBuffer),
    488                                     list[x], "*");
    489             }
    490             else
    491               BldQuotedFileName(szBuffer + strlen(szBuffer), list[x]);
    492             x++;
    493             if (!list[x] || strlen(szBuffer) + strlen(list[x]) + 5 > 1024) {
    494               runemf2(SEPARATE | WINDOWED | WAIT |
    495                       (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)),
     461        {
     462          DIRCNRDATA ad;
     463          CHAR szBuffer[1025];
     464
     465          memset(&ad, 0, sizeof(ad));
     466          ad.namecanchange = 1;
     467          ad.info = arcsighead;         // Hide dups
     468          if (!WinDlgBox(HWND_DESKTOP,
     469                        hwndFrame,
     470                        SBoxDlgProc,
     471                        FM3ModHandle,
     472                        ASEL_FRAME, (PVOID) & ad.info) || !ad.info) {
     473            // we blew it
     474            FreeList(list);
     475            break;
     476          }
     477          if (!ad.info->create &&
     478              !ad.info->move &&
     479              !ad.info->createwdirs &&
     480              !ad.info->movewdirs && !ad.info->createrecurse) {
     481            // 14 Aug 07 SHL fixme to tell user why we failed
     482            FreeList(list);
     483            break;
     484          }
     485          if (!WinDlgBox(HWND_DESKTOP, hwndFrame, ArchiveDlgProc, FM3ModHandle, ARCH_FRAME, (PVOID) & ad) || !*ad.arcname || !*ad.command) {    /* we blew it */
     486            FreeList(list);
     487            break;
     488          }
     489          // Build archiver command line
     490          strcpy(szBuffer, ad.command);
     491          strcat(szBuffer, " ");
     492          strcat(szBuffer, ad.arcname);
     493          p = &szBuffer[strlen(szBuffer)];
     494          if (ad.mask.szMask) {
     495            strcat(szBuffer, " ");
     496            strcat(szBuffer, ad.mask.szMask);
     497          }
     498          strcat(szBuffer, " ");
     499          x = 0;
     500          while (list[x]) {
     501            FILESTATUS3 fsa;
     502            memset(&fsa, 0, sizeof(fsa));
     503            DosError(FERR_DISABLEHARDERR);
     504            DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa));
     505            if (fsa.attrFile & FILE_DIRECTORY) {
     506              BldQuotedFullPathName(szBuffer + strlen(szBuffer),
     507                                    list[x], "*");
     508            }
     509            else
     510              BldQuotedFileName(szBuffer + strlen(szBuffer), list[x]);
     511            x++;
     512            if (!list[x] || strlen(szBuffer) + strlen(list[x]) + 5 > 1024) {
     513              runemf2(SEPARATE | WINDOWED | WAIT |
     514                      (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)),
    496515                      HWND_DESKTOP, pszSrcFile, __LINE__,
    497516                      NULL, NULL, "%s", szBuffer);
    498               DosSleep(1);              // Let archiver get started
    499               *p = 0;
    500             }
    501             strcat(szBuffer, " ");
    502           } // while
    503           AddToList(ad.arcname, &files, &numfiles, &numalloc);
    504         }
    505         if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    506                      UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
    507           FreeList(list);
    508         break;
     517              DosSleep(1);              // Let archiver get started
     518              *p = 0;
     519            }
     520            strcat(szBuffer, " ");
     521          } // while
     522          AddToList(ad.arcname, &files, &numfiles, &numalloc);
     523        }
     524        if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     525                     UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
     526          FreeList(list);
     527        break;
    509528
    510529      case IDM_ATTRS:
    511         {
    512           LISTINFO li;
    513 
    514           memset(&li, 0, sizeof(li));
    515           li.list = list;
    516           if (WinDlgBox(HWND_DESKTOP,
    517                         hwndFrame,
    518                         AttrListDlgProc,
    519                         FM3ModHandle, ATR_FRAME, MPFROMP(&li))) {
    520             if (li.list && li.list[0]) {
    521               if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    522                            UM_UPDATERECORDLIST, MPFROMP(li.list), MPVOID))
    523                 FreeList(li.list);
    524             }
    525           }
    526           else
    527             FreeList(list);
    528         }
    529         break;
     530        {
     531          LISTINFO li;
     532
     533          memset(&li, 0, sizeof(li));
     534          li.list = list;
     535          if (WinDlgBox(HWND_DESKTOP,
     536                        hwndFrame,
     537                        AttrListDlgProc,
     538                        FM3ModHandle, ATR_FRAME, MPFROMP(&li))) {
     539            if (li.list && li.list[0]) {
     540              if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     541                           UM_UPDATERECORDLIST, MPFROMP(li.list), MPVOID))
     542                FreeList(li.list);
     543            }
     544          }
     545          else
     546            FreeList(list);
     547        }
     548        break;
    530549
    531550      case IDM_MOVE:
    532551      case IDM_COPY:
    533         if (!*path)
    534           strcpy(path, targetdir);
    535         if (!*path)
    536           strcpy(path, list[0]);
    537         MakeValidDir(path);
     552        if (!*path)
     553          strcpy(path, targetdir);
     554        if (!*path)
     555          strcpy(path, list[0]);
     556        MakeValidDir(path);
    538557      RetryPath:
    539         if (SHORT1FROMMP(mp1) == IDM_MOVE) {
    540           if (!WinDlgBox(HWND_DESKTOP,
    541                         hwndFrame,
    542                         WalkMoveDlgProc,
    543                         FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) {
    544             FreeList(list);
    545             goto Abort;
    546           }
    547         }
    548         else {
    549           if (!WinDlgBox(HWND_DESKTOP,
    550                         hwndFrame,
    551                         WalkCopyDlgProc,
    552                         FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) {
    553             FreeList(list);
    554             goto Abort;
    555           }
    556         }
    557         if (driveflags[toupper(*path) - 'A'] & DRIVE_NOTWRITEABLE) {
    558           saymsg(MB_CANCEL,
    559                 hwndFrame,
    560                 GetPString(IDS_ERRORTEXT),
    561                 "%s", GetPString(IDS_NOTWRITENOTARGETTEXT));
    562           goto RetryPath;
    563         }
    564         /* intentional fallthru */
     558        if (SHORT1FROMMP(mp1) == IDM_MOVE) {
     559          if (!WinDlgBox(HWND_DESKTOP,
     560                        hwndFrame,
     561                        WalkMoveDlgProc,
     562                        FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) {
     563            FreeList(list);
     564            goto Abort;
     565          }
     566        }
     567        else {
     568          if (!WinDlgBox(HWND_DESKTOP,
     569                        hwndFrame,
     570                        WalkCopyDlgProc,
     571                        FM3ModHandle, WALK_FRAME, MPFROMP(path)) || !*path) {
     572            FreeList(list);
     573            goto Abort;
     574          }
     575        }
     576        if (driveflags[toupper(*path) - 'A'] & DRIVE_NOTWRITEABLE) {
     577          saymsg(MB_CANCEL,
     578                hwndFrame,
     579                GetPString(IDS_ERRORTEXT),
     580                "%s", GetPString(IDS_NOTWRITENOTARGETTEXT));
     581          goto RetryPath;
     582        }
     583        /* intentional fallthru */
    565584      case IDM_RENAME:
    566         {
    567           CHAR newname[CCHMAXPATH], *moving, *move, *moved;
    568           APIRET rc;
    569           INT type;
    570           FILESTATUS4L fs4;
    571           BOOL isnewer, existed;
    572 
    573           for (x = 0; list[x]; x++) {
    574           Retry:
    575             type = (SHORT1FROMMP(mp1) == IDM_RENAME) ? MOVE :
    576               (SHORT1FROMMP(mp1) == IDM_MOVE) ? MOVE :
    577               (SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? WPSMOVE :
    578               (SHORT1FROMMP(mp1) == IDM_WPSCOPY) ? WPSCOPY : COPY;
    579             moving = (SHORT1FROMMP(mp1) == IDM_RENAME) ?
    580               GetPString(IDS_RENAMINGTEXT) :
    581               (SHORT1FROMMP(mp1) == IDM_MOVE ||
    582                SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?
    583               GetPString(IDS_MOVINGTEXT) : GetPString(IDS_COPYINGTEXT);
    584             move = (SHORT1FROMMP(mp1) == IDM_RENAME) ?
    585               GetPString(IDS_RENAMETEXT) :
    586               (SHORT1FROMMP(mp1) == IDM_MOVE ||
    587                SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?
    588               GetPString(IDS_MOVETEXT) : GetPString(IDS_COPYTEXT);
    589             moved = (SHORT1FROMMP(mp1) == IDM_RENAME) ?
    590               GetPString(IDS_RENAMEDTEXT) :
    591               (SHORT1FROMMP(mp1) == IDM_MOVE ||
    592                SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?
    593               GetPString(IDS_MOVEDTEXT) : GetPString(IDS_COPIEDTEXT);
    594             if (*path) {
    595               strcpy(newname, path);
    596               if (newname[strlen(newname) - 1] != '\\')
    597                 strcat(newname, "\\");
    598               if (plen)
    599                 p = list[x] + plen;
    600               else {
    601                 p = strrchr(list[x], '\\');
    602                 if (p)
    603                   p++;
    604                 else
    605                   p = list[x];
    606               }
    607               strcat(newname, p);
    608             }
    609             else
    610               strcpy(newname, list[x]);
    611             if ((wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) && *wildname) {
    612 
    613               CHAR testname[CCHMAXPATH];
    614 
    615               strcpy(testname, wildname);
    616               if (AdjustWildcardName(newname, testname))
    617                 strcpy(newname, testname);
    618             }
    619             existed = (IsFile(newname) != -1);
    620             isnewer = IsNewer(list[x], newname);
    621             if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) {
    622               if (!overold && !overnew)
    623                 break;
    624               if (!overold && !isnewer)
    625                 break;
    626               if (!overnew && isnewer)
    627                 break;
    628             }
    629             if ((SHORT1FROMMP(mp1) == IDM_RENAME &&
    630                 (!dontask || !*wildname)) ||
    631                 (!dontask && existed) ||
    632                 (!dontask && wildcarding) ||
    633                 (IsFile(newname) == 0 && IsFile(list[x]) == 1)) {
    634 
    635               MOVEIT mv;
    636 
    637               memset(&mv, 0, sizeof(mv));
    638               mv.rename = (SHORT1FROMMP(mp1) == IDM_RENAME);
    639               mv.source = list[x];
    640               strcpy(mv.target, newname);
    641               rc = WinDlgBox(HWND_DESKTOP,
    642                              hwndFrame,
    643                              RenameProc,
    644                              FM3ModHandle, REN_FRAME, (PVOID) & mv);
    645               if (!rc) {
    646                 FreeList(list);
    647                 goto Abort;
    648               }
    649               DosSleep(0);  //26 Aug 07 GKY 1
    650               if (mv.skip || !*mv.target)
    651                 break;
    652               if (mv.dontask)
    653                 dontask = TRUE;
    654               if (mv.overold)
    655                 overold = TRUE;
    656               if (mv.overnew)
    657                 overnew = TRUE;
    658               if (wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) {
    659                 p = strrchr(mv.target, '\\');
    660                 if (p && (strchr(p, '*') || strchr(p, '?'))) {
    661                   strcpy(wildname, mv.target);
    662                   AdjustWildcardName(list[x], mv.target);
    663                 }
    664                 else
    665                   *wildname = 0;
    666               }
    667               strcpy(newname, mv.target);
    668               existed = (IsFile(newname) != -1);
    669               isnewer = IsNewer(list[x], newname);
    670               if (!mv.overwrite) {
    671                 if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) {
    672                   if (!overold && !overnew)
    673                     break;
    674                   if (!overold && !isnewer)
    675                     break;
    676                   if (!overnew && isnewer)
    677                     break;
    678                 }
    679               }
    680             }
    681             if (!stricmp(list[x], newname))
    682               break;
    683             sprintf(message,
    684                     " %s \"%s\" %s \"%s\"",
    685                     moving, list[x], GetPString(IDS_TOTEXT), newname);
    686             WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),
    687                              message);
    688             if (fRealIdle)
    689               priority_idle();
    690             if (plen) {
    691               /* make directory/ies, if required */
    692 
    693               CHAR dirpart[CCHMAXPATH];
    694 
    695               strcpy(dirpart, newname);
    696               p = strrchr(dirpart, '\\');
    697               if (p) {
    698                 *p = 0;
    699                 if (p > dirpart + 3)
    700                   MassMkdir((hwndMain) ? hwndMain : (HWND) 0, dirpart);
    701               }
    702             }
    703             rc = docopyf(type, list[x], "%s", newname);
    704             priority_normal();
    705             if (rc) {
    706               if ((rc == ERROR_DISK_FULL ||
    707                    rc == ERROR_HANDLE_DISK_FULL) &&
    708                   isalpha(*newname) &&
    709                   (driveflags[toupper(*newname) - 'A'] & DRIVE_REMOVABLE) &&
    710                   !(driveflags[toupper(*newname) - 'A'] & DRIVE_NOTWRITEABLE)
    711                   && toupper(*newname) != toupper(*list[x])
    712                   && !DosQueryPathInfo(list[x], FIL_QUERYEASIZEL, &fs4,
    713                                        sizeof(fs4))
    714                   && !(fs4.attrFile & FILE_DIRECTORY)) {
    715 
    716                 FSALLOCATE fsa;
    717                 ULONGLONG ullFreeBytes;
    718                 CHAR *ptr;
    719                 INT cntr;
    720 
    721                 WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),
    722                                 GetPString(IDS_FITTINGTEXT));
    723                 DosError(FERR_DISABLEHARDERR);
    724                 if (!DosQueryFSInfo(toupper(*newname) - '@',
    725                                     FSIL_ALLOC, &fsa, sizeof(fsa))) {
    726                   // Assume large file support
    727                   ullFreeBytes = (ULONGLONG) fsa.cUnitAvail * fsa.cSectorUnit *
    728                                 fsa.cbSector;
    729                   if (ullFreeBytes) {
    730                     // Find item that will fit in available space
    731                     for (cntr = x + 1; list[cntr]; cntr++) {
    732                       DosError(FERR_DISABLEHARDERR);
    733                       if (!DosQueryPathInfo(list[cntr],
    734                                             FIL_QUERYEASIZEL,
    735                                             &fs4, sizeof(fs4)) &&
    736                           !(fs4.attrFile & FILE_DIRECTORY) &&
    737                           // fixme to use CBLIST_TO_EASIZE?
    738                           fs4.cbFile + fs4.cbList <= ullFreeBytes) {
    739                         // Swap with failing item
    740                         ptr = list[x];
    741                         list[x] = list[cntr];
    742                         list[cntr] = ptr;
    743                         goto Retry;
    744                       }
    745                     }
    746                     WinSetWindowText(WinWindowFromID(hwndFrame,
    747                                                      SEEALL_STATUS),
    748                                      GetPString(IDS_COULDNTFITTEXT));
    749                   }
    750                 }
    751                 rc = saymsg(MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION,
    752                             hwndFrame,
    753                             GetPString(IDS_DISKFULLTEXT),
    754                             "%s", GetPString(IDS_ANOTHERDISKTEXT));
    755                 if (rc == MBID_RETRY)
    756                   goto Retry;
    757                 if (rc == MBID_ABORT) {
    758                   FreeList(list);
    759                   goto Abort;
    760                 }
    761               }
    762               else {
    763                 if (LogFileHandle)
    764                   fprintf(LogFileHandle,
    765                           GetPString(IDS_LOGTOFAILEDTEXT),
    766                           move, list[x], newname, rc);
    767                 rc = Dos_Error(MB_ENTERCANCEL,
    768                                rc,
    769                                hwndFrame,
    770                                pszSrcFile,
    771                                __LINE__,
    772                                "%s %s \"%s\" %s\"%s\" %s.",
    773                                move,
    774                                GetPString(IDS_OFTEXT),
    775                                list[x],
    776                                GetPString(IDS_TOTEXT),
    777                                newname, GetPString(IDS_FAILEDTEXT));
    778                 if (rc == MBID_CANCEL) {
    779                   FreeList(list);
    780                   goto Abort;
    781                 }
    782               }
    783             }
    784             else {
    785               if (LogFileHandle)
    786                 fprintf(LogFileHandle,
    787                         "%s \"%s\" %s \"%s\"\n",
    788                         moved, list[x], GetPString(IDS_TOTEXT), newname);
    789               AddToList(newname, &files, &numfiles, &numalloc);
    790             }
    791           }
    792         }
    793         if (SHORT1FROMMP(mp1) != IDM_COPY) {
    794           if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    795                        UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
    796             FreeList(list);
    797         }
    798         else
    799           FreeList(list);
    800         break;
     585        {
     586          CHAR newname[CCHMAXPATH], *moving, *move, *moved;
     587          APIRET rc;
     588          INT type;
     589          FILESTATUS4L fs4;
     590          BOOL isnewer, existed;
     591
     592          for (x = 0; list[x]; x++) {
     593          Retry:
     594            type = (SHORT1FROMMP(mp1) == IDM_RENAME) ? MOVE :
     595              (SHORT1FROMMP(mp1) == IDM_MOVE) ? MOVE :
     596              (SHORT1FROMMP(mp1) == IDM_WPSMOVE) ? WPSMOVE :
     597              (SHORT1FROMMP(mp1) == IDM_WPSCOPY) ? WPSCOPY : COPY;
     598            moving = (SHORT1FROMMP(mp1) == IDM_RENAME) ?
     599              GetPString(IDS_RENAMINGTEXT) :
     600              (SHORT1FROMMP(mp1) == IDM_MOVE ||
     601               SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?
     602              GetPString(IDS_MOVINGTEXT) : GetPString(IDS_COPYINGTEXT);
     603            move = (SHORT1FROMMP(mp1) == IDM_RENAME) ?
     604              GetPString(IDS_RENAMETEXT) :
     605              (SHORT1FROMMP(mp1) == IDM_MOVE ||
     606               SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?
     607              GetPString(IDS_MOVETEXT) : GetPString(IDS_COPYTEXT);
     608            moved = (SHORT1FROMMP(mp1) == IDM_RENAME) ?
     609              GetPString(IDS_RENAMEDTEXT) :
     610              (SHORT1FROMMP(mp1) == IDM_MOVE ||
     611               SHORT1FROMMP(mp1) == IDM_WPSMOVE) ?
     612              GetPString(IDS_MOVEDTEXT) : GetPString(IDS_COPIEDTEXT);
     613            if (*path) {
     614              strcpy(newname, path);
     615              if (newname[strlen(newname) - 1] != '\\')
     616                strcat(newname, "\\");
     617              if (plen)
     618                p = list[x] + plen;
     619              else {
     620                p = strrchr(list[x], '\\');
     621                if (p)
     622                  p++;
     623                else
     624                  p = list[x];
     625              }
     626              strcat(newname, p);
     627            }
     628            else
     629              strcpy(newname, list[x]);
     630            if ((wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) && *wildname) {
     631
     632              CHAR testname[CCHMAXPATH];
     633
     634              strcpy(testname, wildname);
     635              if (AdjustWildcardName(newname, testname))
     636                strcpy(newname, testname);
     637            }
     638            existed = (IsFile(newname) != -1);
     639            isnewer = IsNewer(list[x], newname);
     640            if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) {
     641              if (!overold && !overnew)
     642                break;
     643              if (!overold && !isnewer)
     644                break;
     645              if (!overnew && isnewer)
     646                break;
     647            }
     648            if ((SHORT1FROMMP(mp1) == IDM_RENAME &&
     649                (!dontask || !*wildname)) ||
     650                (!dontask && existed) ||
     651                (!dontask && wildcarding) ||
     652                (IsFile(newname) == 0 && IsFile(list[x]) == 1)) {
     653
     654              MOVEIT mv;
     655
     656              memset(&mv, 0, sizeof(mv));
     657              mv.rename = (SHORT1FROMMP(mp1) == IDM_RENAME);
     658              mv.source = list[x];
     659              strcpy(mv.target, newname);
     660              rc = WinDlgBox(HWND_DESKTOP,
     661                             hwndFrame,
     662                             RenameProc,
     663                             FM3ModHandle, REN_FRAME, (PVOID) & mv);
     664              if (!rc) {
     665                FreeList(list);
     666                goto Abort;
     667              }
     668              DosSleep(0);  //26 Aug 07 GKY 1
     669              if (mv.skip || !*mv.target)
     670                break;
     671              if (mv.dontask)
     672                dontask = TRUE;
     673              if (mv.overold)
     674                overold = TRUE;
     675              if (mv.overnew)
     676                overnew = TRUE;
     677              if (wildcarding || SHORT1FROMMP(mp1) == IDM_RENAME) {
     678                p = strrchr(mv.target, '\\');
     679                if (p && (strchr(p, '*') || strchr(p, '?'))) {
     680                  strcpy(wildname, mv.target);
     681                  AdjustWildcardName(list[x], mv.target);
     682                }
     683                else
     684                  *wildname = 0;
     685              }
     686              strcpy(newname, mv.target);
     687              existed = (IsFile(newname) != -1);
     688              isnewer = IsNewer(list[x], newname);
     689              if (!mv.overwrite) {
     690                if (existed && SHORT1FROMMP(mp1) != IDM_RENAME && dontask) {
     691                  if (!overold && !overnew)
     692                    break;
     693                  if (!overold && !isnewer)
     694                    break;
     695                  if (!overnew && isnewer)
     696                    break;
     697                }
     698              }
     699            }
     700            if (!stricmp(list[x], newname))
     701              break;
     702            sprintf(message,
     703                    " %s \"%s\" %s \"%s\"",
     704                    moving, list[x], GetPString(IDS_TOTEXT), newname);
     705            WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),
     706                             message);
     707            if (fRealIdle)
     708              priority_idle();
     709            if (plen) {
     710              /* make directory/ies, if required */
     711
     712              CHAR dirpart[CCHMAXPATH];
     713
     714              strcpy(dirpart, newname);
     715              p = strrchr(dirpart, '\\');
     716              if (p) {
     717                *p = 0;
     718                if (p > dirpart + 3)
     719                  MassMkdir((hwndMain) ? hwndMain : (HWND) 0, dirpart);
     720              }
     721            }
     722            rc = docopyf(type, list[x], "%s", newname);
     723            priority_normal();
     724            if (rc) {
     725              if ((rc == ERROR_DISK_FULL ||
     726                   rc == ERROR_HANDLE_DISK_FULL) &&
     727                  isalpha(*newname) &&
     728                  (driveflags[toupper(*newname) - 'A'] & DRIVE_REMOVABLE) &&
     729                  !(driveflags[toupper(*newname) - 'A'] & DRIVE_NOTWRITEABLE)
     730                  && toupper(*newname) != toupper(*list[x])
     731                  && !DosQueryPathInfo(list[x], FIL_QUERYEASIZEL, &fs4,
     732                                       sizeof(fs4))
     733                  && !(fs4.attrFile & FILE_DIRECTORY)) {
     734
     735                FSALLOCATE fsa;
     736                ULONGLONG ullFreeBytes;
     737                CHAR *ptr;
     738                INT cntr;
     739
     740                WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),
     741                                GetPString(IDS_FITTINGTEXT));
     742                DosError(FERR_DISABLEHARDERR);
     743                if (!DosQueryFSInfo(toupper(*newname) - '@',
     744                                    FSIL_ALLOC, &fsa, sizeof(fsa))) {
     745                  // Assume large file support
     746                  ullFreeBytes = (ULONGLONG) fsa.cUnitAvail * fsa.cSectorUnit *
     747                                fsa.cbSector;
     748                  if (ullFreeBytes) {
     749                    // Find item that will fit in available space
     750                    for (cntr = x + 1; list[cntr]; cntr++) {
     751                      DosError(FERR_DISABLEHARDERR);
     752                      if (!DosQueryPathInfo(list[cntr],
     753                                            FIL_QUERYEASIZEL,
     754                                            &fs4, sizeof(fs4)) &&
     755                          !(fs4.attrFile & FILE_DIRECTORY) &&
     756                          // fixme to use CBLIST_TO_EASIZE?
     757                          fs4.cbFile + fs4.cbList <= ullFreeBytes) {
     758                        // Swap with failing item
     759                        ptr = list[x];
     760                        list[x] = list[cntr];
     761                        list[cntr] = ptr;
     762                        goto Retry;
     763                      }
     764                    }
     765                    WinSetWindowText(WinWindowFromID(hwndFrame,
     766                                                     SEEALL_STATUS),
     767                                     GetPString(IDS_COULDNTFITTEXT));
     768                  }
     769                }
     770                rc = saymsg(MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION,
     771                            hwndFrame,
     772                            GetPString(IDS_DISKFULLTEXT),
     773                            "%s", GetPString(IDS_ANOTHERDISKTEXT));
     774                if (rc == MBID_RETRY)
     775                  goto Retry;
     776                if (rc == MBID_ABORT) {
     777                  FreeList(list);
     778                  goto Abort;
     779                }
     780              }
     781              else {
     782                if (LogFileHandle)
     783                  fprintf(LogFileHandle,
     784                          GetPString(IDS_LOGTOFAILEDTEXT),
     785                          move, list[x], newname, rc);
     786                rc = Dos_Error(MB_ENTERCANCEL,
     787                               rc,
     788                               hwndFrame,
     789                               pszSrcFile,
     790                               __LINE__,
     791                               "%s %s \"%s\" %s\"%s\" %s.",
     792                               move,
     793                               GetPString(IDS_OFTEXT),
     794                               list[x],
     795                               GetPString(IDS_TOTEXT),
     796                               newname, GetPString(IDS_FAILEDTEXT));
     797                if (rc == MBID_CANCEL) {
     798                  FreeList(list);
     799                  goto Abort;
     800                }
     801              }
     802            }
     803            else {
     804              if (LogFileHandle)
     805                fprintf(LogFileHandle,
     806                        "%s \"%s\" %s \"%s\"\n",
     807                        moved, list[x], GetPString(IDS_TOTEXT), newname);
     808              AddToList(newname, &files, &numfiles, &numalloc);
     809            }
     810          }
     811        }
     812        if (SHORT1FROMMP(mp1) != IDM_COPY) {
     813          if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     814                       UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
     815            FreeList(list);
     816        }
     817        else
     818          FreeList(list);
     819        break;
    801820
    802821      case IDM_UUDECODE:
    803         for (x = 0; list[x]; x++)
    804           UUD(list[x], NULL);
    805         break;
     822        for (x = 0; list[x]; x++)
     823          UUD(list[x], NULL);
     824        break;
    806825
    807826      case IDM_EXTRACT:
    808         for (x = 0; list[x]; x++) {
    809 
    810           EXTRDATA ex;
    811           BOOL maskspaces = FALSE;
    812 
    813           memset(&ex, 0, sizeof(ex));
    814           ex.info = find_type(list[x], NULL);
    815           if (!ex.info || (!ex.info->extract && !ex.info->exwdirs))
    816             break;
    817           ex.size = sizeof(ex);
    818           ex.arcname = list[x];
    819           strcpy(ex.masks, "*");
    820           if (!WinDlgBox(HWND_DESKTOP,
    821                         hwndFrame,
    822                         ExtractDlgProc,
    823                         FM3ModHandle,
    824                         EXT_FRAME,
    825                         (PVOID) & ex) ||
    826               !ex.ret || !*ex.command || !*ex.arcname || !*ex.extractdir)
    827             break;
    828           if (IsFile(ex.extractdir) != 0)
    829             Runtime_Error(pszSrcFile, __LINE__, "directory expected");
    830           else {
    831             if (needs_quoting(ex.masks) && !strchr(ex.masks, '\"'))
    832               maskspaces = TRUE;
    833             runemf2(SEPARATE | WINDOWED |
    834                     (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)),
     827        for (x = 0; list[x]; x++) {
     828
     829          EXTRDATA ex;
     830          BOOL maskspaces = FALSE;
     831
     832          memset(&ex, 0, sizeof(ex));
     833          ex.info = find_type(list[x], NULL);
     834          if (!ex.info || (!ex.info->extract && !ex.info->exwdirs))
     835            break;
     836          ex.size = sizeof(ex);
     837          ex.arcname = list[x];
     838          strcpy(ex.masks, "*");
     839          if (!WinDlgBox(HWND_DESKTOP,
     840                        hwndFrame,
     841                        ExtractDlgProc,
     842                        FM3ModHandle,
     843                        EXT_FRAME,
     844                        (PVOID) & ex) ||
     845              !ex.ret || !*ex.command || !*ex.arcname || !*ex.extractdir)
     846            break;
     847          if (IsFile(ex.extractdir) != 0)
     848            Runtime_Error(pszSrcFile, __LINE__, "directory expected");
     849          else {
     850            if (needs_quoting(ex.masks) && !strchr(ex.masks, '\"'))
     851              maskspaces = TRUE;
     852            runemf2(SEPARATE | WINDOWED |
     853                    (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)),
    835854                    HWND_DESKTOP, pszSrcFile, __LINE__,
    836855                    ex.extractdir, NULL,
    837                     "%s %s %s%s%s",
    838                     ex.command,
    839                     ex.arcname,
    840                     maskspaces ? "\"" : NullStr,
    841                     *ex.masks ? ex.masks : "*",
    842                     maskspaces ? "\"" : NullStr);
    843           }
    844         }
    845         // fixme to not leak?
    846         if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    847                      UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
    848           FreeList(list);
    849         break;
     856                    "%s %s %s%s%s",
     857                    ex.command,
     858                    ex.arcname,
     859                    maskspaces ? "\"" : NullStr,
     860                    *ex.masks ? ex.masks : "*",
     861                    maskspaces ? "\"" : NullStr);
     862          }
     863        }
     864        // fixme to not leak?
     865        if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     866                     UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
     867          FreeList(list);
     868        break;
    850869
    851870      case IDM_SUBJECT:
    852         for (x = 0; list[x]; x++) {
    853 
    854           INT ret;
    855 
    856           if (IsFile(list[x]) == 1) {
    857             ret = Subject(hwndFrame, list[x]);
    858             if (!ret)
    859               break;
    860           }
    861         }
    862         if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    863                      UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
    864           FreeList(list);
    865         break;
     871        for (x = 0; list[x]; x++) {
     872
     873          INT ret;
     874
     875          if (IsFile(list[x]) == 1) {
     876            ret = Subject(hwndFrame, list[x]);
     877            if (!ret)
     878              break;
     879          }
     880        }
     881        if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     882                     UM_UPDATERECORDLIST, MPFROMP(list), MPVOID))
     883          FreeList(list);
     884        break;
    866885
    867886      case IDM_OPENDEFAULT:
    868887      case IDM_OPENSETTINGS:
    869         for (x = 0; list[x]; x++) {
    870           if (IsFile(list[x]) != -1) {
    871 
    872             CHAR *s;
    873 
    874             switch (SHORT1FROMMP(mp1)) {
    875             case IDM_OPENSETTINGS:
    876               s = Settings;
    877               break;
    878             default:
    879               s = Default;
    880               break;
    881             }
    882             OpenObject(list[x], s, hwndFrame);
    883           }
    884         }
    885         FreeList(list);
    886         break;
     888        for (x = 0; list[x]; x++) {
     889          if (IsFile(list[x]) != -1) {
     890
     891            CHAR *s;
     892
     893            switch (SHORT1FROMMP(mp1)) {
     894            case IDM_OPENSETTINGS:
     895              s = Settings;
     896              break;
     897            default:
     898              s = Default;
     899              break;
     900            }
     901            OpenObject(list[x], s, hwndFrame);
     902          }
     903        }
     904        FreeList(list);
     905        break;
    887906
    888907      case IDM_DELETE:
    889908      case IDM_PERMDELETE:
    890         {
    891           CHECKLIST cl;
    892           INT isdir = 0, sysdir = 0, ro = 0, hs = 0;
    893           FILESTATUS3 fsa;
    894           CHAR prompt[CCHMAXPATH * 3];
    895           APIRET error;
    896 
    897           for (x = 0; list[x]; x++) {
    898             if (IsRoot(list[x])) {
    899               list = RemoveFromList(list, list[x]);
    900               if (!list)
    901                 break;
    902               x--;
    903               continue;
    904             }
    905             DosError(FERR_DISABLEHARDERR);
    906             if (DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa))) {
    907               list = RemoveFromList(list, list[x]);
    908               if (!list)
    909                 break;
    910               x--;
    911               continue;
    912             }
    913             if (fsa.attrFile & FILE_DIRECTORY) {
    914               isdir++;
    915               if (stristr(list[x], ":\\OS2\\") ||
    916                   !stricmp(list[x] + 1, ":\\OS2"))
    917                 sysdir++;
    918             }
    919             else {
    920               if (fsa.attrFile & (FILE_HIDDEN | FILE_SYSTEM))
    921                 hs++;
    922               if (fsa.attrFile & FILE_READONLY)
    923                 ro++;
    924             }
    925           }
    926           if (!list)
    927             break;
    928           if (fConfirmDelete || isdir) {
    929             memset(&cl, 0, sizeof(cl));
    930             cl.size = sizeof(cl);
    931             cl.list = list;
    932             cl.prompt = prompt;
    933             cl.flags |= CHECK_FILES;
    934             cl.cmd = SHORT1FROMMP(mp1);
    935             sprintf(prompt,
    936                     GetPString(IDS_DELPROMPT1TEXT),
    937                     (SHORT1FROMMP(mp1) == IDM_DELETE) ?
    938                     NullStr :
    939                     GetPString(IDS_PERMANENTLYTEXT), &"s"[list[1] == NULL]);
    940             if (isdir) {
    941               sprintf(&prompt[strlen(prompt)],
    942                       GetPString(IDS_DELPROMPT2TEXT),
    943                       isdir,
    944                       (isdir > 1) ?
    945                       GetPString(IDS_ARETEXT) :
    946                       GetPString(IDS_ISTEXT),
    947                       (isdir == 1) ?
    948                       GetPString(IDS_ATEXT) :
    949                       NullStr,
    950                       (isdir > 1) ?
    951                       GetPString(IDS_IESTEXT) : GetPString(IDS_YTEXT));
    952               if (sysdir)
    953                 sprintf(&prompt[strlen(prompt)],
    954                         GetPString(IDS_DELPROMPT3TEXT),
    955                         sysdir,
    956                         (sysdir == 1) ?
    957                         GetPString(IDS_YTEXT) : GetPString(IDS_IESTEXT));
    958             }
    959             if (ro)
    960               sprintf(&prompt[strlen(prompt)],
    961                       GetPString(IDS_DELPROMPT4TEXT),
    962                       ro,
    963                       &"s"[ro == 1],
    964                       (ro > 1) ?
    965                       GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));
    966             if (hs)
    967               sprintf(&prompt[strlen(prompt)],
    968                       GetPString(IDS_DELPROMPT5TEXT),
    969                       hs,
    970                       &"s"[hs == 1],
    971                       (hs > 1) ?
    972                       GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));
    973             if (ro || hs || sysdir)
    974               DosBeep(300, 100);
    975             strcat(prompt, GetPString(IDS_DELPROMPT6TEXT));
    976             if (!WinDlgBox(HWND_DESKTOP,
    977                            WinWindowFromID(hwndFrame, FID_CLIENT),
    978                            CheckListProc,
    979                            FM3ModHandle, CHECK_FRAME, MPFROMP(&cl)))
    980               break;
    981             list = cl.list;
    982             if (!list || !list[0])
    983               break;
    984           }
    985           for (x = 0; list[x]; x++) {
    986             fsa.attrFile = 0;
    987             DosError(FERR_DISABLEHARDERR);
    988             DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa));
    989             if (fsa.attrFile & FILE_DIRECTORY) {
    990               sprintf(prompt, GetPString(IDS_DELETINGTEXT), list[x]);
    991               WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),
    992                                prompt);
    993               error = (APIRET) wipeallf("%s%s*",
    994                                         list[x],
    995                                         (*list[x] &&
    996                                         list[x][strlen(list[x]) - 1] !=
    997                                         '\\') ? "\\" : NullStr);
    998               DosError(FERR_DISABLEHARDERR);
    999               if (!error)
    1000                 error = DosDeleteDir(list[x]);
    1001               else
    1002                 DosDeleteDir(list[x]);
    1003             }
    1004             else {
    1005               DosError(FERR_DISABLEHARDERR);
    1006               if (SHORT1FROMMP(mp1) == IDM_DELETE)
    1007                 error = DosDelete(list[x]);
    1008               else
    1009                 error = DosForceDelete(list[x]);
    1010               if (error) {
    1011                 DosError(FERR_DISABLEHARDERR);
    1012                 make_deleteable(list[x]);
    1013                 if (SHORT1FROMMP(mp1) == IDM_DELETE)
    1014                   error = DosDelete(list[x]);
    1015                 else
    1016                   error = DosForceDelete(list[x]);
    1017               }
    1018             }
    1019             if (error) {
    1020               if (LogFileHandle)
    1021                 fprintf(LogFileHandle,
    1022                         GetPString(IDS_DELETEFAILED1TEXT), list[x], error);
    1023               if (Dos_Error(MB_ENTERCANCEL,
    1024                             error,
    1025                             hwndFrame,
    1026                             pszSrcFile,
    1027                             __LINE__,
    1028                             GetPString(IDS_DELETEFAILED2TEXT),
    1029                             list[x]) == MBID_CANCEL)
    1030                 break;
    1031             }
    1032             else if (LogFileHandle)
    1033               fprintf(LogFileHandle,
    1034                       "%s\n", GetPString(IDS_DELETEDTEXT), list[x]);
    1035             AddToList(list[x], &files, &numfiles, &numalloc);
    1036           }
    1037         }
    1038         FreeList(list);
    1039         break;
     909        {
     910          CHECKLIST cl;
     911          INT isdir = 0, sysdir = 0, ro = 0, hs = 0;
     912          FILESTATUS3 fsa;
     913          CHAR prompt[CCHMAXPATH * 3];
     914          APIRET error;
     915
     916          for (x = 0; list[x]; x++) {
     917            if (IsRoot(list[x])) {
     918              list = RemoveFromList(list, list[x]);
     919              if (!list)
     920                break;
     921              x--;
     922              continue;
     923            }
     924            DosError(FERR_DISABLEHARDERR);
     925            if (DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa))) {
     926              list = RemoveFromList(list, list[x]);
     927              if (!list)
     928                break;
     929              x--;
     930              continue;
     931            }
     932            if (fsa.attrFile & FILE_DIRECTORY) {
     933              isdir++;
     934              if (stristr(list[x], ":\\OS2\\") ||
     935                  !stricmp(list[x] + 1, ":\\OS2"))
     936                sysdir++;
     937            }
     938            else {
     939              if (fsa.attrFile & (FILE_HIDDEN | FILE_SYSTEM))
     940                hs++;
     941              if (fsa.attrFile & FILE_READONLY)
     942                ro++;
     943            }
     944          }
     945          if (!list)
     946            break;
     947          if (fConfirmDelete || isdir) {
     948            memset(&cl, 0, sizeof(cl));
     949            cl.size = sizeof(cl);
     950            cl.list = list;
     951            cl.prompt = prompt;
     952            cl.flags |= CHECK_FILES;
     953            cl.cmd = SHORT1FROMMP(mp1);
     954            sprintf(prompt,
     955                    GetPString(IDS_DELPROMPT1TEXT),
     956                    (SHORT1FROMMP(mp1) == IDM_DELETE) ?
     957                    NullStr :
     958                    GetPString(IDS_PERMANENTLYTEXT), &"s"[list[1] == NULL]);
     959            if (isdir) {
     960              sprintf(&prompt[strlen(prompt)],
     961                      GetPString(IDS_DELPROMPT2TEXT),
     962                      isdir,
     963                      (isdir > 1) ?
     964                      GetPString(IDS_ARETEXT) :
     965                      GetPString(IDS_ISTEXT),
     966                      (isdir == 1) ?
     967                      GetPString(IDS_ATEXT) :
     968                      NullStr,
     969                      (isdir > 1) ?
     970                      GetPString(IDS_IESTEXT) : GetPString(IDS_YTEXT));
     971              if (sysdir)
     972                sprintf(&prompt[strlen(prompt)],
     973                        GetPString(IDS_DELPROMPT3TEXT),
     974                        sysdir,
     975                        (sysdir == 1) ?
     976                        GetPString(IDS_YTEXT) : GetPString(IDS_IESTEXT));
     977            }
     978            if (ro)
     979              sprintf(&prompt[strlen(prompt)],
     980                      GetPString(IDS_DELPROMPT4TEXT),
     981                      ro,
     982                      &"s"[ro == 1],
     983                      (ro > 1) ?
     984                      GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));
     985            if (hs)
     986              sprintf(&prompt[strlen(prompt)],
     987                      GetPString(IDS_DELPROMPT5TEXT),
     988                      hs,
     989                      &"s"[hs == 1],
     990                      (hs > 1) ?
     991                      GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));
     992            if (ro || hs || sysdir)
     993              DosBeep(300, 100);
     994            strcat(prompt, GetPString(IDS_DELPROMPT6TEXT));
     995            if (!WinDlgBox(HWND_DESKTOP,
     996                           WinWindowFromID(hwndFrame, FID_CLIENT),
     997                           CheckListProc,
     998                           FM3ModHandle, CHECK_FRAME, MPFROMP(&cl)))
     999              break;
     1000            list = cl.list;
     1001            if (!list || !list[0])
     1002              break;
     1003          }
     1004          for (x = 0; list[x]; x++) {
     1005            fsa.attrFile = 0;
     1006            DosError(FERR_DISABLEHARDERR);
     1007            DosQueryPathInfo(list[x], FIL_STANDARD, &fsa, sizeof(fsa));
     1008            if (fsa.attrFile & FILE_DIRECTORY) {
     1009              sprintf(prompt, GetPString(IDS_DELETINGTEXT), list[x]);
     1010              WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS),
     1011                               prompt);
     1012              error = (APIRET) wipeallf("%s%s*",
     1013                                        list[x],
     1014                                        (*list[x] &&
     1015                                        list[x][strlen(list[x]) - 1] !=
     1016                                        '\\') ? "\\" : NullStr);
     1017              DosError(FERR_DISABLEHARDERR);
     1018              if (!error)
     1019                error = DosDeleteDir(list[x]);
     1020              else
     1021                DosDeleteDir(list[x]);
     1022            }
     1023            else {
     1024              DosError(FERR_DISABLEHARDERR);
     1025              if (SHORT1FROMMP(mp1) == IDM_DELETE)
     1026                error = DosDelete(list[x]);
     1027              else
     1028                error = DosForceDelete(list[x]);
     1029              if (error) {
     1030                DosError(FERR_DISABLEHARDERR);
     1031                make_deleteable(list[x]);
     1032                if (SHORT1FROMMP(mp1) == IDM_DELETE)
     1033                  error = DosDelete(list[x]);
     1034                else
     1035                  error = DosForceDelete(list[x]);
     1036              }
     1037            }
     1038            if (error) {
     1039              if (LogFileHandle)
     1040                fprintf(LogFileHandle,
     1041                        GetPString(IDS_DELETEFAILED1TEXT), list[x], error);
     1042              if (Dos_Error(MB_ENTERCANCEL,
     1043                            error,
     1044                            hwndFrame,
     1045                            pszSrcFile,
     1046                            __LINE__,
     1047                            GetPString(IDS_DELETEFAILED2TEXT),
     1048                            list[x]) == MBID_CANCEL)
     1049                break;
     1050            }
     1051            else if (LogFileHandle)
     1052              fprintf(LogFileHandle,
     1053                      "%s\n", GetPString(IDS_DELETEDTEXT), list[x]);
     1054            AddToList(list[x], &files, &numfiles, &numalloc);
     1055          }
     1056        }
     1057        FreeList(list);
     1058        break;
    10401059
    10411060      case IDM_SAVETOLIST:
    1042         if (list) {
    1043           WinDlgBox(HWND_DESKTOP,
    1044                     WinWindowFromID(hwndFrame, FID_CLIENT),
    1045                     SaveAllListDlgProc,
    1046                     FM3ModHandle, SAV_FRAME, MPFROMP(list));
    1047           FreeList(list);
    1048         }
    1049         break;
     1061        if (list) {
     1062          WinDlgBox(HWND_DESKTOP,
     1063                    WinWindowFromID(hwndFrame, FID_CLIENT),
     1064                    SaveAllListDlgProc,
     1065                    FM3ModHandle, SAV_FRAME, MPFROMP(list));
     1066          FreeList(list);
     1067        }
     1068        break;
    10501069
    10511070      case IDM_SAVETOCLIP:
     
    10531072      case IDM_SAVETOCLIPFILENAME:
    10541073      case IDM_APPENDTOCLIPFILENAME:
    1055         if (list) {
    1056           ListToClipboardHab(WinQueryAnchorBlock(hwnd),
    1057                              list, SHORT1FROMMP(mp1));
    1058           FreeList(list);
    1059         }
    1060         break;
     1074        if (list) {
     1075          ListToClipboardHab(WinQueryAnchorBlock(hwnd),
     1076                             list, SHORT1FROMMP(mp1));
     1077          FreeList(list);
     1078        }
     1079        break;
    10611080
    10621081      default:
    1063         if (list)
    1064           FreeList(list);
    1065         break;
     1082        if (list)
     1083          FreeList(list);
     1084        break;
    10661085      }
    10671086
     
    10701089      case IDM_COPY:
    10711090      case IDM_RENAME:
    1072         sprintf(message,
    1073                 GetPString(IDS_OPSCOMPLETETEXT),
    1074                 SHORT1FROMMP(mp1) == IDM_MOVE ?
    1075                   GetPString(IDS_MOVETEXT) :
    1076                   SHORT1FROMMP(mp1) == IDM_COPY ?
    1077                     GetPString(IDS_COPYTEXT) :
    1078                     SHORT1FROMMP(mp1) == IDM_WPSMOVE ?
    1079                       GetPString(IDS_WPSMOVETEXT) :
    1080                       SHORT1FROMMP(mp1) == IDM_WPSCOPY ?
    1081                         GetPString(IDS_WPSCOPYTEXT) :
    1082                         GetPString(IDS_RENAMETEXT),
    1083                 &"s"[x == 1],
    1084                 SHORT1FROMMP(mp1) == IDM_MOVE ||
    1085                 SHORT1FROMMP(mp1) == IDM_COPY ||
    1086                 SHORT1FROMMP(mp1) == IDM_WPSMOVE ||
    1087                 SHORT1FROMMP(mp1) == IDM_WPSCOPY ?
    1088                   GetPString(IDS_TOTEXT) : NullStr,
    1089                 SHORT1FROMMP(mp1) == IDM_MOVE ||
    1090                 SHORT1FROMMP(mp1) == IDM_COPY ||
    1091                 SHORT1FROMMP(mp1) == IDM_WPSMOVE ||
    1092                 SHORT1FROMMP(mp1) == IDM_WPSCOPY ?
    1093                   path : NullStr,
    1094                 x != 1 ? GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));
    1095         WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), message);
    1096         if (toupper(*path) < 'C')
    1097           DosBeep(1000, 25);
    1098         DosSleep(16);                   // 05 Aug 07 GKY 33
    1099         break;
     1091        sprintf(message,
     1092                GetPString(IDS_OPSCOMPLETETEXT),
     1093                SHORT1FROMMP(mp1) == IDM_MOVE ?
     1094                  GetPString(IDS_MOVETEXT) :
     1095                  SHORT1FROMMP(mp1) == IDM_COPY ?
     1096                    GetPString(IDS_COPYTEXT) :
     1097                    SHORT1FROMMP(mp1) == IDM_WPSMOVE ?
     1098                      GetPString(IDS_WPSMOVETEXT) :
     1099                      SHORT1FROMMP(mp1) == IDM_WPSCOPY ?
     1100                        GetPString(IDS_WPSCOPYTEXT) :
     1101                        GetPString(IDS_RENAMETEXT),
     1102                &"s"[x == 1],
     1103                SHORT1FROMMP(mp1) == IDM_MOVE ||
     1104                SHORT1FROMMP(mp1) == IDM_COPY ||
     1105                SHORT1FROMMP(mp1) == IDM_WPSMOVE ||
     1106                SHORT1FROMMP(mp1) == IDM_WPSCOPY ?
     1107                  GetPString(IDS_TOTEXT) : NullStr,
     1108                SHORT1FROMMP(mp1) == IDM_MOVE ||
     1109                SHORT1FROMMP(mp1) == IDM_COPY ||
     1110                SHORT1FROMMP(mp1) == IDM_WPSCOPY ?
     1111                  path : NullStr,
     1112                x != 1 ? GetPString(IDS_ARETEXT) : GetPString(IDS_ISTEXT));
     1113        WinSetWindowText(WinWindowFromID(hwndFrame, SEEALL_STATUS), message);
     1114        if (toupper(*path) < 'C')
     1115          DosBeep(1000, 25);
     1116        DosSleep(16);                   // 05 Aug 07 GKY 33
     1117        break;
    11001118
    11011119      default:
    1102         break;
     1120        break;
    11031121      }
    11041122    Abort:
    11051123      if (files) {
    1106         if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    1107                      UM_UPDATERECORDLIST, MPFROMP(files), MPVOID))
    1108           FreeList(files);
     1124        if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
     1125                     UM_UPDATERECORDLIST, MPFROMP(files), MPVOID))
     1126          FreeList(files);
    11091127      }
    11101128      PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    1111               UM_RESCAN, MPVOID, MPVOID);
     1129              UM_RESCAN, MPVOID, MPVOID);
    11121130    }
    11131131    return 0;
     
    11411159      hmq2 = WinCreateMsgQueue(hab2, 256);
    11421160      if (hmq2) {
    1143         DosError(FERR_DISABLEHARDERR);
    1144         WinRegisterClass(hab2,
    1145                         WC_OBJECTWINDOW,
    1146                         SeeObjWndProc, 0, sizeof(PVOID));
    1147         hwndObj = WinCreateWindow(HWND_OBJECT,
    1148                                   WC_OBJECTWINDOW,
    1149                                   (PSZ) NULL,
    1150                                   0,
    1151                                   0,
    1152                                   0,
    1153                                   0,
    1154                                   0, 0, HWND_TOP, SEEALL_OBJ, NULL, NULL);
    1155         if (!hwndObj) {
    1156           Win_Error2(HWND_OBJECT, HWND_DESKTOP, pszSrcFile, __LINE__,
    1157                      IDS_WINCREATEWINDOW);
    1158           if (!PostMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID))
    1159             WinSendMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID);
    1160         }
    1161         else {
    1162           ad->hwndObj = hwndObj;
    1163           WinSetWindowULong(hwndObj, QWL_USER, ad->hwndFrame);
    1164           priority_normal();
    1165           while (WinGetMsg(hab2, &qmsg2, (HWND) 0, 0, 0))
    1166             WinDispatchMsg(hab2, &qmsg2);
    1167           WinDestroyWindow(hwndObj);
    1168         }
    1169         WinDestroyMsgQueue(hmq2);
     1161        DosError(FERR_DISABLEHARDERR);
     1162        WinRegisterClass(hab2,
     1163                        WC_OBJECTWINDOW,
     1164                        SeeObjWndProc, 0, sizeof(PVOID));
     1165        hwndObj = WinCreateWindow(HWND_OBJECT,
     1166                                  WC_OBJECTWINDOW,
     1167                                  (PSZ) NULL,
     1168                                  0,
     1169                                  0,
     1170                                  0,
     1171                                  0,
     1172                                  0, 0, HWND_TOP, SEEALL_OBJ, NULL, NULL);
     1173        if (!hwndObj) {
     1174          Win_Error2(HWND_OBJECT, HWND_DESKTOP, pszSrcFile, __LINE__,
     1175                     IDS_WINCREATEWINDOW);
     1176          if (!PostMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID))
     1177            WinSendMsg(ad->hwndClient, WM_CLOSE, MPVOID, MPVOID);
     1178        }
     1179        else {
     1180          ad->hwndObj = hwndObj;
     1181          WinSetWindowULong(hwndObj, QWL_USER, ad->hwndFrame);
     1182          priority_normal();
     1183          while (WinGetMsg(hab2, &qmsg2, (HWND) 0, 0, 0))
     1184            WinDispatchMsg(hab2, &qmsg2);
     1185          WinDestroyWindow(hwndObj);
     1186        }
     1187        WinDestroyMsgQueue(hmq2);
    11701188      }
    11711189      else
     
    11921210  mask.fIsSeeAll = TRUE;
    11931211  strcpy(mask.prompt,
    1194         GetPString((!deselect) ?
    1195                     IDS_SELECTFILTERTEXT : IDS_DESELECTFILTERTEXT));
     1212        GetPString((!deselect) ?
     1213                    IDS_SELECTFILTERTEXT : IDS_DESELECTFILTERTEXT));
    11961214  if (WinDlgBox(HWND_DESKTOP,
    1197                 hwnd,
    1198                 PickMaskDlgProc,
    1199                 FM3ModHandle,
    1200                 MSK_FRAME,
    1201                 MPFROMP(&mask)) &&
     1215                hwnd,
     1216                PickMaskDlgProc,
     1217                FM3ModHandle,
     1218                MSK_FRAME,
     1219                MPFROMP(&mask)) &&
    12021220      (*mask.szMask ||
    12031221       mask.attrFile != pAD->mask.attrFile ||
     
    12071225      ret = FALSE;
    12081226      if (mask.pszMasks[1]) {
    1209         for (z = 0; mask.pszMasks[z]; z++) {
    1210           if (*mask.pszMasks[z]) {
    1211             if (*mask.pszMasks[z] != '/') {
    1212               if (wildcard((strchr(mask.pszMasks[z], '\\') ||
    1213                             strchr(mask.pszMasks[z], ':')) ?
    1214                            pAD->afindex[y]->fullname : pAD->afindex[y]->
    1215                            filename, mask.pszMasks[z], FALSE))
    1216                 ret = TRUE;
    1217             }
    1218             else {
    1219               if (wildcard((strchr(mask.pszMasks[z], '\\') ||
    1220                             strchr(mask.pszMasks[z], ':')) ?
    1221                            pAD->afindex[y]->fullname : pAD->afindex[y]->
    1222                            filename, mask.pszMasks[y] + 1, FALSE)) {
    1223                 ret = FALSE;
    1224                 break;
    1225               }
    1226             }
    1227           }
    1228         }
     1227        for (z = 0; mask.pszMasks[z]; z++) {
     1228          if (*mask.pszMasks[z]) {
     1229            if (*mask.pszMasks[z] != '/') {
     1230              if (wildcard((strchr(mask.pszMasks[z], '\\') ||
     1231                            strchr(mask.pszMasks[z], ':')) ?
     1232                           pAD->afindex[y]->fullname : pAD->afindex[y]->
     1233                           filename, mask.pszMasks[z], FALSE))
     1234                ret = TRUE;
     1235            }
     1236            else {
     1237              if (wildcard((strchr(mask.pszMasks[z], '\\') ||
     1238                            strchr(mask.pszMasks[z], ':')) ?
     1239                           pAD->afindex[y]->fullname : pAD->afindex[y]->
     1240                           filename, mask.pszMasks[y] + 1, FALSE)) {
     1241                ret = FALSE;
     1242                break;
     1243              }
     1244            }
     1245          }
     1246        }
    12291247      }
    12301248      else if (*mask.szMask) {
    1231         if (wildcard((strchr(mask.szMask, '\\') ||
    1232                       strchr(mask.szMask, ':')) ?
    1233                      pAD->afindex[y]->fullname : pAD->afindex[y]->filename,
    1234                      mask.szMask, FALSE))
    1235           ret = TRUE;
     1249        if (wildcard((strchr(mask.szMask, '\\') ||
     1250                      strchr(mask.szMask, ':')) ?
     1251                     pAD->afindex[y]->fullname : pAD->afindex[y]->filename,
     1252                     mask.szMask, FALSE))
     1253          ret = TRUE;
    12361254      }
    12371255      else
    1238         ret = TRUE;
     1256        ret = TRUE;
    12391257      if (ret) {
    1240         if ((!(mask.attrFile & FILE_HIDDEN)
    1241              && (pAD->afindex[y]->attrFile & FILE_HIDDEN))
    1242             || (!(mask.attrFile & FILE_SYSTEM)
    1243                 && (pAD->afindex[y]->attrFile & FILE_SYSTEM))
    1244             || (!(mask.attrFile & FILE_READONLY)
    1245                 && (pAD->afindex[y]->attrFile & FILE_READONLY))
    1246             || (!(mask.attrFile & FILE_ARCHIVED)
    1247                 && (pAD->afindex[y]->attrFile & FILE_ARCHIVED)))
    1248           ret = FALSE;
    1249         else
    1250           if (((mask.antiattr & FILE_HIDDEN)
    1251                && !(pAD->afindex[y]->attrFile & FILE_HIDDEN))
    1252               || ((mask.antiattr & FILE_SYSTEM)
    1253                   && !(pAD->afindex[y]->attrFile & FILE_SYSTEM))
    1254               || ((mask.antiattr & FILE_READONLY)
    1255                   && !(pAD->afindex[y]->attrFile & FILE_READONLY))
    1256               || ((mask.antiattr & FILE_ARCHIVED)
    1257                   && !(pAD->afindex[y]->attrFile & FILE_ARCHIVED)))
    1258           ret = FALSE;
     1258        if ((!(mask.attrFile & FILE_HIDDEN)
     1259             && (pAD->afindex[y]->attrFile & FILE_HIDDEN))
     1260            || (!(mask.attrFile & FILE_SYSTEM)
     1261                && (pAD->afindex[y]->attrFile & FILE_SYSTEM))
     1262            || (!(mask.attrFile & FILE_READONLY)
     1263                && (pAD->afindex[y]->attrFile & FILE_READONLY))
     1264            || (!(mask.attrFile & FILE_ARCHIVED)
     1265                && (pAD->afindex[y]->attrFile & FILE_ARCHIVED)))
     1266          ret = FALSE;
     1267        else
     1268          if (((mask.antiattr & FILE_HIDDEN)
     1269               && !(pAD->afindex[y]->attrFile & FILE_HIDDEN))
     1270              || ((mask.antiattr & FILE_SYSTEM)
     1271                  && !(pAD->afindex[y]->attrFile & FILE_SYSTEM))
     1272              || ((mask.antiattr & FILE_READONLY)
     1273                  && !(pAD->afindex[y]->attrFile & FILE_READONLY))
     1274              || ((mask.antiattr & FILE_ARCHIVED)
     1275                  && !(pAD->afindex[y]->attrFile & FILE_ARCHIVED)))
     1276          ret = FALSE;
    12591277      }
    12601278      if (ret) {
    1261         if (deselect) {
    1262           if (pAD->afindex[y]->flags & AF_SELECTED) {
    1263             pAD->selected--;
    1264             pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
    1265             pAD->afindex[y]->flags &= ~AF_SELECTED;
    1266           }
    1267         }
    1268         else {
    1269           if (~pAD->afindex[y]->flags & AF_SELECTED) {
    1270             pAD->selected++;
    1271             pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
    1272             pAD->afindex[y]->flags |= AF_SELECTED;
    1273           }
    1274         }
    1275       }
    1276     }                                   // for
     1279        if (deselect) {
     1280          if (pAD->afindex[y]->flags & AF_SELECTED) {
     1281            pAD->selected--;
     1282            pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
     1283            pAD->afindex[y]->flags &= ~AF_SELECTED;
     1284          }
     1285        }
     1286        else {
     1287          if (~pAD->afindex[y]->flags & AF_SELECTED) {
     1288            pAD->selected++;
     1289            pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
     1290            pAD->afindex[y]->flags |= AF_SELECTED;
     1291          }
     1292        }
     1293      }
     1294    }                                   // for
    12771295  }
    12781296}
     
    12871305
    12881306      if (!fAutoTile)
    1289         GetNextWindowPos(hwndMain, &swp, NULL, NULL);
     1307        GetNextWindowPos(hwndMain, &swp, NULL, NULL);
    12901308      hwndC = StartCollector(hwndMain, 4);
    12911309      if (hwndC) {
    1292         if (!fAutoTile)
    1293           WinSetWindowPos(hwndC, HWND_TOP, swp.x, swp.y,
    1294                           swp.cx, swp.cy, SWP_MOVE | SWP_SIZE |
    1295                           SWP_SHOW | SWP_ZORDER);
    1296         else
    1297           TileChildren(hwndMain, TRUE);
    1298         WinSetWindowPos(hwndC, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);
    1299         DosSleep(100);//05 Aug 07 GKY 250
     1310        if (!fAutoTile)
     1311          WinSetWindowPos(hwndC, HWND_TOP, swp.x, swp.y,
     1312                          swp.cx, swp.cy, SWP_MOVE | SWP_SIZE |
     1313                          SWP_SHOW | SWP_ZORDER);
     1314        else
     1315          TileChildren(hwndMain, TRUE);
     1316        WinSetWindowPos(hwndC, HWND_TOP, 0, 0, 0, 0, SWP_ACTIVATE);
     1317        DosSleep(100);//05 Aug 07 GKY 250
    13001318      }
    13011319    }
     
    13061324  }
    13071325  if (!PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_COLLECTOR, 0),
    1308                MPFROMP(list)))
     1326               MPFROMP(list)))
    13091327    FreeList(list);
    13101328}
     
    13441362      y = (ad->invertsort) ? (ad->afindexcnt - 1) - x : x;
    13451363      if (ad->afindex[y]->flags & AF_SELECTED) {
    1346         error = AddToList(ad->afindex[y]->fullname, &list,
    1347                           &numfiles, &numalloc);
    1348         if (error)
    1349           break;
    1350         z++;
    1351         if (z >= ad->selected)
    1352           break;
     1364        error = AddToList(ad->afindex[y]->fullname, &list,
     1365                          &numfiles, &numalloc);
     1366        if (error)
     1367          break;
     1368        z++;
     1369        if (z >= ad->selected)
     1370          break;
    13531371      }
    13541372    }
     
    13711389      ret = FALSE;
    13721390      for (z = 0; list[z]; z++) {
    1373         if (!stricmp(list[z], pAD->afindex[y]->fullname)) {
    1374           ret = TRUE;
    1375           break;
    1376         }
     1391        if (!stricmp(list[z], pAD->afindex[y]->fullname)) {
     1392          ret = TRUE;
     1393          break;
     1394        }
    13771395      }
    13781396    }
     
    13801398      didone = TRUE;
    13811399      if (command == AFM_UNMARK) {
    1382         if (pAD->afindex[y]->flags & AF_SELECTED) {
    1383           pAD->selected--;
    1384           pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
    1385           pAD->afindex[y]->flags &= ~AF_SELECTED;
    1386         }
     1400        if (pAD->afindex[y]->flags & AF_SELECTED) {
     1401          pAD->selected--;
     1402          pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
     1403          pAD->afindex[y]->flags &= ~AF_SELECTED;
     1404        }
    13871405      }
    13881406      else if (command == AFM_MARK) {
    1389         if (~pAD->afindex[y]->flags & AF_SELECTED) {
    1390           pAD->selected++;
    1391           pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
    1392           pAD->afindex[y]->flags |= AF_SELECTED;
    1393         }
     1407        if (~pAD->afindex[y]->flags & AF_SELECTED) {
     1408          pAD->selected++;
     1409          pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
     1410          pAD->afindex[y]->flags |= AF_SELECTED;
     1411        }
    13941412      }
    13951413      else if (command == AFM_INVERT) {
    1396         if (pAD->afindex[y]->flags & AF_SELECTED) {
    1397           pAD->selected--;
    1398           pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
    1399           pAD->afindex[y]->flags &= ~AF_SELECTED;
    1400         }
    1401         else {
    1402           pAD->selected++;
    1403           pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
    1404           pAD->afindex[y]->flags |= AF_SELECTED;
    1405         }
     1414        if (pAD->afindex[y]->flags & AF_SELECTED) {
     1415          pAD->selected--;
     1416          pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
     1417          pAD->afindex[y]->flags &= ~AF_SELECTED;
     1418        }
     1419        else {
     1420          pAD->selected++;
     1421          pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
     1422          pAD->afindex[y]->flags |= AF_SELECTED;
     1423        }
    14061424      }
    14071425      else if (command == AFM_MARKDELETED) {
    1408         if (pAD->afindex[y]->flags & AF_SELECTED)
    1409           pAD->afindex[y]->flags |= AF_DELETED;
     1426        if (pAD->afindex[y]->flags & AF_SELECTED)
     1427          pAD->afindex[y]->flags |= AF_DELETED;
    14101428      }
    14111429      else if (command == AFM_FILTER) {
    1412         if (pAD->afindex[y]->flags & AF_SELECTED)
    1413           pAD->afindex[y]->flags |= AF_FILTERED;
    1414       }
    1415     }
    1416   }                                     // for x
     1430        if (pAD->afindex[y]->flags & AF_SELECTED)
     1431          pAD->afindex[y]->flags |= AF_FILTERED;
     1432      }
     1433    }
     1434  }                                     // for x
    14171435  return didone;
    14181436}
     
    14341452      ret = FALSE;
    14351453      for (x = 0; x < ad->afheadcnt; x++) {
    1436         if (!stricmp(list[z], ad->afhead[x].fullname)) {
    1437           ret = TRUE;
    1438           break;
    1439         }
     1454        if (!stricmp(list[z], ad->afhead[x].fullname)) {
     1455          ret = TRUE;
     1456          break;
     1457        }
    14401458      }
    14411459      if (ret) {
    1442         didone = TRUE;
    1443         hdir = HDIR_CREATE;
    1444         ulFindCnt = 1;
    1445         if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED |
    1446                            FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM |
    1447                            FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt,
    1448                            FIL_STANDARDL)) {
    1449           DosFindClose(hdir);
    1450           if (!(ffb.attrFile & FILE_DIRECTORY)) {
    1451             ad->afhead[x].attrFile = (USHORT) ffb.attrFile;
    1452             ad->afhead[x].cbFile = ffb.cbFile;
    1453             ad->afhead[x].date = ffb.fdateLastWrite;
    1454             ad->afhead[x].time = ffb.ftimeLastWrite;
    1455           }
    1456           else
    1457             ad->afhead[x].flags |= AF_DELETED;
    1458         }
    1459         else
    1460           ad->afhead[x].flags |= AF_DELETED;
     1460        didone = TRUE;
     1461        hdir = HDIR_CREATE;
     1462        ulFindCnt = 1;
     1463        if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED |
     1464                           FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM |
     1465                           FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt,
     1466                           FIL_STANDARDL)) {
     1467          DosFindClose(hdir);
     1468          if (!(ffb.attrFile & FILE_DIRECTORY)) {
     1469            ad->afhead[x].attrFile = (USHORT) ffb.attrFile;
     1470            ad->afhead[x].cbFile = ffb.cbFile;
     1471            ad->afhead[x].date = ffb.fdateLastWrite;
     1472            ad->afhead[x].time = ffb.ftimeLastWrite;
     1473          }
     1474          else
     1475            ad->afhead[x].flags |= AF_DELETED;
     1476        }
     1477        else
     1478          ad->afhead[x].flags |= AF_DELETED;
    14611479      }
    14621480      else if (isalpha(*list[z]) && ad->abDrvFlags[toupper(*list[z]) - 'A']) {
    1463         didone = TRUE;
    1464         hdir = HDIR_CREATE;
    1465         ulFindCnt = 1;
    1466         if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED |
    1467                            FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM |
    1468                            FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt,
    1469                            FIL_STANDARDL)) {
    1470           DosFindClose(hdir);
    1471           if (!(ffb.attrFile & FILE_DIRECTORY)) {
    1472             if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) {
    1473 
    1474               ALLFILES *temp, **templ;
    1475 
    1476               temp =
    1477                 xrealloc(ad->afhead, (ad->afalloc + 1) * sizeof(ALLFILES),
    1478                         pszSrcFile, __LINE__);
    1479               if (!temp) {
    1480                 ad->stopflag = 1;
    1481                 break;
    1482               }
    1483               else {
    1484                 ad->afhead = temp;
    1485                 templ =
    1486                   xrealloc(ad->afindex,
    1487                            (ad->afalloc + 1) * sizeof(ALLFILES *), pszSrcFile,
    1488                            __LINE__);
    1489                 if (!templ) {
    1490                   ad->stopflag = 1;
    1491                   break;
    1492                 }
    1493                 else
    1494                   ad->afindex = templ;
    1495                 ad->afalloc++;
    1496               }
    1497             }
    1498             ad->afhead[ad->afheadcnt].fullname =
    1499               xstrdup(list[z], pszSrcFile, __LINE__);
    1500             if (ad->afhead[ad->afheadcnt].fullname) {
    1501               p = strrchr(ad->afhead[ad->afheadcnt].fullname, '\\');
    1502               if (!p)
    1503                 p = ad->afhead[ad->afheadcnt].fullname;
    1504               else
    1505                 p++;
    1506               ad->afhead[ad->afheadcnt].filename = p;
    1507               ad->afhead[ad->afheadcnt].cbFile = ffb.cbFile;
    1508               ad->afhead[ad->afheadcnt].date = ffb.fdateLastWrite;
    1509               ad->afhead[ad->afheadcnt].time = ffb.ftimeLastWrite;
    1510               ad->afhead[ad->afheadcnt].attrFile = (USHORT) ffb.attrFile;
    1511               ad->afhead[ad->afheadcnt].flags = 0;
    1512               if (ad->longest < strlen(ad->afhead[ad->afheadcnt].filename))
    1513                 ad->longest = strlen(ad->afhead[ad->afheadcnt].filename);
    1514               if (ad->longestw < strlen(ad->afhead[ad->afheadcnt].fullname))
    1515                 ad->longestw = strlen(ad->afhead[ad->afheadcnt].fullname);
    1516 
    1517               ad->afheadcnt++;
    1518             }
    1519             else {
    1520               // saymsg(MB_ENTER,HWND_DESKTOP,DEBUG_STRING,"Strdup failed.");
    1521               ad->stopflag = 1;
    1522               break;
    1523             }
    1524           }
    1525         }
     1481        didone = TRUE;
     1482        hdir = HDIR_CREATE;
     1483        ulFindCnt = 1;
     1484        if (!xDosFindFirst(list[z], &hdir, FILE_NORMAL | FILE_ARCHIVED |
     1485                           FILE_DIRECTORY | FILE_READONLY | FILE_SYSTEM |
     1486                           FILE_HIDDEN, &ffb, sizeof(ffb), &ulFindCnt,
     1487                           FIL_STANDARDL)) {
     1488          DosFindClose(hdir);
     1489          if (!(ffb.attrFile & FILE_DIRECTORY)) {
     1490            if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) {
     1491
     1492              ALLFILES *temp, **templ;
     1493
     1494              temp =
     1495                xrealloc(ad->afhead, (ad->afalloc + 1) * sizeof(ALLFILES),
     1496                        pszSrcFile, __LINE__);
     1497              if (!temp) {
     1498                ad->stopflag = 1;
     1499                break;
     1500              }
     1501              else {
     1502                ad->afhead = temp;
     1503                templ =
     1504                  xrealloc(ad->afindex,
     1505                           (ad->afalloc + 1) * sizeof(ALLFILES *), pszSrcFile,
     1506                           __LINE__);
     1507                if (!templ) {
     1508                  ad->stopflag = 1;
     1509                  break;
     1510                }
     1511                else
     1512                  ad->afindex = templ;
     1513                ad->afalloc++;
     1514              }
     1515            }
     1516            ad->afhead[ad->afheadcnt].fullname =
     1517              xstrdup(list[z], pszSrcFile, __LINE__);
     1518            if (ad->afhead[ad->afheadcnt].fullname) {
     1519              p = strrchr(ad->afhead[ad->afheadcnt].fullname, '\\');
     1520              if (!p)
     1521                p = ad->afhead[ad->afheadcnt].fullname;
     1522              else
     1523                p++;
     1524              ad->afhead[ad->afheadcnt].filename = p;
     1525              ad->afhead[ad->afheadcnt].cbFile = ffb.cbFile;
     1526              ad->afhead[ad->afheadcnt].date = ffb.fdateLastWrite;
     1527              ad->afhead[ad->afheadcnt].time = ffb.ftimeLastWrite;
     1528              ad->afhead[ad->afheadcnt].attrFile = (USHORT) ffb.attrFile;
     1529              ad->afhead[ad->afheadcnt].flags = 0;
     1530              if (ad->longest < strlen(ad->afhead[ad->afheadcnt].filename))
     1531                ad->longest = strlen(ad->afhead[ad->afheadcnt].filename);
     1532              if (ad->longestw < strlen(ad->afhead[ad->afheadcnt].fullname))
     1533                ad->longestw = strlen(ad->afhead[ad->afheadcnt].fullname);
     1534
     1535              ad->afheadcnt++;
     1536            }
     1537            else {
     1538              // saymsg(MB_ENTER,HWND_DESKTOP,DEBUG_STRING,"Strdup failed.");
     1539              ad->stopflag = 1;
     1540              break;
     1541            }
     1542          }
     1543        }
    15261544      }
    15271545    }
     
    16241642    if (!(pAD->afhead[x].flags & (AF_DELETED | AF_FILTERED))) {
    16251643      if (pAD->afhead[x].flags & AF_SELECTED) {
    1626         pAD->selected++;
    1627         pAD->ullSelectedBytes += pAD->afhead[x].cbFile;
     1644        pAD->selected++;
     1645        pAD->ullSelectedBytes += pAD->afhead[x].cbFile;
    16281646      }
    16291647      pAD->afindex[y++] = &(pAD->afhead[x]);
    16301648    }
    1631   }                                     // for x
     1649  }                                     // for x
    16321650  pAD->afindexcnt = y;
    16331651  PostMsg(hwnd, UM_SETUP3, MPVOID, MPVOID);
     
    16581676      hmq2 = WinCreateMsgQueue(hab2, 0);
    16591677      if (hmq2) {
    1660         WinCancelShutdown(hmq2, TRUE);
    1661         IncrThreadUsage();
    1662         if (ad->cursored <= ad->afindexcnt) {
    1663           for (x = 0; x < ad->afheadcnt; x++)
    1664             ad->afhead[x].flags &= (~(AF_DUPE | AF_SELECTED));
    1665           DosSleep(0);  //26 Aug 07 GKY 1
    1666           for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) {
    1667             if (!(ad->afhead[x].flags & (AF_DUPE | AF_FILTERED))) {
    1668               if (!(x % 50)) {
    1669                 sprintf(s,
    1670                         GetPString(IDS_DUPECHECKINGOFTEXT), x, ad->afheadcnt);
    1671                 WinSetWindowText(ad->hwndStatus, s);
    1672               }
    1673               for (z = 0; z < ad->afheadcnt && !ad->stopflag; z++) {
    1674                 if (x != z &&
    1675                     !(ad->afhead[z].flags & (AF_DUPE | AF_FILTERED)))
    1676                 {
    1677                   if (ad->dupeflags & DP_SIZES) {
    1678                     if (ad->afhead[x].cbFile != ad->afhead[z].cbFile)
    1679                       goto SkipNonDupe;
    1680                   }
    1681                   if (ad->dupeflags & DP_DATES) {
    1682                     if (*(INT *) & ad->afhead[x].date !=
    1683                         *(INT *) & ad->afhead[z].date ||
    1684                         *(INT *) & ad->afhead[x].time !=
    1685                         *(INT *) & ad->afhead[z].time)
    1686                       goto SkipNonDupe;
    1687                   }
    1688                   if (ad->dupeflags & DP_NAMES) {
    1689                     if (ad->dupeflags & DP_EXTS) {
    1690                       px = strrchr(ad->afhead[x].filename, '.');
    1691                       pz = strrchr(ad->afhead[z].filename, '.');
    1692                       if ((px || pz) && (!px || !pz))
    1693                         goto SkipNonDupe;
    1694                       if (px) {
    1695                         *px = 0;
    1696                         *pz = 0;
    1697                       }
    1698                     }
    1699                     if (stricmp(ad->afhead[x].filename,
    1700                                 ad->afhead[z].filename)) {
    1701                       if (ad->dupeflags & DP_EXTS) {
    1702                         if (px) {
    1703                           *px = '.';
    1704                           *pz = '.';
    1705                         }
    1706                       }
    1707                       goto SkipNonDupe;
    1708                     }
    1709                     if (ad->dupeflags & DP_EXTS) {
    1710                       if (px) {
    1711                         *px = '.';
    1712                         *pz = '.';
    1713                       }
    1714                     }
    1715                   }
    1716                   if (ad->dupeflags & DP_CRCS) {
    1717                     if (!(ad->afhead[x].flags & AF_CRCED)) {
    1718                       ad->afhead[x].CRC = CRCFile(ad->afhead[x].fullname,
    1719                                                   &error);
    1720                       if (!error)
    1721                         ad->afhead[x].flags |= AF_CRCED;
    1722                     }
    1723                     if (!(ad->afhead[z].flags & AF_CRCED)) {
    1724                       ad->afhead[z].CRC = CRCFile(ad->afhead[z].fullname,
    1725                                                   &error);
    1726                       if (!error)
    1727                         ad->afhead[z].flags |= AF_CRCED;
    1728                     }
    1729                     if ((ad->afhead[x].flags & AF_CRCED) &&
    1730                         (ad->afhead[z].flags & AF_CRCED)) {
    1731                       if (ad->afhead[x].CRC != ad->afhead[z].CRC)
    1732                         goto SkipNonDupe;
    1733                     }
    1734                     DosSleep(0);
    1735                   }
    1736                   ad->afhead[x].flags |= AF_DUPE;
    1737                   ad->afhead[z].flags |= AF_DUPE;
    1738                 SkipNonDupe:
    1739                   ;
    1740                 }
    1741               } // for
    1742               DosSleep(0);
    1743             }
    1744           } // for
    1745           for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) {
    1746             if (!(ad->afhead[x].flags & AF_DUPE))
    1747               ad->afhead[x].flags |= AF_FILTERED;
    1748           }
    1749           ReSort(hwnd);
    1750           WinInvalidateRect(hwnd, NULL, FALSE);
    1751         }
     1678        WinCancelShutdown(hmq2, TRUE);
     1679        IncrThreadUsage();
     1680        if (ad->cursored <= ad->afindexcnt) {
     1681          for (x = 0; x < ad->afheadcnt; x++)
     1682            ad->afhead[x].flags &= (~(AF_DUPE | AF_SELECTED));
     1683          DosSleep(0);  //26 Aug 07 GKY 1
     1684          for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) {
     1685            if (!(ad->afhead[x].flags & (AF_DUPE | AF_FILTERED))) {
     1686              if (!(x % 50)) {
     1687                sprintf(s,
     1688                        GetPString(IDS_DUPECHECKINGOFTEXT), x, ad->afheadcnt);
     1689                WinSetWindowText(ad->hwndStatus, s);
     1690              }
     1691              for (z = 0; z < ad->afheadcnt && !ad->stopflag; z++) {
     1692                if (x != z &&
     1693                    !(ad->afhead[z].flags & (AF_DUPE | AF_FILTERED)))
     1694                {
     1695                  if (ad->dupeflags & DP_SIZES) {
     1696                    if (ad->afhead[x].cbFile != ad->afhead[z].cbFile)
     1697                      goto SkipNonDupe;
     1698                  }
     1699                  if (ad->dupeflags & DP_DATES) {
     1700                    if (*(INT *) & ad->afhead[x].date !=
     1701                        *(INT *) & ad->afhead[z].date ||
     1702                        *(INT *) & ad->afhead[x].time !=
     1703                        *(INT *) & ad->afhead[z].time)
     1704                      goto SkipNonDupe;
     1705                  }
     1706                  if (ad->dupeflags & DP_NAMES) {
     1707                    if (ad->dupeflags & DP_EXTS) {
     1708                      px = strrchr(ad->afhead[x].filename, '.');
     1709                      pz = strrchr(ad->afhead[z].filename, '.');
     1710                      if ((px || pz) && (!px || !pz))
     1711                        goto SkipNonDupe;
     1712                      if (px) {
     1713                        *px = 0;
     1714                        *pz = 0;
     1715                      }
     1716                    }
     1717                    if (stricmp(ad->afhead[x].filename,
     1718                                ad->afhead[z].filename)) {
     1719                      if (ad->dupeflags & DP_EXTS) {
     1720                        if (px) {
     1721                          *px = '.';
     1722                          *pz = '.';
     1723                        }
     1724                      }
     1725                      goto SkipNonDupe;
     1726                    }
     1727                    if (ad->dupeflags & DP_EXTS) {
     1728                      if (px) {
     1729                        *px = '.';
     1730                        *pz = '.';
     1731                      }
     1732                    }
     1733                  }
     1734                  if (ad->dupeflags & DP_CRCS) {
     1735                    if (!(ad->afhead[x].flags & AF_CRCED)) {
     1736                      ad->afhead[x].CRC = CRCFile(ad->afhead[x].fullname,
     1737                                                  &error);
     1738                      if (!error)
     1739                        ad->afhead[x].flags |= AF_CRCED;
     1740                    }
     1741                    if (!(ad->afhead[z].flags & AF_CRCED)) {
     1742                      ad->afhead[z].CRC = CRCFile(ad->afhead[z].fullname,
     1743                                                  &error);
     1744                      if (!error)
     1745                        ad->afhead[z].flags |= AF_CRCED;
     1746                    }
     1747                    if ((ad->afhead[x].flags & AF_CRCED) &&
     1748                        (ad->afhead[z].flags & AF_CRCED)) {
     1749                      if (ad->afhead[x].CRC != ad->afhead[z].CRC)
     1750                        goto SkipNonDupe;
     1751                    }
     1752                    DosSleep(0);
     1753                  }
     1754                  ad->afhead[x].flags |= AF_DUPE;
     1755                  ad->afhead[z].flags |= AF_DUPE;
     1756                SkipNonDupe:
     1757                  ;
     1758                }
     1759              } // for
     1760              DosSleep(0);
     1761            }
     1762          } // for
     1763          for (x = 0; x < ad->afheadcnt && !ad->stopflag; x++) {
     1764            if (!(ad->afhead[x].flags & AF_DUPE))
     1765              ad->afhead[x].flags |= AF_FILTERED;
     1766          }
     1767          ReSort(hwnd);
     1768          WinInvalidateRect(hwnd, NULL, FALSE);
     1769        }
    17521770      }
    17531771    }
     
    18011819      ret = FALSE;
    18021820      if (ad->mask.pszMasks[1]) {
    1803         for (z = 0; ad->mask.pszMasks[z]; z++) {
    1804           if (*ad->mask.pszMasks[z]) {
    1805             if (*ad->mask.pszMasks[z] != '/') {
    1806               if (wildcard((strchr(ad->mask.pszMasks[z], '\\') ||
    1807                             strchr(ad->mask.pszMasks[z], ':')) ?
    1808                            ad->afhead[x].fullname : ad->afhead[x].filename,
    1809                            ad->mask.pszMasks[z], FALSE))
    1810                 ret = TRUE;
    1811             }
    1812             else {
    1813               if (wildcard((strchr(ad->mask.pszMasks[z], '\\') ||
    1814                             strchr(ad->mask.pszMasks[z], ':')) ?
    1815                            ad->afhead[x].fullname : ad->afhead[x].filename,
    1816                            ad->mask.pszMasks[z] + 1, FALSE)) {
    1817                 ret = FALSE;
    1818                 break;
    1819               }
    1820             }
    1821           }
    1822         }
     1821        for (z = 0; ad->mask.pszMasks[z]; z++) {
     1822          if (*ad->mask.pszMasks[z]) {
     1823            if (*ad->mask.pszMasks[z] != '/') {
     1824              if (wildcard((strchr(ad->mask.pszMasks[z], '\\') ||
     1825                            strchr(ad->mask.pszMasks[z], ':')) ?
     1826                           ad->afhead[x].fullname : ad->afhead[x].filename,
     1827                           ad->mask.pszMasks[z], FALSE))
     1828                ret = TRUE;
     1829            }
     1830            else {
     1831              if (wildcard((strchr(ad->mask.pszMasks[z], '\\') ||
     1832                            strchr(ad->mask.pszMasks[z], ':')) ?
     1833                           ad->afhead[x].fullname : ad->afhead[x].filename,
     1834                           ad->mask.pszMasks[z] + 1, FALSE)) {
     1835                ret = FALSE;
     1836                break;
     1837              }
     1838            }
     1839          }
     1840        }
    18231841      }
    18241842      else if (*ad->mask.szMask) {
    1825         if (wildcard((strchr(ad->mask.szMask, '\\') ||
    1826                       strchr(ad->mask.szMask, ':')) ?
    1827                      ad->afhead[x].fullname : ad->afhead[x].filename,
    1828                      ad->mask.szMask, FALSE))
    1829           ret = TRUE;
     1843        if (wildcard((strchr(ad->mask.szMask, '\\') ||
     1844                      strchr(ad->mask.szMask, ':')) ?
     1845                     ad->afhead[x].fullname : ad->afhead[x].filename,
     1846                     ad->mask.szMask, FALSE))
     1847          ret = TRUE;
    18301848      }
    18311849      else
    1832         ret = TRUE;
     1850        ret = TRUE;
    18331851
    18341852      if (ret) {
    1835         if ((!(ad->mask.attrFile & FILE_HIDDEN)
    1836              && (ad->afhead[x].attrFile & FILE_HIDDEN))
    1837             || (!(ad->mask.attrFile & FILE_SYSTEM)
    1838                 && (ad->afhead[x].attrFile & FILE_SYSTEM))
    1839             || (!(ad->mask.attrFile & FILE_READONLY)
    1840                 && (ad->afhead[x].attrFile & FILE_READONLY))
    1841             || (!(ad->mask.attrFile & FILE_ARCHIVED)
    1842                 && (ad->afhead[x].attrFile & FILE_ARCHIVED)))
    1843           ret = FALSE;
    1844         else
    1845           if (((ad->mask.antiattr & FILE_HIDDEN)
    1846                && !(ad->afhead[x].attrFile & FILE_HIDDEN))
    1847               || ((ad->mask.antiattr & FILE_SYSTEM)
    1848                   && !(ad->afhead[x].attrFile & FILE_SYSTEM))
    1849               || ((ad->mask.antiattr & FILE_READONLY)
    1850                   && !(ad->afhead[x].attrFile & FILE_READONLY))
    1851               || ((ad->mask.antiattr & FILE_ARCHIVED)
    1852                   && !(ad->afhead[x].attrFile & FILE_ARCHIVED)))
    1853           ret = FALSE;
     1853        if ((!(ad->mask.attrFile & FILE_HIDDEN)
     1854             && (ad->afhead[x].attrFile & FILE_HIDDEN))
     1855            || (!(ad->mask.attrFile & FILE_SYSTEM)
     1856                && (ad->afhead[x].attrFile & FILE_SYSTEM))
     1857            || (!(ad->mask.attrFile & FILE_READONLY)
     1858                && (ad->afhead[x].attrFile & FILE_READONLY))
     1859            || (!(ad->mask.attrFile & FILE_ARCHIVED)
     1860                && (ad->afhead[x].attrFile & FILE_ARCHIVED)))
     1861          ret = FALSE;
     1862        else
     1863          if (((ad->mask.antiattr & FILE_HIDDEN)
     1864               && !(ad->afhead[x].attrFile & FILE_HIDDEN))
     1865              || ((ad->mask.antiattr & FILE_SYSTEM)
     1866                  && !(ad->afhead[x].attrFile & FILE_SYSTEM))
     1867              || ((ad->mask.antiattr & FILE_READONLY)
     1868                  && !(ad->afhead[x].attrFile & FILE_READONLY))
     1869              || ((ad->mask.antiattr & FILE_ARCHIVED)
     1870                  && !(ad->afhead[x].attrFile & FILE_ARCHIVED)))
     1871          ret = FALSE;
    18541872      }
    18551873
    18561874      if (!ret)
    1857         ad->afhead[x].flags |= AF_FILTERED;
     1875        ad->afhead[x].flags |= AF_FILTERED;
    18581876      else
    1859         ad->afhead[x].flags &= (~AF_FILTERED);
     1877        ad->afhead[x].flags &= (~AF_FILTERED);
    18601878    }
    18611879    ReSort(hwnd);
     
    18741892    if (pAD->afhead[x].flags & AF_DELETED) {
    18751893      for (y = x; y < pAD->afheadcnt; y++) {
    1876         if (~pAD->afhead[y].flags & AF_DELETED)
    1877           break;
    1878         if (pAD->afhead[y].flags & AF_SELECTED &&
    1879             ~pAD->afhead[y].flags & AF_FILTERED) {
    1880           pAD->selected--;
    1881           pAD->ullSelectedBytes -= pAD->afhead[y].cbFile;
    1882         }
    1883         xfree(pAD->afhead[y].fullname, pszSrcFile, __LINE__);
     1894        if (~pAD->afhead[y].flags & AF_DELETED)
     1895          break;
     1896        if (pAD->afhead[y].flags & AF_SELECTED &&
     1897            ~pAD->afhead[y].flags & AF_FILTERED) {
     1898          pAD->selected--;
     1899          pAD->ullSelectedBytes -= pAD->afhead[y].cbFile;
     1900        }
     1901        xfree(pAD->afhead[y].fullname, pszSrcFile, __LINE__);
    18841902      }
    18851903      memmove(&(pAD->afhead[x]), &(pAD->afhead[y]),
    1886               (pAD->afheadcnt - y) * sizeof(ALLFILES));
     1904              (pAD->afheadcnt - y) * sizeof(ALLFILES));
    18871905      pAD->afheadcnt -= (y - x);
    18881906    }
    1889   }                                     // for x
     1907  }                                     // for x
    18901908  if (pAD->afheadcnt != oldafheadcnt) {
    18911909
     
    18961914    else {
    18971915      tempa =
    1898         xrealloc(pAD->afhead, pAD->afheadcnt * sizeof(ALLFILES), pszSrcFile,
    1899                 __LINE__);
     1916        xrealloc(pAD->afhead, pAD->afheadcnt * sizeof(ALLFILES), pszSrcFile,
     1917                __LINE__);
    19001918      if (tempa) {
    1901         pAD->afhead = tempa;
    1902         pAD->afalloc = pAD->afheadcnt;
     1919        pAD->afhead = tempa;
     1920        pAD->afalloc = pAD->afheadcnt;
    19031921      }
    19041922      templ =
    1905         xrealloc(pAD->afindex, pAD->afheadcnt * sizeof(ALLFILES *), pszSrcFile,
    1906                 __LINE__);
     1923        xrealloc(pAD->afindex, pAD->afheadcnt * sizeof(ALLFILES *), pszSrcFile,
     1924                __LINE__);
    19071925      if (templ)
    1908         pAD->afindex = templ;
     1926        pAD->afindex = templ;
    19091927      DosPostEventSem(CompactSem);
    19101928      ReSort(hwnd);
     
    19551973  ulFindCnt = ulFindMax;
    19561974  rc = xDosFindFirst(filename, &hdir, FILE_NORMAL | FILE_ARCHIVED |
    1957                      FILE_READONLY | FILE_DIRECTORY | FILE_SYSTEM |
    1958                      FILE_HIDDEN,
    1959                      pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
     1975                     FILE_READONLY | FILE_DIRECTORY | FILE_SYSTEM |
     1976                     FILE_HIDDEN,
     1977                     pffbArray, ulBufBytes, &ulFindCnt, FIL_STANDARDL);
    19601978  if (!rc) {
    19611979    do {
     
    19631981      pffbFile = pffbArray;
    19641982      for (x = 0; x < ulFindCnt; x++) {
    1965         if (pffbFile->attrFile & FILE_DIRECTORY) {
    1966           // Skip . and ..
    1967           if (pffbFile->achName[0] != '.' ||
    1968               (pffbFile->achName[1] &&
    1969                (pffbFile->achName[1] != '.' || pffbFile->achName[2]))) {
    1970             strcpy(enddir, pffbFile->achName);
    1971             DoADir(hwnd, filename);
    1972           }
    1973         }
    1974         else {
    1975           *enddir = 0;
     1983        if (pffbFile->attrFile & FILE_DIRECTORY) {
     1984          // Skip . and ..
     1985          if (pffbFile->achName[0] != '.' ||
     1986              (pffbFile->achName[1] &&
     1987               (pffbFile->achName[1] != '.' || pffbFile->achName[2]))) {
     1988            strcpy(enddir, pffbFile->achName);
     1989            DoADir(hwnd, filename);
     1990          }
     1991        }
     1992        else {
     1993          *enddir = 0;
    19761994          strcpy(enddir, pffbFile->achName);
    19771995          if (strlen(filename) > CCHMAXPATH) {
    1978             // Complain if pathnames exceeds max
    1979             DosFindClose(hdir);
     1996            // Complain if pathnames exceeds max
     1997            DosFindClose(hdir);
    19801998            free(pffbArray);
    19811999            free(filename);
    1982             if (!fDone) {
    1983               fDone = TRUE;
    1984               saymsg(MB_OK | MB_ICONASTERISK,
    1985                      HWND_DESKTOP,
    1986                      GetPString(IDS_WARNINGTEXT),
    1987                      "One or more of your files has a full path name that exceeds the OS/2 maximum");
     2000            if (!fDone) {
     2001              fDone = TRUE;
     2002              saymsg(MB_OK | MB_ICONASTERISK,
     2003                     HWND_DESKTOP,
     2004                     GetPString(IDS_WARNINGTEXT),
     2005                     "One or more of your files has a full path name that exceeds the OS/2 maximum");
    19882006            }
    19892007            return;
    1990           }
    1991           if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) {
    1992 
    1993             ALLFILES *temp;
    1994 
    1995             temp = xrealloc(ad->afhead, (ad->afalloc + 1000) *
    1996                             sizeof(ALLFILES), pszSrcFile, __LINE__);
    1997             if (!temp) {
    1998               ad->stopflag = 1;
    1999               break;
    2000             }
    2001             else {
    2002               ad->afhead = temp;
    2003               if (ad->stopflag)
    2004                 break;
    2005               ad->afalloc += 1000;
    2006             }
    2007           }
    2008           ad->afhead[ad->afheadcnt].fullname =
    2009             xstrdup(filename, pszSrcFile, __LINE__);
    2010           if (!ad->afhead[ad->afheadcnt].fullname) {
    2011             ad->stopflag = 1;
    2012             break;
    2013           }
    2014           else {
    2015             ad->afhead[ad->afheadcnt].filename =
    2016               ad->afhead[ad->afheadcnt].fullname + (enddir - filename);
    2017             ad->afhead[ad->afheadcnt].cbFile = pffbFile->cbFile;
    2018             ad->afhead[ad->afheadcnt].date = pffbFile->fdateLastWrite;
    2019             ad->afhead[ad->afheadcnt].time = pffbFile->ftimeLastWrite;
    2020             ad->afhead[ad->afheadcnt].attrFile = (USHORT) pffbFile->attrFile;
    2021             ad->afhead[ad->afheadcnt].flags = 0;
    2022             ad->afheadcnt++;
    2023             if (ad->longest < pffbFile->cchName)
    2024               ad->longest = pffbFile->cchName;
    2025             if (ad->longestw < pffbFile->cchName + (enddir - filename))
    2026               ad->longestw = pffbFile->cchName + (enddir - filename);
    2027           }
    2028         }
    2029         pffbFile = (PFILEFINDBUF3L)((PBYTE)pffbFile + pffbFile->oNextEntryOffset);
     2008          }
     2009          if (!ad->afalloc || ad->afheadcnt > ad->afalloc - 1) {
     2010
     2011            ALLFILES *temp;
     2012
     2013            temp = xrealloc(ad->afhead, (ad->afalloc + 1000) *
     2014                            sizeof(ALLFILES), pszSrcFile, __LINE__);
     2015            if (!temp) {
     2016              ad->stopflag = 1;
     2017              break;
     2018            }
     2019            else {
     2020              ad->afhead = temp;
     2021              if (ad->stopflag)
     2022                break;
     2023              ad->afalloc += 1000;
     2024            }
     2025          }
     2026          ad->afhead[ad->afheadcnt].fullname =
     2027            xstrdup(filename, pszSrcFile, __LINE__);
     2028          if (!ad->afhead[ad->afheadcnt].fullname) {
     2029            ad->stopflag = 1;
     2030            break;
     2031          }
     2032          else {
     2033            ad->afhead[ad->afheadcnt].filename =
     2034              ad->afhead[ad->afheadcnt].fullname + (enddir - filename);
     2035            ad->afhead[ad->afheadcnt].cbFile = pffbFile->cbFile;
     2036            ad->afhead[ad->afheadcnt].date = pffbFile->fdateLastWrite;
     2037            ad->afhead[ad->afheadcnt].time = pffbFile->ftimeLastWrite;
     2038            ad->afhead[ad->afheadcnt].attrFile = (USHORT) pffbFile->attrFile;
     2039            ad->afhead[ad->afheadcnt].flags = 0;
     2040            ad->afheadcnt++;
     2041            if (ad->longest < pffbFile->cchName)
     2042              ad->longest = pffbFile->cchName;
     2043            if (ad->longestw < pffbFile->cchName + (enddir - filename))
     2044              ad->longestw = pffbFile->cchName + (enddir - filename);
     2045          }
     2046        }
     2047        pffbFile = (PFILEFINDBUF3L)((PBYTE)pffbFile + pffbFile->oNextEntryOffset);
    20302048      } // for
    20312049      if (ad->stopflag)
    2032         break;
     2050        break;
    20332051      ulFindCnt = ulFindMax;
    20342052      rc = xDosFindNext(hdir,
    2035                         pffbArray,
    2036                         sizeof(FILEFINDBUF3L) * ulFindCnt,
    2037                         &ulFindCnt,
    2038                         FIL_STANDARDL);
     2053                        pffbArray,
     2054                        sizeof(FILEFINDBUF3L) * ulFindCnt,
     2055                        &ulFindCnt,
     2056                        FIL_STANDARDL);
    20392057    } while (!rc);
    20402058    DosFindClose(hdir);
     
    20432061  if (rc && rc != ERROR_NO_MORE_FILES) {
    20442062    Dos_Error(MB_ENTER, rc, HWND_DESKTOP, pszSrcFile, __LINE__,
    2045               GetPString(IDS_CANTFINDDIRTEXT), filename);
     2063              GetPString(IDS_CANTFINDDIRTEXT), filename);
    20462064  }
    20472065
     
    20682086      hmq2 = WinCreateMsgQueue(hab2, 0);
    20692087      if (hmq2) {
    2070         WinCancelShutdown(hmq2, TRUE);
    2071         IncrThreadUsage();
    2072         if (!*ad->szFindPath) {
    2073           DosError(FERR_DISABLEHARDERR);
    2074           if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {
    2075             for (x = 2; x < 26 && !ad->stopflag; x++) {
    2076               if ((ulDriveMap & (1 << x)) && ad->abDrvFlags[x]) {
    2077                 *startname = (CHAR) (x + 'A');
    2078                 DoADir(hwnd, startname);
    2079                 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    2080                 DosSleep(0); //26 Aug 07 GKY 1
    2081               }
    2082             }
    2083           }
    2084         }
    2085         else
    2086           DoADir(hwnd, ad->szFindPath);
    2087         DosPostEventSem(CompactSem);
     2088        WinCancelShutdown(hmq2, TRUE);
     2089        IncrThreadUsage();
     2090        if (!*ad->szFindPath) {
     2091          DosError(FERR_DISABLEHARDERR);
     2092          if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {
     2093            for (x = 2; x < 26 && !ad->stopflag; x++) {
     2094              if ((ulDriveMap & (1 << x)) && ad->abDrvFlags[x]) {
     2095                *startname = (CHAR) (x + 'A');
     2096                DoADir(hwnd, startname);
     2097                PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     2098                DosSleep(0); //26 Aug 07 GKY 1
     2099              }
     2100            }
     2101          }
     2102        }
     2103        else
     2104          DoADir(hwnd, ad->szFindPath);
     2105        DosPostEventSem(CompactSem);
    20882106      }
    20892107    }
     
    20932111
    20942112      tempa =
    2095         xrealloc(ad->afhead, sizeof(ALLFILES) * ad->afheadcnt, pszSrcFile,
    2096                 __LINE__);
     2113        xrealloc(ad->afhead, sizeof(ALLFILES) * ad->afheadcnt, pszSrcFile,
     2114                __LINE__);
    20972115      if (tempa) {
    2098         ad->afhead = tempa;
    2099         ad->afalloc = ad->afheadcnt;
     2116        ad->afhead = tempa;
     2117        ad->afalloc = ad->afheadcnt;
    21002118      }
    21012119      templ =
    2102         xrealloc(ad->afindex, sizeof(ALLFILES *) * ad->afheadcnt, pszSrcFile,
    2103                 __LINE__);
     2120        xrealloc(ad->afindex, sizeof(ALLFILES *) * ad->afheadcnt, pszSrcFile,
     2121                __LINE__);
    21042122      if (templ)
    2105         ad->afindex = templ;
     2123        ad->afindex = templ;
    21062124      DosPostEventSem(CompactSem);
    21072125    }
     
    21412159      DosError(FERR_DISABLEHARDERR);
    21422160      if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {
    2143         for (x = 2; x < 26 && !ad->stopflag; x++) {
    2144           if (!(driveflags[x] & (DRIVE_IGNORE | DRIVE_INVALID))) {
    2145             if (ulDriveMap & (1 << x)) {
    2146               *startname = (CHAR) (x + 'A');
    2147               sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,
    2148                                                   LM_INSERTITEM,
    2149                                                   MPFROM2SHORT(LIT_END, 0),
    2150                                                   MPFROMP(startname));
    2151               if (sSelect >= 0 && ad->abDrvFlags[x])
    2152                 WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_SELECTITEM,
    2153                                   MPFROM2SHORT(sSelect, 0), MPFROMLONG(TRUE));
    2154             }
    2155           }
    2156         }
     2161        for (x = 2; x < 26 && !ad->stopflag; x++) {
     2162          if (!(driveflags[x] & (DRIVE_IGNORE | DRIVE_INVALID))) {
     2163            if (ulDriveMap & (1 << x)) {
     2164              *startname = (CHAR) (x + 'A');
     2165              sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,
     2166                                                  LM_INSERTITEM,
     2167                                                  MPFROM2SHORT(LIT_END, 0),
     2168                                                  MPFROMP(startname));
     2169              if (sSelect >= 0 && ad->abDrvFlags[x])
     2170                WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_SELECTITEM,
     2171                                  MPFROM2SHORT(sSelect, 0), MPFROMLONG(TRUE));
     2172            }
     2173          }
     2174        }
    21572175      }
    21582176    }
     
    21662184      switch (SHORT2FROMMP(mp1)) {
    21672185      case LN_ENTER:
    2168         PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
    2169         break;
     2186        PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(DID_OK, 0), MPVOID);
     2187        break;
    21702188      }
    21712189      break;
     
    21772195    case DID_OK:
    21782196      {
    2179         INT x;
    2180         SHORT sSelect;
    2181         CHAR filename[3];
    2182         ALLDATA *ad = WinQueryWindowPtr(hwnd, QWL_USER);
    2183 
    2184         memset(ad->abDrvFlags, 0, sizeof(ad->abDrvFlags));
    2185         sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,
    2186                                             LM_QUERYSELECTION,
    2187                                             MPFROM2SHORT(LIT_FIRST, 0),
    2188                                             MPVOID);
    2189         while (sSelect >= 0) {
    2190           *filename = 0;
    2191           if (WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_QUERYITEMTEXT,
    2192                                 MPFROM2SHORT(sSelect, 2),
    2193                                 MPFROMP(filename)) && *filename)
    2194             ad->abDrvFlags[*filename - 'A'] = 1;
    2195           sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,
    2196                                               LM_QUERYSELECTION,
    2197                                               MPFROM2SHORT(sSelect, 0),
    2198                                               MPVOID);
    2199         }
    2200         for (x = 2; x < 26; x++) {
    2201           if (ad->abDrvFlags[x]) {
    2202             WinDismissDlg(hwnd, 1);
    2203             return 0;
    2204           }
    2205         }
     2197        INT x;
     2198        SHORT sSelect;
     2199        CHAR filename[3];
     2200        ALLDATA *ad = WinQueryWindowPtr(hwnd, QWL_USER);
     2201
     2202        memset(ad->abDrvFlags, 0, sizeof(ad->abDrvFlags));
     2203        sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,
     2204                                            LM_QUERYSELECTION,
     2205                                            MPFROM2SHORT(LIT_FIRST, 0),
     2206                                            MPVOID);
     2207        while (sSelect >= 0) {
     2208          *filename = 0;
     2209          if (WinSendDlgItemMsg(hwnd, DRVS_LISTBOX, LM_QUERYITEMTEXT,
     2210                                MPFROM2SHORT(sSelect, 2),
     2211                                MPFROMP(filename)) && *filename)
     2212            ad->abDrvFlags[*filename - 'A'] = 1;
     2213          sSelect = (SHORT) WinSendDlgItemMsg(hwnd, DRVS_LISTBOX,
     2214                                              LM_QUERYSELECTION,
     2215                                              MPFROM2SHORT(sSelect, 0),
     2216                                              MPVOID);
     2217        }
     2218        for (x = 2; x < 26; x++) {
     2219          if (ad->abDrvFlags[x]) {
     2220            WinDismissDlg(hwnd, 1);
     2221            return 0;
     2222          }
     2223        }
    22062224      }
    22072225      WinDismissDlg(hwnd, 0);
     
    22102228    case IDM_HELP:
    22112229      if (hwndHelp)
    2212         WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
    2213                    MPFROM2SHORT(HELP_DRVSWND, 0), MPFROMSHORT(HM_RESOURCEID));
     2230        WinSendMsg(hwndHelp, HM_DISPLAY_HELP,
     2231                   MPFROM2SHORT(HELP_DRVSWND, 0), MPFROMSHORT(HM_RESOURCEID));
    22142232      break;
    22152233
     
    22332251    sizel.cx = sizel.cy = 0;
    22342252    hps = GpiCreatePS(WinQueryAnchorBlock(hwnd), WinOpenWindowDC(hwnd),
    2235                       (PSIZEL) & sizel, PU_PELS | GPIF_DEFAULT | GPIT_MICRO |
    2236                       GPIA_ASSOC);
     2253                      (PSIZEL) & sizel, PU_PELS | GPIF_DEFAULT | GPIT_MICRO |
     2254                      GPIA_ASSOC);
    22372255    if (hps) {
    22382256      GpiSetCp(hps, (ULONG) ad->fattrs.usCodePage);
     
    22462264      ad->lMaxHeight = ad->lMaxDescender + ad->lMaxAscender;
    22472265      if (ad->fattrs.usCodePage != FontMetrics.usCodePage) {
    2248         ad->fattrs.usCodePage = FontMetrics.usCodePage;
    2249         Codepage = ad->fattrs.usCodePage;
    2250         PrfWriteProfileData(fmprof,
    2251                             appname,
    2252                             "Seeall.Codepage",
    2253                             &ad->fattrs.usCodePage, sizeof(USHORT));
     2266        ad->fattrs.usCodePage = FontMetrics.usCodePage;
     2267        Codepage = ad->fattrs.usCodePage;
     2268        PrfWriteProfileData(fmprof,
     2269                            appname,
     2270                            "Seeall.Codepage",
     2271                            &ad->fattrs.usCodePage, sizeof(USHORT));
    22542272      }
    22552273      else if (ad->fattrs.usCodePage) {
    22562274
    2257         HMQ hmq;
    2258         ULONG cps[50], len, x;
    2259 
    2260         if (!DosQueryCp(sizeof(cps), cps, &len)) {
    2261           for (x = 0; x < len / sizeof(ULONG); x++) {
    2262             if (cps[x] == (ULONG) ad->fattrs.usCodePage) {
    2263               hmq = WinQueryWindowULong(hwnd, QWL_HMQ);
    2264               WinSetCp(hmq, ad->fattrs.usCodePage);
    2265               break;
    2266             }
    2267           }
    2268         }
    2269         DosSetProcessCp((ULONG) ad->fattrs.usCodePage);
     2275        HMQ hmq;
     2276        ULONG cps[50], len, x;
     2277
     2278        if (!DosQueryCp(sizeof(cps), cps, &len)) {
     2279          for (x = 0; x < len / sizeof(ULONG); x++) {
     2280            if (cps[x] == (ULONG) ad->fattrs.usCodePage) {
     2281              hmq = WinQueryWindowULong(hwnd, QWL_HMQ);
     2282              WinSetCp(hmq, ad->fattrs.usCodePage);
     2283              break;
     2284            }
     2285          }
     2286        }
     2287        DosSetProcessCp((ULONG) ad->fattrs.usCodePage);
    22702288      }
    22712289      GpiSetBackMix(hps, BM_OVERPAINT);
     
    22762294
    22772295static VOID PaintLine(HWND hwnd, HPS hps, ULONG whichfile, ULONG topfile,
    2278                       RECTL * Rectl)
     2296                      RECTL * Rectl)
    22792297{
    22802298  ALLDATA *ad = WinQueryWindowPtr(hwnd, QWL_USER);
     
    22852303  y = (ad->invertsort) ? (ad->afindexcnt - 1) - whichfile : whichfile;
    22862304  ptl.y = (Rectl->yTop -
    2287            (ad->lMaxHeight * (((whichfile + 1) - topfile) + 1)));
     2305           (ad->lMaxHeight * (((whichfile + 1) - topfile) + 1)));
    22882306  ptl.x = ad->horzscroll;
    22892307  if (ptl.y < Rectl->yBottom || ptl.y > Rectl->yTop || y > ad->afindexcnt)
     
    22932311    GpiSetColor(hps, standardcolors[Colors[COLORS_SELECTEDNORMALFORE]]);
    22942312    GpiSetBackColor(hps, (whichfile == ad->cursored - 1) ?
    2295                     standardcolors[Colors[COLORS_CURSOREDSELECTEDBACK]] :
    2296                     standardcolors[Colors[COLORS_SELECTEDBACK]]);
     2313                    standardcolors[Colors[COLORS_CURSOREDSELECTEDBACK]] :
     2314                    standardcolors[Colors[COLORS_SELECTEDBACK]]);
    22972315  }
    22982316  else {
    22992317    GpiSetColor(hps,
    2300                 ((ad->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) !=
    2301                 0) ? standardcolors[Colors[COLORS_SYSTEMFORE]] : ((ad->
    2302                                                                     afindex
    2303                                                                     [y]->
    2304                                                                     attrFile &
    2305                                                                     FILE_READONLY)
    2306                                                                    !=
    2307                                                                    0) ?
    2308                 standardcolors[Colors[COLORS_READONLYFORE]] :
    2309                 standardcolors[Colors[COLORS_NORMALFORE]]);
     2318                ((ad->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) !=
     2319                0) ? standardcolors[Colors[COLORS_SYSTEMFORE]] : ((ad->
     2320                                                                    afindex
     2321                                                                    [y]->
     2322                                                                    attrFile &
     2323                                                                    FILE_READONLY)
     2324                                                                   !=
     2325                                                                   0) ?
     2326                standardcolors[Colors[COLORS_READONLYFORE]] :
     2327                standardcolors[Colors[COLORS_NORMALFORE]]);
    23102328    GpiSetBackColor(hps,
    2311                     (whichfile ==
    2312                      ad->cursored -
    2313                      1) ? standardcolors[Colors[COLORS_CURSOREDNORMALBACK]] :
    2314                     standardcolors[Colors[COLORS_NORMALBACK]]);
     2329                    (whichfile ==
     2330                     ad->cursored -
     2331                     1) ? standardcolors[Colors[COLORS_CURSOREDNORMALBACK]] :
     2332                    standardcolors[Colors[COLORS_NORMALBACK]]);
    23152333  }
    23162334  CommaFmtULL(szCmmaFmtFileSize,
    23172335              sizeof(szCmmaFmtFileSize), ad->afindex[y]->cbFile, ' ');
    23182336  len = sprintf(szBuff,
    2319                 "%c%-*.*s  %-12s  %c%c%c%c%c  %04u/%02u/%02u %02u:%02u:%02u ",
    2320                 whichfile == ad->cursored - 1 ? '>' : ' ',
    2321                 ad->fullnames ? ad->longestw : ad->longest,
    2322                 ad->fullnames ? ad->longestw : ad->longest,
    2323                 ad->fullnames ? ad->afindex[y]->fullname :
    2324                 ad->afindex[y]->filename,
    2325                 szCmmaFmtFileSize,
    2326                 "-A"[((ad->afindex[y]->attrFile & FILE_ARCHIVED) != 0)],
    2327                 "-R"[((ad->afindex[y]->attrFile & FILE_READONLY) != 0)],
    2328                 "-H"[((ad->afindex[y]->attrFile & FILE_HIDDEN) != 0)],
    2329                 "-S"[((ad->afindex[y]->attrFile & FILE_SYSTEM) != 0)],
    2330                 "-D"[((ad->afindex[y]->attrFile & FILE_DIRECTORY) != 0)],
    2331                 ad->afindex[y]->date.year + 1980,
    2332                 ad->afindex[y]->date.month,
    2333                 ad->afindex[y]->date.day,
    2334                 ad->afindex[y]->time.hours,
    2335                 ad->afindex[y]->time.minutes,
    2336                 ad->afindex[y]->time.twosecs * 2);
     2337                "%c%-*.*s  %-12s  %c%c%c%c%c  %04u/%02u/%02u %02u:%02u:%02u ",
     2338                whichfile == ad->cursored - 1 ? '>' : ' ',
     2339                ad->fullnames ? ad->longestw : ad->longest,
     2340                ad->fullnames ? ad->longestw : ad->longest,
     2341                ad->fullnames ? ad->afindex[y]->fullname :
     2342                ad->afindex[y]->filename,
     2343                szCmmaFmtFileSize,
     2344                "-A"[((ad->afindex[y]->attrFile & FILE_ARCHIVED) != 0)],
     2345                "-R"[((ad->afindex[y]->attrFile & FILE_READONLY) != 0)],
     2346                "-H"[((ad->afindex[y]->attrFile & FILE_HIDDEN) != 0)],
     2347                "-S"[((ad->afindex[y]->attrFile & FILE_SYSTEM) != 0)],
     2348                "-D"[((ad->afindex[y]->attrFile & FILE_DIRECTORY) != 0)],
     2349                ad->afindex[y]->date.year + 1980,
     2350                ad->afindex[y]->date.month,
     2351                ad->afindex[y]->date.day,
     2352                ad->afindex[y]->time.hours,
     2353                ad->afindex[y]->time.minutes,
     2354                ad->afindex[y]->time.twosecs * 2);
    23372355  GpiCharStringAt(hps, &ptl, len, szBuff);
    23382356  GpiQueryCurrentPosition(hps, &ptl);
     
    23402358    ad->maxx = ptl.x + abs(ad->horzscroll);
    23412359    WinSendMsg(ad->hhscroll, SBM_SETTHUMBSIZE,
    2342                MPFROM2SHORT((SHORT) Rectl->xRight, (SHORT) ad->maxx), MPVOID);
     2360               MPFROM2SHORT((SHORT) Rectl->xRight, (SHORT) ad->maxx), MPVOID);
    23432361  }
    23442362}
     
    23642382      hps = WinGetPS(WinQueryWindow(hwnd, QW_PARENT));
    23652383      if (hps) {
    2366         WinQueryWindowPos(hwnd, &swp);
    2367         ptl.x = swp.x - 1;
    2368         ptl.y = swp.y + swp.cy + 2;
    2369         GpiMove(hps, &ptl);
    2370         GpiSetColor(hps, CLR_WHITE);
    2371         ptl.x = swp.x + swp.cx;
    2372         GpiLine(hps, &ptl);
    2373         WinReleasePS(hps);
     2384        WinQueryWindowPos(hwnd, &swp);
     2385        ptl.x = swp.x - 1;
     2386        ptl.y = swp.y + swp.cy + 2;
     2387        GpiMove(hps, &ptl);
     2388        GpiSetColor(hps, CLR_WHITE);
     2389        ptl.x = swp.x + swp.cx;
     2390        GpiLine(hps, &ptl);
     2391        WinReleasePS(hps);
    23742392      }
    23752393    }
     
    23782396  case UM_FOCUSME:
    23792397    WinSetFocus(HWND_DESKTOP, WinWindowFromID(WinQueryWindow(hwnd, QW_PARENT),
    2380                                               FID_CLIENT));
     2398                                              FID_CLIENT));
    23812399    return 0;
    23822400  }
     
    24152433
    24162434      if (mr && mp2) {
    2417         prectl = (PRECTL) mp1;
    2418         prectl->yBottom += 22;
    2419         prectl->yTop -= 24;
     2435        prectl = (PRECTL) mp1;
     2436        prectl->yBottom += 22;
     2437        prectl->yTop -= 24;
    24202438      }
    24212439      return mr;
     
    24362454      pswp = (PSWP) mp1;
    24372455      {
    2438         SHORT x;
    2439 
    2440         for (x = 0; x < sCount; x++) {
    2441           if (WinQueryWindowUShort(pswp->hwnd, QWS_ID) == FID_CLIENT) {
    2442             pswpClient = pswp;
    2443             break;
    2444           }
    2445           pswp++;
    2446         }
     2456        SHORT x;
     2457
     2458        for (x = 0; x < sCount; x++) {
     2459          if (WinQueryWindowUShort(pswp->hwnd, QWS_ID) == FID_CLIENT) {
     2460            pswpClient = pswp;
     2461            break;
     2462          }
     2463          pswp++;
     2464        }
    24472465      }
    24482466      pswpNew = (PSWP) mp1 + sCount;
     
    24902508      pAD->hwndFrame = hwndFrame;
    24912509      pAD->mask.attrFile = FILE_READONLY | FILE_HIDDEN |
    2492         FILE_SYSTEM | FILE_ARCHIVED;
     2510        FILE_SYSTEM | FILE_ARCHIVED;
    24932511      pAD->mask.fNoDirs = TRUE;
    24942512      *(pAD->mask.prompt) = 0;
     
    24972515      if (Firsttime) {
    24982516
    2499         ULONG size;
    2500 
    2501         size = sizeof(USHORT);
    2502         PrfQueryProfileData(fmprof,
    2503                             appname,
    2504                             "Seeall.Codepage", (PVOID) & Codepage, &size);
    2505         size = sizeof(BOOL);
    2506         PrfQueryProfileData(fmprof,
    2507                             appname,
    2508                             "Seeall.Fullnames", (PVOID) & Fullnames, &size);
    2509         size = sizeof(USHORT);
    2510         PrfQueryProfileData(fmprof,
    2511                             appname,
    2512                             "Seeall.Sort", (PVOID) & SortType, &size);
    2513         size = sizeof(BOOL);
    2514         PrfQueryProfileData(fmprof,
    2515                             appname,
    2516                             "Seeall.SortReverse",
    2517                             (PVOID) & SortReverse, &size);
    2518         memset(&Fattrs, 0, sizeof(Fattrs));
    2519         size = sizeof(Fattrs);
    2520         Fattrs.usRecordLength = sizeof(Fattrs);
    2521         Fattrs.lMaxBaselineExt = 16;
    2522         Fattrs.lAveCharWidth = 8;
    2523         Fattrs.usCodePage = Codepage;
    2524         strcpy(Fattrs.szFacename, GetPString(IDS_SYSMONOTEXT));
    2525         PrfQueryProfileData(fmprof,
    2526                             appname,
    2527                             "Seeall.Fattrs", (PVOID) & Fattrs, &size);
    2528         size = sizeof(LONG) * COLORS_MAX;
    2529         PrfQueryProfileData(fmprof,
    2530                             appname, "Seeall.Colors", (PVOID) Colors, &size);
    2531         Firsttime = FALSE;
     2517        ULONG size;
     2518
     2519        size = sizeof(USHORT);
     2520        PrfQueryProfileData(fmprof,
     2521                            appname,
     2522                            "Seeall.Codepage", (PVOID) & Codepage, &size);
     2523        size = sizeof(BOOL);
     2524        PrfQueryProfileData(fmprof,
     2525                            appname,
     2526                            "Seeall.Fullnames", (PVOID) & Fullnames, &size);
     2527        size = sizeof(USHORT);
     2528        PrfQueryProfileData(fmprof,
     2529                            appname,
     2530                            "Seeall.Sort", (PVOID) & SortType, &size);
     2531        size = sizeof(BOOL);
     2532        PrfQueryProfileData(fmprof,
     2533                            appname,
     2534                            "Seeall.SortReverse",
     2535                            (PVOID) & SortReverse, &size);
     2536        memset(&Fattrs, 0, sizeof(Fattrs));
     2537        size = sizeof(Fattrs);
     2538        Fattrs.usRecordLength = sizeof(Fattrs);
     2539        Fattrs.lMaxBaselineExt = 16;
     2540        Fattrs.lAveCharWidth = 8;
     2541        Fattrs.usCodePage = Codepage;
     2542        strcpy(Fattrs.szFacename, GetPString(IDS_SYSMONOTEXT));
     2543        PrfQueryProfileData(fmprof,
     2544                            appname,
     2545                            "Seeall.Fattrs", (PVOID) & Fattrs, &size);
     2546        size = sizeof(LONG) * COLORS_MAX;
     2547        PrfQueryProfileData(fmprof,
     2548                            appname, "Seeall.Colors", (PVOID) Colors, &size);
     2549        Firsttime = FALSE;
    25322550      }
    25332551      switch (SortType) {
    25342552      case IDM_SORTEASIZE:
    2535         pAD->pfnCompare = (PFNSORT) NULL;
    2536         break;
     2553        pAD->pfnCompare = (PFNSORT) NULL;
     2554        break;
    25372555      case IDM_SORTNAME:
    2538         pAD->pfnCompare = comparefullnames;
    2539         break;
     2556        pAD->pfnCompare = comparefullnames;
     2557        break;
    25402558      case IDM_SORTFILENAME:
    2541         pAD->pfnCompare = comparenames;
    2542         break;
     2559        pAD->pfnCompare = comparenames;
     2560        break;
    25432561      case IDM_SORTSIZE:
    2544         pAD->pfnCompare = comparesizes;
    2545         break;
     2562        pAD->pfnCompare = comparesizes;
     2563        break;
    25462564      case IDM_SORTLWDATE:
    2547         pAD->pfnCompare = comparedates;
    2548         break;
     2565        pAD->pfnCompare = comparedates;
     2566        break;
    25492567      case IDM_SORTFIRST:
    2550         pAD->pfnCompare = compareexts;
    2551         break;
     2568        pAD->pfnCompare = compareexts;
     2569        break;
    25522570      }
    25532571      pAD->invertsort = SortReverse;
     
    25602578      pAD->hwndMenu = WinWindowFromID(hwndFrame, FID_MENU);
    25612579      SetConditionalCascade(pAD->hwndMenu, IDM_DELETESUBMENU,
    2562                             (fDefaultDeletePerm) ?
    2563                             IDM_PERMDELETE : IDM_DELETE);
     2580                            (fDefaultDeletePerm) ?
     2581                            IDM_PERMDELETE : IDM_DELETE);
    25642582      SetConditionalCascade(pAD->hwndMenu, IDM_MOVEMENU, IDM_MOVE);
    25652583      SetConditionalCascade(pAD->hwndMenu, IDM_COPYMENU, IDM_COPY);
     
    25672585      SetConditionalCascade(pAD->hwndMenu, IDM_OBJECTSUBMENU, IDM_SHADOW);
    25682586      if (fWorkPlace) {
    2569         WinSendMsg(pAD->hwndMenu, MM_DELETEITEM,
    2570                    MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID);
    2571         WinSendMsg(pAD->hwndMenu, MM_DELETEITEM,
    2572                    MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID);
     2587        WinSendMsg(pAD->hwndMenu, MM_DELETEITEM,
     2588                   MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID);
     2589        WinSendMsg(pAD->hwndMenu, MM_DELETEITEM,
     2590                   MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID);
    25732591      }
    25742592      pAD->hwndClient = hwnd;
     
    25782596      pAD->multiplier = 1;
    25792597      if (_beginthread(MakeSeeObjWinThread, NULL, 122880, (PVOID) pAD) == -1)
    2580         Runtime_Error(pszSrcFile, __LINE__,
    2581                       GetPString(IDS_COULDNTSTARTTHREADTEXT));
     2598        Runtime_Error(pszSrcFile, __LINE__,
     2599                      GetPString(IDS_COULDNTSTARTTHREADTEXT));
    25822600      else {
    2583         if (!DosCreateMutexSem(NULL, &pAD->hmtxScan, 0, FALSE)) {
    2584           pAD->hwndStatus = WinCreateWindow(hwndFrame,
    2585                                             WC_SEESTATUS,
    2586                                             NullStr,
    2587                                             WS_VISIBLE | SS_TEXT |
    2588                                             DT_LEFT | DT_VCENTER,
    2589                                             0,
    2590                                             0,
    2591                                             0,
    2592                                             0,
    2593                                             hwndFrame,
    2594                                             HWND_TOP,
    2595                                             SEEALL_STATUS, NULL, NULL);
    2596           if (!pAD->hwndStatus)
    2597             Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__,
    2598                        IDS_WINCREATEWINDOW);
    2599           else {
    2600             PFNWP oldproc;
    2601 
    2602             oldproc = WinSubclassWindow(hwndFrame, SeeFrameWndProc);
    2603             WinSetWindowPtr(hwndFrame, QWL_USER, (PVOID) oldproc);
    2604           }
    2605           break;
    2606         }
     2601        if (!DosCreateMutexSem(NULL, &pAD->hmtxScan, 0, FALSE)) {
     2602          pAD->hwndStatus = WinCreateWindow(hwndFrame,
     2603                                            WC_SEESTATUS,
     2604                                            NullStr,
     2605                                            WS_VISIBLE | SS_TEXT |
     2606                                            DT_LEFT | DT_VCENTER,
     2607                                            0,
     2608                                            0,
     2609                                            0,
     2610                                            0,
     2611                                            hwndFrame,
     2612                                            HWND_TOP,
     2613                                            SEEALL_STATUS, NULL, NULL);
     2614          if (!pAD->hwndStatus)
     2615            Win_Error2(hwndFrame, hwnd, pszSrcFile, __LINE__,
     2616                       IDS_WINCREATEWINDOW);
     2617          else {
     2618            PFNWP oldproc;
     2619
     2620            oldproc = WinSubclassWindow(hwndFrame, SeeFrameWndProc);
     2621            WinSetWindowPtr(hwndFrame, QWL_USER, (PVOID) oldproc);
     2622          }
     2623          break;
     2624        }
    26072625      }
    26082626    }
     
    26142632    if (pAD) {
    26152633      if (mp1 && *((CHAR *)mp1))
    2616         strcpy(pAD->szFindPath, (CHAR *)mp1);
     2634        strcpy(pAD->szFindPath, (CHAR *)mp1);
    26172635      else {
    2618         if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc,
    2619                        FM3ModHandle, DRVS_FRAME, (PVOID) pAD)) {
    2620           PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);
    2621           return 0;
    2622         }
     2636        if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc,
     2637                       FM3ModHandle, DRVS_FRAME, (PVOID) pAD)) {
     2638          PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);
     2639          return 0;
     2640        }
    26232641      }
    26242642      if (_beginthread(FindAllThread, NULL, 524288, (PVOID) hwnd) == -1) {
    2625         Runtime_Error(pszSrcFile, __LINE__,
    2626                       GetPString(IDS_COULDNTSTARTTHREADTEXT));
    2627         PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);
     2643        Runtime_Error(pszSrcFile, __LINE__,
     2644                      GetPString(IDS_COULDNTSTARTTHREADTEXT));
     2645        PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID);
    26282646      }
    26292647      else {
    2630         DosSleep(50);//05 Aug 07 GKY 100
    2631         PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
    2632         PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID);
     2648        DosSleep(50);//05 Aug 07 GKY 100
     2649        PostMsg(hwnd, UM_SETUP, MPVOID, MPVOID);
     2650        PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID);
    26332651      }
    26342652    }
     
    26442662      rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
    26452663      if (!rc) {
    2646         WinSetPointer(HWND_DESKTOP, hptrBusy);
    2647         if (UpdateList(hwnd, mp1)) {
    2648           FreeList(mp1);
    2649           RemoveDeleted(hwnd);
    2650           ReSort(hwnd);
    2651           WinInvalidateRect(hwnd, NULL, FALSE);
    2652         }
    2653         DosReleaseMutexSem(pAD->hmtxScan);
    2654         WinSetPointer(HWND_DESKTOP, hptrArrow);
     2664        WinSetPointer(HWND_DESKTOP, hptrBusy);
     2665        if (UpdateList(hwnd, mp1)) {
     2666          FreeList(mp1);
     2667          RemoveDeleted(hwnd);
     2668          ReSort(hwnd);
     2669          WinInvalidateRect(hwnd, NULL, FALSE);
     2670        }
     2671        DosReleaseMutexSem(pAD->hmtxScan);
     2672        WinSetPointer(HWND_DESKTOP, hptrArrow);
    26552673      }
    26562674    }
     
    26672685      strcpy(s, GetPString(IDS_SEEALLTITLETEXT));
    26682686      if (!*pAD->szFindPath) {
    2669         DosError(FERR_DISABLEHARDERR);
    2670         if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {
    2671           for (x = 2; x < 26 && !pAD->stopflag; x++) {
    2672             if ((ulDriveMap & (1 << x)) && pAD->abDrvFlags[x]) {
    2673               sprintf(&s[strlen(s)], "%s%c:", (once) ? ", " : " (", x + 'A');
    2674               once = TRUE;
    2675             }
    2676           }
    2677           if (once)
    2678             strcat(s, ")");
    2679         }
     2687        DosError(FERR_DISABLEHARDERR);
     2688        if (!DosQCurDisk(&ulDriveNum, &ulDriveMap)) {
     2689          for (x = 2; x < 26 && !pAD->stopflag; x++) {
     2690            if ((ulDriveMap & (1 << x)) && pAD->abDrvFlags[x]) {
     2691              sprintf(&s[strlen(s)], "%s%c:", (once) ? ", " : " (", x + 'A');
     2692              once = TRUE;
     2693            }
     2694          }
     2695          if (once)
     2696            strcat(s, ")");
     2697        }
    26802698      }
    26812699      else {
    2682         strcat(s, " (");
    2683         strcat(s, pAD->szFindPath);
    2684         strcat(s, ")");
     2700        strcat(s, " (");
     2701        strcat(s, pAD->szFindPath);
     2702        strcat(s, ")");
    26852703      }
    26862704      WinSetWindowText(WinQueryWindow(hwnd, QW_PARENT), s);
     
    26932711      pAD->multiplier = pAD->afindexcnt / 32767;
    26942712      if (pAD->multiplier * 32767 != pAD->afindexcnt)
    2695         pAD->multiplier++;
     2713        pAD->multiplier++;
    26962714      if (!pAD->multiplier)
    2697         pAD->multiplier++;
     2715        pAD->multiplier++;
    26982716      {
    2699         RECTL Rectl;
    2700         ULONG numlines;
    2701 
    2702         WinQueryWindowRect(hwnd, &Rectl);
    2703         numlines = NumLines(&Rectl, pAD);
    2704         if (numlines) {
    2705           WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,
    2706                      MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx),
    2707                      MPVOID);
    2708           WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE,
    2709                      MPFROM2SHORT((SHORT) numlines,
    2710                                   (SHORT) min(pAD->afindexcnt, 32767)),
    2711                      MPFROM2SHORT(1, pAD->afindexcnt + 1));
    2712           WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
    2713                      MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
    2714                      MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
    2715           WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
    2716                      MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)),
    2717                      MPFROM2SHORT(1,
    2718                                   (SHORT) (pAD->afindexcnt / pAD->multiplier) -
    2719                                   (numlines - 1)));
    2720           if (pAD->afindexcnt - pAD->topfile < numlines) {
    2721             pAD->topfile = ((pAD->afindexcnt - pAD->topfile) - numlines);
    2722             WinInvalidateRect(hwnd, NULL, FALSE);
    2723           }
    2724         }
     2717        RECTL Rectl;
     2718        ULONG numlines;
     2719
     2720        WinQueryWindowRect(hwnd, &Rectl);
     2721        numlines = NumLines(&Rectl, pAD);
     2722        if (numlines) {
     2723          WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,
     2724                     MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx),
     2725                     MPVOID);
     2726          WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE,
     2727                     MPFROM2SHORT((SHORT) numlines,
     2728                                  (SHORT) min(pAD->afindexcnt, 32767)),
     2729                     MPFROM2SHORT(1, pAD->afindexcnt + 1));
     2730          WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
     2731                     MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
     2732                     MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
     2733          WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
     2734                     MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)),
     2735                     MPFROM2SHORT(1,
     2736                                  (SHORT) (pAD->afindexcnt / pAD->multiplier) -
     2737                                  (numlines - 1)));
     2738          if (pAD->afindexcnt - pAD->topfile < numlines) {
     2739            pAD->topfile = ((pAD->afindexcnt - pAD->topfile) - numlines);
     2740            WinInvalidateRect(hwnd, NULL, FALSE);
     2741          }
     2742        }
    27252743      }
    27262744    }
     
    27392757    if (pAD && !pAD->stopflag) {
    27402758      if (DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    2741         CHAR s[CCHMAXPATH + 80], tm[34];
    2742 
    2743         if (mp1) {
    2744           strcpy(s, GetPString(IDS_SORTINGTEXT));
    2745           if (pAD->afindexcnt) {
    2746             commafmt(tm, sizeof(tm), pAD->afindexcnt);
    2747             strcat(s, tm);
    2748           }
    2749         }
    2750         else {
    2751           strcpy(s, GetPString(IDS_WORKINGTEXT));
    2752           if (pAD->afheadcnt) {
    2753             commafmt(tm, sizeof(tm), pAD->afheadcnt);
    2754             strcat(s, tm);
    2755           }
    2756         }
    2757         if (mp2) {
    2758           strcat(s, " ");
    2759           strcat(s, (CHAR *)mp2);
    2760         }
    2761         WinSetWindowText(pAD->hwndStatus, s);
     2759        CHAR s[CCHMAXPATH + 80], tm[34];
     2760
     2761        if (mp1) {
     2762          strcpy(s, GetPString(IDS_SORTINGTEXT));
     2763          if (pAD->afindexcnt) {
     2764            commafmt(tm, sizeof(tm), pAD->afindexcnt);
     2765            strcat(s, tm);
     2766          }
     2767        }
     2768        else {
     2769          strcpy(s, GetPString(IDS_WORKINGTEXT));
     2770          if (pAD->afheadcnt) {
     2771            commafmt(tm, sizeof(tm), pAD->afheadcnt);
     2772            strcat(s, tm);
     2773          }
     2774        }
     2775        if (mp2) {
     2776          strcat(s, " ");
     2777          strcat(s, (CHAR *)mp2);
     2778        }
     2779        WinSetWindowText(pAD->hwndStatus, s);
    27622780      }
    27632781      else {
    2764         CHAR s[(CCHMAXPATH * 2) + 80], tm[34], ts[34], tb[34];
    2765         ULONG y;
    2766 
    2767         if (mp1) {
    2768           strcpy(s, GetPString(IDS_SORTINGTEXT));
    2769           if (pAD->afindexcnt) {
    2770             commafmt(tm, sizeof(tm), pAD->afindexcnt);
    2771             strcat(s, tm);
    2772           }
    2773           if (mp2) {
    2774             strcat(s, " ");
    2775             strcat(s, (CHAR *)mp2);
    2776           }
    2777         }
    2778         else if (pAD->afindexcnt) {
    2779           y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - (pAD->cursored - 1) :
    2780             pAD->cursored - 1;
    2781           commafmt(tm, sizeof(tm), pAD->afindexcnt);
    2782           commafmt(ts, sizeof(ts), pAD->selected);
    2783           CommaFmtULL(tb, sizeof(tb), pAD->ullSelectedBytes, ' ');
    2784           sprintf(s,
    2785                   " %s %s%s%s  %s %s (%s)  %s %s",
    2786                   tm,
    2787                   GetPString(IDS_FILETEXT),
    2788                   &"s"[pAD->afindexcnt == 1],
    2789                   (*pAD->mask.szMask ||
    2790                    (pAD->mask.attrFile & (~FILE_DIRECTORY)) !=
    2791                    (ALLATTRS & (~FILE_DIRECTORY)) ||
    2792                    pAD->mask.antiattr) ?
    2793                   GetPString(IDS_FILTEREDTEXT) :
    2794                   NullStr,
    2795                   ts,
    2796                   GetPString(IDS_SELECTEDTEXT),
    2797                   tb, GetPString(IDS_CURRTEXT), pAD->afindex[y]->fullname);
    2798         }
    2799         else
    2800           sprintf(s,
    2801                   GetPString(IDS_NOFILESPSTEXT),
    2802                   (*pAD->mask.szMask ||
    2803                    (pAD->mask.attrFile & (~FILE_DIRECTORY)) !=
    2804                    (ALLATTRS & (~FILE_DIRECTORY)) ||
    2805                    pAD->mask.antiattr) ?
    2806                   GetPString(IDS_FILTEREDTEXT) : NullStr);
    2807         WinSetWindowText(pAD->hwndStatus, s);
    2808         DosReleaseMutexSem(pAD->hmtxScan);
     2782        CHAR s[(CCHMAXPATH * 2) + 80], tm[34], ts[34], tb[34];
     2783        ULONG y;
     2784
     2785        if (mp1) {
     2786          strcpy(s, GetPString(IDS_SORTINGTEXT));
     2787          if (pAD->afindexcnt) {
     2788            commafmt(tm, sizeof(tm), pAD->afindexcnt);
     2789            strcat(s, tm);
     2790          }
     2791          if (mp2) {
     2792            strcat(s, " ");
     2793            strcat(s, (CHAR *)mp2);
     2794          }
     2795        }
     2796        else if (pAD->afindexcnt) {
     2797          y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - (pAD->cursored - 1) :
     2798            pAD->cursored - 1;
     2799          commafmt(tm, sizeof(tm), pAD->afindexcnt);
     2800          commafmt(ts, sizeof(ts), pAD->selected);
     2801          CommaFmtULL(tb, sizeof(tb), pAD->ullSelectedBytes, ' ');
     2802          sprintf(s,
     2803                  " %s %s%s%s  %s %s (%s)  %s %s",
     2804                  tm,
     2805                  GetPString(IDS_FILETEXT),
     2806                  &"s"[pAD->afindexcnt == 1],
     2807                  (*pAD->mask.szMask ||
     2808                   (pAD->mask.attrFile & (~FILE_DIRECTORY)) !=
     2809                   (ALLATTRS & (~FILE_DIRECTORY)) ||
     2810                   pAD->mask.antiattr) ?
     2811                  GetPString(IDS_FILTEREDTEXT) :
     2812                  NullStr,
     2813                  ts,
     2814                  GetPString(IDS_SELECTEDTEXT),
     2815                  tb, GetPString(IDS_CURRTEXT), pAD->afindex[y]->fullname);
     2816        }
     2817        else
     2818          sprintf(s,
     2819                  GetPString(IDS_NOFILESPSTEXT),
     2820                  (*pAD->mask.szMask ||
     2821                   (pAD->mask.attrFile & (~FILE_DIRECTORY)) !=
     2822                   (ALLATTRS & (~FILE_DIRECTORY)) ||
     2823                   pAD->mask.antiattr) ?
     2824                  GetPString(IDS_FILTEREDTEXT) : NullStr);
     2825        WinSetWindowText(pAD->hwndStatus, s);
     2826        DosReleaseMutexSem(pAD->hmtxScan);
    28092827      }
    28102828    }
     
    28322850      numlines = NumLines(&rcl, pAD);
    28332851      if (numlines) {
    2834         if (SHORT1FROMMP(mp1) & KC_VIRTUALKEY) {
    2835           pAD->lasttime = 0;
    2836           *pAD->szCommonName = 0;
    2837           switch (SHORT2FROMMP(mp2)) {
    2838           case VK_DELETE:
    2839             if ((shiftstate & KC_CTRL) == KC_CTRL)
    2840               PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_PERMDELETE, 0),
    2841                       MPVOID);
    2842             else if ((shiftstate & KC_SHIFT) == KC_SHIFT)
    2843               PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_SAVETOCLIP, 0),
    2844                       MPVOID);
    2845             else
    2846               PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_DELETE, 0), MPVOID);
    2847             break;
    2848           case VK_LEFT:
    2849             WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0),
    2850                        MPFROM2SHORT(0, SB_LINELEFT));
    2851             break;
    2852           case VK_RIGHT:
    2853             WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0),
    2854                        MPFROM2SHORT(0, SB_LINERIGHT));
    2855             break;
    2856           case VK_PAGEUP:
    2857             WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
    2858                        MPFROM2SHORT(0, SB_PAGEUP));
    2859             break;
    2860           case VK_PAGEDOWN:
    2861             WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
    2862                        MPFROM2SHORT(0, SB_PAGEDOWN));
    2863             break;
    2864           case VK_UP:
    2865             if (pAD->cursored > 1) {
    2866               if (shiftstate & KC_SHIFT)
    2867                 WinSendMsg(hwnd, WM_BUTTON1CLICK,
    2868                            MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
    2869                                         ((rcl.yTop - (pAD->lMaxHeight *
    2870                                                       ((pAD->cursored) -
    2871                                                        pAD->topfile))) -
    2872                                         pAD->lMaxDescender) - 1),
    2873                            MPFROM2SHORT(TRUE, 0));
    2874               pAD->cursored--;
    2875               if (pAD->cursored < pAD->topfile) {
    2876                 PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl);
    2877                 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
    2878                            MPFROM2SHORT(0, SB_LINEUP));
    2879               }
    2880               else {
    2881                 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    2882                           &rcl);
    2883                 PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl);
    2884               }
    2885               PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    2886             }
    2887             break;
    2888           case VK_DOWN:
    2889             if (pAD->cursored < pAD->afindexcnt
    2890                 && pAD->cursored < pAD->topfile + numlines) {
    2891               if (shiftstate & KC_SHIFT)
    2892                 WinSendMsg(hwnd, WM_BUTTON1CLICK,
    2893                            MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
    2894                                         ((rcl.yTop - (pAD->lMaxHeight *
    2895                                                       ((pAD->cursored) -
    2896                                                        pAD->topfile))) -
    2897                                         pAD->lMaxDescender) - 1),
    2898                            MPFROM2SHORT(TRUE, 0));
    2899               pAD->cursored++;
    2900               if (pAD->cursored >= pAD->topfile + numlines) {
    2901                 PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile,
    2902                           &rcl);
    2903                 WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
    2904                            MPFROM2SHORT(0, SB_LINEDOWN));
    2905               }
    2906               else {
    2907                 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    2908                           &rcl);
    2909                 PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile,
    2910                           &rcl);
    2911               }
    2912               PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    2913             }
    2914             break;
    2915           case VK_END:
    2916             if ((shiftstate & KC_CTRL) ||
    2917                 pAD->cursored == (pAD->topfile - 1) + numlines) {
    2918               pAD->cursored = pAD->afindexcnt;
    2919               pAD->topfile = (pAD->afindexcnt + 1) - numlines;
    2920               if (pAD->topfile > pAD->afindexcnt)
    2921                 pAD->topfile = 1;
    2922               WinInvalidateRect(hwnd, NULL, FALSE);
    2923             }
    2924             else {
    2925               pAD->cursored = (pAD->topfile - 1) + numlines;
    2926               if (pAD->cursored > pAD->afindexcnt)
    2927                 pAD->cursored = pAD->afindexcnt;
    2928               PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    2929                         &rcl);
    2930               PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl);
    2931               PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    2932             }
    2933             break;
    2934           case VK_HOME:
    2935             if ((shiftstate & KC_CTRL) || pAD->cursored == pAD->topfile) {
    2936               pAD->topfile = 1;
    2937               pAD->cursored = 1;
    2938               WinInvalidateRect(hwnd, NULL, FALSE);
    2939             }
    2940             else {
    2941               pAD->cursored = pAD->topfile;
    2942               PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    2943                         &rcl);
    2944               PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl);
    2945               PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    2946             }
    2947             break;
    2948           case VK_SPACE:
    2949             WinSendMsg(hwnd, WM_BUTTON1CLICK,
    2950                        MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
    2951                                     ((rcl.yTop - (pAD->lMaxHeight *
    2952                                                   ((pAD->cursored) -
    2953                                                    pAD->topfile))) -
    2954                                      pAD->lMaxDescender) - 1),
    2955                        MPFROM2SHORT(TRUE, 0));
    2956             break;
    2957           case VK_NEWLINE:
    2958           case VK_ENTER:
    2959             WinSendMsg(hwnd, WM_BUTTON1DBLCLK,
    2960                        MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
    2961                                     ((rcl.yTop - (pAD->lMaxHeight *
    2962                                                   ((pAD->cursored) -
    2963                                                    pAD->topfile))) -
    2964                                      pAD->lMaxDescender) - 1), MPFROM2SHORT(0,
    2965                                                                             0));
    2966             break;
    2967           }
    2968         }
    2969         else if (SHORT1FROMMP(mp1) & KC_CHAR) {
    2970           switch (SHORT1FROMMP(mp2)) {
    2971           case '\x1b':
    2972           case '\r':
    2973           case '\n':
    2974             WinSendMsg(hwnd, WM_BUTTON1DBLCLK,
    2975                        MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
    2976                                     (rcl.yTop - (pAD->lMaxHeight *
    2977                                                 ((pAD->cursored) -
    2978                                                   pAD->topfile))) - 1),
    2979                        MPFROM2SHORT(0, 0));
    2980             pAD->lasttime = 0;
    2981             *pAD->szCommonName = 0;
    2982             break;
    2983           default:
    2984             thistime = WinQueryMsgTime(WinQueryAnchorBlock(hwnd));
    2985             if (thistime > pAD->lasttime + 1000)
    2986               *pAD->szCommonName = 0;
    2987             pAD->lasttime = thistime;
    2988           KbdRetry:
    2989             len = strlen(pAD->szCommonName);
    2990             if (len >= CCHMAXPATH - 1) {
    2991               *pAD->szCommonName = 0;
    2992               len = 0;
    2993             }
    2994             pAD->szCommonName[len] = toupper(SHORT1FROMMP(mp2));
    2995             pAD->szCommonName[len + 1] = 0;
    2996             for (x = pAD->cursored - (len > 0); x < pAD->afindexcnt; x++) {
    2997               y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
    2998               if (pAD->fullnames) {
    2999                 if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName,
    3000                               len + 1)) {
    3001                   found = TRUE;
    3002                   break;
    3003                 }
    3004               }
    3005               else {
    3006                 if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName,
    3007                               len + 1)) {
    3008                   found = TRUE;
    3009                   break;
    3010                 }
    3011               }
    3012             }
    3013             if (!found) {
    3014               for (x = 0; x < pAD->cursored - (len > 0); x++) {
    3015                 y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
    3016                 if (pAD->fullnames) {
    3017                   if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName,
    3018                                 len + 1)) {
    3019                     found = TRUE;
    3020                     break;
    3021                   }
    3022                 }
    3023                 else {
    3024                   if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName,
    3025                                 len + 1)) {
    3026                     found = TRUE;
    3027                     break;
    3028                   }
    3029                 }
    3030               }
    3031             }
    3032             if (found) {
    3033               if (x + 1 != pAD->cursored) {
    3034                 pAD->cursored = x + 1;
    3035                 if (pAD->cursored >= pAD->topfile &&
    3036                     pAD->cursored < pAD->topfile + numlines &&
    3037                     wascursored != pAD->cursored) {
    3038                   PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    3039                             &rcl);
    3040                   PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,
    3041                             &rcl);
    3042                 }
    3043                 else {
    3044                   if (pAD->cursored < numlines)
    3045                     pAD->topfile = 1;
    3046                   else if (pAD->cursored >
    3047                            (pAD->afindexcnt + 1) - (numlines / 2))
    3048                     pAD->topfile = (pAD->afindexcnt + 1) - numlines;
    3049                   else
    3050                     pAD->topfile = pAD->cursored - (numlines / 2);
    3051                   WinInvalidateRect(hwnd, NULL, FALSE);
    3052                 }
    3053               }
    3054             }
    3055             else {
    3056               *pAD->szCommonName = 0;
    3057               pAD->lasttime = 0;
    3058               if (len)                  // retry as first letter if no match
    3059                 goto KbdRetry;
    3060             }
    3061             break;
    3062           }
    3063         }
     2852        if (SHORT1FROMMP(mp1) & KC_VIRTUALKEY) {
     2853          pAD->lasttime = 0;
     2854          *pAD->szCommonName = 0;
     2855          switch (SHORT2FROMMP(mp2)) {
     2856          case VK_DELETE:
     2857            if ((shiftstate & KC_CTRL) == KC_CTRL)
     2858              PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_PERMDELETE, 0),
     2859                      MPVOID);
     2860            else if ((shiftstate & KC_SHIFT) == KC_SHIFT)
     2861              PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_SAVETOCLIP, 0),
     2862                      MPVOID);
     2863            else
     2864              PostMsg(hwnd, WM_COMMAND, MPFROM2SHORT(IDM_DELETE, 0), MPVOID);
     2865            break;
     2866          case VK_LEFT:
     2867            WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0),
     2868                       MPFROM2SHORT(0, SB_LINELEFT));
     2869            break;
     2870          case VK_RIGHT:
     2871            WinSendMsg(hwnd, WM_HSCROLL, MPFROM2SHORT(FID_HORZSCROLL, 0),
     2872                       MPFROM2SHORT(0, SB_LINERIGHT));
     2873            break;
     2874          case VK_PAGEUP:
     2875            WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
     2876                       MPFROM2SHORT(0, SB_PAGEUP));
     2877            break;
     2878          case VK_PAGEDOWN:
     2879            WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
     2880                       MPFROM2SHORT(0, SB_PAGEDOWN));
     2881            break;
     2882          case VK_UP:
     2883            if (pAD->cursored > 1) {
     2884              if (shiftstate & KC_SHIFT)
     2885                WinSendMsg(hwnd, WM_BUTTON1CLICK,
     2886                           MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
     2887                                        ((rcl.yTop - (pAD->lMaxHeight *
     2888                                                      ((pAD->cursored) -
     2889                                                       pAD->topfile))) -
     2890                                        pAD->lMaxDescender) - 1),
     2891                           MPFROM2SHORT(TRUE, 0));
     2892              pAD->cursored--;
     2893              if (pAD->cursored < pAD->topfile) {
     2894                PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl);
     2895                WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
     2896                           MPFROM2SHORT(0, SB_LINEUP));
     2897              }
     2898              else {
     2899                PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     2900                          &rcl);
     2901                PaintLine(hwnd, pAD->hps, pAD->cursored, pAD->topfile, &rcl);
     2902              }
     2903              PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     2904            }
     2905            break;
     2906          case VK_DOWN:
     2907            if (pAD->cursored < pAD->afindexcnt
     2908                && pAD->cursored < pAD->topfile + numlines) {
     2909              if (shiftstate & KC_SHIFT)
     2910                WinSendMsg(hwnd, WM_BUTTON1CLICK,
     2911                           MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
     2912                                        ((rcl.yTop - (pAD->lMaxHeight *
     2913                                                      ((pAD->cursored) -
     2914                                                       pAD->topfile))) -
     2915                                        pAD->lMaxDescender) - 1),
     2916                           MPFROM2SHORT(TRUE, 0));
     2917              pAD->cursored++;
     2918              if (pAD->cursored >= pAD->topfile + numlines) {
     2919                PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile,
     2920                          &rcl);
     2921                WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
     2922                           MPFROM2SHORT(0, SB_LINEDOWN));
     2923              }
     2924              else {
     2925                PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     2926                          &rcl);
     2927                PaintLine(hwnd, pAD->hps, pAD->cursored - 2, pAD->topfile,
     2928                          &rcl);
     2929              }
     2930              PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     2931            }
     2932            break;
     2933          case VK_END:
     2934            if ((shiftstate & KC_CTRL) ||
     2935                pAD->cursored == (pAD->topfile - 1) + numlines) {
     2936              pAD->cursored = pAD->afindexcnt;
     2937              pAD->topfile = (pAD->afindexcnt + 1) - numlines;
     2938              if (pAD->topfile > pAD->afindexcnt)
     2939                pAD->topfile = 1;
     2940              WinInvalidateRect(hwnd, NULL, FALSE);
     2941            }
     2942            else {
     2943              pAD->cursored = (pAD->topfile - 1) + numlines;
     2944              if (pAD->cursored > pAD->afindexcnt)
     2945                pAD->cursored = pAD->afindexcnt;
     2946              PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     2947                        &rcl);
     2948              PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl);
     2949              PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     2950            }
     2951            break;
     2952          case VK_HOME:
     2953            if ((shiftstate & KC_CTRL) || pAD->cursored == pAD->topfile) {
     2954              pAD->topfile = 1;
     2955              pAD->cursored = 1;
     2956              WinInvalidateRect(hwnd, NULL, FALSE);
     2957            }
     2958            else {
     2959              pAD->cursored = pAD->topfile;
     2960              PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     2961                        &rcl);
     2962              PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &rcl);
     2963              PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     2964            }
     2965            break;
     2966          case VK_SPACE:
     2967            WinSendMsg(hwnd, WM_BUTTON1CLICK,
     2968                       MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
     2969                                    ((rcl.yTop - (pAD->lMaxHeight *
     2970                                                  ((pAD->cursored) -
     2971                                                   pAD->topfile))) -
     2972                                     pAD->lMaxDescender) - 1),
     2973                       MPFROM2SHORT(TRUE, 0));
     2974            break;
     2975          case VK_NEWLINE:
     2976          case VK_ENTER:
     2977            WinSendMsg(hwnd, WM_BUTTON1DBLCLK,
     2978                       MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
     2979                                    ((rcl.yTop - (pAD->lMaxHeight *
     2980                                                  ((pAD->cursored) -
     2981                                                   pAD->topfile))) -
     2982                                     pAD->lMaxDescender) - 1), MPFROM2SHORT(0,
     2983                                                                            0));
     2984            break;
     2985          }
     2986        }
     2987        else if (SHORT1FROMMP(mp1) & KC_CHAR) {
     2988          switch (SHORT1FROMMP(mp2)) {
     2989          case '\x1b':
     2990          case '\r':
     2991          case '\n':
     2992            WinSendMsg(hwnd, WM_BUTTON1DBLCLK,
     2993                       MPFROM2SHORT(pAD->fattrs.lAveCharWidth + 2,
     2994                                    (rcl.yTop - (pAD->lMaxHeight *
     2995                                                ((pAD->cursored) -
     2996                                                  pAD->topfile))) - 1),
     2997                       MPFROM2SHORT(0, 0));
     2998            pAD->lasttime = 0;
     2999            *pAD->szCommonName = 0;
     3000            break;
     3001          default:
     3002            thistime = WinQueryMsgTime(WinQueryAnchorBlock(hwnd));
     3003            if (thistime > pAD->lasttime + 1000)
     3004              *pAD->szCommonName = 0;
     3005            pAD->lasttime = thistime;
     3006          KbdRetry:
     3007            len = strlen(pAD->szCommonName);
     3008            if (len >= CCHMAXPATH - 1) {
     3009              *pAD->szCommonName = 0;
     3010              len = 0;
     3011            }
     3012            pAD->szCommonName[len] = toupper(SHORT1FROMMP(mp2));
     3013            pAD->szCommonName[len + 1] = 0;
     3014            for (x = pAD->cursored - (len > 0); x < pAD->afindexcnt; x++) {
     3015              y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
     3016              if (pAD->fullnames) {
     3017                if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName,
     3018                              len + 1)) {
     3019                  found = TRUE;
     3020                  break;
     3021                }
     3022              }
     3023              else {
     3024                if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName,
     3025                              len + 1)) {
     3026                  found = TRUE;
     3027                  break;
     3028                }
     3029              }
     3030            }
     3031            if (!found) {
     3032              for (x = 0; x < pAD->cursored - (len > 0); x++) {
     3033                y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
     3034                if (pAD->fullnames) {
     3035                  if (!strnicmp(pAD->afindex[y]->fullname, pAD->szCommonName,
     3036                                len + 1)) {
     3037                    found = TRUE;
     3038                    break;
     3039                  }
     3040                }
     3041                else {
     3042                  if (!strnicmp(pAD->afindex[y]->filename, pAD->szCommonName,
     3043                                len + 1)) {
     3044                    found = TRUE;
     3045                    break;
     3046                  }
     3047                }
     3048              }
     3049            }
     3050            if (found) {
     3051              if (x + 1 != pAD->cursored) {
     3052                pAD->cursored = x + 1;
     3053                if (pAD->cursored >= pAD->topfile &&
     3054                    pAD->cursored < pAD->topfile + numlines &&
     3055                    wascursored != pAD->cursored) {
     3056                  PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     3057                            &rcl);
     3058                  PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,
     3059                            &rcl);
     3060                }
     3061                else {
     3062                  if (pAD->cursored < numlines)
     3063                    pAD->topfile = 1;
     3064                  else if (pAD->cursored >
     3065                           (pAD->afindexcnt + 1) - (numlines / 2))
     3066                    pAD->topfile = (pAD->afindexcnt + 1) - numlines;
     3067                  else
     3068                    pAD->topfile = pAD->cursored - (numlines / 2);
     3069                  WinInvalidateRect(hwnd, NULL, FALSE);
     3070                }
     3071              }
     3072            }
     3073            else {
     3074              *pAD->szCommonName = 0;
     3075              pAD->lasttime = 0;
     3076              if (len)                  // retry as first letter if no match
     3077                goto KbdRetry;
     3078            }
     3079            break;
     3080          }
     3081        }
    30643082      }
    30653083    }
     
    30783096      list = BuildAList(hwnd);
    30793097      if (!list)
    3080         Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
     3098        Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
    30813099      else {
    3082         WinSetWindowText(pAD->hwndStatus, GetPString(IDS_DRAGGINGFILESTEXT));
    3083         DragList(hwnd, (HWND) 0, list, TRUE);
    3084         FreeList(list);
    3085         PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     3100        WinSetWindowText(pAD->hwndStatus, GetPString(IDS_DRAGGINGFILESTEXT));
     3101        DragList(hwnd, (HWND) 0, list, TRUE);
     3102        FreeList(list);
     3103        PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    30863104      }
    30873105    }
     
    30903108  case WM_BUTTON1MOTIONSTART:
    30913109    if (pAD && !pAD->stopflag &&
    3092         !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     3110        !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    30933111      pAD->mousecaptured = TRUE;
    30943112      pAD->lastselected = (ULONG) - 1;
     
    31133131      numlines = NumLines(&Rectl, pAD);
    31143132      if (numlines) {
    3115         pts.x = SHORT1FROMMP(mp1);
    3116         pts.y = SHORT2FROMMP(mp1);
    3117         if (pts.y < 0) {
    3118           WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
    3119                      MPFROM2SHORT(0, SB_LINEDOWN));
    3120           pts.y = 1;
    3121           outofwindow = TRUE;
    3122         }
    3123         else if (pts.y > Rectl.yTop - Rectl.yBottom) {
    3124           WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
    3125                      MPFROM2SHORT(0, SB_LINEUP));
    3126           pts.y = (Rectl.yTop - Rectl.yBottom) - 1;
    3127           outofwindow = TRUE;
    3128         }
    3129         whichfile = ((Rectl.yTop - Rectl.yBottom) -
    3130                      ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight;
    3131         if (whichfile > numlines - 1)
    3132           whichfile = numlines - 1;
    3133         whichfile += (pAD->topfile - 1);
    3134         y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile;
    3135         if (y < pAD->afindexcnt && pAD->lastselected != whichfile) {
    3136           if (pAD->lastselected != (ULONG) - 1) {
    3137             inc = (pAD->lastselected < whichfile) ? 1 : -1;
    3138             for (x = pAD->lastselected + inc;
    3139                 x != whichfile && x < pAD->afindexcnt;
    3140                 (pAD->lastselected < whichfile) ? x++ : x--) {
    3141               y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
    3142               if (pAD->afindex[y]->flags & AF_SELECTED) {
    3143                 pAD->afindex[y]->flags &= ~AF_SELECTED;
    3144                 pAD->selected--;
    3145                 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
    3146               }
    3147               else {
    3148                 pAD->afindex[y]->flags |= AF_SELECTED;
    3149                 pAD->selected++;
    3150                 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
    3151               }
    3152               PaintLine(hwnd, pAD->hps, x, pAD->topfile, &Rectl);
    3153             }
    3154           }
    3155           WinSendMsg(hwnd, WM_BUTTON1CLICK, MPFROM2SHORT(pts.x, pts.y),
    3156                      MPFROM2SHORT(TRUE, 0));
    3157         }
     3133        pts.x = SHORT1FROMMP(mp1);
     3134        pts.y = SHORT2FROMMP(mp1);
     3135        if (pts.y < 0) {
     3136          WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
     3137                     MPFROM2SHORT(0, SB_LINEDOWN));
     3138          pts.y = 1;
     3139          outofwindow = TRUE;
     3140        }
     3141        else if (pts.y > Rectl.yTop - Rectl.yBottom) {
     3142          WinSendMsg(hwnd, WM_VSCROLL, MPFROM2SHORT(FID_VERTSCROLL, 0),
     3143                     MPFROM2SHORT(0, SB_LINEUP));
     3144          pts.y = (Rectl.yTop - Rectl.yBottom) - 1;
     3145          outofwindow = TRUE;
     3146        }
     3147        whichfile = ((Rectl.yTop - Rectl.yBottom) -
     3148                     ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight;
     3149        if (whichfile > numlines - 1)
     3150          whichfile = numlines - 1;
     3151        whichfile += (pAD->topfile - 1);
     3152        y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile;
     3153        if (y < pAD->afindexcnt && pAD->lastselected != whichfile) {
     3154          if (pAD->lastselected != (ULONG) - 1) {
     3155            inc = (pAD->lastselected < whichfile) ? 1 : -1;
     3156            for (x = pAD->lastselected + inc;
     3157                x != whichfile && x < pAD->afindexcnt;
     3158                (pAD->lastselected < whichfile) ? x++ : x--) {
     3159              y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
     3160              if (pAD->afindex[y]->flags & AF_SELECTED) {
     3161                pAD->afindex[y]->flags &= ~AF_SELECTED;
     3162                pAD->selected--;
     3163                pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
     3164              }
     3165              else {
     3166                pAD->afindex[y]->flags |= AF_SELECTED;
     3167                pAD->selected++;
     3168                pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
     3169              }
     3170              PaintLine(hwnd, pAD->hps, x, pAD->topfile, &Rectl);
     3171            }
     3172          }
     3173          WinSendMsg(hwnd, WM_BUTTON1CLICK, MPFROM2SHORT(pts.x, pts.y),
     3174                     MPFROM2SHORT(TRUE, 0));
     3175        }
    31583176      }
    31593177      if (outofwindow) {
    31603178
    3161         POINTL ptl;
    3162 
    3163         WinQueryPointerPos(HWND_DESKTOP, &ptl);
    3164         WinMapWindowPoints(HWND_DESKTOP, hwnd, &ptl, 1);
    3165         if ((SHORT) ptl.y == (SHORT) SHORT2FROMMP(mp1) &&
    3166             (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) &&
    3167             ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) {
    3168           PostMsg(hwnd, UM_MOUSEMOVE, mp1, MPVOID);
    3169           DosSleep(1);
    3170         }
     3179        POINTL ptl;
     3180
     3181        WinQueryPointerPos(HWND_DESKTOP, &ptl);
     3182        WinMapWindowPoints(HWND_DESKTOP, hwnd, &ptl, 1);
     3183        if ((SHORT) ptl.y == (SHORT) SHORT2FROMMP(mp1) &&
     3184            (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) &&
     3185            ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) {
     3186          PostMsg(hwnd, UM_MOUSEMOVE, mp1, MPVOID);
     3187          DosSleep(1);
     3188        }
    31713189      }
    31723190    }
     
    31833201      WinMapWindowPoints(HWND_DESKTOP, hwnd, &ptl, 1);
    31843202      if ((SHORT) ptl.y == (SHORT) SHORT2FROMMP(mp1) &&
    3185           (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) &&
    3186           ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) {
    3187         DosSleep(1);
    3188         PostMsg(hwnd, WM_MOUSEMOVE, mp1, MPFROM2SHORT(TRUE, 0));
     3203          (SHORT) ptl.x == (SHORT) SHORT1FROMMP(mp1) &&
     3204          ((SHORT) ptl.y < 0 || ptl.y > (Rectl.yTop - Rectl.yBottom))) {
     3205        DosSleep(1);
     3206        PostMsg(hwnd, WM_MOUSEMOVE, mp1, MPFROM2SHORT(TRUE, 0));
    31893207      }
    31903208    }
     
    32053223    shiftstate = (SHORT2FROMMP(mp2) & (KC_SHIFT | KC_ALT | KC_CTRL));
    32063224    if (pAD && !pAD->stopflag &&
    3207         !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     3225        !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    32083226
    32093227      ULONG numlines, whichfile, y, wascursored;
     
    32123230
    32133231      if (pAD->afindexcnt) {
    3214         WinQueryWindowRect(hwnd, &Rectl);
    3215         numlines = NumLines(&Rectl, pAD);
    3216         if (numlines) {
    3217           pts.x = SHORT1FROMMP(mp1);
    3218           pts.y = SHORT2FROMMP(mp1);
    3219           whichfile = ((Rectl.yTop - Rectl.yBottom) -
    3220                        ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight;
    3221           if (whichfile > numlines - 1)
    3222             whichfile = numlines - 1;
    3223           whichfile += (pAD->topfile - 1);
    3224           if (whichfile + 1 > pAD->afindexcnt)
    3225             break;
    3226           y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile;
    3227           wascursored = pAD->cursored;
    3228           pAD->cursored = whichfile + 1;
    3229           if (pAD->cursored != wascursored)
    3230             PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &Rectl);
    3231           if (y < pAD->afindexcnt) {
    3232             if (msg == WM_BUTTON1CLICK || fUnHilite) {
    3233               if (pAD->afindex[y]->flags & AF_SELECTED) {
    3234                 pAD->afindex[y]->flags &= ~AF_SELECTED;
    3235                 pAD->selected--;
    3236                 pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
    3237               }
    3238               else {
    3239                 pAD->afindex[y]->flags |= AF_SELECTED;
    3240                 pAD->selected++;
    3241                 pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
    3242               }
    3243               PaintLine(hwnd, pAD->hps, whichfile, pAD->topfile, &Rectl);
    3244               PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    3245             }
    3246           }
    3247           if (msg == WM_BUTTON1CLICK) {
    3248             if (pAD->lastselected != (ULONG) - 1) {
    3249               if (whichfile > pAD->lastselected)
    3250                 pAD->lastdirection = 1;
    3251               else
    3252                 pAD->lastdirection = 2;
    3253             }
    3254             else
    3255               pAD->lastdirection = 0;
    3256             pAD->lastselected = whichfile;
    3257           }
    3258           else
    3259             DefaultViewKeys(hwnd, pAD->hwndFrame, HWND_DESKTOP, NULL,
    3260                             pAD->afindex[y]->fullname);
    3261         }
     3232        WinQueryWindowRect(hwnd, &Rectl);
     3233        numlines = NumLines(&Rectl, pAD);
     3234        if (numlines) {
     3235          pts.x = SHORT1FROMMP(mp1);
     3236          pts.y = SHORT2FROMMP(mp1);
     3237          whichfile = ((Rectl.yTop - Rectl.yBottom) -
     3238                       ((LONG) pts.y + pAD->lMaxDescender)) / pAD->lMaxHeight;
     3239          if (whichfile > numlines - 1)
     3240            whichfile = numlines - 1;
     3241          whichfile += (pAD->topfile - 1);
     3242          if (whichfile + 1 > pAD->afindexcnt)
     3243            break;
     3244          y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - whichfile : whichfile;
     3245          wascursored = pAD->cursored;
     3246          pAD->cursored = whichfile + 1;
     3247          if (pAD->cursored != wascursored)
     3248            PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile, &Rectl);
     3249          if (y < pAD->afindexcnt) {
     3250            if (msg == WM_BUTTON1CLICK || fUnHilite) {
     3251              if (pAD->afindex[y]->flags & AF_SELECTED) {
     3252                pAD->afindex[y]->flags &= ~AF_SELECTED;
     3253                pAD->selected--;
     3254                pAD->ullSelectedBytes -= pAD->afindex[y]->cbFile;
     3255              }
     3256              else {
     3257                pAD->afindex[y]->flags |= AF_SELECTED;
     3258                pAD->selected++;
     3259                pAD->ullSelectedBytes += pAD->afindex[y]->cbFile;
     3260              }
     3261              PaintLine(hwnd, pAD->hps, whichfile, pAD->topfile, &Rectl);
     3262              PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     3263            }
     3264          }
     3265          if (msg == WM_BUTTON1CLICK) {
     3266            if (pAD->lastselected != (ULONG) - 1) {
     3267              if (whichfile > pAD->lastselected)
     3268                pAD->lastdirection = 1;
     3269              else
     3270                pAD->lastdirection = 2;
     3271            }
     3272            else
     3273              pAD->lastdirection = 0;
     3274            pAD->lastselected = whichfile;
     3275          }
     3276          else
     3277            DefaultViewKeys(hwnd, pAD->hwndFrame, HWND_DESKTOP, NULL,
     3278                            pAD->afindex[y]->fullname);
     3279        }
    32623280      }
    32633281      DosReleaseMutexSem(pAD->hmtxScan);
     
    32753293    if (pAD) {
    32763294      if (!pAD->hwndPopup) {
    3277         pAD->hwndPopup =
    3278           WinLoadMenu(HWND_DESKTOP, FM3ModHandle, SEEALL_POPUP);
     3295        pAD->hwndPopup =
     3296          WinLoadMenu(HWND_DESKTOP, FM3ModHandle, SEEALL_POPUP);
    32793297        if (pAD->hwndPopup) {
    3280           WinSetPresParam(pAD->hwndPopup, PP_FONTNAMESIZE,
    3281                           (ULONG) strlen(GetPString(IDS_8HELVTEXT)) + 1,
    3282                           (PVOID) GetPString(IDS_8HELVTEXT));
    3283           SetConditionalCascade(pAD->hwndPopup,
    3284                                 IDM_DELETESUBMENU,
    3285                                 (fDefaultDeletePerm) ?
    3286                                 IDM_PERMDELETE : IDM_DELETE);
    3287           SetConditionalCascade(pAD->hwndPopup, IDM_MOVEMENU, IDM_MOVE);
    3288           SetConditionalCascade(pAD->hwndPopup, IDM_COPYMENU, IDM_COPY);
    3289           SetConditionalCascade(pAD->hwndPopup, IDM_OPENSUBMENU,
    3290                                 IDM_OPENDEFAULT);
    3291           SetConditionalCascade(pAD->hwndMenu, IDM_OBJECTSUBMENU, IDM_SHADOW);
    3292           if (fWorkPlace) {
    3293             WinSendMsg(pAD->hwndPopup, MM_DELETEITEM,
    3294                        MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID);
    3295             WinSendMsg(pAD->hwndPopup, MM_DELETEITEM,
    3296                        MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID);
    3297           }
    3298         }
     3298          WinSetPresParam(pAD->hwndPopup, PP_FONTNAMESIZE,
     3299                          (ULONG) strlen(GetPString(IDS_8HELVTEXT)) + 1,
     3300                          (PVOID) GetPString(IDS_8HELVTEXT));
     3301          SetConditionalCascade(pAD->hwndPopup,
     3302                                IDM_DELETESUBMENU,
     3303                                (fDefaultDeletePerm) ?
     3304                                IDM_PERMDELETE : IDM_DELETE);
     3305          SetConditionalCascade(pAD->hwndPopup, IDM_MOVEMENU, IDM_MOVE);
     3306          SetConditionalCascade(pAD->hwndPopup, IDM_COPYMENU, IDM_COPY);
     3307          SetConditionalCascade(pAD->hwndPopup, IDM_OPENSUBMENU,
     3308                                IDM_OPENDEFAULT);
     3309          SetConditionalCascade(pAD->hwndMenu, IDM_OBJECTSUBMENU, IDM_SHADOW);
     3310          if (fWorkPlace) {
     3311            WinSendMsg(pAD->hwndPopup, MM_DELETEITEM,
     3312                       MPFROM2SHORT(IDM_OPENSUBMENU, TRUE), MPVOID);
     3313            WinSendMsg(pAD->hwndPopup, MM_DELETEITEM,
     3314                       MPFROM2SHORT(IDM_OBJECTSUBMENU, TRUE), MPVOID);
     3315          }
     3316        }
    32993317      }
    33003318      if (pAD->hwndPopup) {
    33013319
    3302         APIRET rc;
    3303 
    3304         rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
    3305         WinEnableMenuItem(pAD->hwndPopup, IDM_EAS, (rc == 0 &&
    3306                                                     pAD->selected != 0));
    3307         WinEnableMenuItem(pAD->hwndPopup, IDM_UUDECODE, (rc == 0 &&
    3308                                                         pAD->selected != 0));
    3309         WinEnableMenuItem(pAD->hwndPopup, IDM_EXTRACT, (rc == 0 &&
    3310                                                         pAD->selected != 0));
    3311         WinEnableMenuItem(pAD->hwndPopup, IDM_ARCHIVE, (rc == 0 &&
    3312                                                         pAD->selected != 0));
    3313         WinEnableMenuItem(pAD->hwndPopup, IDM_MOVEMENU, (rc == 0 &&
    3314                                                         pAD->selected != 0));
    3315         WinEnableMenuItem(pAD->hwndPopup, IDM_COPYMENU, (rc == 0 &&
    3316                                                         pAD->selected != 0));
    3317         WinEnableMenuItem(pAD->hwndPopup, IDM_RENAME, (rc == 0 &&
    3318                                                        pAD->selected != 0));
    3319         WinEnableMenuItem(pAD->hwndPopup, IDM_PRINT, (rc == 0 &&
    3320                                                       pAD->selected != 0));
    3321         WinEnableMenuItem(pAD->hwndPopup, IDM_SUBJECT, (rc == 0 &&
    3322                                                         pAD->selected != 0));
    3323         WinEnableMenuItem(pAD->hwndPopup, IDM_OPENSUBMENU, (rc == 0 &&
    3324                                                             pAD->selected !=
    3325                                                             0));
    3326         WinEnableMenuItem(pAD->hwndPopup, IDM_OBJECTSUBMENU,
    3327                           (rc == 0 && pAD->selected != 0));
    3328         WinEnableMenuItem(pAD->hwndPopup, IDM_DELETESUBMENU,
    3329                           (rc == 0 && pAD->selected != 0));
    3330         WinEnableMenuItem(pAD->hwndPopup, IDM_INFO,
    3331                           (rc == 0 && pAD->selected != 0));
    3332         WinEnableMenuItem(pAD->hwndPopup, IDM_ATTRS,
    3333                           (rc == 0 && pAD->selected != 0));
    3334         WinEnableMenuItem(pAD->hwndPopup, IDM_COLLECT,
    3335                           (rc == 0 && pAD->selected != 0));
    3336         WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOCLIP,
     3320        APIRET rc;
     3321
     3322        rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
     3323        WinEnableMenuItem(pAD->hwndPopup, IDM_EAS, (rc == 0 &&
     3324                                                    pAD->selected != 0));
     3325        WinEnableMenuItem(pAD->hwndPopup, IDM_UUDECODE, (rc == 0 &&
     3326                                                        pAD->selected != 0));
     3327        WinEnableMenuItem(pAD->hwndPopup, IDM_EXTRACT, (rc == 0 &&
     3328                                                        pAD->selected != 0));
     3329        WinEnableMenuItem(pAD->hwndPopup, IDM_ARCHIVE, (rc == 0 &&
     3330                                                        pAD->selected != 0));
     3331        WinEnableMenuItem(pAD->hwndPopup, IDM_MOVEMENU, (rc == 0 &&
     3332                                                        pAD->selected != 0));
     3333        WinEnableMenuItem(pAD->hwndPopup, IDM_COPYMENU, (rc == 0 &&
     3334                                                        pAD->selected != 0));
     3335        WinEnableMenuItem(pAD->hwndPopup, IDM_RENAME, (rc == 0 &&
     3336                                                       pAD->selected != 0));
     3337        WinEnableMenuItem(pAD->hwndPopup, IDM_PRINT, (rc == 0 &&
     3338                                                      pAD->selected != 0));
     3339        WinEnableMenuItem(pAD->hwndPopup, IDM_SUBJECT, (rc == 0 &&
     3340                                                        pAD->selected != 0));
     3341        WinEnableMenuItem(pAD->hwndPopup, IDM_OPENSUBMENU, (rc == 0 &&
     3342                                                            pAD->selected !=
     3343                                                            0));
     3344        WinEnableMenuItem(pAD->hwndPopup, IDM_OBJECTSUBMENU,
     3345                          (rc == 0 && pAD->selected != 0));
     3346        WinEnableMenuItem(pAD->hwndPopup, IDM_DELETESUBMENU,
     3347                          (rc == 0 && pAD->selected != 0));
     3348        WinEnableMenuItem(pAD->hwndPopup, IDM_INFO,
     3349                          (rc == 0 && pAD->selected != 0));
     3350        WinEnableMenuItem(pAD->hwndPopup, IDM_ATTRS,
     3351                          (rc == 0 && pAD->selected != 0));
     3352        WinEnableMenuItem(pAD->hwndPopup, IDM_COLLECT,
     3353                          (rc == 0 && pAD->selected != 0));
     3354        WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOCLIP,
    33373355                          (rc == 0 && pAD->selected != 0));
    33383356        WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOCLIPFILENAME,
    3339                           (rc == 0 && pAD->selected != 0));
    3340         WinEnableMenuItem(pAD->hwndPopup, IDM_APPENDTOCLIP,
     3357                          (rc == 0 && pAD->selected != 0));
     3358        WinEnableMenuItem(pAD->hwndPopup, IDM_APPENDTOCLIP,
    33413359                          (rc == 0 && pAD->selected != 0));
    33423360        WinEnableMenuItem(pAD->hwndPopup, IDM_APPENDTOCLIPFILENAME,
    3343                           (rc == 0 && pAD->selected != 0));
    3344         WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOLIST,
    3345                           (rc == 0 && pAD->selected != 0));
    3346         WinEnableMenuItem(pAD->hwndPopup, IDM_REMOVE,
    3347                           (rc == 0 && pAD->selected != 0));
    3348         WinEnableMenuItem(pAD->hwndPopup, IDM_HIDEALL,
    3349                           (rc == 0 && pAD->selected != 0));
    3350         WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTALL,
    3351                           (rc == 0 && pAD->afindexcnt != 0));
    3352         WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTMASK,
    3353                           (rc == 0 && pAD->afindexcnt != 0));
    3354         WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTALL,
    3355                           (rc == 0 && pAD->afindexcnt != 0));
    3356         WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTMASK,
    3357                           (rc == 0 && pAD->afindexcnt != 0));
    3358         WinEnableMenuItem(pAD->hwndPopup, IDM_INVERT,
    3359                           (rc == 0 && pAD->afindexcnt != 0));
    3360         WinEnableMenuItem(pAD->hwndPopup, IDM_FILTER,
    3361                           (rc == 0 && pAD->afheadcnt != 0));
    3362         if (!rc)
    3363           DosReleaseMutexSem(pAD->hmtxScan);
    3364         if (WinPopupMenu(hwnd, hwnd, pAD->hwndPopup, SHORT1FROMMP(mp1),
    3365                         SHORT2FROMMP(mp1), 0,
    3366                         PU_HCONSTRAIN | PU_VCONSTRAIN |
    3367                         PU_KEYBOARD | PU_MOUSEBUTTON1))
    3368           CenterOverWindow(pAD->hwndPopup);
     3361                          (rc == 0 && pAD->selected != 0));
     3362        WinEnableMenuItem(pAD->hwndPopup, IDM_SAVETOLIST,
     3363                          (rc == 0 && pAD->selected != 0));
     3364        WinEnableMenuItem(pAD->hwndPopup, IDM_REMOVE,
     3365                          (rc == 0 && pAD->selected != 0));
     3366        WinEnableMenuItem(pAD->hwndPopup, IDM_HIDEALL,
     3367                          (rc == 0 && pAD->selected != 0));
     3368        WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTALL,
     3369                          (rc == 0 && pAD->afindexcnt != 0));
     3370        WinEnableMenuItem(pAD->hwndPopup, IDM_SELECTMASK,
     3371                          (rc == 0 && pAD->afindexcnt != 0));
     3372        WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTALL,
     3373                          (rc == 0 && pAD->afindexcnt != 0));
     3374        WinEnableMenuItem(pAD->hwndPopup, IDM_DESELECTMASK,
     3375                          (rc == 0 && pAD->afindexcnt != 0));
     3376        WinEnableMenuItem(pAD->hwndPopup, IDM_INVERT,
     3377                          (rc == 0 && pAD->afindexcnt != 0));
     3378        WinEnableMenuItem(pAD->hwndPopup, IDM_FILTER,
     3379                          (rc == 0 && pAD->afheadcnt != 0));
     3380        if (!rc)
     3381          DosReleaseMutexSem(pAD->hmtxScan);
     3382        if (WinPopupMenu(hwnd, hwnd, pAD->hwndPopup, SHORT1FROMMP(mp1),
     3383                        SHORT2FROMMP(mp1), 0,
     3384                        PU_HCONSTRAIN | PU_VCONSTRAIN |
     3385                        PU_KEYBOARD | PU_MOUSEBUTTON1))
     3386          CenterOverWindow(pAD->hwndPopup);
    33693387      }
    33703388    }
     
    33783396      pAD->multiplier = 1;
    33793397      if (!pAD->afindexcnt) {
    3380         DosBeep(250, 50);
    3381         PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     3398        DosBeep(250, 50);
     3399        PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    33823400      }
    33833401      else {
    3384         DosBeep(1000, 25);
    3385         WinInvalidateRect(hwnd, NULL, FALSE);
    3386         PostMsg(hwnd, UM_SETUP3, MPVOID, MPVOID);
     3402        DosBeep(1000, 25);
     3403        WinInvalidateRect(hwnd, NULL, FALSE);
     3404        PostMsg(hwnd, UM_SETUP3, MPVOID, MPVOID);
    33873405      }
    33883406      WinSetWindowPos(WinQueryWindow(hwnd, QW_PARENT), HWND_TOP, 0, 0, 0, 0,
    3389                       SWP_SHOW | SWP_RESTORE | SWP_ACTIVATE | SWP_ZORDER);
     3407                      SWP_SHOW | SWP_RESTORE | SWP_ACTIVATE | SWP_ZORDER);
    33903408    }
    33913409    return 0;
     
    33933411  case WM_ERASEBACKGROUND:
    33943412    WinFillRect((HPS) mp1, (PRECTL) mp2,
    3395                 standardcolors[Colors[COLORS_NORMALBACK]]);
     3413                standardcolors[Colors[COLORS_NORMALBACK]]);
    33963414    return 0;
    33973415
     
    34113429      WinFillRect(hpsp, &Rectl, standardcolors[Colors[COLORS_NORMALBACK]]);
    34123430      if (!pAD->stopflag &&
    3413           !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    3414         WinQueryWindowRect(hwnd, &Rectl);
    3415         numlines = NumLines(&Rectl, pAD);
    3416         if (pAD->afindexcnt && numlines) {
    3417           if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)
    3418             pAD->topfile = (pAD->afindexcnt + 1) - numlines;
    3419           if (pAD->topfile > pAD->afindexcnt)
    3420             pAD->topfile = 1;
    3421           if (!pAD->topfile)
    3422             pAD->topfile = 1;
    3423           if (pAD->cursored < pAD->topfile)
    3424             pAD->cursored = pAD->topfile;
    3425           else if (pAD->cursored > (pAD->topfile + numlines) - 1)
    3426             pAD->cursored = (pAD->topfile + numlines) - 1;
    3427           if (pAD->cursored > pAD->afindexcnt)
    3428             pAD->cursored = pAD->afindexcnt;
    3429         }
    3430         else
    3431           pAD->topfile = pAD->cursored = 1;
    3432         if (numlines && pAD->afindexcnt) {
    3433           GpiSetBackMix(hpsp, BM_OVERPAINT);
    3434           wascursored = TRUE;
    3435           for (x = pAD->topfile - 1; x < pAD->afindexcnt; x++) {
    3436             ptl.x = pAD->horzscroll;
    3437             if (wascursored) {          /* reestablish normal colors */
    3438               GpiSetColor(pAD->hps,
    3439                           standardcolors[Colors[COLORS_NORMALFORE]]);
    3440               GpiSetBackColor(pAD->hps,
    3441                               standardcolors[Colors[COLORS_NORMALBACK]]);
    3442               wascursored = inverted = hidsys = reado = FALSE;
    3443             }
    3444             if (x == pAD->cursored - 1)
    3445               wascursored = TRUE;
    3446             y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
    3447             ptl.y = (Rectl.yTop -
    3448                      (pAD->lMaxHeight * (((x + 1) - pAD->topfile) + 1)));
    3449             if (ptl.y - pAD->lMaxDescender <= 0)
    3450               break;
    3451             if (pAD->afindex[y]->flags & AF_SELECTED) {
    3452               if (!inverted) {
    3453                 GpiSetColor(pAD->hps,
    3454                             standardcolors[Colors
    3455                                            [COLORS_SELECTEDNORMALFORE]]);
    3456                 GpiSetBackColor(pAD->hps,
    3457                                 (wascursored) ?
    3458                                 standardcolors[Colors
    3459                                                [COLORS_CURSOREDSELECTEDBACK]]
    3460                                 :
    3461                                 standardcolors[Colors[COLORS_SELECTEDBACK]]);
    3462                 inverted = TRUE;
    3463               }
    3464             }
    3465             else if (inverted ||
    3466                      ((pAD->afindex[y]->attrFile &
    3467                        (FILE_SYSTEM | FILE_HIDDEN)) != 0) != hidsys ||
    3468                      ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) !=
    3469                      reado) {
    3470               if (pAD->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) {
    3471                 GpiSetColor(pAD->hps,
    3472                             standardcolors[Colors[COLORS_SYSTEMFORE]]);
    3473                 hidsys = TRUE;
    3474               }
    3475               else if ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) {
    3476                 GpiSetColor(pAD->hps,
    3477                             standardcolors[Colors[COLORS_READONLYFORE]]);
    3478                 reado = TRUE;
    3479               }
    3480               else
    3481                 GpiSetColor(pAD->hps,
    3482                             standardcolors[Colors[COLORS_NORMALFORE]]);
    3483               GpiSetBackColor(pAD->hps,
    3484                               (wascursored) ?
    3485                               standardcolors[Colors
    3486                                              [COLORS_CURSOREDNORMALBACK]] :
    3487                               standardcolors[Colors[COLORS_NORMALBACK]]);
    3488               inverted = FALSE;
    3489             }
    3490             else if (wascursored)
    3491               GpiSetBackColor(pAD->hps,
    3492                               standardcolors[Colors
    3493                                              [COLORS_CURSOREDNORMALBACK]]);
     3431          !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     3432        WinQueryWindowRect(hwnd, &Rectl);
     3433        numlines = NumLines(&Rectl, pAD);
     3434        if (pAD->afindexcnt && numlines) {
     3435          if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)
     3436            pAD->topfile = (pAD->afindexcnt + 1) - numlines;
     3437          if (pAD->topfile > pAD->afindexcnt)
     3438            pAD->topfile = 1;
     3439          if (!pAD->topfile)
     3440            pAD->topfile = 1;
     3441          if (pAD->cursored < pAD->topfile)
     3442            pAD->cursored = pAD->topfile;
     3443          else if (pAD->cursored > (pAD->topfile + numlines) - 1)
     3444            pAD->cursored = (pAD->topfile + numlines) - 1;
     3445          if (pAD->cursored > pAD->afindexcnt)
     3446            pAD->cursored = pAD->afindexcnt;
     3447        }
     3448        else
     3449          pAD->topfile = pAD->cursored = 1;
     3450        if (numlines && pAD->afindexcnt) {
     3451          GpiSetBackMix(hpsp, BM_OVERPAINT);
     3452          wascursored = TRUE;
     3453          for (x = pAD->topfile - 1; x < pAD->afindexcnt; x++) {
     3454            ptl.x = pAD->horzscroll;
     3455            if (wascursored) {          /* reestablish normal colors */
     3456              GpiSetColor(pAD->hps,
     3457                          standardcolors[Colors[COLORS_NORMALFORE]]);
     3458              GpiSetBackColor(pAD->hps,
     3459                              standardcolors[Colors[COLORS_NORMALBACK]]);
     3460              wascursored = inverted = hidsys = reado = FALSE;
     3461            }
     3462            if (x == pAD->cursored - 1)
     3463              wascursored = TRUE;
     3464            y = (pAD->invertsort) ? (pAD->afindexcnt - 1) - x : x;
     3465            ptl.y = (Rectl.yTop -
     3466                     (pAD->lMaxHeight * (((x + 1) - pAD->topfile) + 1)));
     3467            if (ptl.y - pAD->lMaxDescender <= 0)
     3468              break;
     3469            if (pAD->afindex[y]->flags & AF_SELECTED) {
     3470              if (!inverted) {
     3471                GpiSetColor(pAD->hps,
     3472                            standardcolors[Colors
     3473                                           [COLORS_SELECTEDNORMALFORE]]);
     3474                GpiSetBackColor(pAD->hps,
     3475                                (wascursored) ?
     3476                                standardcolors[Colors
     3477                                               [COLORS_CURSOREDSELECTEDBACK]]
     3478                                :
     3479                                standardcolors[Colors[COLORS_SELECTEDBACK]]);
     3480                inverted = TRUE;
     3481              }
     3482            }
     3483            else if (inverted ||
     3484                     ((pAD->afindex[y]->attrFile &
     3485                       (FILE_SYSTEM | FILE_HIDDEN)) != 0) != hidsys ||
     3486                     ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) !=
     3487                     reado) {
     3488              if (pAD->afindex[y]->attrFile & (FILE_SYSTEM | FILE_HIDDEN)) {
     3489                GpiSetColor(pAD->hps,
     3490                            standardcolors[Colors[COLORS_SYSTEMFORE]]);
     3491                hidsys = TRUE;
     3492              }
     3493              else if ((pAD->afindex[y]->attrFile & FILE_READONLY) != 0) {
     3494                GpiSetColor(pAD->hps,
     3495                            standardcolors[Colors[COLORS_READONLYFORE]]);
     3496                reado = TRUE;
     3497              }
     3498              else
     3499                GpiSetColor(pAD->hps,
     3500                            standardcolors[Colors[COLORS_NORMALFORE]]);
     3501              GpiSetBackColor(pAD->hps,
     3502                              (wascursored) ?
     3503                              standardcolors[Colors
     3504                                             [COLORS_CURSOREDNORMALBACK]] :
     3505                              standardcolors[Colors[COLORS_NORMALBACK]]);
     3506              inverted = FALSE;
     3507            }
     3508            else if (wascursored)
     3509              GpiSetBackColor(pAD->hps,
     3510                              standardcolors[Colors
     3511                                             [COLORS_CURSOREDNORMALBACK]]);
    34943512            CommaFmtULL(szCmmaFmtFileSize,
    34953513                        sizeof(szCmmaFmtFileSize), pAD->afindex[y]->cbFile, ' ');
    3496             len =
    3497               sprintf(szBuff,
    3498                       "%c%-*.*s  %-12s  %c%c%c%c%c  %04u/%02u/%02u %02u:%02u:%02u ",
    3499                       wascursored ? '>' : ' ',
    3500                       pAD->fullnames ? pAD->longestw : pAD->longest,
    3501                       pAD->fullnames ? pAD->longestw : pAD->longest,
    3502                       (pAD->fullnames) ? pAD->afindex[y]->fullname : pAD->
    3503                       afindex[y]->filename, szCmmaFmtFileSize,
    3504                       "-A"[((pAD->afindex[y]->attrFile & FILE_ARCHIVED) !=
    3505                             0)],
    3506                       "-R"[((pAD->afindex[y]->attrFile & FILE_READONLY) !=
    3507                             0)],
    3508                       "-H"[((pAD->afindex[y]->attrFile & FILE_HIDDEN) != 0)],
    3509                       "-S"[((pAD->afindex[y]->attrFile & FILE_SYSTEM) != 0)],
    3510                       "-D"[((pAD->afindex[y]->attrFile & FILE_DIRECTORY) !=
    3511                             0)], pAD->afindex[y]->date.year + 1980,
    3512                       pAD->afindex[y]->date.month, pAD->afindex[y]->date.day,
    3513                       pAD->afindex[y]->time.hours,
    3514                       pAD->afindex[y]->time.minutes,
    3515                       pAD->afindex[y]->time.twosecs * 2);
    3516             GpiCharStringAt(hpsp, &ptl, len, szBuff);
    3517             GpiQueryCurrentPosition(hpsp, &ptl);
    3518             if (ptl.x + abs(pAD->horzscroll) > pAD->maxx) {
    3519               pAD->maxx = ptl.x + abs(pAD->horzscroll);
    3520               WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,
    3521                         MPFROM2SHORT((SHORT) Rectl.xRight,
    3522                                       (SHORT) pAD->maxx), MPVOID);
    3523             }
    3524           }
    3525         }
    3526         DosReleaseMutexSem(pAD->hmtxScan);
     3514            len =
     3515              sprintf(szBuff,
     3516                      "%c%-*.*s  %-12s  %c%c%c%c%c  %04u/%02u/%02u %02u:%02u:%02u ",
     3517                      wascursored ? '>' : ' ',
     3518                      pAD->fullnames ? pAD->longestw : pAD->longest,
     3519                      pAD->fullnames ? pAD->longestw : pAD->longest,
     3520                      (pAD->fullnames) ? pAD->afindex[y]->fullname : pAD->
     3521                      afindex[y]->filename, szCmmaFmtFileSize,
     3522                      "-A"[((pAD->afindex[y]->attrFile & FILE_ARCHIVED) !=
     3523                            0)],
     3524                      "-R"[((pAD->afindex[y]->attrFile & FILE_READONLY) !=
     3525                            0)],
     3526                      "-H"[((pAD->afindex[y]->attrFile & FILE_HIDDEN) != 0)],
     3527                      "-S"[((pAD->afindex[y]->attrFile & FILE_SYSTEM) != 0)],
     3528                      "-D"[((pAD->afindex[y]->attrFile & FILE_DIRECTORY) !=
     3529                            0)], pAD->afindex[y]->date.year + 1980,
     3530                      pAD->afindex[y]->date.month, pAD->afindex[y]->date.day,
     3531                      pAD->afindex[y]->time.hours,
     3532                      pAD->afindex[y]->time.minutes,
     3533                      pAD->afindex[y]->time.twosecs * 2);
     3534            GpiCharStringAt(hpsp, &ptl, len, szBuff);
     3535            GpiQueryCurrentPosition(hpsp, &ptl);
     3536            if (ptl.x + abs(pAD->horzscroll) > pAD->maxx) {
     3537              pAD->maxx = ptl.x + abs(pAD->horzscroll);
     3538              WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,
     3539                        MPFROM2SHORT((SHORT) Rectl.xRight,
     3540                                      (SHORT) pAD->maxx), MPVOID);
     3541            }
     3542          }
     3543        }
     3544        DosReleaseMutexSem(pAD->hmtxScan);
    35273545      }
    35283546      WinEndPaint(hpsp);
    35293547      PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    35303548      if (!pAD->stopflag)
    3531         WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
    3532                    MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)),
    3533                    MPFROM2SHORT(1,
    3534                                 (SHORT) (pAD->afindexcnt / pAD->multiplier) -
    3535                                 (numlines - 1)));
     3549        WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
     3550                   MPFROMSHORT((SHORT) (pAD->topfile / pAD->multiplier)),
     3551                   MPFROM2SHORT(1,
     3552                                (SHORT) (pAD->afindexcnt / pAD->multiplier) -
     3553                                (numlines - 1)));
    35363554      WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
    3537                 MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
    3538                 MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
     3555                MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
     3556                MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
    35393557      WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE,
    3540                 MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx),
    3541                 MPVOID);
     3558                MPFROM2SHORT((SHORT) Rectl.xRight, (SHORT) pAD->maxx),
     3559                MPVOID);
    35423560    }
    35433561    break;
     
    35513569      switch (SHORT2FROMMP(mp2)) {
    35523570      case SB_PAGERIGHT:
    3553         if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight) {
    3554           pAD->horzscroll -= rectl.xRight;
    3555           if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight)
    3556             pAD->horzscroll = -(pAD->maxx - rectl.xRight);
    3557         }
    3558         break;
     3571        if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight) {
     3572          pAD->horzscroll -= rectl.xRight;
     3573          if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight)
     3574            pAD->horzscroll = -(pAD->maxx - rectl.xRight);
     3575        }
     3576        break;
    35593577
    35603578      case SB_PAGELEFT:
    3561         if (pAD->horzscroll < 0) {
    3562           pAD->horzscroll += rectl.xRight;
    3563           if (pAD->horzscroll > 0)
    3564             pAD->horzscroll = 0;
    3565         }
    3566         break;
     3579        if (pAD->horzscroll < 0) {
     3580          pAD->horzscroll += rectl.xRight;
     3581          if (pAD->horzscroll > 0)
     3582            pAD->horzscroll = 0;
     3583        }
     3584        break;
    35673585
    35683586      case SB_LINERIGHT:
    3569         if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight)
    3570           pAD->horzscroll -= pAD->fattrs.lAveCharWidth;
    3571         break;
     3587        if (abs(pAD->horzscroll) < pAD->maxx - rectl.xRight)
     3588          pAD->horzscroll -= pAD->fattrs.lAveCharWidth;
     3589        break;
    35723590
    35733591      case SB_LINELEFT:
    3574         if (pAD->horzscroll < 0)
    3575           pAD->horzscroll += pAD->fattrs.lAveCharWidth;
    3576         break;
     3592        if (pAD->horzscroll < 0)
     3593          pAD->horzscroll += pAD->fattrs.lAveCharWidth;
     3594        break;
    35773595
    35783596      case SB_SLIDERTRACK:
    3579         pAD->horzscroll = SHORT1FROMMP(mp2);
    3580         pAD->horzscroll = -(pAD->horzscroll);
    3581         if (pAD->horzscroll > 0)
    3582           pAD->horzscroll = 0;
    3583         if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight)
    3584           pAD->horzscroll = -(pAD->maxx - rectl.xRight);
    3585         break;
     3597        pAD->horzscroll = SHORT1FROMMP(mp2);
     3598        pAD->horzscroll = -(pAD->horzscroll);
     3599        if (pAD->horzscroll > 0)
     3600          pAD->horzscroll = 0;
     3601        if (abs(pAD->horzscroll) > pAD->maxx - rectl.xRight)
     3602          pAD->horzscroll = -(pAD->maxx - rectl.xRight);
     3603        break;
    35863604
    35873605      default:
    3588         invalidate = FALSE;
    3589         break;
     3606        invalidate = FALSE;
     3607        break;
    35903608      }
    35913609      if (invalidate)
    3592         WinInvalidateRect(hwnd, NULL, FALSE);
     3610        WinInvalidateRect(hwnd, NULL, FALSE);
    35933611    }
    35943612    break;
     
    35973615// fprintf(stderr,"Seeall: WM_VSCROLL\n");
    35983616    if (pAD && !pAD->stopflag &&
    3599         !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     3617        !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    36003618
    36013619      ULONG numlines, wascursored;
     
    36033621
    36043622      if (pAD->afindexcnt) {
    3605         WinQueryWindowRect(hwnd, &rcl);
    3606         numlines = NumLines(&rcl, pAD);
    3607         if (numlines) {
    3608           wascursored = pAD->cursored;
    3609           switch (SHORT2FROMMP(mp2)) {
    3610           case SB_PAGEUP:
    3611             if (pAD->topfile > 1) {
    3612               pAD->topfile -= numlines;
    3613               if (pAD->topfile > pAD->afindexcnt ||
    3614                   pAD->topfile > (pAD->afindexcnt + 1) - numlines)
    3615                 pAD->topfile = 1;
    3616               if (pAD->cursored > pAD->topfile + numlines)
    3617                 pAD->cursored = pAD->topfile + numlines;
    3618               if (pAD->cursored > pAD->afindexcnt)
    3619                 pAD->cursored = pAD->afindexcnt;
    3620               WinInvalidateRect(hwnd, NULL, FALSE);
    3621             }
    3622             break;
    3623           case SB_PAGEDOWN:
    3624             if (pAD->topfile <= pAD->afindexcnt - numlines) {
    3625               pAD->topfile += numlines;
    3626               if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)
    3627                 pAD->topfile = (pAD->afindexcnt + 1) - numlines;
    3628               if (pAD->cursored < pAD->topfile)
    3629                 pAD->cursored = pAD->topfile;
    3630               if (pAD->cursored > (pAD->topfile + numlines) - 1)
    3631                 pAD->cursored = (pAD->topfile + numlines) - 1;
    3632               if (pAD->cursored > pAD->afindexcnt)
    3633                 pAD->cursored = pAD->afindexcnt;
    3634               WinInvalidateRect(hwnd, NULL, FALSE);
    3635             }
    3636             break;
    3637           case SB_LINEDOWN:
    3638             if (pAD->topfile <= pAD->afindexcnt - numlines) {
    3639 
    3640               RECTL Rectl, iRectl;
    3641 
    3642               pAD->topfile++;
    3643               if (pAD->cursored < pAD->topfile)
    3644                 pAD->cursored = pAD->topfile;
    3645               else if (pAD->cursored > (pAD->topfile + numlines) - 1)
    3646                 pAD->cursored = (pAD->topfile + numlines) - 1;
    3647               if (pAD->cursored > pAD->afindexcnt)
    3648                 pAD->cursored = pAD->afindexcnt;
    3649               WinQueryWindowRect(hwnd, &Rectl);
    3650               WinScrollWindow(hwnd, 0, pAD->lMaxHeight,
    3651                               NULL, NULL, NULLHANDLE, &iRectl, 0);
    3652               WinFillRect(pAD->hps, &iRectl,
    3653                           standardcolors[Colors[COLORS_NORMALBACK]]);
    3654               PaintLine(hwnd, pAD->hps, (pAD->topfile + numlines) - 2,
    3655                         pAD->topfile, &Rectl);
    3656               if (pAD->cursored != pAD->topfile + numlines)
    3657                 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    3658                           &Rectl);
    3659               if (wascursored != pAD->cursored
    3660                   && wascursored < pAD->topfile + numlines
    3661                   && wascursored >= pAD->topfile)
    3662                 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,
    3663                           &Rectl);
    3664               if (wascursored != pAD->cursored)
    3665                 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    3666               WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
    3667                         MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
    3668                         MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
    3669               WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
    3670                         MPFROMSHORT((SHORT) (pAD->topfile /
    3671                                               pAD->multiplier)),
    3672                         MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt /
    3673                                                   pAD->multiplier) -
    3674                                       (numlines - 1)));
    3675             }
    3676             break;
    3677           case SB_LINEUP:
    3678             if (pAD->topfile > 1) {
    3679 
    3680               RECTL Rectl, iRectl;
    3681 
    3682               pAD->topfile--;
    3683               if (pAD->cursored < pAD->topfile)
    3684                 pAD->cursored = pAD->topfile;
    3685               else if (pAD->cursored > (pAD->topfile + numlines) - 1)
    3686                 pAD->cursored = (pAD->topfile + numlines) - 1;
    3687               if (pAD->cursored > pAD->afindexcnt)
    3688                 pAD->cursored = pAD->afindexcnt;
    3689               WinQueryWindowRect(hwnd, &Rectl);
    3690               WinScrollWindow(hwnd, 0, -pAD->lMaxHeight,
    3691                               NULL, NULL, NULLHANDLE, &iRectl, 0);
    3692               WinFillRect(pAD->hps, &iRectl,
    3693                           standardcolors[Colors[COLORS_NORMALBACK]]);
    3694               iRectl = Rectl;
    3695               iRectl.yTop -= ((numlines * pAD->lMaxHeight) +
    3696                               pAD->lMaxDescender);
    3697               WinFillRect(pAD->hps, &iRectl,
    3698                           standardcolors[pAD->aulColors[COLORS_NORMALBACK]]);
    3699               PaintLine(hwnd, pAD->hps, pAD->topfile - 1, pAD->topfile,
    3700                         &Rectl);
    3701               if (pAD->cursored != pAD->topfile)
    3702                 PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
    3703                           &Rectl);
    3704               if (pAD->cursored != wascursored && wascursored >= pAD->topfile
    3705                   && wascursored < pAD->topfile + numlines)
    3706                 PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,
    3707                           &Rectl);
    3708               if (pAD->cursored != wascursored)
    3709                 PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    3710               WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
    3711                         MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
    3712                         MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
    3713               WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
    3714                         MPFROMSHORT((SHORT) (pAD->topfile /
    3715                                               pAD->multiplier)),
    3716                         MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt /
    3717                                                   pAD->multiplier) -
    3718                                       (numlines - 1)));
    3719             }
    3720             break;
    3721           case SB_SLIDERTRACK:
    3722             if ((SHORT1FROMMP(mp2) >= 1) ||
    3723                 (SHORT1FROMMP(mp2)) <= pAD->afindexcnt) {
    3724               pAD->topfile = (ULONG) SHORT1FROMMP(mp2) * pAD->multiplier;
    3725               if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)
    3726                 pAD->topfile = (pAD->afindexcnt + 1) - numlines;
    3727               if (!pAD->topfile)
    3728                 pAD->topfile = 1;
    3729               if (pAD->cursored < pAD->topfile)
    3730                 pAD->cursored = pAD->topfile;
    3731               else if (pAD->cursored > pAD->topfile + numlines)
    3732                 pAD->cursored = pAD->topfile + numlines;
    3733               if (pAD->cursored > pAD->afindexcnt)
    3734                 pAD->cursored = pAD->afindexcnt;
    3735               WinInvalidateRect(hwnd, NULL, FALSE);
    3736             }
    3737             else
    3738               WinAlarm(HWND_DESKTOP, WA_NOTE);
    3739             break;
    3740           }
    3741         }
     3623        WinQueryWindowRect(hwnd, &rcl);
     3624        numlines = NumLines(&rcl, pAD);
     3625        if (numlines) {
     3626          wascursored = pAD->cursored;
     3627          switch (SHORT2FROMMP(mp2)) {
     3628          case SB_PAGEUP:
     3629            if (pAD->topfile > 1) {
     3630              pAD->topfile -= numlines;
     3631              if (pAD->topfile > pAD->afindexcnt ||
     3632                  pAD->topfile > (pAD->afindexcnt + 1) - numlines)
     3633                pAD->topfile = 1;
     3634              if (pAD->cursored > pAD->topfile + numlines)
     3635                pAD->cursored = pAD->topfile + numlines;
     3636              if (pAD->cursored > pAD->afindexcnt)
     3637                pAD->cursored = pAD->afindexcnt;
     3638              WinInvalidateRect(hwnd, NULL, FALSE);
     3639            }
     3640            break;
     3641          case SB_PAGEDOWN:
     3642            if (pAD->topfile <= pAD->afindexcnt - numlines) {
     3643              pAD->topfile += numlines;
     3644              if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)
     3645                pAD->topfile = (pAD->afindexcnt + 1) - numlines;
     3646              if (pAD->cursored < pAD->topfile)
     3647                pAD->cursored = pAD->topfile;
     3648              if (pAD->cursored > (pAD->topfile + numlines) - 1)
     3649                pAD->cursored = (pAD->topfile + numlines) - 1;
     3650              if (pAD->cursored > pAD->afindexcnt)
     3651                pAD->cursored = pAD->afindexcnt;
     3652              WinInvalidateRect(hwnd, NULL, FALSE);
     3653            }
     3654            break;
     3655          case SB_LINEDOWN:
     3656            if (pAD->topfile <= pAD->afindexcnt - numlines) {
     3657
     3658              RECTL Rectl, iRectl;
     3659
     3660              pAD->topfile++;
     3661              if (pAD->cursored < pAD->topfile)
     3662                pAD->cursored = pAD->topfile;
     3663              else if (pAD->cursored > (pAD->topfile + numlines) - 1)
     3664                pAD->cursored = (pAD->topfile + numlines) - 1;
     3665              if (pAD->cursored > pAD->afindexcnt)
     3666                pAD->cursored = pAD->afindexcnt;
     3667              WinQueryWindowRect(hwnd, &Rectl);
     3668              WinScrollWindow(hwnd, 0, pAD->lMaxHeight,
     3669                              NULL, NULL, NULLHANDLE, &iRectl, 0);
     3670              WinFillRect(pAD->hps, &iRectl,
     3671                          standardcolors[Colors[COLORS_NORMALBACK]]);
     3672              PaintLine(hwnd, pAD->hps, (pAD->topfile + numlines) - 2,
     3673                        pAD->topfile, &Rectl);
     3674              if (pAD->cursored != pAD->topfile + numlines)
     3675                PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     3676                          &Rectl);
     3677              if (wascursored != pAD->cursored
     3678                  && wascursored < pAD->topfile + numlines
     3679                  && wascursored >= pAD->topfile)
     3680                PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,
     3681                          &Rectl);
     3682              if (wascursored != pAD->cursored)
     3683                PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     3684              WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
     3685                        MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
     3686                        MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
     3687              WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
     3688                        MPFROMSHORT((SHORT) (pAD->topfile /
     3689                                              pAD->multiplier)),
     3690                        MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt /
     3691                                                  pAD->multiplier) -
     3692                                      (numlines - 1)));
     3693            }
     3694            break;
     3695          case SB_LINEUP:
     3696            if (pAD->topfile > 1) {
     3697
     3698              RECTL Rectl, iRectl;
     3699
     3700              pAD->topfile--;
     3701              if (pAD->cursored < pAD->topfile)
     3702                pAD->cursored = pAD->topfile;
     3703              else if (pAD->cursored > (pAD->topfile + numlines) - 1)
     3704                pAD->cursored = (pAD->topfile + numlines) - 1;
     3705              if (pAD->cursored > pAD->afindexcnt)
     3706                pAD->cursored = pAD->afindexcnt;
     3707              WinQueryWindowRect(hwnd, &Rectl);
     3708              WinScrollWindow(hwnd, 0, -pAD->lMaxHeight,
     3709                              NULL, NULL, NULLHANDLE, &iRectl, 0);
     3710              WinFillRect(pAD->hps, &iRectl,
     3711                          standardcolors[Colors[COLORS_NORMALBACK]]);
     3712              iRectl = Rectl;
     3713              iRectl.yTop -= ((numlines * pAD->lMaxHeight) +
     3714                              pAD->lMaxDescender);
     3715              WinFillRect(pAD->hps, &iRectl,
     3716                          standardcolors[pAD->aulColors[COLORS_NORMALBACK]]);
     3717              PaintLine(hwnd, pAD->hps, pAD->topfile - 1, pAD->topfile,
     3718                        &Rectl);
     3719              if (pAD->cursored != pAD->topfile)
     3720                PaintLine(hwnd, pAD->hps, pAD->cursored - 1, pAD->topfile,
     3721                          &Rectl);
     3722              if (pAD->cursored != wascursored && wascursored >= pAD->topfile
     3723                  && wascursored < pAD->topfile + numlines)
     3724                PaintLine(hwnd, pAD->hps, wascursored - 1, pAD->topfile,
     3725                          &Rectl);
     3726              if (pAD->cursored != wascursored)
     3727                PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     3728              WinSendMsg(pAD->hhscroll, SBM_SETSCROLLBAR,
     3729                        MPFROMSHORT((SHORT) abs(pAD->horzscroll)),
     3730                        MPFROM2SHORT(0, (SHORT) (pAD->maxx - Rectl.xRight)));
     3731              WinSendMsg(pAD->hvscroll, SBM_SETSCROLLBAR,
     3732                        MPFROMSHORT((SHORT) (pAD->topfile /
     3733                                              pAD->multiplier)),
     3734                        MPFROM2SHORT(1, (SHORT) (pAD->afindexcnt /
     3735                                                  pAD->multiplier) -
     3736                                      (numlines - 1)));
     3737            }
     3738            break;
     3739          case SB_SLIDERTRACK:
     3740            if ((SHORT1FROMMP(mp2) >= 1) ||
     3741                (SHORT1FROMMP(mp2)) <= pAD->afindexcnt) {
     3742              pAD->topfile = (ULONG) SHORT1FROMMP(mp2) * pAD->multiplier;
     3743              if (pAD->topfile > (pAD->afindexcnt + 1) - numlines)
     3744                pAD->topfile = (pAD->afindexcnt + 1) - numlines;
     3745              if (!pAD->topfile)
     3746                pAD->topfile = 1;
     3747              if (pAD->cursored < pAD->topfile)
     3748                pAD->cursored = pAD->topfile;
     3749              else if (pAD->cursored > pAD->topfile + numlines)
     3750                pAD->cursored = pAD->topfile + numlines;
     3751              if (pAD->cursored > pAD->afindexcnt)
     3752                pAD->cursored = pAD->afindexcnt;
     3753              WinInvalidateRect(hwnd, NULL, FALSE);
     3754            }
     3755            else
     3756              WinAlarm(HWND_DESKTOP, WA_NOTE);
     3757            break;
     3758          }
     3759        }
    37423760      }
    37433761      DosReleaseMutexSem(pAD->hmtxScan);
     
    37493767      switch (SHORT1FROMMP(mp1)) {
    37503768      case IDM_FILESMENU:
    3751         {
    3752           APIRET rc;
    3753 
    3754           rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
    3755           WinEnableMenuItem((HWND) mp2, IDM_DUPES, (rc == 0));
    3756           WinEnableMenuItem((HWND) mp2, IDM_COLLECT, (rc == 0 &&
    3757                                                       pAD->selected != 0));
    3758           WinEnableMenuItem((HWND) mp2, IDM_SAVETOCLIP, (rc == 0 &&
     3769        {
     3770          APIRET rc;
     3771
     3772          rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
     3773          WinEnableMenuItem((HWND) mp2, IDM_DUPES, (rc == 0));
     3774          WinEnableMenuItem((HWND) mp2, IDM_COLLECT, (rc == 0 &&
     3775                                                      pAD->selected != 0));
     3776          WinEnableMenuItem((HWND) mp2, IDM_SAVETOCLIP, (rc == 0 &&
    37593777                                                         pAD->selected != 0));
    37603778          WinEnableMenuItem((HWND) mp2, IDM_SAVETOCLIPFILENAME,
    3761                             (rc == 0 && pAD->selected != 0));
     3779                            (rc == 0 && pAD->selected != 0));
    37623780          WinEnableMenuItem((HWND) mp2, IDM_APPENDTOCLIP,
    37633781                            (rc == 0 && pAD->selected != 0));
    37643782          WinEnableMenuItem((HWND) mp2, IDM_APPENDTOCLIPFILENAME,
    3765                             (rc == 0 && pAD->selected != 0));
    3766           WinEnableMenuItem((HWND) mp2, IDM_SAVETOLIST,
    3767                             (rc == 0 && pAD->selected != 0));
    3768           WinEnableMenuItem((HWND) mp2, IDM_REMOVE,
    3769                             (rc == 0 && pAD->selected != 0));
    3770           WinEnableMenuItem((HWND) mp2, IDM_HIDEALL,
    3771                             (rc == 0 && pAD->selected != 0));
    3772           WinEnableMenuItem((HWND) mp2, IDM_DELETESUBMENU,
    3773                             (rc == 0 && pAD->selected != 0));
    3774           WinEnableMenuItem((HWND) mp2, IDM_INFO,
    3775                             (rc == 0 && pAD->selected != 0));
    3776           WinEnableMenuItem((HWND) mp2, IDM_ATTRS,
    3777                             (rc == 0 && pAD->selected != 0));
    3778           WinEnableMenuItem((HWND) mp2, IDM_EAS,
    3779                             (rc == 0 && pAD->selected != 0));
    3780           WinEnableMenuItem((HWND) mp2, IDM_UUDECODE,
    3781                             (rc == 0 && pAD->selected != 0));
    3782           WinEnableMenuItem((HWND) mp2, IDM_EXTRACT,
    3783                             (rc == 0 && pAD->selected != 0));
    3784           WinEnableMenuItem((HWND) mp2, IDM_ARCHIVE,
    3785                             (rc == 0 && pAD->selected != 0));
    3786           WinEnableMenuItem((HWND) mp2, IDM_MOVEMENU,
    3787                             (rc == 0 && pAD->selected != 0));
    3788           WinEnableMenuItem((HWND) mp2, IDM_COPYMENU,
    3789                             (rc == 0 && pAD->selected != 0));
    3790           WinEnableMenuItem((HWND) mp2, IDM_RENAME,
    3791                             (rc == 0 && pAD->selected != 0));
    3792           WinEnableMenuItem((HWND) mp2, IDM_PRINT,
    3793                             (rc == 0 && pAD->selected != 0));
    3794           WinEnableMenuItem((HWND) mp2, IDM_SUBJECT,
    3795                             (rc == 0 && pAD->selected != 0));
    3796           WinEnableMenuItem((HWND) mp2, IDM_OPENSUBMENU,
    3797                             (rc == 0 && pAD->selected != 0));
    3798           WinEnableMenuItem((HWND) mp2, IDM_OBJECTSUBMENU,
    3799                             (rc == 0 && pAD->selected != 0));
    3800           if (!rc)
    3801             DosReleaseMutexSem(pAD->hmtxScan);
    3802         }
    3803         break;
     3783                            (rc == 0 && pAD->selected != 0));
     3784          WinEnableMenuItem((HWND) mp2, IDM_SAVETOLIST,
     3785                            (rc == 0 && pAD->selected != 0));
     3786          WinEnableMenuItem((HWND) mp2, IDM_REMOVE,
     3787                            (rc == 0 && pAD->selected != 0));
     3788          WinEnableMenuItem((HWND) mp2, IDM_HIDEALL,
     3789                            (rc == 0 && pAD->selected != 0));
     3790          WinEnableMenuItem((HWND) mp2, IDM_DELETESUBMENU,
     3791                            (rc == 0 && pAD->selected != 0));
     3792          WinEnableMenuItem((HWND) mp2, IDM_INFO,
     3793                            (rc == 0 && pAD->selected != 0));
     3794          WinEnableMenuItem((HWND) mp2, IDM_ATTRS,
     3795                            (rc == 0 && pAD->selected != 0));
     3796          WinEnableMenuItem((HWND) mp2, IDM_EAS,
     3797                            (rc == 0 && pAD->selected != 0));
     3798          WinEnableMenuItem((HWND) mp2, IDM_UUDECODE,
     3799                            (rc == 0 && pAD->selected != 0));
     3800          WinEnableMenuItem((HWND) mp2, IDM_EXTRACT,
     3801                            (rc == 0 && pAD->selected != 0));
     3802          WinEnableMenuItem((HWND) mp2, IDM_ARCHIVE,
     3803                            (rc == 0 && pAD->selected != 0));
     3804          WinEnableMenuItem((HWND) mp2, IDM_MOVEMENU,
     3805                            (rc == 0 && pAD->selected != 0));
     3806          WinEnableMenuItem((HWND) mp2, IDM_COPYMENU,
     3807                            (rc == 0 && pAD->selected != 0));
     3808          WinEnableMenuItem((HWND) mp2, IDM_RENAME,
     3809                            (rc == 0 && pAD->selected != 0));
     3810          WinEnableMenuItem((HWND) mp2, IDM_PRINT,
     3811                            (rc == 0 && pAD->selected != 0));
     3812          WinEnableMenuItem((HWND) mp2, IDM_SUBJECT,
     3813                            (rc == 0 && pAD->selected != 0));
     3814          WinEnableMenuItem((HWND) mp2, IDM_OPENSUBMENU,
     3815                            (rc == 0 && pAD->selected != 0));
     3816          WinEnableMenuItem((HWND) mp2, IDM_OBJECTSUBMENU,
     3817                            (rc == 0 && pAD->selected != 0));
     3818          if (!rc)
     3819            DosReleaseMutexSem(pAD->hmtxScan);
     3820        }
     3821        break;
    38043822
    38053823      case IDM_SELECTSUBMENU:
    3806         {
    3807           APIRET rc;
    3808 
    3809           rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
    3810           WinEnableMenuItem((HWND) mp2, IDM_SELECTALL, (rc == 0 &&
    3811                                                         pAD->afindexcnt != 0 &&
    3812                                                         (pAD->afindexcnt !=
    3813                                                         pAD->selected ||
    3814                                                         !pAD->selected)));
    3815           WinEnableMenuItem((HWND) mp2, IDM_SELECTMASK, (rc == 0 &&
    3816                                                         pAD->afindexcnt != 0 &&
    3817                                                         (pAD->afindexcnt !=
    3818                                                           pAD->selected ||
    3819                                                           !pAD->selected)));
    3820           WinEnableMenuItem((HWND) mp2, IDM_DESELECTALL, (rc == 0 &&
    3821                                                           pAD->afindexcnt != 0
    3822                                                           && pAD->selected));
    3823           WinEnableMenuItem((HWND) mp2, IDM_DESELECTMASK,
    3824                             (rc == 0 && pAD->afindexcnt != 0) && pAD->selected);
    3825           WinEnableMenuItem((HWND) mp2, IDM_INVERT,
    3826                             (rc == 0 && pAD->afindexcnt != 0));
    3827           if (!rc)
    3828             DosReleaseMutexSem(pAD->hmtxScan);
    3829         }
    3830         break;
     3824        {
     3825          APIRET rc;
     3826
     3827          rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
     3828          WinEnableMenuItem((HWND) mp2, IDM_SELECTALL, (rc == 0 &&
     3829                                                        pAD->afindexcnt != 0 &&
     3830                                                        (pAD->afindexcnt !=
     3831                                                        pAD->selected ||
     3832                                                        !pAD->selected)));
     3833          WinEnableMenuItem((HWND) mp2, IDM_SELECTMASK, (rc == 0 &&
     3834                                                        pAD->afindexcnt != 0 &&
     3835                                                        (pAD->afindexcnt !=
     3836                                                          pAD->selected ||
     3837                                                          !pAD->selected)));
     3838          WinEnableMenuItem((HWND) mp2, IDM_DESELECTALL, (rc == 0 &&
     3839                                                          pAD->afindexcnt != 0
     3840                                                          && pAD->selected));
     3841          WinEnableMenuItem((HWND) mp2, IDM_DESELECTMASK,
     3842                            (rc == 0 && pAD->afindexcnt != 0) && pAD->selected);
     3843          WinEnableMenuItem((HWND) mp2, IDM_INVERT,
     3844                            (rc == 0 && pAD->afindexcnt != 0));
     3845          if (!rc)
     3846            DosReleaseMutexSem(pAD->hmtxScan);
     3847        }
     3848        break;
    38313849
    38323850      case IDM_SORTSUBMENU:
    3833         {
    3834           APIRET rc;
    3835 
    3836           rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
    3837           WinEnableMenuItem((HWND) mp2, IDM_SORTNAME, (rc == 0));
    3838           WinEnableMenuItem((HWND) mp2, IDM_SORTEASIZE, (rc == 0));
    3839           WinEnableMenuItem((HWND) mp2, IDM_SORTSIZE, (rc == 0));
    3840           WinEnableMenuItem((HWND) mp2, IDM_SORTLWDATE, (rc == 0));
    3841           WinEnableMenuItem((HWND) mp2, IDM_SORTFILENAME, (rc == 0));
    3842           WinEnableMenuItem((HWND) mp2, IDM_SORTFIRST, (rc == 0));
    3843           if (!rc)
    3844             DosReleaseMutexSem(pAD->hmtxScan);
    3845         }
    3846         WinCheckMenuItem((HWND) mp2, IDM_SORTNAME,
    3847                         (pAD->pfnCompare == comparefullnames));
    3848         WinCheckMenuItem((HWND) mp2, IDM_SORTEASIZE,
    3849                         (pAD->pfnCompare == (PFNSORT) NULL));
    3850         WinCheckMenuItem((HWND) mp2, IDM_SORTSIZE,
    3851                         (pAD->pfnCompare == comparesizes));
    3852         WinCheckMenuItem((HWND) mp2, IDM_SORTLWDATE,
    3853                         (pAD->pfnCompare == comparedates));
    3854         WinCheckMenuItem((HWND) mp2, IDM_SORTFILENAME,
    3855                         (pAD->pfnCompare == comparenames));
    3856         WinCheckMenuItem((HWND) mp2, IDM_SORTREVERSE, pAD->invertsort);
    3857         WinCheckMenuItem((HWND) mp2, IDM_SORTFIRST,
    3858                         (pAD->pfnCompare == compareexts));
    3859         break;
     3851        {
     3852          APIRET rc;
     3853
     3854          rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
     3855          WinEnableMenuItem((HWND) mp2, IDM_SORTNAME, (rc == 0));
     3856          WinEnableMenuItem((HWND) mp2, IDM_SORTEASIZE, (rc == 0));
     3857          WinEnableMenuItem((HWND) mp2, IDM_SORTSIZE, (rc == 0));
     3858          WinEnableMenuItem((HWND) mp2, IDM_SORTLWDATE, (rc == 0));
     3859          WinEnableMenuItem((HWND) mp2, IDM_SORTFILENAME, (rc == 0));
     3860          WinEnableMenuItem((HWND) mp2, IDM_SORTFIRST, (rc == 0));
     3861          if (!rc)
     3862            DosReleaseMutexSem(pAD->hmtxScan);
     3863        }
     3864        WinCheckMenuItem((HWND) mp2, IDM_SORTNAME,
     3865                        (pAD->pfnCompare == comparefullnames));
     3866        WinCheckMenuItem((HWND) mp2, IDM_SORTEASIZE,
     3867                        (pAD->pfnCompare == (PFNSORT) NULL));
     3868        WinCheckMenuItem((HWND) mp2, IDM_SORTSIZE,
     3869                        (pAD->pfnCompare == comparesizes));
     3870        WinCheckMenuItem((HWND) mp2, IDM_SORTLWDATE,
     3871                        (pAD->pfnCompare == comparedates));
     3872        WinCheckMenuItem((HWND) mp2, IDM_SORTFILENAME,
     3873                        (pAD->pfnCompare == comparenames));
     3874        WinCheckMenuItem((HWND) mp2, IDM_SORTREVERSE, pAD->invertsort);
     3875        WinCheckMenuItem((HWND) mp2, IDM_SORTFIRST,
     3876                        (pAD->pfnCompare == compareexts));
     3877        break;
    38603878
    38613879      case IDM_VIEWSMENU:
    3862         {
    3863           APIRET rc;
    3864 
    3865           rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
    3866           WinEnableMenuItem((HWND) mp2, IDM_RESCAN, (rc == 0));
    3867           WinEnableMenuItem((HWND) mp2, IDM_FILTER, (rc == 0 &&
    3868                                                      pAD->afheadcnt != 0));
    3869           if (!rc)
    3870             DosReleaseMutexSem(pAD->hmtxScan);
    3871         }
    3872         WinCheckMenuItem((HWND) mp2, IDM_SHOWLNAMES, pAD->fullnames);
    3873         break;
     3880        {
     3881          APIRET rc;
     3882
     3883          rc = DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN);
     3884          WinEnableMenuItem((HWND) mp2, IDM_RESCAN, (rc == 0));
     3885          WinEnableMenuItem((HWND) mp2, IDM_FILTER, (rc == 0 &&
     3886                                                     pAD->afheadcnt != 0));
     3887          if (!rc)
     3888            DosReleaseMutexSem(pAD->hmtxScan);
     3889        }
     3890        WinCheckMenuItem((HWND) mp2, IDM_SHOWLNAMES, pAD->fullnames);
     3891        break;
    38743892      }
    38753893    }
     
    38883906    case IDM_DUPES:
    38893907      if (!pAD->stopflag &&
    3890           !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    3891         pAD->dupeflags = (USHORT) WinDlgBox(HWND_DESKTOP,
    3892                                             hwnd,
    3893                                             DupeDlgProc,
    3894                                             FM3ModHandle,
    3895                                             DUPE_FRAME,
    3896                                             MPFROM2SHORT(pAD->dupeflags, 0));
    3897         if (pAD->dupeflags) {
    3898           if (_beginthread(FindDupesThread, NULL, 65536, (PVOID) hwnd) == -1)
    3899             Runtime_Error(pszSrcFile, __LINE__,
    3900                           GetPString(IDS_COULDNTSTARTTHREADTEXT));
    3901         }
    3902         DosReleaseMutexSem(pAD->hmtxScan);
     3908          !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     3909        pAD->dupeflags = (USHORT) WinDlgBox(HWND_DESKTOP,
     3910                                            hwnd,
     3911                                            DupeDlgProc,
     3912                                            FM3ModHandle,
     3913                                            DUPE_FRAME,
     3914                                            MPFROM2SHORT(pAD->dupeflags, 0));
     3915        if (pAD->dupeflags) {
     3916          if (_beginthread(FindDupesThread, NULL, 65536, (PVOID) hwnd) == -1)
     3917            Runtime_Error(pszSrcFile, __LINE__,
     3918                          GetPString(IDS_COULDNTSTARTTHREADTEXT));
     3919        }
     3920        DosReleaseMutexSem(pAD->hmtxScan);
    39033921      }
    39043922      break;
     
    39063924    case IDM_COLORPALETTE:
    39073925      {
    3908         COLORS co;
    3909         LONG temp[COLORS_MAX];
    3910 
    3911         memset(&co, 0, sizeof(co));
    3912         co.size = sizeof(co);
    3913         co.numcolors = COLORS_MAX;
    3914         co.colors = pAD->aulColors;
    3915         co.descriptions = IDS_SACOLORS1TEXT;
    3916         co.origs = temp;
    3917         co.prompt = IDS_SACOLORSPROMPTTEXT;
    3918         memcpy(temp, pAD->aulColors, sizeof(LONG) * COLORS_MAX);
    3919         if (WinDlgBox(HWND_DESKTOP,
    3920                       hwnd,
    3921                       ColorDlgProc,
    3922                       FM3ModHandle, COLOR_FRAME, (PVOID) & co)) {
    3923           memcpy(Colors, pAD->aulColors, sizeof(LONG) * COLORS_MAX);
    3924           PrfWriteProfileData(fmprof,
    3925                               appname,
    3926                               "Seeall.Colors",
    3927                               &pAD->aulColors, sizeof(LONG) * COLORS_MAX);
    3928           WinInvalidateRect(hwnd, NULL, FALSE);
    3929         }
     3926        COLORS co;
     3927        LONG temp[COLORS_MAX];
     3928
     3929        memset(&co, 0, sizeof(co));
     3930        co.size = sizeof(co);
     3931        co.numcolors = COLORS_MAX;
     3932        co.colors = pAD->aulColors;
     3933        co.descriptions = IDS_SACOLORS1TEXT;
     3934        co.origs = temp;
     3935        co.prompt = IDS_SACOLORSPROMPTTEXT;
     3936        memcpy(temp, pAD->aulColors, sizeof(LONG) * COLORS_MAX);
     3937        if (WinDlgBox(HWND_DESKTOP,
     3938                      hwnd,
     3939                      ColorDlgProc,
     3940                      FM3ModHandle, COLOR_FRAME, (PVOID) & co)) {
     3941          memcpy(Colors, pAD->aulColors, sizeof(LONG) * COLORS_MAX);
     3942          PrfWriteProfileData(fmprof,
     3943                              appname,
     3944                              "Seeall.Colors",
     3945                              &pAD->aulColors, sizeof(LONG) * COLORS_MAX);
     3946          WinInvalidateRect(hwnd, NULL, FALSE);
     3947        }
    39303948      }
    39313949      break;
     
    39333951    case IDM_CODEPAGE:
    39343952      {
    3935         INT cp;
    3936 
    3937         cp = PickCodepage(hwnd);
    3938         if (cp != -1) {
    3939           pAD->fattrs.usCodePage = (USHORT) cp;
    3940           Codepage = pAD->fattrs.usCodePage;
    3941           PrfWriteProfileData(fmprof,
    3942                               appname,
    3943                               "Seeall.Codepage",
    3944                               &pAD->fattrs.usCodePage, sizeof(USHORT));
    3945           GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);
    3946           GpiAssociate(pAD->hps, 0);
    3947           GpiDestroyPS(pAD->hps);
    3948           pAD->hps = InitWindow(hwnd);
    3949           pAD->maxx = pAD->horzscroll = 0;
    3950           WinInvalidateRect(hwnd, NULL, FALSE);
    3951         }
     3953        INT cp;
     3954
     3955        cp = PickCodepage(hwnd);
     3956        if (cp != -1) {
     3957          pAD->fattrs.usCodePage = (USHORT) cp;
     3958          Codepage = pAD->fattrs.usCodePage;
     3959          PrfWriteProfileData(fmprof,
     3960                              appname,
     3961                              "Seeall.Codepage",
     3962                              &pAD->fattrs.usCodePage, sizeof(USHORT));
     3963          GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);
     3964          GpiAssociate(pAD->hps, 0);
     3965          GpiDestroyPS(pAD->hps);
     3966          pAD->hps = InitWindow(hwnd);
     3967          pAD->maxx = pAD->horzscroll = 0;
     3968          WinInvalidateRect(hwnd, NULL, FALSE);
     3969        }
    39523970      }
    39533971      break;
     
    39563974      SetMLEFont(hwnd, &pAD->fattrs, 11);
    39573975      PrfWriteProfileData(fmprof,
    3958                           appname,
    3959                           "Seeall.Fattrs", &pAD->fattrs, sizeof(pAD->fattrs));
     3976                          appname,
     3977                          "Seeall.Fattrs", &pAD->fattrs, sizeof(pAD->fattrs));
    39603978      Fattrs = pAD->fattrs;
    39613979      GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);
     
    39703988      pAD->fullnames = (pAD->fullnames) ? FALSE : TRUE;
    39713989      PrfWriteProfileData(fmprof,
    3972                           appname,
    3973                           "Seeall.Fullnames", &pAD->fullnames, sizeof(BOOL));
     3990                          appname,
     3991                          "Seeall.Fullnames", &pAD->fullnames, sizeof(BOOL));
    39743992      Fullnames = pAD->fullnames;
    39753993      pAD->maxx = pAD->horzscroll = 0;
     
    39813999      SortReverse = pAD->invertsort;
    39824000      PrfWriteProfileData(fmprof,
    3983                           appname,
    3984                           "Seeall.SortReverse",
    3985                           (PVOID) & pAD->invertsort, sizeof(BOOL));
     4001                          appname,
     4002                          "Seeall.SortReverse",
     4003                          (PVOID) & pAD->invertsort, sizeof(BOOL));
    39864004      WinInvalidateRect(hwnd, NULL, FALSE);
    39874005      break;
     
    39944012    case IDM_SORTFIRST:
    39954013      if (!pAD->stopflag &&
    3996           !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    3997         {
    3998           USHORT dummy = SHORT1FROMMP(mp1);
    3999 
    4000           PrfWriteProfileData(fmprof,
    4001                               appname,
    4002                               "Seeall.Sort", (PVOID) & dummy, sizeof(USHORT));
    4003           SortType = SHORT1FROMMP(mp1);
    4004         }
    4005         WinSetPointer(HWND_DESKTOP, hptrBusy);
    4006         WinSendMsg(hwnd, UM_RESCAN, MPFROMLONG(1), MPVOID);
    4007         switch (SHORT1FROMMP(mp1)) {
    4008         case IDM_SORTEASIZE:
    4009           pAD->pfnCompare = (PFNSORT) NULL;
    4010           ReSort(hwnd);
    4011           break;
    4012 
    4013         case IDM_SORTNAME:
    4014           pAD->pfnCompare = comparefullnames;
    4015           ReSort(hwnd);
    4016           break;
    4017 
    4018         case IDM_SORTFILENAME:
    4019           pAD->pfnCompare = comparenames;
    4020           ReSort(hwnd);
    4021           break;
    4022 
    4023         case IDM_SORTSIZE:
    4024           pAD->pfnCompare = comparesizes;
    4025           ReSort(hwnd);
    4026           break;
    4027 
    4028         case IDM_SORTLWDATE:
    4029           pAD->pfnCompare = comparedates;
    4030           ReSort(hwnd);
    4031           break;
    4032 
    4033         case IDM_SORTFIRST:
    4034           pAD->pfnCompare = compareexts;
    4035           ReSort(hwnd);
    4036           break;
    4037         }
    4038         WinSetPointer(HWND_DESKTOP, hptrArrow);
    4039         DosReleaseMutexSem(pAD->hmtxScan);
    4040         WinInvalidateRect(hwnd, NULL, FALSE);
     4014          !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     4015        {
     4016          USHORT dummy = SHORT1FROMMP(mp1);
     4017
     4018          PrfWriteProfileData(fmprof,
     4019                              appname,
     4020                              "Seeall.Sort", (PVOID) & dummy, sizeof(USHORT));
     4021          SortType = SHORT1FROMMP(mp1);
     4022        }
     4023        WinSetPointer(HWND_DESKTOP, hptrBusy);
     4024        WinSendMsg(hwnd, UM_RESCAN, MPFROMLONG(1), MPVOID);
     4025        switch (SHORT1FROMMP(mp1)) {
     4026        case IDM_SORTEASIZE:
     4027          pAD->pfnCompare = (PFNSORT) NULL;
     4028          ReSort(hwnd);
     4029          break;
     4030
     4031        case IDM_SORTNAME:
     4032          pAD->pfnCompare = comparefullnames;
     4033          ReSort(hwnd);
     4034          break;
     4035
     4036        case IDM_SORTFILENAME:
     4037          pAD->pfnCompare = comparenames;
     4038          ReSort(hwnd);
     4039          break;
     4040
     4041        case IDM_SORTSIZE:
     4042          pAD->pfnCompare = comparesizes;
     4043          ReSort(hwnd);
     4044          break;
     4045
     4046        case IDM_SORTLWDATE:
     4047          pAD->pfnCompare = comparedates;
     4048          ReSort(hwnd);
     4049          break;
     4050
     4051        case IDM_SORTFIRST:
     4052          pAD->pfnCompare = compareexts;
     4053          ReSort(hwnd);
     4054          break;
     4055        }
     4056        WinSetPointer(HWND_DESKTOP, hptrArrow);
     4057        DosReleaseMutexSem(pAD->hmtxScan);
     4058        WinInvalidateRect(hwnd, NULL, FALSE);
    40414059      }
    40424060      break;
     
    40444062    case IDM_FILTER:
    40454063      if (!pAD->stopflag &&
    4046           !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    4047         FilterList(hwnd);
    4048         DosReleaseMutexSem(pAD->hmtxScan);
     4064          !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     4065        FilterList(hwnd);
     4066        DosReleaseMutexSem(pAD->hmtxScan);
    40494067      }
    40504068      break;
     
    40524070    case IDM_RESCAN:
    40534071      if (!pAD->stopflag &&
    4054           !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    4055 
    4056         CHAR tempflags[26];
    4057 
    4058         memcpy(tempflags, pAD->abDrvFlags, sizeof(tempflags));
    4059         if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc, FM3ModHandle,
    4060                        DRVS_FRAME, (PVOID) pAD)) {
    4061           memcpy(pAD->abDrvFlags, tempflags, sizeof(tempflags));
    4062           *pAD->szFindPath = 0;
    4063           DosReleaseMutexSem(pAD->hmtxScan);
    4064           break;
    4065         }
    4066         WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1),
    4067                    MPVOID);
    4068         WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1),
    4069                    MPVOID);
    4070         pAD->topfile = 1;
    4071         pAD->cursored = 1;
    4072         pAD->selected = 0;
    4073         pAD->ullSelectedBytes = 0;
    4074         pAD->maxx = pAD->horzscroll = 0;
    4075         FreeAllFilesList(hwnd);
    4076         pAD->stopflag = 0;
    4077         if (_beginthread(FindAllThread, NULL, 524288, (PVOID) hwnd) == -1) {
    4078           Runtime_Error(pszSrcFile, __LINE__,
    4079                         GetPString(IDS_COULDNTSTARTTHREADTEXT));
    4080           WinDestroyWindow(WinQueryWindow(hwnd, QW_PARENT));
    4081           DosReleaseMutexSem(pAD->hmtxScan);
    4082         }
    4083         else {
    4084           DosReleaseMutexSem(pAD->hmtxScan);
    4085           DosSleep(50);//05 Aug 07 GKY 100
    4086           WinInvalidateRect(hwnd, NULL, FALSE);
    4087           PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID);
    4088           PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
    4089         }
     4072          !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     4073
     4074        CHAR tempflags[26];
     4075
     4076        memcpy(tempflags, pAD->abDrvFlags, sizeof(tempflags));
     4077        if (!WinDlgBox(HWND_DESKTOP, hwnd, AFDrvsWndProc, FM3ModHandle,
     4078                       DRVS_FRAME, (PVOID) pAD)) {
     4079          memcpy(pAD->abDrvFlags, tempflags, sizeof(tempflags));
     4080          *pAD->szFindPath = 0;
     4081          DosReleaseMutexSem(pAD->hmtxScan);
     4082          break;
     4083        }
     4084        WinSendMsg(pAD->hhscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1),
     4085                   MPVOID);
     4086        WinSendMsg(pAD->hvscroll, SBM_SETTHUMBSIZE, MPFROM2SHORT(1, 1),
     4087                   MPVOID);
     4088        pAD->topfile = 1;
     4089        pAD->cursored = 1;
     4090        pAD->selected = 0;
     4091        pAD->ullSelectedBytes = 0;
     4092        pAD->maxx = pAD->horzscroll = 0;
     4093        FreeAllFilesList(hwnd);
     4094        pAD->stopflag = 0;
     4095        if (_beginthread(FindAllThread, NULL, 524288, (PVOID) hwnd) == -1) {
     4096          Runtime_Error(pszSrcFile, __LINE__,
     4097                        GetPString(IDS_COULDNTSTARTTHREADTEXT));
     4098          WinDestroyWindow(WinQueryWindow(hwnd, QW_PARENT));
     4099          DosReleaseMutexSem(pAD->hmtxScan);
     4100        }
     4101        else {
     4102          DosReleaseMutexSem(pAD->hmtxScan);
     4103          DosSleep(50);//05 Aug 07 GKY 100
     4104          WinInvalidateRect(hwnd, NULL, FALSE);
     4105          PostMsg(hwnd, UM_SETUP2, MPVOID, MPVOID);
     4106          PostMsg(hwnd, UM_RESCAN, MPVOID, MPVOID);
     4107        }
    40904108      }
    40914109      break;
     
    41334151    case IDM_OPENDEFAULT:
    41344152      if (!pAD->stopflag &&
    4135           !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
    4136         switch (SHORT1FROMMP(mp1)) {
    4137         case IDM_SELECTALL:
    4138         case IDM_DESELECTALL:
    4139         case IDM_INVERT:
    4140         case IDM_HIDEALL:
    4141         case IDM_REMOVE:
    4142           Mark(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTALL) ?
    4143                AFM_UNMARK : (SHORT1FROMMP(mp1) == IDM_INVERT) ?
    4144                AFM_INVERT : (SHORT1FROMMP(mp1) == IDM_HIDEALL) ?
    4145                AFM_FILTER : (SHORT1FROMMP(mp1) == IDM_REMOVE) ?
    4146                AFM_MARKDELETED : 0, NULL);
    4147           if (SHORT1FROMMP(mp1) == IDM_REMOVE ||
    4148               SHORT1FROMMP(mp1) == IDM_HIDEALL) {
    4149             if (SHORT1FROMMP(mp1) == IDM_REMOVE)
    4150               RemoveDeleted(hwnd);
    4151             else
    4152               ReSort(hwnd);
    4153           }
    4154           WinInvalidateRect(hwnd, NULL, FALSE);
    4155           break;
    4156 
    4157         case IDM_SELECTMASK:
    4158         case IDM_DESELECTMASK:
    4159           SelectMask(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTMASK));
    4160           WinInvalidateRect(hwnd, NULL, FALSE);
    4161           break;
    4162 
    4163         case IDM_DELETE:
    4164         case IDM_PERMDELETE:
     4153          !DosRequestMutexSem(pAD->hmtxScan, SEM_IMMEDIATE_RETURN)) {
     4154        switch (SHORT1FROMMP(mp1)) {
     4155        case IDM_SELECTALL:
     4156        case IDM_DESELECTALL:
     4157        case IDM_INVERT:
     4158        case IDM_HIDEALL:
     4159        case IDM_REMOVE:
     4160          Mark(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTALL) ?
     4161               AFM_UNMARK : (SHORT1FROMMP(mp1) == IDM_INVERT) ?
     4162               AFM_INVERT : (SHORT1FROMMP(mp1) == IDM_HIDEALL) ?
     4163               AFM_FILTER : (SHORT1FROMMP(mp1) == IDM_REMOVE) ?
     4164               AFM_MARKDELETED : 0, NULL);
     4165          if (SHORT1FROMMP(mp1) == IDM_REMOVE ||
     4166              SHORT1FROMMP(mp1) == IDM_HIDEALL) {
     4167            if (SHORT1FROMMP(mp1) == IDM_REMOVE)
     4168              RemoveDeleted(hwnd);
     4169            else
     4170              ReSort(hwnd);
     4171          }
     4172          WinInvalidateRect(hwnd, NULL, FALSE);
     4173          break;
     4174
     4175        case IDM_SELECTMASK:
     4176        case IDM_DESELECTMASK:
     4177          SelectMask(hwnd, (SHORT1FROMMP(mp1) == IDM_DESELECTMASK));
     4178          WinInvalidateRect(hwnd, NULL, FALSE);
     4179          break;
     4180
     4181        case IDM_DELETE:
     4182        case IDM_PERMDELETE:
    41654183        case IDM_APPENDTOCLIP:
    41664184        case IDM_APPENDTOCLIPFILENAME:
    4167         case IDM_SAVETOCLIP:
     4185        case IDM_SAVETOCLIP:
    41684186        case IDM_SAVETOCLIPFILENAME:
    4169         case IDM_SAVETOLIST:
    4170         case IDM_COLLECT:
    4171         case IDM_INFO:
    4172         case IDM_ATTRS:
    4173         case IDM_MOVE:
    4174         case IDM_COPY:
    4175         case IDM_RENAME:
    4176         case IDM_MOVEPRESERVE:
    4177         case IDM_COPYPRESERVE:
    4178         case IDM_WILDMOVE:
    4179         case IDM_WILDCOPY:
    4180         case IDM_SUBJECT:
    4181         case IDM_PRINT:
    4182         case IDM_EAS:
    4183         case IDM_ARCHIVE:
    4184         case IDM_EXTRACT:
    4185         case IDM_SHADOW:
    4186         case IDM_OBJECT:
    4187         case IDM_OPENSETTINGS:
    4188         case IDM_OPENDEFAULT:
    4189         case IDM_UUDECODE:
    4190           {
    4191             CHAR **list = BuildAList(hwnd);
    4192 
    4193             if (!list)
    4194               Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
    4195             else {
    4196               switch (SHORT1FROMMP(mp1)) {
    4197               case IDM_COLLECT:
    4198                 CollectList(hwnd, list);
    4199                 break;
    4200               case IDM_DELETE:
    4201               case IDM_PERMDELETE:
     4187        case IDM_SAVETOLIST:
     4188        case IDM_COLLECT:
     4189        case IDM_INFO:
     4190        case IDM_ATTRS:
     4191        case IDM_MOVE:
     4192        case IDM_COPY:
     4193        case IDM_RENAME:
     4194        case IDM_MOVEPRESERVE:
     4195        case IDM_COPYPRESERVE:
     4196        case IDM_WILDMOVE:
     4197        case IDM_WILDCOPY:
     4198        case IDM_SUBJECT:
     4199        case IDM_PRINT:
     4200        case IDM_EAS:
     4201        case IDM_ARCHIVE:
     4202        case IDM_EXTRACT:
     4203        case IDM_SHADOW:
     4204        case IDM_OBJECT:
     4205        case IDM_OPENSETTINGS:
     4206        case IDM_OPENDEFAULT:
     4207        case IDM_UUDECODE:
     4208          {
     4209            CHAR **list = BuildAList(hwnd);
     4210
     4211            if (!list)
     4212              Runtime_Error2(pszSrcFile, __LINE__, IDS_NODATATEXT);
     4213            else {
     4214              switch (SHORT1FROMMP(mp1)) {
     4215              case IDM_COLLECT:
     4216                CollectList(hwnd, list);
     4217                break;
     4218              case IDM_DELETE:
     4219              case IDM_PERMDELETE:
    42024220              case IDM_APPENDTOCLIP:
    42034221              case IDM_APPENDTOCLIPFILENAME:
    4204               case IDM_SAVETOCLIP:
     4222              case IDM_SAVETOCLIP:
    42054223              case IDM_SAVETOCLIPFILENAME:
    4206               case IDM_SAVETOLIST:
    4207               case IDM_INFO:
    4208               case IDM_ATTRS:
    4209               case IDM_MOVE:
    4210               case IDM_COPY:
    4211               case IDM_RENAME:
    4212               case IDM_MOVEPRESERVE:
    4213               case IDM_COPYPRESERVE:
    4214               case IDM_WILDMOVE:
    4215               case IDM_WILDCOPY:
    4216               case IDM_SUBJECT:
    4217               case IDM_PRINT:
    4218               case IDM_EAS:
    4219               case IDM_ARCHIVE:
    4220               case IDM_EXTRACT:
    4221               case IDM_UUDECODE:
    4222               case IDM_OBJECT:
    4223               case IDM_SHADOW:
    4224               case IDM_OPENSETTINGS:
    4225               case IDM_OPENDEFAULT:
    4226                 if (!PostMsg(pAD->hwndObj, UM_MASSACTION, mp1, MPFROMP(list)))
    4227                   FreeList(list);
    4228                 break;
    4229               }
    4230               if (fUnHilite) {
    4231                 Mark(hwnd, AFM_UNMARK, NULL);
    4232                 WinInvalidateRect(hwnd, NULL, FALSE);
    4233               }
    4234             }
    4235           }
    4236           break;
    4237 
    4238         case IDM_COLLECTOR:
    4239           if (mp2) {
    4240 
    4241             CHAR **list = mp2;
    4242 
    4243             if (Collector) {
    4244               if (!PostMsg(Collector, WM_COMMAND,
    4245                            MPFROM2SHORT(IDM_COLLECTOR, 0), MPFROMP(list)))
    4246                 FreeList(list);
    4247               else if (fUnHilite) {
    4248                 Mark(hwnd, AFM_UNMARK, NULL);
    4249                 WinInvalidateRect(hwnd, NULL, FALSE);
    4250               }
    4251             }
    4252             else
    4253               FreeList(list);
    4254           }
    4255           break;
    4256         }
    4257         DosReleaseMutexSem(pAD->hmtxScan);
     4224              case IDM_SAVETOLIST:
     4225              case IDM_INFO:
     4226              case IDM_ATTRS:
     4227              case IDM_MOVE:
     4228              case IDM_COPY:
     4229              case IDM_RENAME:
     4230              case IDM_MOVEPRESERVE:
     4231              case IDM_COPYPRESERVE:
     4232              case IDM_WILDMOVE:
     4233              case IDM_WILDCOPY:
     4234              case IDM_SUBJECT:
     4235              case IDM_PRINT:
     4236              case IDM_EAS:
     4237              case IDM_ARCHIVE:
     4238              case IDM_EXTRACT:
     4239              case IDM_UUDECODE:
     4240              case IDM_OBJECT:
     4241              case IDM_SHADOW:
     4242              case IDM_OPENSETTINGS:
     4243              case IDM_OPENDEFAULT:
     4244                if (!PostMsg(pAD->hwndObj, UM_MASSACTION, mp1, MPFROMP(list)))
     4245                  FreeList(list);
     4246                break;
     4247              }
     4248              if (fUnHilite) {
     4249                Mark(hwnd, AFM_UNMARK, NULL);
     4250                WinInvalidateRect(hwnd, NULL, FALSE);
     4251              }
     4252            }
     4253          }
     4254          break;
     4255
     4256        case IDM_COLLECTOR:
     4257          if (mp2) {
     4258
     4259            CHAR **list = mp2;
     4260
     4261            if (Collector) {
     4262              if (!PostMsg(Collector, WM_COMMAND,
     4263                           MPFROM2SHORT(IDM_COLLECTOR, 0), MPFROMP(list)))
     4264                FreeList(list);
     4265              else if (fUnHilite) {
     4266                Mark(hwnd, AFM_UNMARK, NULL);
     4267                WinInvalidateRect(hwnd, NULL, FALSE);
     4268              }
     4269            }
     4270            else
     4271              FreeList(list);
     4272          }
     4273          break;
     4274        }
     4275        DosReleaseMutexSem(pAD->hmtxScan);
    42584276      }
    42594277      else if (SHORT1FROMMP(mp1) == IDM_COLLECTOR) {
    4260         DosSleep(50);//05 Aug 07 GKY 100
    4261         if (!PostMsg(hwnd, msg, mp1, mp2))
    4262           WinSendMsg(hwnd, msg, mp1, mp2);
     4278        DosSleep(50);//05 Aug 07 GKY 100
     4279        if (!PostMsg(hwnd, msg, mp1, mp2))
     4280          WinSendMsg(hwnd, msg, mp1, mp2);
    42634281      }
    42644282      break;
     
    42664284    case IDM_HELP:
    42674285      if (hwndHelp)
    4268         WinSendMsg(hwndHelp,
    4269                    HM_DISPLAY_HELP,
    4270                    MPFROM2SHORT(HELP_SEEALL, 0), MPFROMSHORT(HM_RESOURCEID));
     4286        WinSendMsg(hwndHelp,
     4287                   HM_DISPLAY_HELP,
     4288                   MPFROM2SHORT(HELP_SEEALL, 0), MPFROMSHORT(HM_RESOURCEID));
    42714289      break;
    42724290    }
     
    42904308      pAD->stopflag = 1;
    42914309      if (pAD->hmtxScan) {
    4292         DosRequestMutexSem(pAD->hmtxScan, 15000);
    4293         DosCloseMutexSem(pAD->hmtxScan);
     4310        DosRequestMutexSem(pAD->hmtxScan, 15000);
     4311        DosCloseMutexSem(pAD->hmtxScan);
    42944312      }
    42954313      if (pAD->hwndPopup)
    4296         WinDestroyWindow(pAD->hwndPopup);
     4314        WinDestroyWindow(pAD->hwndPopup);
    42974315      if (pAD->hwndObj) {
    4298         if (!PostMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID))
    4299           WinSendMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID);
     4316        if (!PostMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID))
     4317          WinSendMsg(pAD->hwndObj, WM_CLOSE, MPVOID, MPVOID);
    43004318      }
    43014319      if (pAD->hps) {
    4302         GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);
    4303         GpiAssociate(pAD->hps, 0);
    4304         GpiDestroyPS(pAD->hps);
     4320        GpiDeleteSetId(pAD->hps, FIXED_FONT_LCID);
     4321        GpiAssociate(pAD->hps, 0);
     4322        GpiDestroyPS(pAD->hps);
    43054323      }
    43064324      if (pAD->killme) {
    4307         if (!PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID))
    4308           WinSendMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID);
     4325        if (!PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID))
     4326          WinSendMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID);
    43094327      }
    43104328      FreeAllFilesList(hwnd);
     
    43204338}
    43214339
    4322 HWND StartSeeAll(HWND hwndParent, BOOL standalone,      // called by applet
    4323                  CHAR * pszStartPath)   // pathname or NULL
     4340HWND StartSeeAll(HWND hwndParent, BOOL standalone,      // called by applet
     4341                 CHAR * pszStartPath)   // pathname or NULL
    43244342{
    43254343  HWND hwndFrame = (HWND) 0, hwndClient;
     
    43324350    FrameFlags |= (FCF_TASKLIST | FCF_SHELLPOSITION);
    43334351  hwndFrame = WinCreateStdWindow(hwndParent,
    4334                                 WS_VISIBLE,
    4335                                 &FrameFlags,
    4336                                 WC_SEEALL,
    4337                                 GetPString(IDS_SEEALLTITLETEXT),
    4338                                 WS_VISIBLE | fwsAnimate,
    4339                                 FM3ModHandle, SEEALL_FRAME, &hwndClient);
     4352                                WS_VISIBLE,
     4353                                &FrameFlags,
     4354                                WC_SEEALL,
     4355                                GetPString(IDS_SEEALLTITLETEXT),
     4356                                WS_VISIBLE | fwsAnimate,
     4357                                FM3ModHandle, SEEALL_FRAME, &hwndClient);
    43404358  if (hwndFrame) {
    43414359    static CHAR *pszDir;
     
    43434361    if (standalone) {
    43444362      if (!PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    4345                    UM_SETUP4, MPVOID, MPVOID)) {
    4346         PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID);
    4347         return (HWND) 0;
     4363                   UM_SETUP4, MPVOID, MPVOID)) {
     4364        PostMsg((HWND) 0, WM_QUIT, MPVOID, MPVOID);
     4365        return (HWND) 0;
    43484366      }
    43494367    }
     
    43514369      // Needs to be static for other thread
    43524370      if (!pszDir)
    4353         pszDir = xmalloc(CCHMAXPATH, pszSrcFile, __LINE__);
     4371        pszDir = xmalloc(CCHMAXPATH, pszSrcFile, __LINE__);
    43544372      if (pszDir) {
    4355         strcpy(pszDir, pszStartPath);
    4356         pszStartPath = pszDir;
     4373        strcpy(pszDir, pszStartPath);
     4374        pszStartPath = pszDir;
    43574375      }
    43584376    }
    43594377    PostMsg(WinWindowFromID(hwndFrame, FID_CLIENT),
    4360             UM_SETUP5, MPFROMP(pszStartPath), MPVOID);
     4378            UM_SETUP5, MPFROMP(pszStartPath), MPVOID);
    43614379  }
    43624380  else if (standalone)
  • trunk/dll/select.c

    r1039 r1158  
    4747#include "errutil.h"                    // Dos_Error...
    4848#include "strutil.h"                    // GetPString
     49#include "select.h"
     50#include "valid.h"                      // TestCDates
    4951#include "fm3dll.h"
    5052#include "fortify.h"
  • trunk/dll/shadow.c

    r1047 r1158  
    2828#include "errutil.h"                    // Dos_Error...
    2929#include "strutil.h"                    // GetPString
     30#include "shadow.h"
    3031#include "fm3dll.h"
    3132#include "fortify.h"
     
    3435
    3536static PSZ pszSrcFile = __FILE__;
     37
     38static HOBJECT CreateDataObject(CHAR * objtitle, CHAR * location, CHAR * path,
     39                         CHAR * cnr);
     40static HOBJECT CreateFolderObject(CHAR * objtitle, CHAR * cnr);
     41
     42static HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
     43                            CHAR * cnr);
     44static HOBJECT CreateShadowObject(CHAR * objtitle, CHAR * location, CHAR * path,
     45                           BOOL executable, CHAR * cnr);
    3646
    3747HOBJECT CreateProgramObject(CHAR * objtitle, CHAR * location, CHAR * path,
  • trunk/dll/worker.c

    r1140 r1158  
    1 
    21/***********************************************************************
    32
     
    5756#include "strutil.h"                    // GetPString
    5857#include "notebook.h"                   // External viewers
     58#include "worker.h"                     // Action
     59#include "notify.h"                     // AddNote
     60#include "copyf.h"                      // AdjustWildcardName, make_deleteable
     61#include "attribs.h"                    // AttrListDlgProc
     62#include "chklist.h"                    // CheckListProc
     63#include "info.h"                       // DrvInfoProc
     64#include "extract.h"                    // ExtractDlgProc
     65#include "info.h"                       // FileInfoProc
     66#include "valid.h"                      // GetDesktopName, IsNewer
     67#include "saveclip.h"                   // ListToClipboardHab
     68#include "shadow.h"                     // MakeShadows
     69#include "mkdir.h"                      // MassMkdir
     70#include "uudecode.h"                   // MergeDlgProc
     71#include "objcnr.h"                     // ObjCnrDlgProc
     72#include "printer.h"                    // PrintDlgProc, PrintListThread
     73#include "rename.h"                     // RenameProc
     74#include "srchpath.h"                   // RunFM2Util
     75#include "mainwnd.h"                    // TopWindowName
     76#include "uudecode.h"                   // UUD
     77#include "walkem.h"                     // WalkCopyDlgProc, WalkDlgProc, WalkMoveDlgProc
    5978#include "fm3dll.h"
    6079
Note: See TracChangeset for help on using the changeset viewer.