All manual pages added to manifest file.
This commit is contained in:
+25
-8
@@ -782,13 +782,24 @@ create_link:
|
||||
if (verbose > 2)
|
||||
printf ("*** link inode %d to '%.*s', directory %d\n", mode, namlen, namptr, dir.number);
|
||||
reclen = dirent.reclen - 8 - (dirent.namlen + 4) / 4 * 4;
|
||||
dirent.reclen -= reclen;
|
||||
if (verbose > 2)
|
||||
printf ("*** previous entry %u-%u-%u at offset %lu\n", dirent.inum, dirent.reclen, dirent.namlen, last_offset);
|
||||
if (! fs_inode_write (&dir, last_offset, (unsigned char*) &dirent, sizeof(dirent))) {
|
||||
fprintf (stderr, "inode %d: write error at offset %ld\n",
|
||||
dir.number, last_offset);
|
||||
return 0;
|
||||
c = 8 + (namlen + 4) / 4 * 4;
|
||||
if (reclen >= c) {
|
||||
/* Enough space */
|
||||
dirent.reclen -= reclen;
|
||||
if (verbose > 2)
|
||||
printf ("*** previous entry %u-%u-%u at offset %lu\n",
|
||||
dirent.inum, dirent.reclen, dirent.namlen, last_offset);
|
||||
if (! fs_inode_write (&dir, last_offset, (unsigned char*) &dirent, sizeof(dirent))) {
|
||||
fprintf (stderr, "inode %d: write error at offset %ld\n",
|
||||
dir.number, last_offset);
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
/* No space, extend directory. */
|
||||
if (verbose > 2)
|
||||
printf ("*** extend dir, previous entry %u-%u-%u at offset %lu\n",
|
||||
dirent.inum, dirent.reclen, dirent.namlen, last_offset);
|
||||
reclen = BSDFS_BSIZE;
|
||||
}
|
||||
offset = last_offset + dirent.reclen;
|
||||
dirent.inum = mode;
|
||||
@@ -803,11 +814,17 @@ create_link:
|
||||
}
|
||||
if (verbose > 2)
|
||||
printf ("*** name '%.*s' at offset %lu\n", namlen, namptr, offset+sizeof(dirent));
|
||||
if (! fs_inode_write (&dir, offset+sizeof(dirent), (unsigned char*) namptr, namlen)) {
|
||||
if (! fs_inode_write (&dir, offset+sizeof(dirent), (unsigned char*) namptr, namlen) ||
|
||||
! fs_inode_write (&dir, offset+sizeof(dirent)+namlen, (unsigned char*) "", 1)) {
|
||||
fprintf (stderr, "inode %d: write error at offset %ld\n",
|
||||
dir.number, offset+sizeof(dirent));
|
||||
return 0;
|
||||
}
|
||||
if (dir.size % BSDFS_BSIZE) {
|
||||
/* Align directory size. */
|
||||
dir.size = (dir.size + BSDFS_BSIZE - 1) / BSDFS_BSIZE * BSDFS_BSIZE;
|
||||
dir.dirty = 1;
|
||||
}
|
||||
if (! fs_inode_save (&dir, 0)) {
|
||||
fprintf (stderr, "%s: cannot save directory inode\n", namptr);
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user