Ignore:
Timestamp:
Dec 14, 2001, 11:41:33 PM (24 years ago)
Author:
umoeller
Message:

Lots of changes for icons and refresh.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/helpers/apps.c

    r122 r123  
    513513 *      --  PROG_WINDOWABLEVIO
    514514 *
     515 *      --  PROG_DEFAULT
     516 *
    515517 *@@added V0.9.9 (2001-03-07) [umoeller]
    516518 *@@changed V0.9.12 (2001-05-27) [umoeller]: moved from winh.c to apps.c
    517519 *@@changed V0.9.14 (2001-08-07) [pr]: use FAPPTYP_* constants
     520 *@@changed V0.9.16 (2001-12-08) [umoeller]: added checks for batch files, other optimizations
    518521 */
    519522
    520523APIRET appQueryAppType(const char *pcszExecutable,
    521                         PULONG pulDosAppType,
    522                         PULONG pulWinAppType)
     524                       PULONG pulDosAppType,
     525                       PULONG pulWinAppType)
    523526{
    524     APIRET arc = DosQueryAppType((PSZ)pcszExecutable, pulDosAppType);
    525     if (arc == NO_ERROR)
    526     {
    527         ULONG _ulDosAppType = *pulDosAppType;
    528 
    529         if (_ulDosAppType == 0)
    530             *pulWinAppType = PROG_FULLSCREEN;
    531         else if (_ulDosAppType & FAPPTYP_PHYSDRV)       // 0x40
    532             *pulWinAppType = PROG_PDD;
    533         else if (_ulDosAppType & FAPPTYP_VIRTDRV)       // 0x80)
    534             *pulWinAppType = PROG_VDD;
    535         else if ((_ulDosAppType & 0xF0) == FAPPTYP_DLL) // 0x10)
     527    APIRET arc;
     528
     529/*
     530   #define FAPPTYP_NOTSPEC         0x0000
     531   #define FAPPTYP_NOTWINDOWCOMPAT 0x0001
     532   #define FAPPTYP_WINDOWCOMPAT    0x0002
     533   #define FAPPTYP_WINDOWAPI       0x0003
     534   #define FAPPTYP_BOUND           0x0008
     535   #define FAPPTYP_DLL             0x0010
     536   #define FAPPTYP_DOS             0x0020
     537   #define FAPPTYP_PHYSDRV         0x0040  // physical device driver
     538   #define FAPPTYP_VIRTDRV         0x0080  // virtual device driver
     539   #define FAPPTYP_PROTDLL         0x0100  // 'protected memory' dll
     540   #define FAPPTYP_WINDOWSREAL     0x0200  // Windows real mode app
     541   #define FAPPTYP_WINDOWSPROT     0x0400  // Windows protect mode app
     542   #define FAPPTYP_WINDOWSPROT31   0x1000  // Windows 3.1 protect mode app
     543   #define FAPPTYP_32BIT           0x4000
     544*/
     545
     546    ULONG   ulWinAppType = PROG_DEFAULT;
     547
     548    if (!(arc = DosQueryAppType((PSZ)pcszExecutable, pulDosAppType)))
     549    {
     550        // clear the 32-bit flag
     551        // V0.9.16 (2001-12-08) [umoeller]
     552        ULONG ulDosAppType = (*pulDosAppType) & ~FAPPTYP_32BIT,
     553              ulLoAppType = ulDosAppType & 0xFFFF;
     554
     555        if (ulDosAppType & FAPPTYP_PHYSDRV)            // 0x40
     556            ulWinAppType = PROG_PDD;
     557        else if (ulDosAppType & FAPPTYP_VIRTDRV)       // 0x80
     558            ulWinAppType = PROG_VDD;
     559        else if ((ulDosAppType & 0xF0) == FAPPTYP_DLL) // 0x10
    536560            // DLL bit set
    537             *pulWinAppType = PROG_DLL;
    538         else if (_ulDosAppType & FAPPTYP_DOS)           // 0x20)
     561            ulWinAppType = PROG_DLL;
     562        else if (ulDosAppType & FAPPTYP_DOS)           // 0x20
    539563            // DOS bit set?
    540             *pulWinAppType = PROG_WINDOWEDVDM;
    541         else if ((_ulDosAppType & FAPPTYP_WINDOWAPI) == FAPPTYP_WINDOWAPI) // 0x0003) // "Window-API" == PM
    542             *pulWinAppType = PROG_PM;
    543         else if (   ((_ulDosAppType & 0xFFFF) == FAPPTYP_WINDOWSPROT31) // 0x1000) // windows program (?!?)
    544                  || ((_ulDosAppType & 0xFFFF) == FAPPTYP_WINDOWSPROT) // ) // windows program (?!?)
     564            ulWinAppType = PROG_WINDOWEDVDM;
     565        else if ((ulDosAppType & FAPPTYP_WINDOWAPI) == FAPPTYP_WINDOWAPI) // 0x0003)
     566            // "Window-API" == PM
     567            ulWinAppType = PROG_PM;
     568        else if (ulLoAppType == FAPPTYP_WINDOWSREAL)
     569            ulWinAppType = PROG_31_ENHSEAMLESSCOMMON;  // @@todo really?
     570        else if (   (ulLoAppType == FAPPTYP_WINDOWSPROT31) // 0x1000) // windows program (?!?)
     571                 || (ulLoAppType == FAPPTYP_WINDOWSPROT) // ) // windows program (?!?)
    545572                )
    546             *pulWinAppType = PROG_31_ENHSEAMLESSCOMMON;  // PROG_31_ENH;
    547             // *pulWinAppType = PROG_31_ENHSEAMLESSVDM;
    548         else if ((_ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_WINDOWCOMPAT) // 0x02)
    549             *pulWinAppType = PROG_WINDOWABLEVIO;
    550         else if ((_ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_NOTWINDOWCOMPAT) // 0x01)
    551             *pulWinAppType = PROG_FULLSCREEN;
    552     }
     573            ulWinAppType = PROG_31_ENHSEAMLESSCOMMON;  // PROG_31_ENH;
     574        else if ((ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_WINDOWCOMPAT) // 0x02)
     575            ulWinAppType = PROG_WINDOWABLEVIO;
     576        else if ((ulDosAppType & FAPPTYP_WINDOWAPI /* 0x03 */ ) == FAPPTYP_NOTWINDOWCOMPAT) // 0x01)
     577            ulWinAppType = PROG_FULLSCREEN;
     578    }
     579
     580    if (ulWinAppType == PROG_DEFAULT)
     581    {
     582        // added checks for batch files V0.9.16 (2001-12-08) [umoeller]
     583        PCSZ pcszExt;
     584        if (pcszExt = doshGetExtension(pcszExecutable))
     585        {
     586            if (!stricmp(pcszExt, "BAT"))
     587            {
     588                ulWinAppType = PROG_WINDOWEDVDM;
     589                arc = NO_ERROR;
     590            }
     591            else if (!stricmp(pcszExt, "CMD"))
     592            {
     593                ulWinAppType = PROG_WINDOWABLEVIO;
     594                arc = NO_ERROR;
     595            }
     596        }
     597    }
     598
     599    *pulWinAppType = ulWinAppType;
    553600
    554601    return (arc);
     
    608655        case PROG_WIN_GAME: return "PROG_WIN_GAME";
    609656        case PROG_DOS_MODE: return "PROG_DOS_MODE";
     657
     658        // added this V0.9.16 (2001-12-08) [umoeller]
     659        case PROG_WIN32: return "PROG_WIN32";
    610660    }
    611661
Note: See TracChangeset for help on using the changeset viewer.