/* go to cluster at pos */
cur_pos = bytesperclust;
while (1) {
+ newclust = get_fatent(mydata, curclust);
if (pos <= cur_pos)
break;
- if (IS_LAST_CLUST(curclust, mydata->fatsize))
+ if (IS_LAST_CLUST(newclust, mydata->fatsize))
break;
-
- newclust = get_fatent(mydata, curclust);
- if (!IS_LAST_CLUST(newclust, mydata->fatsize) &&
- CHECK_CLUST(newclust, mydata->fatsize)) {
+ if (CHECK_CLUST(newclust, mydata->fatsize)) {
debug("curclust: 0x%x\n", curclust);
debug("Invalid FAT entry\n");
return -1;
cur_pos += bytesperclust;
curclust = newclust;
}
- if (IS_LAST_CLUST(curclust, mydata->fatsize)) {
+ if (IS_LAST_CLUST(newclust, mydata->fatsize)) {
assert(pos == cur_pos);
+ filesize -= pos;
goto set_clusters;
}