コード例 #1
0
ファイル: fs_driver.c プロジェクト: AKuHAK2/ps2sdk
//---------------------------------------------------------------------------
int fs_ioctl(iop_file_t *fd, u32 request, void *data)
{
	fat_driver* fatd;
	struct fs_dirent* dirent = (struct fs_dirent *) fd->privdata;	//Remember to re-cast this to the right structure (either fs_rec or fs_dir)!
	int ret;

	if (dirent == NULL)
		return -EBADF;

	_fs_lock();

	fatd = fat_getData(fd->unit);
	if (fatd == NULL) { _fs_unlock(); return -ENODEV; }

	switch (request) {
		case USBMASS_IOCTL_RENAME:
			ret = fat_renameFile(fatd, &dirent->fatdir, data);	//No need to re-cast since this inner structure is a common one.
			FLUSH_SECTORS(fatd);
			break;
		default:
			ret = fs_dummy();
	}

	_fs_unlock();
	return ret;
}
コード例 #2
0
ファイル: fs_driver.c プロジェクト: AKuHAK/ps2sdk
//---------------------------------------------------------------------------
int fs_ioctl(iop_file_t *fd, int cmd, void *data)
{
	fat_driver* fatd;
	struct fs_dirent* dirent = (struct fs_dirent *) fd->privdata;	//Remember to re-cast this to the right structure (either fs_rec or fs_dir)!
	int ret;

	if (dirent == NULL)
		return -EBADF;

	_fs_lock();

	fatd = fat_getData(fd->unit);
	if (fatd == NULL) { _fs_unlock(); return -ENODEV; }

	switch (cmd) {
		case USBMASS_IOCTL_RENAME:
			ret = fat_renameFile(fatd, &dirent->fatdir, data);	//No need to re-cast since this inner structure is a common one.
			FLUSH_SECTORS(fatd);
			break;
		case USBMASS_IOCTL_GET_CLUSTER:
			ret = ((fs_rec *)fd->privdata)->dirent.fatdir.startCluster;
			break;
		case USBMASS_IOCTL_GET_LBA:
			ret = fat_cluster2sector(&fatd->partBpb, ((fs_rec *)fd->privdata)->dirent.fatdir.startCluster);
			break;
		default:
			ret = fs_dummy();
	}

	_fs_unlock();
	return ret;
}