FreeCalypso > hg > freecalypso-tools
comparison ffstools/tiffs-mkfs/output.c @ 717:178ed445021d
tiffs-mkfs: journal creation implemented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 23 Aug 2020 03:40:10 +0000 |
parents | e2e4aed24522 |
children |
comparison
equal
deleted
inserted
replaced
716:3713a349fb1e | 717:178ed445021d |
---|---|
94 inp = inode_array + ino; | 94 inp = inode_array + ino; |
95 if (name) | 95 if (name) |
96 size = strlen(name) + 1; | 96 size = strlen(name) + 1; |
97 else | 97 else |
98 size = 0; | 98 size = 0; |
99 if (data) | 99 if (datalen) |
100 size += datalen + 1; | 100 size += datalen + 1; |
101 size = (size + 15) & ~15; | 101 size = (size + 15) & ~15; |
102 if (ffs_sector_size - data_fill_level < size || | 102 if (ffs_sector_size - data_fill_level < size || |
103 objects_in_block >= block_files_max) | 103 objects_in_block >= block_files_max) |
104 flush_data_block(); | 104 flush_data_block(); |
111 dp = data_block + data_fill_level; | 111 dp = data_block + data_fill_level; |
112 if (name) { | 112 if (name) { |
113 strcpy(dp, name); | 113 strcpy(dp, name); |
114 dp += strlen(name) + 1; | 114 dp += strlen(name) + 1; |
115 } | 115 } |
116 if (data) { | 116 if (datalen) { |
117 bcopy(data, dp, datalen); | 117 if (data) |
118 bcopy(data, dp, datalen); | |
118 dp += datalen; | 119 dp += datalen; |
119 *dp++ = 0; | 120 *dp++ = 0; |
120 } | 121 } |
121 /* fill the inode */ | 122 /* fill the inode */ |
122 inp->size = htole16(size); | 123 inp->size = htole16(size); |
207 dto->u.d.ffs_link_ptr = &inode_array[child_ino].sibling; | 208 dto->u.d.ffs_link_ptr = &inode_array[child_ino].sibling; |
208 } | 209 } |
209 } | 210 } |
210 | 211 |
211 void | 212 void |
213 create_journal() | |
214 { | |
215 int ino; | |
216 | |
217 ino = create_object(".journal", OBJTYPE_FILE_RO, (u_char *) 0, | |
218 journal_size); | |
219 *root.u.d.ffs_link_ptr = htole16(ino); | |
220 root.u.d.ffs_link_ptr = &inode_array[ino].sibling; | |
221 } | |
222 | |
223 void | |
212 finish_output() | 224 finish_output() |
213 { | 225 { |
214 if (objects_in_block) | 226 if (objects_in_block) |
215 flush_data_block(); | 227 flush_data_block(); |
216 while (blocks_written < ffs_nsectors - 2) { | 228 while (blocks_written < ffs_nsectors - 2) { |