Gestalt Selectors List

Apple System Software (E-H)

This chapter lists selector codes of which the meaning is documented and the first character of the selector code is in the E-H range.

eajt (Easy Access cp [7.0])
     gestaltEasyAccessJTable
     Returns the base address of the Easy Access jump-trap table.

     #define gestaltEasyAccessJTable 'eajt' /* Easy Access jump-trap
                                                table &M01 */

     NOTE:
     The first time you call this selector Easy Access tries to open a
     resource file to find the value, which at least causes a freeze when
     called from within MacBugs with the Gestalt dcmd. &AD31

easy (Easy Access cp [6.0.4?])
     gestaltEasyAccessAttr
     Returns information about the status of Easy Access.

     enum {
     gestaltEasyAccessAttr 'easy'  /* Easy Access attributes */
     gestaltEasyAccessOff    = 0,  /* Easy Access present but off */
     gestaltEasyAccessOn     = 1,  /* Easy Access on */
     gestaltEasyAccessSticky = 2,  /* Easy Access "Sticky" */
     gestaltEasyAccessLocked = 3}; /* Easy Access "Locked" */

     NOTE:
     The values listed above are not returned with System 7 and later.
     Because of a bug different values are returned. This problem is
     acknowledged by Apple, but it is unclear when it will be fixed. They
     know about it since September 1992... (Rene Ros)

edtn (System [7.0])
     (Macintosh Easy Open cp [1.0?])
     gestaltEditionMgrAttr
     Returns information about the Edition Manager.

     enum{
     #define gestaltEditionMgrAttr 'edtn' /* Edition Mgr attributes */
     gestaltEditionMgrPresent          = 0,
     gestaltEditionMgrTranslationAware = 1}; /* &AD03 */

etbl (System [8.1])
     gestaltExtensionTableVersion &AT22
     Returns Extension Table version as BCD.

     enum {
     #define gestaltExtensionTableVersion 'etbl'
     kExtensionTableVersion = 0x00000100};

     NOTE:
     If gestaltExtensionTableVersion is not defined, it indicates that
     there is no extension table mechanism present and that the associated
     extension table routines will be undefined.
     When the major version number and the value returned are different, it
     indicates that the extension table mechanism has radically changed and
     code that doesn't know about the new major version must not attempt to
     use the extension tablemechanism.
     Changes to the minor version number indicate that the definition of
     the ExtensionElement structure has been extended, but the fields
     defined for previous minor versions have not changed. &AT22

evnt (System [7.0]) &AS05
     (Apple Event Manager ext [1.0.1], part of AppleScript Setup)
     gestaltAppleEventsAttr
     Returns information about Apple Events.

     enum {
     #define gestaltAppleEventsAttr 'evnt' /* Apple events attributes */
     gestaltAppleEventsPresent = 0,  /* True if Apple Events present
                                         &AS05 */
     gestaltScriptingSupport   = 1,
     gestaltOSLInSystem        = 2}; /* OSL is in system so don`t use
                                         the one linked */

     NOTES:
     These declarations in the AEObjects.h file (on ETO 14) should be
     ignored:
     gestaltObjectSupportLibraryInSystem = 1
     gestaltObjectSupportLibraryPowerPCSupport = 2

     ObjectSupportLib version 1.0.4 fails to install the Gestalt selector
     for gestaltOSLInSystem, so even if the library is present and can be
     linked to, the gestalt selector will not tell the truth. This is why
     FileMaker Pro and Netscape lose scriptability when OSL 1.0.4 is
     installed in the system; use them with version 1.0.2 or 1.1 (not
     1.1.1!). Upcoming version 1.1.2 will fix the Gestalt bug.
     (Chris Espinosa (Manager, Media Tools at Apple) on the applescript-
     implementors mailing list)

     ObjectSupportLib 1.2 installs a CFM-68K 'evnt' gestalt function where
     the Transition Vector is in the application heap. If two applications
     link to ObjectSupportLib, quitting the first application but leaving
     the second running will cause a crash when checking for the 'evnt'
     gestalt. This problem occurs on all 68K machines in our QA lab. If
     the gestalt function were in a detached classic 68K code resource
     (rather than in CFM-68K code) this problem would not occur.
     (PointCast Inc.; see:
      http://www.pointcast.com/products/mac/68KNotice.html )

fbci (Find By Content lib [???], part of Mac OS 8.5)
     gestaltFBCIndexingState &AT25
     Returns information about the current indexing status of
     Find by Content (FBC).

     enum {
     #define gestaltFBCIndexingState 'fbci'
     gestaltFBCindexingSafe     = 0   /* searches execute immediately */
     gestaltFBCindexingCritical = 1}; /* synchronous wait until returns
                                         to gestaltFBCindexingSafe */

     NOTE:
     See TN 1141 for more required, detailed information.

     See also the selectors 'fbcc', 'fbcs', 'fbcv'.

fbcv (Find By Content lib [???], part of Mac OS 8.5)
     gestaltFBCVersion &AT25
     Returns the version of Find by Content (FBC) as BCD.

     enum {
     #define gestaltFBCVersion 'fbcv'
     gestaltFBCCurrentVersion = 0x0011};

     NOTE:

     See TN 1141 for more required, detailed information.

     See also the selectors 'fbcc', 'fbci', 'fbcs'.

flag (Network Extension ext [System 7.0 &AT02])
     gestaltFlagshipAttr
     Returns information about the Flagship Naming Services.

     enum {
     #define gestaltFlagshipAttr 'flag' /* &M01 */
     gestaltFlagshipPresent    = 0,  /* &M01 */
     gestaltFlagshipRegistered = 1}; /* &M01 */

flpy (System? [7.5.2?])
     gestaltFloppyAttr &AD34 &AS28
     Returns information to determine some of the basic attributes of the
     floppy drive installed in a system.

     enum {
     #define gestaltFloppyAttr 'flpy'
     gestaltFloppyIsMFMOnly       = 0,  /* Floppy drive only does MFM disk
                                         formats. */
     gestaltFloppyIsManualEject   = 1,  /* Floppy disk drive, driver, file
                                         system in manual-eject mode. */
     gestaltFloppyUsesDiskInPlace = 2}; /* Floppy disk drive has special
                                         DISK-IN-PLACE output; standard
                                         DISK-CHANGED output signal from
                                         drive is not used. */

fnd  (AppleShare? ext [3.6?]) &AD18
     gestaltFinderVolumeGrade?
     Returns a volume grade value. If the volume grade of a (remote) volume
     the Finder (version 7.5.1 and later) is copying to is less than the
     returned value, a buffer is used for which the size is returned by the
     'fnd^' (666E 64A4) selector.

     #define gestaltFinderVolumeGrade? 'fnd '

     NOTE:
     See also the 'fnd^' (666E 64A4) selector entry.

     AppleShare 3.6 (part of System 7.5 Update 2.0) seems to install two
     other selectors instead. The 'fnd ' selector seems to be replaced by
     (OSType) 0x666E 64A0 (last byte: option-t). (Anonymous)

fndÛ (AppleShare? ext [3.6?]) &AD18
     gestaltFinderBufferSize? (666E 64A4)
     Returns the size of the buffer used to copy files to a (remote) volume
     with a volume grade value less then the value returned by the 'fnd '
     selector.

     #define gestaltFinderBufferSize? 'fndÛ'

     NOTES:
     The last byte is the option-6 (0xA4).

     See also the 'fnd ' selector entry.

     AppleShare 3.6 (part of System 7.5 Update 2.0) seems to install two
     other selectors instead. The 'fnd ' selector seems to be replaced by
     (OSType) 0x666E 64A7 (last byte: option-s). (Anonymous)

fndr (Finder [7.1.1]) &AS04
     (Finder Scripting Extension ext [1.2?])
     (Finder Clipping Extension ext [7.1.4?])
     gestaltFinderAttr
     Returns information about the Finder.

     enum {
     #define gestaltFinderAttr 'fndr'
     gestaltFinderDropEvent                 =  0,
     gestaltFinderMagicPlacement            =  1,
     gestaltFinderCallsAEProcess            =  2,
     gestaltOSLCompliantFinder              =  3,  /* supports Finder Event
                                                      Suite */
     gestaltFinderSupports4GBVolumes        =  4,  /* implemented by System
                                                      7.5.1 but bit not
                                                      set? */
     gestaltFinderHandlesCFMFailures        =  5,
     gestaltFinderHasClippings              =  6,  /* &AD12 */
     gestaltFinderFullDragManagerSupport    =  7,  /* Finder accepts 'hfs '
                                                      flavors properly
                                                      &AS29 */
     gestaltFinderFloppyRootComments        =  8,  /* see note &AT21 */
     gestaltFinderLargeAndNotSavedFlavorsOK =  9,  /* see note &AT21 */
     gestaltFinderUsesExtensibleFolderManager = 10,
                                /* Finder uses Extensible Folder Manager */
     gestaltFinder???                       = 31};

     NOTES:
     gestaltFinderFloppyRootComments describes whether desktop database
     comments for floppy disks contain data the user typed in (notes, etc.)
     or are used internally by Finder. Under Mac OS 8 and later, this field
     is used by Finder; if Finder ever relinquishes the use of the field,
     it will set this bit.

     gestaltFinderLargeAndNotSavedFlavorsOK describes whether two bugs
     (storing only the very first chunk of drag flavor > 1024 bytes and
     item count stored in the clipping containing flavors with the
     flavorNotSaved) in Finder's handling of clipping files have been
     fixed. Under Mac OS 8.1, this bit is set.

fold (System [7.0])
     gestaltFindFolderAttr
     Returns information about the FindFolder function.

     enum {
     gestaltFindFolderAttr 'fold'   /* FindFolder attributes */
     gestaltFindFolderPresent = 0,  /* FindFolder function available */
     gestaltFolderDescSupport = 1,  /* has FolderDesc calls: Extensible
                                       Folder Manager present */
     gestaltFolder???         = 2,  /* unknown, Mac OS 9.0 */
     gestaltFolder???         = 3}; /* unknown, Mac OS 9.0 */

fole (System? [>9.0?])
     gestaltFindFolderRedirectionAttr

     #define gestaltFindFolderRedirectionAttr = 'fole'

font (System [7.0])
     (TrueType INIT ext for System 6)
     gestaltFontMgrAttr
     Returns information about the Font Manager.

     enum {
     #define gestaltFontMgrAttr 'font' /* Font Mgr attributes */
     gestaltOutlineFonts     = 0,  /* TrueType present */
     gestaltPartialFonts?    = 1,  /* set with System 7.1 & 7.5 */
     gestaltDiskCachedFonts? = 2}; /* Disk Cached Fonts available? */

     NOTE:
     Inside the Inline Extension 1.0 with KanjiTalk7, which was compiled
     with full subroutine names, there is a subroutine called
     'DiskCachedFontsAvailable' in an INIT resource which checks bit 2
     of the gestaltFontMgrAttr selector response. (Marco Piovanelli)

fpu  (System [6.0.4])
     gestaltFPUType
     Returns a value that indicates the FPU-type, if any.

     enum {
     gestaltFPUType 'fpu ' /* FPU Type */
     gestaltNoFPU    = 0,  /* no FPU */
     gestalt68881    = 1,  /* 68881 FPU */
     gestalt68882    = 2,  /* 68882 FPU */
     gestalt68040FPU = 3}; /* built-in 68040 FPU &S01 */

     NOTE: See also the 'FPUE' entry in the Third Parties chapter.

fs   (720K Floppy Disk Formatter ext [1.0a3?],
      part of the Hardware System Update [2.0])
     (Apple Share ext [AS 3.0/SYS 7.0])
     (File System Manager ext [1.2])
     (System [7.0])
     gestaltFSAttr
     Returns information about the file system.

     enum {
     #define gestaltFSAttr 'fs  ' /* file-system attributes */
     gestaltFullExtFSDispatching  =  0,  /* exports HFSDispatch traps */
     gestaltHasFSSpecCalls        =  1,  /* supports FSSpec records */
     gestaltHasFileSystemManager  =  2,  /* has the File System Manager
                                            &S01 */
     gestaltFSMDoesDynamicLoad    =  3,  /* FSM supports dynamic loads
                                            &AD12 */
     gestaltFSSupports4GBVols     =  4,  /* FS supports 4 gigabyte volumes
                                            &AD14 */
     gestaltFSSupports2TBVols     =  5,  /* FS supports 2 terabyte volumes
                                            and PBXGetVInfo available
                                            &AD14 */
     gestaltHasExtendedDiskInit   =  6,  /* has extended Disk
                                            Initialization calls &AD12 */
     gestaltDTMgrSupportsFSM      =  7,  /* Desktop Manager support
                                            FSM-based foreign file
                                            systems &AS29 */
     gestaltFSNoMFSVols           =  8,  /* file system doesn't supports
                                            MFS volumes */
     gestaltFSSupportsHFSPlusVols =  9,  /* file system supports HFS Plus
                                            volumes */
     gestaltFSIncompatibleDFA82   = 10,  /* VCB and FCB structures changed;
                                            DFA 8.2 is incompatible */
     gestaltFSSupportsDirectIO    = 11,  /* file system supports DirectIO*/
     gestaltHasHFSPlusAPIs        = 12,  /* file system supports
                                            HFS Plus APIs, Mac OS 9.0 */
     gestaltMustUseFCBAccessors   = 13}; /* FCBSPtr and FSFCBLen are
                                            invalid - must use FSM FCB
                                            accessor functions,
                                            Mac OS 9.0 */

     NOTES:
     See also the gestaltFSMVersion ('fsm ') selector.

     See 'Reports' chapter (QuickTime section) for more information.

fsm  (File System Manager ext [1.2])
     gestaltFSMVersion &AD14
     Returns File System Manager version as BCD.

     #define gestaltFSMVersion 'fsm '

     NOTE:
     See also the gestaltFSAttr ('fs  ') selector.

     While both FSM 1.2 and System 7.5 install/patch three traps
     (_FileSysMgr, _HFSUtils and _Pack2 (Extended Disk Initialization
     Package)) it happens that System 7.5 does not install the
     gestaltFSMVersion ('fsm ') selector. It does set the FSM related bits
     of the gestaltFSAttr ('fs  ') selector. (Fabrizio Oddone)
     This selector is installed correctly by System 7.5.1. (Rene Ros)

fsue (File Sharing cp [8.0?])
     gestaltFileSharingAttr
     Returns information about the File Sharing control panel.

     enum {
     #define gestaltFileSharingAttr 'fsue'
     gestaltFileSharingCPPresent    = 0,
     gestaltUsersAndGroupsCPPresent = 1};

fxfr (System [7.0])
     gestaltFXfrMgrAttr
     Returns information about the File Transfer Manager.

     enum {
     #define gestaltFXfrMgrAttr 'fxfr' /* File Transfer Mgr attributes */
     gestaltFXfrMgrPresent     = 0,   /* File Transfer Mgr present */
     gestaltFXfrMgrMultiFile   = 1,   /* supports FTSend and FTReceive
                                          &AS02 */
     gestaltFXfrMgrErrorString = 2,   /* supports FTGetErrorString
                                          &AS02/S02 */
     gestaltFXfrMgrAsync       = 3?}; /* supports FTSendAsync,
                                         FTReceiveAsync, FTCompletionAsync
                                         (since System 7.5?) */

gval (GestaltValue glue code)
     gestaltValueTable?
     Returns a pointer to a table with the selectors and values managed
     by the GestaltValue code. (Marco Piovanelli)

     #define gestaltValueTable? 'gval'

     WARNING:
     Although this information isn't officially confirmed, it is probably
     correct.

     NOTES:
     Although System 7.5 implements the GestaltValue functions it does not
     install this selector because the GestaltValue table is combined with
     the normal Gestalt table (See the 'tabl' entry). Only with system
     software before 7.5 this selector is installed by the glue code.
     (Rene Ros)

     See 'Reports' chapter (GestaltValue section) for more information.

hdwr (System [6.0.4]) INF
     gestaltHardwareAttr
     Returns information about the hardware configuration of the machine.

     enum {
     #define gestaltHardwareAttr 'hdwr' /* hardware attributes */
     gestaltHasVIA1         =  0,  /* VIA 1 */
     gestaltHasVIA2         =  1,  /* VIA 2 */
     gestaltHasRBV          =  2,  /* RBV &M01 */
     gestaltHasASC          =  3,  /* ASC (or compatible with) */
     gestaltHasSCC          =  4,  /* SCC &M01 */
     gestaltHasOSS          =  5,  /* OSS &M01 */
     gestaltHasSCSIDMA      =  6,  /* 53C80 SCSI DMA &M01 */
     gestaltHasSCSI         =  7,  /* 53C80 SCSI */
     gestaltHasSWIMIOP      =  8,  /* SWIM IOP &M01 */
     gestaltHasSCCIOP       =  9,  /* SCC IOP &M01 */
     gestaltHasFitch        = 10,  /* Fitch memory Controller &M02 */
     gestaltHasIWM          = 11,  /* IWM &M01 */
     gestaltHasPWM          = 12,  /* PWM disk speed buffer &M02 */
     gestaltHasRAMSndBuff   = 13,  /* RAM-based sound buffer &M02 */
     gestaltHasVideoDAConv  = 14,  /* Video D/A Converter &M02 */
     gestaltHasPGC          = 15,  /* PGC (parity control) &M02 */
     gestaltHasRPU?         = 16,  /* Random Parity Unit */
     gestaltHasOMC?         = 17,  /* Orwell Memory Controller */
     gestaltHasVISARBV?     = 18,  /* VISA Ram Based Video */
     gestaltHasSoftPowerOff = 19,  /* Software PowerOff (since System 7.0?)
                                       &S01 */
     gestaltHasSonic        = 20,  /* Sonic (built-in ethernet) &M01 */
     gestaltHasSCSI961      = 21,  /* Int. 53C96 SCSI &AT01 */
     gestaltHasSCSI962      = 22,  /* Ext. 53C96 SCSI &AT01 */
     gestaltHasDAFBVideo    = 23,  /* DAFB Video &M01 */
     gestaltHasUniversalROM = 24,  /* Universal ROM &AT04 */
     gestaltHasJMC          = 25,  /* Jaws Memory Controller? */
     gestaltNeedsRESET      = 26,  /* ??? set on PowerMac, C660AV and
                                       under MAE 1.0 */
     gestalt???             = 27,  /* ??? set on PM 7500/100 with
                                       System 7.5.3 */
     gestalt???             = 28,  /* ??? set on Spartacus with
                                       System 7.6.1 */
     gestaltHasEnhancedLtalk= 30}; /* Enhanced LocalTalk &AD21 */

     NOTES:
     See for additional information the TN "M.OV.GestaltSysenvirons" (OV 16).

     On the Mac IIfx and Quadra 900 the gestaltHasSCC bit always returns 0
     because the SCC is isolated by I/O processors. When the Compatibility
     Switch control panel is used the bit is set. &AD12

     The old IM VI listed this selector as an environmental selector but
     IM OS Utilities now lists it as an informational selector.

help (System [7.0])
     gestaltHelpMgrAttr
     Returns information about the Help Manager.

     enum {
     #define gestaltHelpMgrAttr 'help' /* Help Mgr attributes */
     gestaltHelpMgrPresent    =  0,  /* Help Mgr present */
     gestaltHelpMgrExtensions =  1,  /* Help Mgr extensions installed
                                         &AS03 */
     gestaltAppleGuideIsDebug = 30,  /* Apple Guide is debugging version
                                         &AS12 */
     gestaltAppleGuidePresent = 31}; /* Apple Guide is available &AS12 */

hrad (Mac OS Licensing Extension ext [???])
     (System? [7.5.3?])
     (System 7.5 Update enbl [2.0])
     gestaltHardwareVendorCode &AS22
     Returns hardware vendor information.

     #define gestaltHardwareVendorCode 'hrad'
     #define gestaltHardwareVendorApple 'Appl' /* Hardware built by
                                                  Apple Computer Inc. */
     #define gestaltHardwareCHRP? 'CHRP' /* Hardware built to CHRP
                                            specifications? */
     #define gestaltHardwareVendorMotorola 'Moto' /* Hardware built by
                                                     Motorola Inc. */
     #define gestaltHardwareVendorPCC? 'pcc ' /* Hardware built by
                                                 Power Computing Corp. */
     #define gestaltHardwareVendorUMAX? 'Umax' /* Hardware built by UMAX
                                                   (on Apus 3000, not on
                                                   Pulsar 225) */

     NOTE:
     This selector is backwards compatible with Macintosh compatibles introduced
     before System 7.5.3 was introduced? The response 'pcc ' is returned when
     using System 7.5.3 on a Power Computer Power 100.

     System 7.5.3 on a PowerCurve 601/120 does not install this selector
     nor 'srad'. (Mark Schrier)
     Selector installed and returning 'pcc ' on a Power Computing Power 100.
     (John Tsombakos)
     A PowerWave 604/120 didn't install this selector with System 7.5.5, but
     it does with Mac OS 7.6 (Chuck Crannell)

     On a Motorola Starmax and with Harmony (7.6) the value 0 is returned.

     See also the 'srad' selector in this section.

     See for more information on this selector and its twin 'srad', the
     'Manufacturer Identification' section in the 'Reports' chapter.

hscd (High Sierra File Access ext [5.0], part of Apple CD-ROM Software)
     (ISO 9660 File Access ext [1.0-4.0], part of Apple CD-ROM Software)
     gestaltHighSierraVersion? &AT03
     Returns High Sierra File Access version in BCD.

     #define gestaltHighSierraVersion? 'hscd' /* High Sierra Fileaccess
                                                  version */

     NOTE: The returned version is obtained from 'vers' resource ID# 1.