⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hx_morefiles.cpp

📁 linux下的一款播放器
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	short		theResFile=-1;	Boolean		theResult=false;	Str255		message;	saveResFile=CurResFile();	if (theFile == 0L) goto CleanUp;	if (theversion == 0L) goto CleanUp;		theResFile=FSpOpenResFile(theFile,fsRdPerm);	if (theResFile != -1) {		r = GetResource('vers',1);		if (r==0L) goto CleanUp;				HLock(r);		HNoPurge(r);				*r+=(sizeof(Byte)*4)+sizeof(short);				*r+=**r;				BlockMove(*r,message,sizeof(Str255));		#ifdef _CARBON		p2cstrcpy((char*)message, message);#else		p2cstr(message);#endif				SafeStrCpy(theversion,(char *)message, ulBufLen);						}//ifCleanUp:	//if (theResFile >=0) CloseResFile(theResFile);	UseResFile(saveResFile);	return(theResult);}// // FSpGetFileAge//// This function returns the age of a file relative to the current time.//// It is legal to pass in NULL if you don't want a particular age granularity.BooleanFSpGetFileAge(FSSpec*	file,long* minutes,long* seconds,long* ticks){	HParmBlkPtr		fileinfo=(HParmBlkPtr)NewPtrClear(sizeof(HParamBlockRec));	Boolean			theResult=false;	unsigned long		curseconds;		GetDateTime(&curseconds); // seconds since 1904	if (file == 0L) goto CleanUp;	if (fileinfo == 0L) goto CleanUp;	fileinfo->fileParam.ioNamePtr=file->name;	fileinfo->fileParam.ioDirID=file->parID;	fileinfo->fileParam.ioVRefNum=file->vRefNum;		if (noErr != PBHGetFInfoSync(fileinfo)) goto CleanUp;		if (ticks != NULL) 	{	    unsigned long createTicks = (fileinfo->fileParam.ioFlCrDat * 60);	    unsigned long curticks = curseconds * 60;	    *ticks=curticks - createTicks;	    if (*ticks < 0)	    	*ticks = 0;	}	if (seconds != NULL) 	{	    unsigned long createSecs = fileinfo->fileParam.ioFlCrDat;	    *seconds=curseconds - createSecs;	    if (*seconds < 0)	    	*seconds = 0;	}	if (minutes != NULL) 	{	    unsigned long createMinutes = fileinfo->fileParam.ioFlCrDat / 60;	    unsigned long curMinutes = curseconds / 60;	    *minutes = (curMinutes - createMinutes);	    if (*minutes < 0)	    	*minutes = 0;	}		theResult=true;	CleanUp:	if (fileinfo != 0L) DisposePtr((Ptr)fileinfo);		return (theResult);}Boolean		IsFolder(FSSpec* spec){    long dirID;    Boolean isDir;    OSErr err;        err = FSpGetDirectoryID(spec, &dirID, &isDir);    return ((err == noErr) && isDir);    }OSErr	GetMoreVInfo(short volref, StringPtr name, unsigned long *volcreated, Boolean *islocked){HVolumeParam	block;OSErr			err;	memset(&block, 0x00, sizeof(block));	block.ioVolIndex = 0;	block.ioVRefNum = volref;	block.ioNamePtr = name;	err = PBHGetVInfoSync((HParmBlkPtr)&block);	if (!err) {		if (islocked) *islocked = (block.ioVAtrb & (1<<7)) != 0;		if (volcreated) *volcreated = block.ioVCrDate;	}	return err;}#ifdef _CARBON// Stuff that used to be in MoreFilesExtras but isn't in MoreFilesX in FSSpec formOSErr FSpGetDirectoryID(const FSSpec* pDirSpec, long *pDirID, Boolean *pIsDir){	FSRef dirRef;	Boolean isDir = false;	long dirID = 0;	OSErr err;		err = FSpMakeFSRef(pDirSpec, &dirRef);	if (err == noErr)	{		err = FSGetNodeID(&dirRef, &dirID, &isDir);	}		if (pDirID) *pDirID = dirID;	if (pIsDir) *pIsDir = isDir;	return err;}OSErr FSpMoveRenameCompat(const FSSpec * srcSpec, const FSSpec * dstSpec, ConstStr255Param  copyName){	FSRef	srcRef, destDirRef, newRef;	HFSUniStr255 hfsUniName;	OSErr err;		err = FSpMakeFSRef(srcSpec, &srcRef);	require_noerr(err, CantMakeSrcRef);		err = FSpMakeFSRef(dstSpec, &destDirRef);	require_noerr(err, CantMakeDestRef);		if (copyName)	{		err = HFSNameGetUnicodeName(copyName, kTextEncodingUnknown, &hfsUniName);		require_noerr(err, CantMakeUnicodeName);	}		err = FSMoveRename(&srcRef, &destDirRef, hfsUniName.length, copyName ? hfsUniName.unicode : NULL,		kTextEncodingUnknown, &newRef);	require_noerr(err, CantMoveRename);		return noErr;	// reverse-order cleanupCantMoveRename:CantMakeUnicodeName:CantMakeDestRef:CantMakeSrcRef:		return err;}OSErr	DeleteDirectory(short vRefNum, long dirID, ConstStr255Param name){	FSRef dirRef;	OSErr err;	err = FSMakeFSRef(vRefNum, dirID, name, &dirRef);	if (err == noErr)	{		err = FSDeleteContainerContents(&dirRef);	}	return err;}OSErr FSpFileCopy(const FSSpec *srcSpec, const FSSpec *dstSpec, ConstStr255Param copyName,	void *copyBufferPtr, long copyBufferSize, Boolean preflight){	// Ultimately, this should be replaced with a new one that accompanies MoreFilesX, but that's not	// yet available from Apple	void *pBuff = NULL;	long dirID;	Str255 newName;	FSSpec newSpec;	short srcRefNum = -1;	short destRefNum = -1;	FInfo fInfo;	OSErr err;		// get a buffer to use for copying	if (copyBufferPtr)	{		pBuff = copyBufferPtr;	}	else	{		copyBufferSize = 16*1024;		pBuff = NewPtr(copyBufferSize);	}	require_nonnull(pBuff, CantGetBuffer);		// copy the name of the new file	if (copyName)	{		BlockMoveData(&copyName[0], &newName[0], 1 + copyName[0]);	}	else	{		BlockMoveData(&srcSpec->name[0], &newName[0], 1 + srcSpec->name[0]);	}		// make a new file; bail if it already exists	err = FSpGetDirectoryID(dstSpec, &dirID, NULL);	require_noerr(err, CantGetDirID);		err = FSMakeFSSpec(dstSpec->vRefNum, dirID, newName, &newSpec);	require(err == fnfErr, FileExistsAlready);		// create the file		err = FSpCreate(&newSpec, 0, 0, smSystemScript);	require_noerr(err, CantMakeNewFile);		// copy the data forks		err = FSpOpenDF(srcSpec, fsRdPerm, &srcRefNum);	require_noerr(err, CantOpenSourceDF);		err = FSpOpenDF(&newSpec, fsRdWrPerm, &destRefNum);	require_noerr(err, CantOpenDestDF);		err = FSCopyFork(srcRefNum, destRefNum, pBuff, copyBufferSize);	require_noerr(err, CantCopyDataFork);		FSClose(srcRefNum);	FSClose(destRefNum);		srcRefNum = -1;	destRefNum = -1;	// copy the resource forks		err = FSpOpenRF(srcSpec, fsRdPerm, &srcRefNum);	require_noerr(err, CantOpenSourceRF);		err = FSpOpenRF(&newSpec, fsRdWrPerm, &destRefNum);	require_noerr(err, CantOpenDestRF);		err = FSCopyFork(srcRefNum, destRefNum, pBuff, copyBufferSize);	require_noerr(err, CantCopyResourceFork);		FSClose(srcRefNum);	FSClose(destRefNum);		srcRefNum = -1;	destRefNum = -1;		// copy Finder info	err = FSpGetFInfo(srcSpec, &fInfo);	require_noerr(err, CantGetFInfo);		fInfo.fdLocation.h = fInfo.fdLocation.v = 0;	fInfo.fdFldr = 0;	fInfo.fdFlags &= ~kHasBeenInited;	err = FSpSetFInfo(&newSpec, &fInfo);	require_noerr(err, CantSetFInfo);		// we're done with the buffer; dispose it if we allocated it here		if (copyBufferPtr == NULL)	{		DisposePtr((Ptr) pBuff);	}	return noErr;// reverse-order cleanupCantSetFInfo:CantGetFInfo:CantCopyResourceFork:CantOpenDestRF:CantOpenSourceRF:CantCopyDataFork:	if (destRefNum != -1) FSClose(destRefNum);	CantOpenDestDF:	if (srcRefNum != -1) FSClose(srcRefNum);CantOpenSourceDF:	FSpDelete(&newSpec);CantMakeNewFile:FileExistsAlready:CantGetDirID:	if (pBuff && !copyBufferPtr)	{		DisposePtr((Ptr) pBuff);	}CantGetBuffer:	return err;	}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -