Apple Network Setup User Manual

Page 45

Advertising
background image

C H A P T E R 2

Using Network Setup

Working with Sets

45

kOTCfgSetsStructPref,

&thisStruct, sizeof(thisStruct));

if ((err == noErr) && ((thisStruct.fFlags & kOTCfgSetsFlagActiveMask) !=

0)) {

found = true;

break;

}

if (err != noErr) {

break;

}

}

if ( ! found ) {

err = kCfgErrEntityNotFound;

}

}

if (err == noErr) {

*activeSet = (*entityRefs)[entityIndex];

}

if (entityRefs != nil) {

DisposeHandle( (Handle) entityRefs );

assert(MemError() ==

noErr);

}

return err;

}

The remaining two steps for finding the set entity of a particular class and type
are implemented by the

MyFindFirstActiveEntity

routine, shown in Listing

2-14. It calls

MyFindActiveSet

(Listing 2-13) to find the entity reference of the

active set entity. The

MyFindFirstActiveEntity

routine then reads the

kOTCfgSetsVectorPref

preference out of the active set entity. This preference is a

count field followed by an unbounded array of

CfgSetsElement

structures, each

of which represents an entity in the set. Because of its variable size,

MyFindFirstActiveEntity

reads the preference by calling

MyReadVariableSizePref

(Listing 2-10). Once it has the array of information

about entities contained in the set,

MyFindFirstActiveEntity

iterates over that

array looking for the first element whose class and type matches the required
class and type specified by the caller. When it finds the correct entity in the set,

MyFindFirstActiveEntity

breaks out of the loop and returns the found entity

reference to the caller.

Advertising