/////////////////////////////////////////////////////////////////// // We set the MacOS 9 Finder comment using the File Manager API's // Desktop Database functions. /////////////////////////////////////////////////////////////////// static OSErr OS9_SetComment (FSSpec *fileSpec, char *comment, bool *unsupported) { #if !__LP64__ OSErr err = noErr; DTPBRec dt; dt.ioVRefNum = (*fileSpec).vRefNum; err = PBDTGetPath(&dt); if (err != noErr) { *unsupported = true; return err; } //fill in the relevant fields (using parameters) dt.ioNamePtr = (*fileSpec).name; dt.ioDirID = (*fileSpec).parID; dt.ioDTBuffer = comment; dt.ioDTReqCount = strlen(comment); if (PBDTSetCommentSync (&dt) != noErr) return (err); err = PBDTSetCommentSync(&dt); if (err != noErr) return err; err = PBDTFlushSync (&dt); #endif return (noErr); }
pascal OSErr DTSetComment(short vRefNum, long dirID, ConstStr255Param name, ConstStr255Param comment) { DTPBRec pb; OSErr error; short dtRefNum; Boolean newDTDatabase; error = DTOpen(name, vRefNum, &dtRefNum, &newDTDatabase); if ( error == noErr ) { pb.ioDTRefNum = dtRefNum; pb.ioNamePtr = (StringPtr)name; pb.ioDirID = dirID; pb.ioDTBuffer = (Ptr)&comment[1]; /* Truncate the comment to 200 characters just in case */ /* some file system doesn't range check */ if ( comment[0] <= 200 ) { pb.ioDTReqCount = comment[0]; } else { pb.ioDTReqCount = 200; } error = PBDTSetCommentSync(&pb); } return (error); }
boolean setfilecomment (FSSpec *pfs, bigstring bscomment) { DTPBRec dt; clearbytes (&dt, longsizeof (dt)); if (!hasdesktopmanager ((*pfs).vRefNum)) return (false); dt.ioVRefNum = (*pfs).vRefNum; if (PBDTGetPath (&dt) != noErr) return (false); dt.ioNamePtr = (*pfs).name; dt.ioDirID = (*pfs).parID; dt.ioDTBuffer = (Ptr) bscomment + 1; dt.ioDTReqCount = stringlength (bscomment); if (PBDTSetCommentSync (&dt) != noErr) return (false); PBDTFlushSync (&dt); return (true); } /*setfilecomment*/