pfsnumfiles.c 1.67 KB

/**************************************************************************
 *                                                                        *
 *               Copyright (C) 1995, Silicon Graphics, Inc.               *
 *                                                                        *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., and  *
 *  are protected by Federal copyright law.  They  may  not be disclosed  *
 *  to  third  parties  or copied or duplicated in any form, in whole or  *
 *  in part, without the prior written consent of Silicon Graphics, Inc.  *
 *                                                                        *
 **************************************************************************/

#include "osint.h"
#include "controller.h"

s32
osPfsNumFiles(OSPfs *pfs, s32 *max_files, s32 *files_used)
{
	int j;
	s32 ret;
	__OSDir dir;
	int files = 0;

	if (!(pfs->status & PFS_INITIALIZED))
		return(PFS_ERR_INVALID);

	if ((ret=__osCheckId(pfs)) != 0){
		return(ret);
	}
#ifdef	_PFS_1M_EXTENSION
	if ((ret = __osPfsSelectIdBank(pfs)) != 0) return(ret);
#else
	if (pfs->activebank != 0) {
	  if ((ret = __osPfsSelectBank(pfs, 0)) != 0)
	    return(ret);
	}
#endif
	for (j = 0; j < pfs->dir_size; j++) {
		if ((ret = __osContRamRead(pfs->queue, pfs->channel,
                        (u16)(pfs->dir_table + j), (u8 *)&dir)) != 0)
                        return(ret);
		if ((dir.company_code != 0) && (dir.game_code != 0))
			files++;
	}

	*files_used = (s32)files;
	*max_files = (s32)pfs->dir_size;

	ret = __osPfsGetStatus(pfs->queue, pfs->channel);
	return(ret);
}