summaryrefslogtreecommitdiff
path: root/extra/dosfstools/dosfstools-3.0.12-fix-alloc-rootdir-entry.patch
blob: 44e6e86b5a20462dc6f3189251b6cbc388379b45 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--- dosfstools-3.0.12/src/check.c.old	2010-01-23 10:13:17.000000000 +0100
+++ dosfstools-3.0.12/src/check.c	2011-01-31 17:43:31.462674941 +0100
@@ -174,7 +174,10 @@
 	offset = fs->root_start + next_free * sizeof(DIR_ENT);
 	memset(de, 0, sizeof(DIR_ENT));
 	while (1) {
-	    sprintf((char *)de->name, pattern, curr_num);
+	    char expanded[12];
+	    sprintf(expanded, pattern, curr_num);
+	    memcpy(de->name, expanded, 8);
+	    memcpy(de->ext, expanded + 8, 3);
	    for (scan = 0; scan < fs->root_entries; scan++)
 		if (scan != next_free &&
 		    !strncmp((const char *)root[scan].name,
--- dosfstools-3.0.12/src/fat.c
+++ dosfstools-3.0.12/src/fat.c
@@ -474,7 +474,7 @@ void reclaim_file(DOS_FS * fs)
 	    DIR_ENT de;
 	    loff_t offset;
 	    files++;
-	    offset = alloc_rootdir_entry(fs, &de, "FSCK%04d");
+	    offset = alloc_rootdir_entry(fs, &de, "FSCK%04dREC");
 	    de.start = CT_LE_W(i & 0xffff);
	    if (fs->fat_bits == 32)
 		de.starthi = CT_LE_W(i >> 16);