Lines Matching refs:dirent

352 		     struct ext2_dir_entry *dirent,  in check_dot()  argument
361 if (!dirent->inode) in check_dot()
363 else if (((dirent->name_len & 0xFF) != 1) || in check_dot()
364 (dirent->name[0] != '.')) in check_dot()
366 else if (dirent->name[1] != '\0') in check_dot()
369 (void) ext2fs_get_rec_len(ctx->fs, dirent, &rec_len); in check_dot()
373 rec_len = dirent->rec_len = 12; in check_dot()
374 dirent->inode = ino; in check_dot()
375 dirent->name_len = 1; in check_dot()
376 dirent->name[0] = '.'; in check_dot()
377 dirent->name[1] = '\0'; in check_dot()
382 if (dirent->inode != ino) { in check_dot()
384 dirent->inode = ino; in check_dot()
394 ((char *) dirent + 12); in check_dot()
395 dirent->rec_len = 12; in check_dot()
413 struct ext2_dir_entry *dirent, in check_dotdot() argument
419 if (!dirent->inode) in check_dotdot()
421 else if (((dirent->name_len & 0xFF) != 2) || in check_dotdot()
422 (dirent->name[0] != '.') || in check_dotdot()
423 (dirent->name[1] != '.')) in check_dotdot()
425 else if (dirent->name[2] != '\0') in check_dotdot()
428 (void) ext2fs_get_rec_len(ctx->fs, dirent, &rec_len); in check_dotdot()
432 dirent->rec_len = 12; in check_dotdot()
438 dirent->inode = EXT2_ROOT_INO; in check_dotdot()
439 dirent->name_len = 2; in check_dotdot()
440 dirent->name[0] = '.'; in check_dotdot()
441 dirent->name[1] = '.'; in check_dotdot()
442 dirent->name[2] = '\0'; in check_dotdot()
447 if (e2fsck_dir_info_set_dotdot(ctx, ino, dirent->inode)) { in check_dotdot()
459 struct ext2_dir_entry *dirent, in check_name() argument
466 for ( i = 0; i < (dirent->name_len & 0xFF); i++) { in check_name()
467 if (dirent->name[i] != '/' && dirent->name[i] != '\0') in check_name()
473 dirent->name[i] = '.'; in check_name()
480 struct ext2_dir_entry *dirent, in encrypted_check_name() argument
483 if ((dirent->name_len & 0xff) < EXT4_CRYPTO_BLOCK_SIZE) { in encrypted_check_name()
485 dirent->inode = 0; in encrypted_check_name()
497 struct ext2_dir_entry *dirent, in check_filetype() argument
501 int filetype = dirent->name_len >> 8; in check_filetype()
510 dirent->name_len = dirent->name_len & 0xFF; in check_filetype()
514 if (ext2fs_test_inode_bitmap2(ctx->inode_dir_map, dirent->inode)) { in check_filetype()
517 dirent->inode)) { in check_filetype()
521 dirent->inode)) in check_filetype()
524 e2fsck_read_inode(ctx, dirent->inode, &inode, in check_filetype()
536 dirent->name_len = (dirent->name_len & 0xFF) | should_be << 8; in check_filetype()
658 struct ext2_dir_entry *dirent, in salvage_directory() argument
662 char *cp = (char *) dirent; in salvage_directory()
665 unsigned int name_len = dirent->name_len & 0xFF; in salvage_directory()
667 (void) ext2fs_get_rec_len(fs, dirent, &rec_len); in salvage_directory()
687 dirent->inode <= fs->super->s_inodes_count && in salvage_directory()
688 strnlen(dirent->name, name_len) == name_len) { in salvage_directory()
689 (void) ext2fs_set_rec_len(fs, (int) rec_len + left, dirent); in salvage_directory()
718 (void) ext2fs_set_rec_len(fs, rec_len, dirent); in salvage_directory()
719 dirent->name_len = 0; in salvage_directory()
720 dirent->inode = 0; in salvage_directory()
732 struct ext2_dir_entry *dirent, *prev; in check_dir_block() local
775 cd->pctx.dirent = 0; in check_dir_block()
829 dirent = (struct ext2_dir_entry *) buf; in check_dir_block()
830 (void) ext2fs_get_rec_len(fs, dirent, &rec_len); in check_dir_block()
849 } else if ((dirent->inode == 0) && in check_dir_block()
851 (dirent->name_len == 0) && in check_dir_block()
870 dirent = (struct ext2_dir_entry *) (buf + offset); in check_dir_block()
871 (void) ext2fs_get_rec_len(fs, dirent, &rec_len); in check_dir_block()
872 cd->pctx.dirent = dirent; in check_dir_block()
877 (((dirent->name_len & (unsigned) 0xFF)+8) > rec_len)) { in check_dir_block()
879 salvage_directory(fs, dirent, prev, &offset); in check_dir_block()
887 if (check_dot(ctx, dirent, ino, &cd->pctx)) in check_dir_block()
890 ret = check_dotdot(ctx, dirent, ino, &cd->pctx); in check_dir_block()
895 } else if (dirent->inode == ino) { in check_dir_block()
898 dirent->inode = 0; in check_dir_block()
903 if (!dirent->inode) in check_dir_block()
909 if (((dirent->inode != EXT2_ROOT_INO) && in check_dir_block()
910 (dirent->inode < EXT2_FIRST_INODE(fs->super))) || in check_dir_block()
911 (dirent->inode > fs->super->s_inodes_count)) { in check_dir_block()
915 dirent->inode))) { in check_dir_block()
922 ((dirent->name_len & 0xFF) == 1) && in check_dir_block()
923 (dirent->name[0] == '.')) { in check_dir_block()
931 ((dirent->name_len & 0xFF) == 2) && in check_dir_block()
932 (dirent->name[0] == '.') && in check_dir_block()
933 (dirent->name[1] == '.')) { in check_dir_block()
941 (dirent->inode == EXT2_ROOT_INO)) { in check_dir_block()
950 (dirent->name_len & 0xFF) == 0) { in check_dir_block()
959 dirent->inode = 0; in check_dir_block()
977 dirent->inode)) { in check_dir_block()
979 dirent->inode, in check_dir_block()
981 dirent->inode = 0; in check_dir_block()
989 group = ext2fs_group_of_ino(fs, dirent->inode); in check_dir_block()
1004 pctx.num = dirent->inode; in check_dir_block()
1016 } else if (dirent->inode >= first_unused_inode) { in check_dir_block()
1017 pctx.num = dirent->inode; in check_dir_block()
1039 dirent->inode))) in check_dir_block()
1044 dirent->inode = 0; in check_dir_block()
1054 if (!encrypted && check_name(ctx, dirent, &cd->pctx)) in check_dir_block()
1058 encrypted_check_name(ctx, dirent, &cd->pctx)) { in check_dir_block()
1063 if (check_filetype(ctx, dirent, ino, &cd->pctx)) in check_dir_block()
1068 ext2fs_dirhash(dx_dir->hashversion, dirent->name, in check_dir_block()
1069 (dirent->name_len & 0xFF), in check_dir_block()
1087 dirent->inode))) { in check_dir_block()
1088 if (e2fsck_dir_info_get_parent(ctx, dirent->inode, in check_dir_block()
1090 cd->pctx.ino = dirent->inode; in check_dir_block()
1098 dirent->inode = 0; in check_dir_block()
1105 dirent->inode, ino); in check_dir_block()
1111 } else if (dict_lookup(&de_dict, dirent)) { in check_dir_block()
1114 pctx.dirent = dirent; in check_dir_block()
1122 dict_alloc_insert(&de_dict, dirent, dirent); in check_dir_block()
1124 ext2fs_icount_increment(ctx->inode_count, dirent->inode, in check_dir_block()
1130 prev = dirent; in check_dir_block()
1132 (void) ext2fs_get_rec_len(fs, dirent, &rec_len); in check_dir_block()
1155 dirent->rec_len = cd->pctx.num; in check_dir_block()