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) {