Deleting a Record
The sample code in Listing 3-5 demonstrates how to delete a record. The sample code opens an Open
Directory session and gets an Open Directory reference. Then it calls its MyOpenDirNode routine and passes
to it the address of the node reference (nodeRef) that it has allocated. The MyOpenDirNode routine is
described in the section “Opening and Closing a Node” (page 28).
The sample code then calls its DeleteRecord routine and passes to it the node reference (nodeRef) obtained
by calling its MyOpenDirNode routine.
The DeleteRecord routine calls dsDataNodeAllocateString to allocate a datanode (recName) containing
the string “testuser” as the name of the record that is to be deleted and another data node (recType)
specifying kDSStdRecordTypeUsers as the record type of the record that is to be deleted. It then calls
dsOpenRecord to open the record that is to be deleted and calls dsDeleteRecord to delete the record.
To reclaim memory associated with recType and recName, the DeleteRecord routine calls
dsDataNodeDeAllocate.
The dsDeleteRecord function implicitly closes any record that it deletes. If dsDeleteRecord returns an
error, indicating that the record was not deleted, the DeleteRecord routine in Listing 3-5 calls
dsCloseRecord to close the record.
Listing 3-5 Deleting a record
void main ( )
{
long dirStatus = eDSNoErr;
tDirNodeReference nodeRef = NULL;
dirStatus = dsOpenDirService( &gDirRef );
if ( dirStatus == eDSNoErr )
{
dirStatus = MyOpenDirNode( &nodeRef );
if ( dirStatus == eDSNoErr )
{
DeleteRecord( nodeRef );
dsCloseDirNode( nodeRef );
}
}
if ( gDirRef != NULL )
{
dirStatus = dsCloseDirService( gDirRef );
}
}
void DeleteRecord ( const tDirNodeReference nodeRef )
{
long dirStatus = eDSNoErr;
tRecordReference recRef = NULL;
tDataNodePtr recName = NULL;
tDataNodePtr recType = NULL;
recName = dsDataNodeAllocateString( gDirRef, "testuser" );
if ( recName != NULL )
{
recType = dsDataNodeAllocateString( gDirRef, kDSStdRecordTypeUsers );
if ( recType != NULL )
{
Deleting a Record 41
2007-01-08 | © 2007 Apple Inc. All Rights Reserved.
CHAPTER 3
Working with Records