//--------------------------------------------------------------------------- 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; }
//--------------------------------------------------------------------------- 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; }