csi
csi iter;
init_csi(msdosfsmount* fatVolume, uint32 cluster, uint32 sector, struct csi* csi)
csi->fatVolume = fatVolume;
csi->cluster = cluster;
csi->sector = sector;
fs_sector(struct csi* csi)
ASSERT(validate_cs(csi->fatVolume, csi->cluster, csi->sector) == 0);
if (csi->cluster == MSDOSFSROOT) {
return static_cast<off_t>(csi->fatVolume->pm_rootdirblk) / csi->fatVolume->pm_BlkPerSec
+ csi->sector;
= cntobn(csi->fatVolume, static_cast<off_t>(csi->cluster)) / csi->fatVolume->pm_BlkPerSec;
return clusterStart + csi->sector;
iter_csi(struct csi* csi, int sectors)
if (csi->sector == 0xffff) // check if already at end of chain
if (csi->cluster == MSDOSFSROOT) {
csi->sector += sectors;
if (csi->sector < csi->fatVolume->pm_rootdirsize / csi->fatVolume->pm_BlkPerSec)
u_long secPerClust = SECTORS_PER_CLUSTER(csi->fatVolume);
csi->sector += sectors;
if (csi->sector < secPerClust)
csi->cluster = get_nth_fat_entry(csi->fatVolume, csi->cluster, csi->sector / secPerClust);
if (MSDOSFSEOF(csi->fatVolume, csi->cluster)) {
csi->sector = 0xffff;
if (vIS_DATA_CLUSTER(csi->fatVolume, csi->cluster)) {
csi->sector %= SECTORS_PER_CLUSTER(csi->fatVolume);
csi->sector = 0xffff;
status_t init_csi(msdosfsmount* fatVolume, uint32 cluster, uint32 sector, struct csi* csi);
off_t fs_sector(struct csi* csi);
status_t iter_csi(struct csi* csi, int sectors);
int (*csi)(const char *leader, const long args[], int argcount, const char *intermed, char command, void *user);
if((*vt->parser_callbacks->csi)(leaderlen ? leader : NULL, csi_args, argcount, intermedlen ? intermed : NULL, command, vt->cbdata))
if(vt->parser_callbacks && vt->parser_callbacks->csi)
.csi = on_csi,