Lines Matching refs:clst

1025 	DWORD clst		/* Cluster# to be converted */
1028 clst -= 2; /* Cluster number is origin from 2 */
1029 if (clst >= fs->n_fatent - 2) return 0; /* Is it invalid cluster number? */
1030 return fs->database + (LBA_t)fs->csize * clst; /* Start sector number of the cluster */
1042 DWORD clst /* Cluster number to get the value */
1053 if (clst < 2 || clst >= fs->n_fatent) { /* Check if in valid range */
1061 bc = (UINT)clst; bc += bc / 2;
1066 val = (clst & 1) ? (wc >> 4) : (wc & 0xFFF); /* Adjust bit position */
1070 if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 2))) != FR_OK) break;
1071 val = ld_word(fs->win + clst * 2 % SS(fs)); /* Simple WORD array */
1075 if (move_window(fs, fs->fatbase + (clst / (SS(fs) / 4))) != FR_OK) break;
1076 val = ld_dword(fs->win + clst * 4 % SS(fs)) & 0x0FFFFFFF; /* Simple DWORD array but mask out upper 4 bits */
1097 DWORD clst, /* FAT index number (cluster number) to be changed */
1110 if (clst >= 2 && clst < fs->n_fatent) { /* Check if in valid range */
1113 bc = (UINT)clst; bc += bc / 2; /* bc: byte offset of the entry */
1117 *p = (clst & 1) ? ((*p & 0x0F) | ((BYTE)val << 4)) : (BYTE)val; /* Update 1st byte */
1122 *p = (clst & 1) ? (BYTE)(val >> 4) : ((*p & 0xF0) | ((BYTE)(val >> 8) & 0x0F)); /* Update 2nd byte */
1127 res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 2)));
1129 st_word(fs->win + clst * 2 % SS(fs), (WORD)val); /* Simple WORD array */
1134 res = move_window(fs, fs->fatbase + (clst / (SS(fs) / 4)));
1136 val = (val & 0x0FFFFFFF) | (ld_dword(fs->win + clst * 4 % SS(fs)) & 0xF0000000);
1137 st_dword(fs->win + clst * 4 % SS(fs), val);
1155 DWORD clst, /* Cluster to remove a chain from */
1156 DWORD pclst /* Previous cluster of clst (0 if entire chain) */
1163 DWORD scl = clst, ecl = clst;
1167 if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Check if in valid range */
1177 nxt = get_fat(obj, clst); /* Get cluster status */
1181 res = put_fat(fs, clst, 0); /* Mark the cluster 'free' on the FAT */
1209 clst = nxt; /* Next cluster */
1210 } while (clst < fs->n_fatent); /* Repeat while not the last link */
1224 DWORD clst /* Cluster# to stretch, 0:Create a new chain */
1237 if (clst == 0) { /* Create a new chain */
1251 cs = get_fat(obj, clst); /* Check the cluster status */
1267 scl = clst; /* Cluster to start to find */
1273 if (scl == clst) { /* Stretching an existing chain? */
1328 if (res == FR_OK && clst != 0) {
1329 res = put_fat(fs, clst, ncl); /* Link it from the previous one if needed */
1400 DWORD clst /* Directory table to clear */
1413 sect = clst2sect(fs, clst); /* Top of the cluster */
1446 DWORD csz, clst;
1454 clst = dp->obj.sclust; /* Table start cluster (0:root) */
1455 if (clst == 0 && fs->fs_type >= FS_FAT32) { /* Replace cluster# 0 with root cluster# */
1456 clst = (DWORD)fs->dirbase;
1459 if (clst == 0) { /* Static table (root-directory on the FAT volume) */
1466 clst = get_fat(&dp->obj, clst); /* Get next cluster */
1467 if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */
1468 if (clst < 2 || clst >= fs->n_fatent) return FR_INT_ERR; /* Reached to end of table or internal error */
1471 dp->sect = clst2sect(fs, clst);
1473 dp->clust = clst; /* Current cluster# */
1496 DWORD ofs, clst;
1514 clst = get_fat(&dp->obj, dp->clust); /* Get next cluster */
1515 if (clst <= 1) return FR_INT_ERR; /* Internal error */
1516 if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */
1517 if (clst >= fs->n_fatent) { /* It reached end of dynamic table */
1522 clst = create_chain(&dp->obj, dp->clust); /* Allocate a cluster */
1523 if (clst == 0) return FR_NO_SPACE_LEFT; /* No free cluster */
1524 if (clst == 1) return FR_INT_ERR; /* Internal error */
1525 if (clst == 0xFFFFFFFF) return FR_DISK_ERR; /* Disk error */
1526 if (dir_clear(fs, clst) != FR_OK) return FR_DISK_ERR; /* Clean up the stretched table */
1532 dp->clust = clst; /* Initialize data for new cluster */
1533 dp->sect = clst2sect(fs, clst);
3285 DWORD cl, bcs, clst, tm;
3465 clst = fp->obj.sclust; /* Follow the cluster chain */
3467 clst = get_fat(&fp->obj, clst);
3468 if (clst <= 1) res = FR_INT_ERR;
3469 if (clst == 0xFFFFFFFF) res = FR_DISK_ERR;
3471 fp->clust = clst;
3473 sc = clst2sect(fs, clst);
3492 clst = fp->obj.sclust;
3494 if (clst != 0) {
3496 if (clst == 0xFFFFFFFF) {
3500 if (clst == cl) { /* Is the end of the cluster? */
3504 if (clst < 2 || clst >= fs->n_fatent) {
3508 if (clst < fs->st_clst || clst >= fs->st_clst + fs->ct_clst) {
3512 clst = get_fat(&fp->obj, clst);
3548 DWORD clst;
3569 clst = fp->obj.sclust; /* Follow cluster chain from the origin */
3573 clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */
3577 clst = get_fat(&fp->obj, fp->clust); /* Follow cluster chain on the FAT */
3580 if (clst < 2) ABORT(fs, FR_INT_ERR);
3581 if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR);
3582 fp->clust = clst; /* Update current cluster */
3668 DWORD clst;
3691 clst = fp->obj.sclust; /* Follow from the origin */
3692 if (clst == 0) { /* If no cluster is allocated, */
3693 clst = create_chain(&fp->obj, 0); /* create a new cluster chain */
3698 clst = clmt_clust(fp, fp->fptr); /* Get cluster# from the CLMT */
3702 clst = create_chain(&fp->obj, fp->clust); /* Follow or stretch cluster chain on the FAT */
3705 if (clst == 0) { /* Could not allocate a new cluster (disk full) */
3709 if (clst == 1) ABORT(fs, FR_INT_ERR);
3710 if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR);
3711 fp->clust = clst; /* Update current cluster */
3712 if (fp->obj.sclust == 0) fp->obj.sclust = clst; /* Set start cluster if the first write */
4064 DWORD clst, bcs;
4142 clst = fp->clust;
4144 clst = fp->obj.sclust; /* start from the first cluster */
4146 if (clst == 0) { /* If no cluster chain, create a new chain */
4147 clst = create_chain(&fp->obj, 0);
4148 if (clst == 0) res = FR_NO_SPACE_LEFT;
4149 if (clst == 1) ABORT(fs, FR_INT_ERR);
4150 if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR);
4151 fp->obj.sclust = clst;
4154 fp->clust = clst;
4156 if (clst != 0) {
4161 clst = create_chain(&fp->obj, clst); /* Follow chain with forceed stretch */
4162 if (clst == 0) { /* Clip file size in case of disk full */
4170 clst = get_fat(&fp->obj, clst); /* Follow cluster chain if not in write mode */
4172 if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR);
4173 if (clst <= 1 || clst >= fs->n_fatent) ABORT(fs, FR_INT_ERR);
4174 fp->clust = clst;
4178 nsect = clst2sect(fs, clst); /* Current sector */
4420 DWORD nfree, clst, stat;
4428 clst = 2; obj.fs = fs;
4430 stat = get_fat(&obj, clst);
4438 } while (++clst < fs->n_fatent);
4441 clst = fs->n_fatent; /* Number of entries */
4457 } while (--clst);
5327 DWORD n, clst, stcl, scl, ncl, tcl, lclst, count, fclust = 0;
5350 scl = stcl; ncl = 0; clst = stcl + 1;
5352 n = get_fat(&fp->obj, clst);
5357 res = put_fat(fs, clstbak, clst);
5361 scl = clst;
5363 clstbak = clst; /* Update the current cluster to the last cluster in next loop */
5365 res = put_fat(fs, clst, 0xFFFFFFFF);
5369 if (clst == stcl) { /* No contiguous cluster? */
5374 if (++clst >= fs->st_clst + fs->ct_clst) clst = fs->st_clst;
5380 scl = stcl; ncl = 0; clst = stcl + 1;
5382 n = get_fat(&fp->obj, clst);
5387 res = put_fat(fs, clstbak, clst);
5390 scl = clst;
5392 clstbak = clst; /* Update the current cluster to the last cluster in next loop */
5394 res = put_fat(fs, clst, 0xFFFFFFFF);
5398 if (clst == stcl) { /* No contiguous cluster? */
5403 if (++clst >= fs->n_fatent) clst = 2;
5451 clst = scl;
5454 n = get_fat(&fp->obj, clst);
5457 res = put_fat(fs, clst, 0);
5460 clst = n;
5486 DWORD clst;
5505 clst = (fp->fptr == 0) ? /* On the top of the file? */
5507 if (clst <= 1) ABORT(fs, FR_INT_ERR);
5508 if (clst == 0xFFFFFFFF) ABORT(fs, FR_DISK_ERR);
5509 fp->clust = clst; /* Update current cluster */