2 * lookup.c --- ext2fs directory lookup operations
4 * Copyright (C) 1993, 1994, 1994, 1995 Theodore Ts'o.
7 * This file may be redistributed under the terms of the GNU Library
8 * General Public License, version 2.
21 struct lookup_struct
{
31 static int lookup_proc(struct ext2_dir_entry
*dirent
,
32 int offset
EXT2FS_ATTR((unused
)),
33 int blocksize
EXT2FS_ATTR((unused
)),
34 char *buf
EXT2FS_ATTR((unused
)),
37 struct lookup_struct
*ls
= (struct lookup_struct
*) priv_data
;
39 if (ls
->len
!= (dirent
->name_len
& 0xFF))
41 if (strncmp(ls
->name
, dirent
->name
, (dirent
->name_len
& 0xFF)))
43 *ls
->inode
= dirent
->inode
;
49 errcode_t
ext2fs_lookup(ext2_filsys fs
, ext2_ino_t dir
, const char *name
,
50 int namelen
, char *buf
, ext2_ino_t
*inode
)
53 struct lookup_struct ls
;
55 EXT2_CHECK_MAGIC(fs
, EXT2_ET_MAGIC_EXT2FS_FILSYS
);
62 retval
= ext2fs_dir_iterate(fs
, dir
, 0, buf
, lookup_proc
, &ls
);
66 return (ls
.found
) ? 0 : EXT2_ET_FILE_NOT_FOUND
;