]>
cloudbase.mooo.com Git - z180-stamp.git/blob - fatfs/documents/res/app5.c
1 /*----------------------------------------------------------------------/
2 / Test if the file is contiguous /
3 /----------------------------------------------------------------------*/
5 FRESULT
test_contiguous_file (
6 FIL
* fp
, /* [IN] Open file object to be checked */
7 int* cont
/* [OUT] 1:Contiguous, 0:Fragmented or zero-length */
10 DWORD clst
, clsz
, step
;
16 fr
= f_rewind(fp
); /* Validates and prepares the file */
17 if (fr
!= FR_OK
) return fr
;
19 #if FF_MAX_SS == FF_MIN_SS
20 clsz
= (DWORD
)fp
->obj
.fs
->csize
* FF_MAX_SS
; /* Cluster size */
22 clsz
= (DWORD
)fp
->obj
.fs
->csize
* fp
->obj
.fs
->ssize
;
26 clst
= fp
->obj
.sclust
- 1; /* A cluster leading the first cluster for first test */
28 step
= (fsz
>= clsz
) ? clsz
: (DWORD
)fsz
;
29 fr
= f_lseek(fp
, f_tell(fp
) + step
); /* Advances file pointer a cluster */
30 if (fr
!= FR_OK
) return fr
;
31 if (clst
+ 1 != fp
->clust
) break; /* Is not the cluster next to previous one? */
32 clst
= fp
->clust
; fsz
-= step
; /* Get current cluster for next test */
34 if (fsz
== 0) *cont
= 1; /* All done without fail? */