void showAEDesc(const AppleEvent *ev) { Handle result; OSStatus resultStatus; resultStatus = AEPrintDescToHandle(ev,&result); syslog(LOG_NOTICE, "%s", *result); DisposeHandle(result); }
pascal OSErr MoreFEGetCommentCFString(const FSRefPtr pFSRefPtr, CFStringRef* pCommentStr,const AEIdleUPP pIdleProcUPP) { AppleEvent tAppleEvent = {typeNull,NULL}; // If you always init AEDescs, it's always safe to dispose of them. AEDesc tAEDesc = {typeNull,NULL}; OSErr anErr = noErr; if (NULL == pIdleProcUPP) // the idle proc is required return paramErr; anErr = MoreAEOCreateObjSpecifierFromFSRef(pFSRefPtr,&tAEDesc); if (noErr == anErr) { AEBuildError tAEBuildError; anErr = AEBuildAppleEvent( kAECoreSuite,kAEGetData, typeApplSignature,&gFinderSignature,sizeof(OSType), kAutoGenerateReturnID,kAnyTransactionID, &tAppleEvent,&tAEBuildError, "'----':obj {form:prop,want:type(prop),seld:type(comt),from:(@)}",&tAEDesc); // always dispose of AEDescs when you are finished with them (void) MoreAEDisposeDesc(&tAEDesc); if (noErr == anErr) { #if 0 // Set this true to printf the Apple Event before you send it. Handle strHdl; anErr = AEPrintDescToHandle(&tAppleEvent,&strHdl); if (noErr == anErr) { char nul = '\0'; PtrAndHand(&nul,strHdl,1); printf("\n-MoreFEGetCommentCFString: tAppleEvent=%s.",*strHdl); fflush(stdout); DisposeHandle(strHdl); } #endif // Send the event. anErr = MoreAESendEventReturnAEDesc(pIdleProcUPP,&tAppleEvent,typeUnicodeText,&tAEDesc); // always dispose of AEDescs when you are finished with them (void) MoreAEDisposeDesc(&tAppleEvent); if (noErr == anErr) { anErr = MoreAEGetCFStringFromDescriptor(&tAEDesc,pCommentStr); // always dispose of AEDescs when you are finished with them (void) MoreAEDisposeDesc(&tAEDesc); } } } return anErr; } // end MoreFEGetCommentCFString
static VALUE rbosa_element_inspect (VALUE self) { Handle h; char buf[1024]; if (AEPrintDescToHandle (rbosa_element_aedesc (self), &h) != noErr) { snprintf (buf, sizeof buf, "<%s:%p>", rb_obj_classname (self), (void *)self); } else { snprintf (buf, sizeof buf, "<%s:%p desc=\"%s\">", rb_obj_classname (self), (void *)self, *h); DisposeHandle (h); } return CSTR2RVAL (buf); }