* Skip hidden or associated files unless unhide is set 
* Skip hidden or associated files unless hide or showassoc, * respectively, is set 
isofs_find_entry(struct inode *dir, struct dentry *dentry,	unsigned long *block_rv, unsigned long* offset_rv,	char * tmpname, struct iso_directory_record * tmpde){	unsigned long bufsize = ISOFS_BUFFER_SIZE(dir);	unsigned char bufbits = ISOFS_BUFFER_BITS(dir);	unsigned long block, f_pos, offset, block_saved, offset_saved;	struct buffer_head * bh = NULL;	struct isofs_sb_info *sbi = ISOFS_SB(dir->i_sb);	if (!ISOFS_I(dir)->i_first_extent)		return 0;  	f_pos = 0;	offset = 0;	block = 0;	while (f_pos < dir->i_size) {		struct iso_directory_record * de;		int de_len, match, i, dlen;		char *dpnt;		if (!bh) {			bh = isofs_bread(dir, block);			if (!bh)				return 0;		}		de = (struct iso_directory_record *) (bh->b_data + offset);		de_len = *(unsigned char *) de;		if (!de_len) {			brelse(bh);			bh = NULL;			f_pos = (f_pos + ISOFS_BLOCK_SIZE) & ~(ISOFS_BLOCK_SIZE - 1);			block = f_pos >> bufbits;			offset = 0;			continue;		}		block_saved = bh->b_blocknr;		offset_saved = offset;		offset += de_len;		f_pos += de_len;		/* Make sure we have a full directory entry */		if (offset >= bufsize) {			int slop = bufsize - offset + de_len;			memcpy(tmpde, de, slop);			offset &= bufsize - 1;			block++;			brelse(bh);			bh = NULL;			if (offset) {				bh = isofs_bread(dir, block);				if (!bh)					return 0;				memcpy((void *) tmpde + slop, bh->b_data, offset);			}			de = tmpde;		}		dlen = de->name_len[0];		dpnt = de->name;		if (sbi->s_rock &&		    ((i = get_rock_ridge_filename(de, tmpname, dir)))) {			dlen = i; 	/* possibly -1 */			dpnt = tmpname;#ifdef CONFIG_JOLIET		} else if (sbi->s_joliet_level) {			dlen = get_joliet_filename(de, tmpname, dir);			dpnt = tmpname;#endif		} else if (sbi->s_mapping == 'a') {			dlen = get_acorn_filename(de, tmpname, dir);			dpnt = tmpname;		} else if (sbi->s_mapping == 'n') {			dlen = isofs_name_translate(de, tmpname, dir);			dpnt = tmpname;		}		/*		 * Skip hidden or associated files unless unhide is set 		 */		match = 0;		if (dlen > 0 &&		    (!(de->flags[-sbi->s_high_sierra] & 5)		     || sbi->s_unhide == 'y'))		{			match = (isofs_cmp(dentry,dpnt,dlen) == 0);		}		if (match) {			isofs_normalize_block_and_offset(de,							 &block_saved,							 &offset_saved);                        *block_rv = block_saved;                        *offset_rv = offset_saved;			if (bh) brelse(bh);			return 1;		}	}	if (bh) brelse(bh);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/9769f4eb3fad2dd53a5d24c81ee5f7f05450742b/namei.c/clean/fs/isofs/namei.c