home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / AOCE Sample Code / PowerTalk Access Modules / Sample CSAM / Sources / AuditLibrary.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-28  |  5.0 KB  |  155 lines  |  [TEXT/KAHL]

  1. /*                                    AuditLibrary.c                                */
  2. /*
  3.  * AuditLibrary.c
  4.  * Copyright © 1992-93 Apple Computer Inc. All Rights Reserved.
  5.  *
  6.  * Auditing for a few of the low-level AOCE directory service routines.
  7.  */
  8. #include "SKEL•CSAM.h"
  9. #include <string.h>
  10.  
  11. #if AUDIT
  12.  
  13. void AuditCString(AuditPtr auditPtr , OSType ID, char * cStr) {
  14.     Str31            pStr;
  15.     short            cLen = strlen(cStr);
  16.  
  17.     if (cLen > 31) cLen = 31;
  18.     pStr[0] = cLen;
  19.     BlockMove(cStr, &pStr[1], cLen);
  20.     Audit(auditPtr, ID, kAuditFormatString, pStr);
  21. }
  22.  
  23. void AuditRString(AuditPtr auditPtr, OSType ID, RStringPtr rStr) {
  24.     Audit(auditPtr, ID, kAuditFormatString, OCERToPString(rStr));
  25. }
  26.  
  27. void AuditRecordList(AuditPtr auditPtr, RecordIDPtr * aRecordList, unsigned long recordIDCount) {
  28.     unsigned long    i;
  29.         
  30.     AuditStatusString(auditPtr, 'RL-n', recordIDCount, "\pRecord List");
  31.     for (i = 0; i < recordIDCount; i++)
  32.         AuditRecordID(auditPtr, aRecordList[i]);
  33. }
  34.  
  35. void AuditAttributeTypeList(AuditPtr auditPtr, RStringPtr * attrTypeList, unsigned long attrTypeCount) {
  36.     unsigned long    i;
  37.     
  38.     AuditStatusString(auditPtr, 'AT-n', attrTypeCount, "\pAttribute Type List");
  39.     for (i = 0; i < attrTypeCount; i++)
  40.         AuditRString(auditPtr, 'AT-t', attrTypeList[i]);
  41. }
  42.  
  43. void AuditRecordID(AuditPtr auditPtr, RecordIDPtr recordIDPtr) {
  44.     if (recordIDPtr == NULL)
  45.         Audit(auditPtr, 'rcID', kAuditFormatString, "\pNull recordID Ptr");
  46.     else {
  47.         AuditPackedRLIPtr(auditPtr, recordIDPtr->rli);
  48.         AuditLocalRecordID(auditPtr, &recordIDPtr->local);
  49.     }
  50. }
  51.  
  52.     
  53. void AuditPackedRLIPtr(AuditPtr auditPtr, PackedRLIPtr rliPtr) {
  54.     RLI                theRLI;
  55.     
  56.     if (rliPtr == NULL)
  57.         Audit(auditPtr, 'PRLI', kAuditFormatString, "\pNull RLI Ptr");
  58.     else if (OCEValidPackedRLI(rliPtr)) {
  59.         OCEUnpackRLI(rliPtr, &theRLI);
  60.         Audit(auditPtr, 'PRLI', kAuditFormatString, OCERToPString((RString *) theRLI.directoryName));
  61.         Audit(auditPtr, 'PRLI', AuditFormat3(kAuditFormatHex, kAuditFormatAddress, kAuditFormatUnsigned),
  62.                                                          theRLI.discriminator.signature,
  63.                                                          theRLI.discriminator.misc,
  64.                                                          theRLI.dNodeNumber);
  65.         AuditPath(auditPtr, theRLI.path);
  66.     }
  67.     else {
  68.         Audit(auditPtr, 'PRLI', kAuditFormatString, "\pInvalid RLI Ptr");
  69.         Audit(auditPtr, 'PRLI', AuditFormat1(kAuditFormatAddress), rliPtr);
  70.     }
  71. }
  72.  
  73. void AuditLocalRecordID(AuditPtr auditPtr, LocalRecordIDPtr localRecordIDPtr) {
  74.     Audit(auditPtr, 'LRid', kAuditFormatString, "\pLocal record id");
  75.     Audit(auditPtr, 'LRid', AuditFormat2(kAuditFormatUnsigned, kAuditFormatUnsigned),
  76.                                                      localRecordIDPtr->cid.source,
  77.                                                      localRecordIDPtr->cid.seq);
  78.     AuditRString(auditPtr, 'LRid', localRecordIDPtr->recordName);
  79.     AuditRString(auditPtr, 'LRid', localRecordIDPtr->recordType);
  80. }
  81.  
  82.  
  83. void AuditPath(AuditPtr auditPtr, PackedPathNamePtr thePath) {
  84.     RStringPtr    Parts[32];
  85.     short         Parts_Total;
  86.  
  87.     if (nil == thePath)
  88.         Audit(auditPtr, 'Path', kAuditFormatString, "\pNull path");
  89.     else {
  90.         Parts_Total = OCEUnpackPathName(thePath, Parts, 8);
  91.         AuditParts(auditPtr, Parts_Total, Parts);
  92.     }
  93. }
  94.  
  95.  
  96. void AuditAttribute(AuditPtr auditPtr, AttributePtr attr_Ptr) {
  97.     if (nil == attr_Ptr)
  98.         Audit(auditPtr, 'Attr', kAuditFormatString, "\pNull Attribute Ptr");
  99.     else {
  100.         AuditRString(auditPtr , 'Attr', (RStringPtr)&attr_Ptr->attributeType);
  101.         Audit(auditPtr, 'Attr', AuditFormat2(kAuditFormatUnsigned, kAuditFormatUnsigned),
  102.                                                          attr_Ptr->cid.source,
  103.                                                          attr_Ptr->cid.seq);
  104.         Audit(auditPtr, 'Attr', AuditFormat3(kAuditFormatHex, kAuditFormatSigned, kAuditFormatHex),
  105.                                                          attr_Ptr->value.tag,
  106.                                                          attr_Ptr->value.dataLength,
  107.                                                          *(attr_Ptr->value.bytes));
  108.     }
  109. }
  110.  
  111.  
  112. void AuditDSSpec(AuditPtr auditPtr, DSSpec * Object_Ptr) {
  113.     if (nil == Object_Ptr)
  114.         Audit(auditPtr, 'DSSp', kAuditFormatString, "\pNull DSSpec Ptr");
  115.     else {
  116.         Audit(auditPtr, 'DSSp', kAuditFormatString, "\pDS Specifier");
  117.  
  118.         AuditPackedRLIPtr(auditPtr, Object_Ptr->entitySpecifier->rli);
  119.         AuditLocalRecordID(auditPtr, &Object_Ptr->entitySpecifier->local);
  120.  
  121.         Audit(auditPtr, 'DSSp', AuditFormat1(kAuditFormatHex),
  122.                                                          Object_Ptr->extensionType);
  123.         if (Object_Ptr->extensionSize > 0)
  124.             Audit(auditPtr, 'DSSp', AuditFormat2(kAuditFormatUnsigned, kAuditFormatAddress),
  125.                                                              Object_Ptr->extensionSize,
  126.                                                              Object_Ptr->extensionValue);
  127.     }
  128. }
  129.  
  130. void AuditDirEnumSpec(AuditPtr auditPtr, DirEnumSpec * DirEnumSpec_Ptr) {
  131.     if (nil == DirEnumSpec_Ptr)
  132.         Audit(auditPtr, 'DirN', kAuditFormatString, "\pNull DirEnumSpec Ptr");
  133.     else {
  134.         AuditStatusString(auditPtr, 'DirN', DirEnumSpec_Ptr->enumFlag, "\penumFlag");
  135.         AuditStatusString(auditPtr, 'DirN', DirEnumSpec_Ptr->indexRatio, "\pindexRatio");
  136.         if (kEnumDNodeMask == DirEnumSpec_Ptr->enumFlag) {
  137.             AuditStatusString(auditPtr, 'DirN', DirEnumSpec_Ptr->u.dNodeIdentifier.dNodeNumber, "\pdNodeNum");
  138.         }
  139.         else {
  140.             AuditLocalRecordID(auditPtr, &DirEnumSpec_Ptr->u.recordIdentifier);
  141.         }
  142.     }
  143. }
  144.  
  145. void AuditParts(AuditPtr auditPtr, short Parts_Count, RString * Parts[]) {    
  146.     if (Parts_Count == 0)
  147.         Audit(auditPtr, 'Path', kAuditFormatString, "\pParts_Count = 0");
  148.     else {
  149.         while (Parts_Count != 0)
  150.             Audit(auditPtr, 'Path', kAuditFormatString, OCERToPString(Parts[--Parts_Count]));
  151.     }
  152. }
  153.  
  154. #endif
  155.