Changeset 562
- Timestamp:
- Mar 15, 2007, 1:13:12 AM (19 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/HISTORY
r556 r562 1 1 New stuff's at the top. This list is not necessarily complete. 2 3.05 beta 8 (pending)2 3.05 beta 8 3 3 o Add SelectDriveIcon function (Gregg) 4 4 o New drive flags - ramdisk, virtual drive & no drive stats (Gregg) … … 13 13 o Source code cleanup (Gregg) 14 14 o Icons update appropriately with drive flag changes (Steven) 15 o Fixed hang when viewing a file from an archive caused by a viewer as child + archiver activity visible settings. (Steven) 15 16 16 17 3.05beta07 -
trunk/dll/arccnrs.c
r551 r562 31 31 23 Aug 06 SHL Integrate John Small's switch list title logic 32 32 03 Nov 06 SHL Renames 33 14 Mar 07 SHL ArcObjWndProc/UM_ENTER: delay before starting viewer 33 34 34 35 ***********************************************************************/ … … 131 132 if (*viewer) { 132 133 ExecOnList((HWND) 0, viewer, WINDOWED | SEPARATE | 133 ((fViewChild) ? CHILD : 0), NULL, list, NULL); 134 (fViewChild ? CHILD : 0), 135 NULL, list, NULL); 134 136 } 135 137 else … … 143 145 runemf2(SEPARATEKEEP | WINDOWED | MAXIMIZED, 144 146 hwnd, NULL, NULL, "%s %s%s%s", ad->info->test, 145 ((needs_quoting(ad->arcname)) ? "\"" : NullStr), 146 ad->arcname, ((needs_quoting(ad->arcname)) ? "\"" : NullStr)); 147 needs_quoting(ad->arcname) ? "\"" : NullStr, 148 ad->arcname, 149 needs_quoting(ad->arcname) ? "\"" : NullStr); 147 150 break; 148 151 } … … 234 237 ret = (SHORT) stricmp(pai1->szFileName, pai2->szFileName); 235 238 if (ret && (sortFlags & SORT_REVERSE)) 236 ret = (ret > 0)? -1 : 1;239 ret = ret > 0 ? -1 : 1; 237 240 return ret; 238 241 } … … 387 390 p, 388 391 info->list, 389 (needs_quoting(arcname)) ? "\"" : NullStr, 390 arcname, (needs_quoting(arcname)) ? "\"" : NullStr, arctemp); 392 needs_quoting(arcname) ? "\"" : NullStr, 393 arcname, 394 needs_quoting(arcname) ? "\"" : NullStr, 395 arctemp); 391 396 } 392 397 else { … … 415 420 runemf2(SEPARATE | INVISIBLE | FULLSCREEN | BACKGROUND | WAIT, 416 421 hwndCnr, NULL, NULL, "%s %s%s%s", info->list, 417 (needs_quoting(arcname)) ? "\"" : NullStr, arcname, 418 (needs_quoting(arcname)) ? "\"" : NullStr); 422 needs_quoting(arcname) ? "\"" : NullStr, 423 arcname, 424 needs_quoting(arcname) ? "\"" : NullStr); 419 425 oldstdout = fileno(stdout); 420 426 DosError(FERR_DISABLEHARDERR); … … 545 551 saymsg(MB_ENTER, hwndCnr, DEBUG_STRING, 546 552 "fname: %s\r\rpp: %s\r\rp: %s\r\rlonename: %s\r\rhighest: %ld\r\rx: %ld\r\rfdate: %s", 547 (fname)? fname : "NULL",548 (pp)? pp : "NULL",549 (p)? p : "NULL",553 fname ? fname : "NULL", 554 pp ? pp : "NULL", 555 p ? p : "NULL", 550 556 lonename, highest, x, (fdate) ? fdate : "NULL"); 551 557 #endif … … 574 580 pai->pszFileName = pai->szFileName; 575 581 pai->rc.pszIcon = pai->pszFileName; 576 pai->rc.hptrIcon = ( (pai->flags & ARCFLAGS_REALDIR) != 0)?582 pai->rc.hptrIcon = (pai->flags & ARCFLAGS_REALDIR) != 0 ? 577 583 hptrDir : hptrFile; 578 584 pai->pszDate = pai->szDate; … … 638 644 sprintf(errstr, GetPString(IDS_ARCERRORINFOTEXT), 639 645 arcname, 640 (!gotstart)? GetPString(IDS_NOGOTSTARTTEXT) : NullStr,641 (!numarcfiles)? GetPString(IDS_NOARCFILESFOUNDTEXT) :646 !gotstart ? GetPString(IDS_NOGOTSTARTTEXT) : NullStr, 647 !numarcfiles ? GetPString(IDS_NOARCFILESFOUNDTEXT) : 642 648 NullStr, 643 (!gotend)? GetPString(IDS_NOENDOFLISTTEXT) : NullStr);649 !gotend ? GetPString(IDS_NOENDOFLISTTEXT) : NullStr); 644 650 memset(&ad, 0, sizeof(ARCDUMP)); 645 651 ad.info = info; … … 943 949 if (AcceptOneDrop(mp1, mp2)) 944 950 return MRFROM2SHORT(DOR_DROP, DO_MOVE); 945 return MRFROM2SHORT(DOR_NODROP, 0); /* Drop not valid 951 return MRFROM2SHORT(DOR_NODROP, 0); /* Drop not valid */ 946 952 case DM_DROPHELP: 947 953 DropHelp(mp1, mp2, hwnd, GetPString(IDS_ARCCNRFOLDERDROPHELPTEXT)); … … 1203 1209 // saymsg(MB_ENTER,HWND_DESKTOP,DEBUG_STRING,"%s %s %s\r[%s]",dcd->info->extract,dcd->arcname,membername,construct); 1204 1210 runemf2(SEPARATE | WINDOWED | WAIT | 1205 ((fArcStuffVisible) ? 0 : (BACKGROUND | MINIMIZED)) | 1206 WAIT, dcd->hwndClient, construct, NULL, "%s %s%s%s %s%s%s", 1211 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED) | 1212 WAIT, 1213 dcd->hwndClient, construct, NULL, "%s %s%s%s %s%s%s", 1207 1214 dcd->info->extract, 1208 (needs_quoting(dcd->arcname)) ? "\"" : NullStr,1215 needs_quoting(dcd->arcname) ? "\"" : NullStr, 1209 1216 dcd->arcname, 1210 (needs_quoting(dcd->arcname)) ? "\"" : NullStr, 1211 (needs_quoting(membername)) ? "\"" : NullStr, 1212 membername, (needs_quoting(membername)) ? "\"" : NullStr); 1217 needs_quoting(dcd->arcname) ? "\"" : NullStr, 1218 needs_quoting(membername) ? "\"" : NullStr, 1219 membername, 1220 needs_quoting(membername) ? "\"" : NullStr); 1213 1221 if (*construct && construct[strlen(construct) - 1] != '\\') 1214 1222 strcat(construct, "\\"); … … 1329 1337 } 1330 1338 runemf2(SEPARATE | WINDOWED | 1331 ((fArcStuffVisible) ? 0 : (BACKGROUND | MINIMIZED)) | 1332 WAIT, dcd->hwndClient, dcd->workdir, NULL, "%s %s%s%s %s%s%s", 1333 ((dcd->info->exwdirs) ? dcd->info->exwdirs : 1334 dcd->info->extract), 1335 (needs_quoting(dcd->arcname)) ? "\"" : NullStr, 1339 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED) | 1340 WAIT, 1341 dcd->hwndClient, dcd->workdir, NULL, "%s %s%s%s %s%s%s", 1342 dcd->info->exwdirs ? dcd->info->exwdirs : 1343 dcd->info->extract, 1344 needs_quoting(dcd->arcname) ? "\"" : NullStr, 1336 1345 dcd->arcname, 1337 (needs_quoting(dcd->arcname)) ? "\"" : NullStr, 1338 (needs_quoting(s)) ? "\"" : NullStr, 1339 s, (needs_quoting(s)) ? "\"" : NullStr); 1340 1346 needs_quoting(dcd->arcname) ? "\"" : NullStr, 1347 needs_quoting(s) ? "\"" : NullStr, 1348 s, 1349 needs_quoting(s) ? "\"" : NullStr); 1350 1351 // printf("%s %d runemf2 returned\n", __FILE__, __LINE__); fflush(stdout); // 10 Mar 07 SHL 1341 1352 if (!dcd->info->exwdirs) { 1342 1353 p = s; … … 1357 1368 p++; 1358 1369 } 1370 // printf("%s %d UM_ENTER %s %s\n",__FILE__, __LINE__,filename, s); fflush(stdout); // 10 Mar 07 SHL hang 1359 1371 free(s); 1360 if (IsFile(filename) == 1) 1372 if (IsFile(filename) == 1) { 1373 if (fViewChild) 1374 DosSleep(250); // Allow unzip session to finish closing 14 Mar 07 SHL 1361 1375 WinSendMsg(dcd->hwndCnr, UM_ENTER, MPFROMP(filename), MPVOID); 1376 } 1362 1377 } 1363 1378 } … … 1430 1445 strlen(li->list[x]) + 5 > 1024) { 1431 1446 runemf2(SEPARATE | WINDOWED | 1432 ((fArcStuffVisible) ? 0 :1433 (BACKGROUND | MINIMIZED)) |1434 WAIT,hwnd, NULL, NULL, "%s", szBuffer);1447 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED) | 1448 WAIT, 1449 hwnd, NULL, NULL, "%s", szBuffer); 1435 1450 *p = 0; 1436 1451 } … … 1500 1515 z = x; 1501 1516 runemf2(SEPARATE | WINDOWED | 1502 ((fArcStuffVisible) ? 0 : (BACKGROUND | MINIMIZED)) | 1503 WAIT, hwnd, NullStr, NULL, "%s", cl); 1517 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED) | 1518 WAIT, 1519 hwnd, NullStr, NULL, "%s", cl); 1504 1520 *endofit = 0; 1505 1521 } while (li->list[x]); … … 1601 1617 && !li->info->exwdirs)) ? li->info-> 1602 1618 extract : li->info->exwdirs, 1603 (needs_quoting(li->arcname)) ? "\"" : NullStr,1619 needs_quoting(li->arcname) ? "\"" : NullStr, 1604 1620 li->arcname, 1605 (needs_quoting(li->arcname)) ? "\"" : NullStr);1621 needs_quoting(li->arcname) ? "\"" : NullStr); 1606 1622 endofit = &cl[strlen(cl)]; 1607 1623 z = 0; … … 1624 1640 z = x; 1625 1641 runemf2(SEPARATE | WINDOWED | 1626 (fArcStuffVisible ? 0 : (BACKGROUND | MINIMIZED)) | 1627 WAIT, hwnd, li->targetpath, NULL, "%s", cl); 1642 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED) | 1643 WAIT, 1644 hwnd, li->targetpath, NULL, "%s", cl); 1628 1645 *endofit = 0; 1629 1646 } while (li->list[x]); … … 1751 1768 runemf2(SEPARATE | WINDOWED, HWND_DESKTOP, NULL, 1752 1769 NULL, "%sFM2PLAY.EXE /@$FM2PLAY.$$$", 1753 (fAddUtils)? "UTILS\\" : NullStr);1770 fAddUtils ? "UTILS\\" : NullStr); 1754 1771 } 1755 1772 } … … 1848 1865 sprintf(fullname, "%s%s%s", dcd->directory, 1849 1866 (dcd->directory[strlen(dcd->directory) - 1] == 1850 '\\') ? NullStr : "\\", p); 1867 '\\') ? NullStr : "\\", 1868 p); 1851 1869 if (IsFile(fullname) != -1) 1852 1870 if (AddToList(fullname, &list2, &numfiles, &numalloced)) … … 2109 2127 *tb ? " / " : NullStr, 2110 2128 tb, 2111 (*dcd->mask.szMask)? " (" : NullStr,2112 (*dcd->mask.szMask)? dcd->mask.szMask : NullStr,2113 (*dcd->mask.szMask)? ")" : NullStr, dcd->arcname);2129 *dcd->mask.szMask ? " (" : NullStr, 2130 *dcd->mask.szMask ? dcd->mask.szMask : NullStr, 2131 *dcd->mask.szMask ? ")" : NullStr, dcd->arcname); 2114 2132 WinSetWindowText(hwndStatus, s); 2115 2133 if (!ParentIsDesktop(hwnd, dcd->hwndParent)) { … … 2376 2394 ULONG wmsg; 2377 2395 2378 wmsg = (SHORT1FROMMP(mp1) == 0)? UM_FILESMENU : UM_VIEWSMENU;2396 wmsg = SHORT1FROMMP(mp1) == 0 ? UM_FILESMENU : UM_VIEWSMENU; 2379 2397 PortholeInit((HWND) WinSendMsg(dcd->hwndClient, 2380 2398 wmsg, MPVOID, MPVOID), mp1, mp2); … … 2408 2426 case IDM_VIEWSMENU: 2409 2427 WinCheckMenuItem((HWND) mp2, 2410 IDM_MINIICONS, ( (dcd->flWindowAttr & CV_MINI) != 0));2428 IDM_MINIICONS, (dcd->flWindowAttr & CV_MINI) != 0); 2411 2429 WinEnableMenuItem((HWND) mp2, 2412 2430 IDM_RESELECT, (dcd->lastselection != NULL)); … … 2425 2443 * add switchlist entries to end of pulldown menu 2426 2444 */ 2427 SetupWinList((HWND) 2428 (hwndMain) ? hwndMain : (HWND)0, dcd->hwndFrame);2445 SetupWinList((HWND)mp2, 2446 hwndMain ? hwndMain : (HWND)0, dcd->hwndFrame); 2429 2447 break; 2430 2448 } … … 2515 2533 2516 2534 case IDM_FOLDERAFTEREXTRACT: 2517 fFolderAfterExtract = (fFolderAfterExtract)? FALSE : TRUE;2535 fFolderAfterExtract = fFolderAfterExtract ? FALSE : TRUE; 2518 2536 PrfWriteProfileData(fmprof, appname, "FolderAfterExtract", 2519 2537 &fFolderAfterExtract, sizeof(BOOL)); … … 2685 2703 if (dcd->info->extract) 2686 2704 runemf2(SEPARATE | WINDOWED | 2687 ((fArcStuffVisible) ? 0 : (BACKGROUND | MINIMIZED)),2705 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED), 2688 2706 hwnd, dcd->directory, NULL, "%s %s%s%s", 2689 2707 dcd->info->extract, 2690 (needs_quoting(dcd->arcname)) ? "\"" : NullStr,2708 needs_quoting(dcd->arcname) ? "\"" : NullStr, 2691 2709 dcd->arcname, 2692 (needs_quoting(dcd->arcname)) ? "\"" : NullStr);2710 needs_quoting(dcd->arcname) ? "\"" : NullStr); 2693 2711 if (SHORT1FROMMP(mp1) == IDM_ARCEXTRACTEXIT) 2694 2712 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); … … 2699 2717 if (dcd->info->exwdirs) 2700 2718 runemf2(SEPARATE | WINDOWED | 2701 ((fArcStuffVisible) ? 0 : (BACKGROUND | MINIMIZED)),2719 (fArcStuffVisible ? 0 : BACKGROUND | MINIMIZED), 2702 2720 hwnd, dcd->directory, NULL, "%s %s%s%s", 2703 2721 dcd->info->exwdirs, 2704 (needs_quoting(dcd->arcname)) ? "\"" : NullStr,2722 needs_quoting(dcd->arcname) ? "\"" : NullStr, 2705 2723 dcd->arcname, 2706 (needs_quoting(dcd->arcname)) ? "\"" : NullStr);2724 needs_quoting(dcd->arcname) ? "\"" : NullStr); 2707 2725 if (SHORT1FROMMP(mp1) == IDM_ARCEXTRACTWDIRSEXIT) 2708 2726 PostMsg(hwnd, WM_CLOSE, MPVOID, MPVOID); … … 2773 2791 runemf2(SEPARATEKEEP | WINDOWED | MAXIMIZED, 2774 2792 hwnd, NULL, NULL, "%s %s%s%s", dcd->info->test, 2775 (needs_quoting(dcd->arcname)) ? "\"" : NullStr,2793 needs_quoting(dcd->arcname) ? "\"" : NullStr, 2776 2794 dcd->arcname, 2777 (needs_quoting(dcd->arcname)) ? "\"" : NullStr);2795 needs_quoting(dcd->arcname) ? "\"" : NullStr); 2778 2796 break; 2779 2797 … … 2920 2938 2921 2939 pDInfo = ((PCNRDRAGINFO) mp2)->pDragInfo; 2922 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO 2923 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO 2940 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO */ 2941 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO */ 2924 2942 } 2925 2943 return 0; … … 2929 2947 if (mp2) { 2930 2948 2931 PDRAGITEM pDItem; /* Pointer to DRAGITEM 2932 PDRAGINFO pDInfo; /* Pointer to DRAGINFO 2949 PDRAGITEM pDItem; /* Pointer to DRAGITEM */ 2950 PDRAGINFO pDInfo; /* Pointer to DRAGINFO */ 2933 2951 PARCITEM pci; 2934 2952 … … 2937 2955 pci = NULL; 2938 2956 pDInfo = ((PCNRDRAGINFO) mp2)->pDragInfo; 2939 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO 2957 DrgAccessDraginfo(pDInfo); /* Access DRAGINFO */ 2940 2958 if (*dcd->arcname) { 2941 2959 if ((driveflags[toupper(*dcd->arcname) - 'A'] & … … 2949 2967 return MRFROM2SHORT(DOR_NODROP, 0); 2950 2968 } 2951 pDItem = DrgQueryDragitemPtr(pDInfo, /* Access DRAGITEM 2952 0); /* Index to DRAGITEM 2969 pDItem = DrgQueryDragitemPtr(pDInfo, /* Access DRAGITEM */ 2970 0); /* Index to DRAGITEM */ 2953 2971 if (DrgVerifyRMF(pDItem, /* Check valid rendering */ 2954 DRM_OS2FILE, /* mechanisms and data 2972 DRM_OS2FILE, /* mechanisms and data */ 2955 2973 NULL) && !(pDItem->fsControl & DC_PREPARE)) { 2956 2974 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO */ 2957 return (MRFROM2SHORT(DOR_DROP, /* Return okay to drop*/2958 ((fCopyDefault) ? DO_COPY : DO_MOVE)));2959 } 2960 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO 2961 } 2962 return (MRFROM2SHORT(DOR_NEVERDROP, 0)); /* Drop not valid 2975 return MRFROM2SHORT(DOR_DROP, /* Return okay to drop */ 2976 fCopyDefault ? DO_COPY : DO_MOVE); 2977 } 2978 DrgFreeDraginfo(pDInfo); /* Free DRAGINFO */ 2979 } 2980 return (MRFROM2SHORT(DOR_NEVERDROP, 0)); /* Drop not valid */ 2963 2981 2964 2982 case CN_INITDRAG: … … 3011 3029 DosBeep(50, 100); // fixme to know why beep? 3012 3030 if (li) { 3013 li->type = (li->type == DO_MOVE)? IDM_ARCHIVEM : IDM_ARCHIVE;3031 li->type = li->type == DO_MOVE ? IDM_ARCHIVEM : IDM_ARCHIVE; 3014 3032 strcpy(li->targetpath, dcd->arcname); 3015 3033 if (!li->list || … … 3065 3083 CHAR s[CCHMAXPATHCOMP + 91], tf[81], tb[81]; 3066 3084 3067 pci = (PARCITEM) ((pre)? pre->pRecord : NULL);3085 pci = (PARCITEM)(pre ? pre->pRecord : NULL); 3068 3086 if (!pci) { 3069 3087 if (!ParentIsDesktop(hwnd, dcd->hwndParent)) { … … 3188 3206 break; 3189 3207 } 3190 return (dcd && dcd->oldproc)? dcd->oldproc(hwnd, msg, mp1, mp2) :3191 PFNWPCnr(hwnd, msg, mp1, mp2);3208 return dcd && dcd->oldproc ? dcd->oldproc(hwnd, msg, mp1, mp2) : 3209 PFNWPCnr(hwnd, msg, mp1, mp2); 3192 3210 } 3193 3211 … … 3305 3323 DRIVE_NOTWRITEABLE))) 3306 3324 save_dir2(dcd->directory); 3307 dcd->hwndParent = (hwndParent)? hwndParent : HWND_DESKTOP;3325 dcd->hwndParent = hwndParent ? hwndParent : HWND_DESKTOP; 3308 3326 dcd->hwndFrame = hwndFrame; 3309 3327 dcd->hwndClient = hwndClient; 3310 dcd->amextracted = ( (flags & 1) != 0);3311 dcd->dontclose = ( (flags & 4) != 0);3328 dcd->amextracted = (flags & 1) != 0; 3329 dcd->dontclose = (flags & 4) != 0; 3312 3330 dcd->info = info; 3313 3331 dcd->sortFlags = DefArcSortFlags; -
trunk/dll/systemf.c
r552 r562 623 623 STARTDATA sdata; 624 624 REQUESTDATA rq; 625 ULONG ulSessID, apptype, ulLength, ctr; 625 ULONG ulSessID; 626 ULONG ulLength; 627 UINT ctr; 628 ULONG ulAppType; 626 629 PID sessPID; 627 630 BOOL wasquote; … … 776 779 switch_to(pszDirectory); 777 780 } 778 rc = DosQ AppType(pszPgm,&apptype);781 rc = DosQueryAppType(pszPgm,&ulAppType); 779 782 if (!strchr(pszPgm, '\\') && 780 783 !strchr(pszPgm, ':') && … … 783 786 switch_to(szSavedir); 784 787 if (rc) { 785 786 787 788 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__, 789 GetPString(IDS_DOSQAPPTYPEFAILEDTEXT), 790 pszPgm); 788 791 DosFreeMem(pszPgm); 789 792 if (pszArgs) … … 791 794 return -1; 792 795 } 793 if ( apptype) {794 if ( (apptype & FAPPTYP_DLL) || (apptype & FAPPTYP_VIRTDRV)||795 (apptype & FAPPTYP_PHYSDRV) || (apptype & FAPPTYP_PROTDLL))796 if (ulAppType) { 797 if (ulAppType & FAPPTYP_DLL || ulAppType & FAPPTYP_VIRTDRV || 798 ulAppType & FAPPTYP_PHYSDRV || ulAppType & FAPPTYP_PROTDLL) 796 799 { 797 798 799 apptype, pszPgm);800 Runtime_Error(pszSrcFile, __LINE__, 801 GetPString(IDS_APPTYPEUNEXPECTEDTEXT), 802 ulAppType, pszPgm); 800 803 if (pszPgm) 801 804 DosFreeMem(pszPgm); … … 804 807 return -1; 805 808 } 806 if ( (apptype & FAPPTYP_DOS) || (apptype & FAPPTYP_WINDOWSREAL)||807 (apptype & FAPPTYP_WINDOWSPROT) || (apptype & 0x1000))809 if (ulAppType & FAPPTYP_DOS || ulAppType & FAPPTYP_WINDOWSREAL || 810 ulAppType & FAPPTYP_WINDOWSPROT || ulAppType & FAPPTYP_WINDOWSPROT31) 808 811 { 809 810 811 apptype, pszPgm);812 Runtime_Error(pszSrcFile, __LINE__, 813 GetPString(IDS_APPTYPEUNEXPECTEDTEXT), 814 ulAppType, pszPgm); 812 815 if (pszPgm) 813 816 DosFreeMem(pszPgm); … … 912 915 switch_to(pszDirectory); 913 916 } 914 rc = DosQ AppType(pszPgm,&apptype);917 rc = DosQueryAppType(pszPgm,&ulAppType); 915 918 if (!strchr(pszPgm, '\\') && 916 919 !strchr(pszPgm, ':') && … … 919 922 switch_to(szSavedir); 920 923 if (rc) { 921 922 923 924 Dos_Error(MB_CANCEL,rc,hwnd,pszSrcFile,__LINE__, 925 GetPString(IDS_DOSQAPPTYPEFAILEDTEXT), 926 pszPgm); 924 927 DosFreeMem(pszPgm); 925 928 if (pszArgs) … … 928 931 } 929 932 930 if ( apptype) {931 if ( apptype & (FAPPTYP_DLL | FAPPTYP_VIRTDRV | FAPPTYP_PHYSDRV | FAPPTYP_PROTDLL))933 if (ulAppType) { 934 if (ulAppType & (FAPPTYP_DLL | FAPPTYP_VIRTDRV | FAPPTYP_PHYSDRV | FAPPTYP_PROTDLL)) 932 935 { 933 934 935 936 Runtime_Error(pszSrcFile, __LINE__, 937 GetPString(IDS_APPTYPEUNEXPECTEDTEXT), 938 pszPgm); 936 939 DosFreeMem(pszPgm); 937 940 if (pszArgs) … … 939 942 return -1; 940 943 } 941 apptype &= ~FAPPTYP_BOUND;942 if ( apptype & (FAPPTYP_DOS | FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31))944 ulAppType &= ~FAPPTYP_BOUND; 945 if (ulAppType & (FAPPTYP_DOS | FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31)) 943 946 { 944 if ( apptype & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31))947 if (ulAppType & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31)) 945 948 { 946 949 if (~type & FULLSCREEN && 947 apptype & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31))950 ulAppType & (FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSPROT31)) 948 951 { 949 952 ret = RunSeamless(pszPgm, pszArgs, hwnd); … … 958 961 strcat(pszPgm, pszArgs); 959 962 *pszArgs = 0; 960 if ( apptype & (FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT31))963 if (ulAppType & (FAPPTYP_WINDOWSPROT | FAPPTYP_WINDOWSREAL | FAPPTYP_WINDOWSPROT31)) 961 964 strcat(pszArgs, "/3 "); 962 965 strcat(pszArgs, pszPgm); … … 967 970 if (~type & FULLSCREEN) { 968 971 type |= WINDOWED; 969 apptype = SSF_TYPE_WINDOWEDVDM;972 ulAppType = SSF_TYPE_WINDOWEDVDM; 970 973 } 971 974 else { 972 975 type &= ~WINDOWED; 973 apptype = SSF_TYPE_VDM;974 } 975 } 976 } 977 else if ( apptype & FAPPTYP_32BIT) {978 apptype &= ~FAPPTYP_32BIT;979 if ( apptype == FAPPTYP_WINDOWAPI)980 apptype = SSF_TYPE_PM;981 else if ( apptype == FAPPTYP_WINDOWCOMPAT)982 apptype = SSF_TYPE_WINDOWABLEVIO;983 else if ( apptype == FAPPTYP_NOTWINDOWCOMPAT) {984 apptype = SSF_TYPE_FULLSCREEN;976 ulAppType = SSF_TYPE_VDM; 977 } 978 } 979 } 980 else if (ulAppType & FAPPTYP_32BIT) { 981 ulAppType &= ~FAPPTYP_32BIT; 982 if (ulAppType == FAPPTYP_WINDOWAPI) 983 ulAppType = SSF_TYPE_PM; 984 else if (ulAppType == FAPPTYP_WINDOWCOMPAT) 985 ulAppType = SSF_TYPE_WINDOWABLEVIO; 986 else if (ulAppType == FAPPTYP_NOTWINDOWCOMPAT) { 987 ulAppType = SSF_TYPE_FULLSCREEN; 985 988 type &= ~WINDOWED; 986 989 type |= FULLSCREEN; 987 990 } 988 991 else /* ? */ 989 apptype = SSF_TYPE_WINDOWABLEVIO;990 } 991 else if ( apptype == FAPPTYP_WINDOWAPI)992 apptype = SSF_TYPE_PM;993 else if ( apptype == FAPPTYP_WINDOWCOMPAT)994 apptype = SSF_TYPE_WINDOWABLEVIO;995 else if ( apptype == FAPPTYP_NOTWINDOWCOMPAT) {992 ulAppType = SSF_TYPE_WINDOWABLEVIO; 993 } 994 else if (ulAppType == FAPPTYP_WINDOWAPI) 995 ulAppType = SSF_TYPE_PM; 996 else if (ulAppType == FAPPTYP_WINDOWCOMPAT) 997 ulAppType = SSF_TYPE_WINDOWABLEVIO; 998 else if (ulAppType == FAPPTYP_NOTWINDOWCOMPAT) { 996 999 type &= ~WINDOWED; 997 apptype = SSF_TYPE_FULLSCREEN;1000 ulAppType = SSF_TYPE_FULLSCREEN; 998 1001 } 999 1002 else 1000 apptype = SSF_TYPE_DEFAULT;1003 ulAppType = SSF_TYPE_DEFAULT; 1001 1004 if ((type & FULLSCREEN || ~type & WINDOWED) && 1002 apptype == SSF_TYPE_WINDOWABLEVIO)1005 ulAppType == SSF_TYPE_WINDOWABLEVIO) 1003 1006 { 1004 apptype = SSF_TYPE_FULLSCREEN;1007 ulAppType = SSF_TYPE_FULLSCREEN; 1005 1008 } 1006 1009 // fixme parens? 1007 1010 else if (type & FULLSCREEN || 1008 (type & WINDOWED && apptype == SSF_TYPE_WINDOWEDVDM)) 1009 apptype = SSF_TYPE_VDM; 1010 } 1011 if (apptype == SSF_TYPE_WINDOWEDVDM && type & SEPARATEKEEP) { 1011 (type & WINDOWED && ulAppType == SSF_TYPE_WINDOWEDVDM)) 1012 { 1013 ulAppType = SSF_TYPE_VDM; 1014 } 1015 } 1016 if (ulAppType == SSF_TYPE_WINDOWEDVDM && type & SEPARATEKEEP) { 1012 1017 type &= ~SEPARATEKEEP; 1013 1018 type |= SEPARATE; … … 1039 1044 Dos_Error(MB_ENTER,rc,HWND_DESKTOP,pszSrcFile,__LINE__,"DoCreateEventSem"); 1040 1045 } 1041 // if (!rc) 1042 // fprintf(stderr,"runemf2 qcreated ptib %x hTermQ %x\n",ptib,hTermQ); 1046 // if (!rc) fprintf(stderr,"%s %d qcreated ptib %x hTermQ %x\n",__FILE__, __LINE__,ptib,hTermQ); 1043 1047 } 1044 1048 } // if 1st time … … 1047 1051 DosExitCritSec(); 1048 1052 } // if wait 1053 1054 memset(&sdata,0,sizeof(sdata)); 1049 1055 sdata.Length = sizeof(sdata); 1050 sdata.Related = type & (WAIT | CHILD) ? 1051 SSF_RELATED_CHILD :SSF_RELATED_INDEPENDENT;1056 sdata.Related = type & (WAIT | CHILD) ? SSF_RELATED_CHILD : 1057 SSF_RELATED_INDEPENDENT; 1052 1058 sdata.FgBg = type & BACKGROUND ? SSF_FGBG_BACK : SSF_FGBG_FORE; 1053 1059 sdata.TraceOpt = SSF_TRACEOPT_NONE; 1054 sdata.PgmTitle = NULL;1055 1060 sdata.PgmName = pszPgm; 1056 sdata.PgmInputs = *pszArgs ? pszArgs : NULL; 1057 sdata.TermQ = useTermQ ? szTermQName : NULL; 1061 if (*pszArgs) 1062 sdata.PgmInputs = pszArgs; 1063 if (useTermQ) 1064 sdata.TermQ = szTermQName; 1058 1065 sdata.Environment = pszEnvironment; 1059 1066 sdata.InheritOpt = SSF_INHERTOPT_PARENT; 1060 sdata.SessionType = (USHORT)apptype;1067 sdata.SessionType = ulAppType; 1061 1068 sdata.ObjectBuffer = szObject; 1062 1069 sdata.ObjectBuffLen = sizeof(szObject); 1063 sdata.IconFile = NULL; 1064 sdata.PgmHandle = 0L; 1065 sdata.Reserved = 0; 1066 sdata.PgmControl = (USHORT) ((SSF_CONTROL_NOAUTOCLOSE * ((type & 15) == SEPARATEKEEP)) | 1067 (SSF_CONTROL_MAXIMIZE * ((type & MAXIMIZED) != 0)) | 1068 (SSF_CONTROL_MINIMIZE * ((type & MINIMIZED) != 0)) | 1069 (SSF_CONTROL_INVISIBLE * ((type & INVISIBLE) != 0))); 1070 if ((type & 15) == SEPARATEKEEP) 1071 sdata.PgmControl |= SSF_CONTROL_NOAUTOCLOSE; 1072 if (type & MAXIMIZED) 1073 sdata.PgmControl |= SSF_CONTROL_MAXIMIZE; 1074 if (type & MINIMIZED) 1075 sdata.PgmControl |= SSF_CONTROL_MINIMIZE; 1076 if (type & INVISIBLE) 1077 sdata.PgmControl |= SSF_CONTROL_INVISIBLE; 1078 1070 1079 if (pszDirectory && *pszDirectory) { 1071 1080 save_dir2(szSavedir); 1072 1081 switch_to(pszDirectory); 1073 1082 } 1083 1084 // printf("%s %d DosStartsession thread 0x%x data\n ", 1085 // __FILE__, __LINE__,ptib->tib_ordinal); fflush(stdout); // 10 Mar 07 SHL hang 1086 // printf(" %d %d %d %s %s %s %d %d\n %s %x %x\n", 1087 // sdata.Length , sdata.Related, sdata.FgBg, sdata.PgmName, 1088 // sdata.PgmInputs, sdata.TermQ, sdata.InheritOpt, 1089 // sdata.SessionType, szTermQName, 1090 // hTermQ, hTermQSem); fflush(stdout); 1074 1091 ret = DosStartSession(&sdata, &ulSessID, &sessPID); 1092 if (type & WAIT) { 1093 // printf("%s %d DosStartession thread 0x%x rc = %d sess = %u pid = 0x%x\n", 1094 // __FILE__, __LINE__, ptib->tib_ordinal,ret, ulSessID, sessPID); fflush(stdout); // 10 Mar 07 SHL hang 1095 } 1096 else { 1097 // printf("%s %d DosStartession thread 0x%x nowait rc = %d\n", 1098 // __FILE__, __LINE__, ptib->tib_ordinal,ret); fflush(stdout); // 10 Mar 07 SHL hang 1099 } 1100 1075 1101 if (pszDirectory && *pszDirectory) 1076 1102 switch_to(szSavedir); 1103 1077 1104 if (ret && ret != ERROR_SMG_START_IN_BACKGROUND) { 1078 1105 Dos_Error(MB_CANCEL,ret,hwnd,pszSrcFile,__LINE__, … … 1084 1111 1085 1112 if (!useTermQ) { 1113 STATUSDATA sd; 1086 1114 // Could not create queue - fallback - fixme to be gone? 1087 STATUSDATA sd;1115 // printf("%s %d waiting wo/termq\n", __FILE__, __LINE__); fflush(stdout); // 12 Mar 07 SHL hang 1088 1116 1089 1117 memset(&sd, 0, sizeof(sd)); … … 1097 1125 break; 1098 1126 if (ctr > 10) { 1127 // printf("%s %d thread 0x%x showing slow sess %u pid 0x%x\n", 1128 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID,sessPID); fflush(stdout); // 12 Mar 07 SHL 1099 1129 ShowSession(hwnd, sessPID); // Show every 2 seconds 1100 1130 ctr = 0; … … 1114 1144 } 1115 1145 else { 1116 // fixme to not do this? 1117 if (ctr == 20) 1146 if (ctr == 20) { 1147 // printf("%s %d thread 0x%x showing slow sess %u pid 0x%x\n", 1148 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID,sessPID); fflush(stdout); 1118 1149 ShowSession(hwnd, sessPID); // Show long running session 1150 } 1151 // printf("%s %d thread 0x%x waiting for slow sess %u pid 0x%x\n", 1152 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID, sessPID); fflush(stdout); 1119 1153 rc = DosReadQueue(hTermQ, &rq, &ulLength, (PPVOID)&pTermInfo, 0, 1120 1154 DCWW_WAIT, &bPriority, 0); … … 1128 1162 } 1129 1163 1164 // printf("%s %d DosReadQueue thread 0x%x sess %u sessRC %u rq.pid 0x%x rq.data 0x%x\n", 1165 // __FILE__, __LINE__,ptib->tib_ordinal,pTermInfo->usSessID,pTermInfo->usRC,rq.pid, rq.ulData); fflush(stdout); 1166 1167 // might be looping here if confused about session id - fixme to ensure not possible? 1130 1168 if (pTermInfo->usSessID == ulSessID) 1131 1169 break; // Our session is done 1132 1170 1133 // Requeue for other thread1171 // Requeue session for other thread 1134 1172 { 1135 1173 static ULONG ulLastSessID; 1136 // fprintf(stderr,"runemf2 requeue other ptib %x sessId %x ti.sessId %x ti.rc %d\n",ptib,ulSessID,pTermInfo->usSessID,pTermInfo->usRC); 1137 // fixme to be gone 1174 // printf("%s %d requeue thread 0x%x our sess %u term sess %u term rc %u\n", 1175 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID,pTermInfo->usSessID,pTermInfo->usRC); fflush(stdout); 1176 // fixme to be gone when no longer needed for debug? 1138 1177 if (ulLastSessID) { 1139 1178 DosSleep(500); 1140 1179 ulLastSessID = pTermInfo->usSessID; 1141 1180 } 1142 // requeue and do not free yet1181 // requeue term report for other thread and do not free yet 1143 1182 rc = DosWriteQueue(hTermQ, rq.ulData, ulLength,(PVOID)pTermInfo, bPriority); 1144 1183 if (rc) … … 1148 1187 } // for 1149 1188 1150 ret = !(!pTermInfo->usRC); // Set TRUE if rc01151 // fprintf(stderr,"runemf2 term this ptib %x sessID %x rq.pid %x rq.data %x ti.rc %d\n",ptib,ulSessID,rq.pid,rq.ulData,pTermInfo->usRC);1152 // fflush(stderr);1189 ret = pTermInfo->usRC == 0; // Set 1 if rc 0 else 0 1190 // printf("%s %d thread 0x%x term for sess %u\n", 1191 // __FILE__, __LINE__,ptib->tib_ordinal,ulSessID);fflush(stdout); 1153 1192 DosFreeMem(pTermInfo); 1154 1193 } … … 1165 1204 if (pszArgs) 1166 1205 DosFreeMem(pszArgs); 1206 1167 1207 return ret; 1168 1208 } … … 1253 1293 pgd.pszEnvironment = env; 1254 1294 pgd.pszStartupDir = startdir; 1255 pgd.pszParameters = (*parameters)? parameters : NULL;1295 pgd.pszParameters = *parameters ? parameters : NULL; 1256 1296 pgd.pszExecutable = executable; 1257 1297 pgd.swpInitial.hwndInsertBehind = HWND_TOP;
Note:
See TracChangeset
for help on using the changeset viewer.