- if(cluster_num == 0 && size_new == 0)
- /* the file stays empty */
- break;
-
- /* seek to the next cluster as long as we need the space */
- while(size_new > cluster_size)
- {
- /* get next cluster of file */
- cluster_t cluster_num_next = fat_get_next_cluster(fd->fs, cluster_num);
- if(cluster_num_next)
- {
- cluster_num = cluster_num_next;
- size_new -= cluster_size;
- }
- else
- {
- break;
- }
- }
-
- if(size_new > cluster_size || cluster_num == 0)
- {
- /* Allocate new cluster chain and append
- * it to the existing one, if available.
- */
- cluster_t cluster_count = (size_new + cluster_size - 1) / cluster_size;
- cluster_t cluster_new_chain = fat_append_clusters(fd->fs, cluster_num, cluster_count);
- if(!cluster_new_chain)
- return 0;
-
- if(!cluster_num)
- {
- cluster_num = cluster_new_chain;
- fd->dir_entry.cluster = cluster_num;
- }
- }
-
- /* write new directory entry */
- fd->dir_entry.file_size = size;
- if(size == 0)
- fd->dir_entry.cluster = 0;
- if(!fat_write_dir_entry(fd->fs, &fd->dir_entry))
- return 0;
-
- if(size == 0)
- {
- /* free all clusters of file */
- fat_free_clusters(fd->fs, cluster_num);
- }
- else if(size_new <= cluster_size)
- {
- /* free all clusters no longer needed */
- fat_terminate_clusters(fd->fs, cluster_num);
- }
+ if(cluster_num == 0 && size_new == 0)
+ /* the file stays empty */
+ break;
+
+ /* seek to the next cluster as long as we need the space */
+ while(size_new > cluster_size)
+ {
+ /* get next cluster of file */
+ cluster_t cluster_num_next = fat_get_next_cluster(fd->fs, cluster_num);
+ if(cluster_num_next)
+ {
+ cluster_num = cluster_num_next;
+ size_new -= cluster_size;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if(size_new > cluster_size || cluster_num == 0)
+ {
+ /* Allocate new cluster chain and append
+ * it to the existing one, if available.
+ */
+ cluster_t cluster_count = (size_new + cluster_size - 1) / cluster_size;
+ cluster_t cluster_new_chain = fat_append_clusters(fd->fs, cluster_num, cluster_count);
+ if(!cluster_new_chain)
+ return 0;
+
+ if(!cluster_num)
+ {
+ cluster_num = cluster_new_chain;
+ fd->dir_entry.cluster = cluster_num;
+ }
+ }
+
+ /* write new directory entry */
+ fd->dir_entry.file_size = size;
+ if(size == 0)
+ fd->dir_entry.cluster = 0;
+ if(!fat_write_dir_entry(fd->fs, &fd->dir_entry))
+ return 0;
+
+ if(size == 0)
+ {
+ /* free all clusters of file */
+ fat_free_clusters(fd->fs, cluster_num);
+ }
+ else if(size_new <= cluster_size)
+ {
+ /* free all clusters no longer needed */
+ fat_terminate_clusters(fd->fs, cluster_num);
+ }