40 #if FATFS_INC_WRITE_SUPPORT
49 uint32 start = *startCluster;
55 for (i=0;i<clusters;i++)
69 *startCluster = nextcluster;
97 clusterCount = (size / clusterSize);
100 if (size-(clusterSize*clusterCount))
113 *startCluster = nextcluster;
119 nextcluster = *startCluster;
130 static int fatfs_find_free_dir_offset(
struct fatfs *
fs,
uint32 dirCluster,
int entryCount,
uint32 *pSector,
uint8 *pOffset)
137 int possible_spaces = 0;
138 int start_recorded = 0;
163 if (possible_spaces == 0)
182 if (possible_spaces == 0)
193 if (possible_spaces >= entryCount)
202 if (possible_spaces == 0)
214 if (possible_spaces >= entryCount)
242 for (i=0;i<
fs->sectors_per_cluster;i++)
284 if (!
fs->disk_io.write_media)
287 #if FATFS_INC_LFN_SUPPORT
299 if (!fatfs_find_free_dir_offset(
fs, dirCluster, entryCount + 1, &dirSector, &dirOffset))
303 pSname = (
uint8*)shortfilename;
305 for (i=11; i!=0; i--) checksum = ((checksum & 1) ? 0x80 : 0) + (checksum >> 1) + *pSname++;
324 if ( (dirSector==(x-1)) && (dirOffset==item) )
335 #if FATFS_INC_TIME_DATE_SUPPORT
340 memcpy(&
fs->currentsector.sector[recordoffset], &shortEntry,
sizeof(shortEntry));
343 return fs->disk_io.write_media(
fs->currentsector.address,
fs->currentsector.sector, 1);
345 #if FATFS_INC_LFN_SUPPORT
361 if (!
fs->disk_io.write_media(
fs->currentsector.address,
fs->currentsector.sector, 1))