Lines Matching +full:de +full:- +full:be

1 // SPDX-License-Identifier: GPL-2.0
7 * (C) 1991 Linus Torvalds - minix filesystem
17 int isofs_name_translate(struct iso_directory_record *de, char *new, struct inode *inode) in isofs_name_translate() argument
19 char * old = de->name; in isofs_name_translate()
20 int len = de->name_len[0]; in isofs_name_translate()
32 if (c == '.' && i == len - 3 && old[i + 1] == ';' && old[i + 2] == '1') in isofs_name_translate()
36 if (c == ';' && i == len - 2 && old[i + 1] == '1') in isofs_name_translate()
40 /* Also '/' to '.' (broken Acorn-generated ISO9660 images) */ in isofs_name_translate()
50 int get_acorn_filename(struct iso_directory_record *de, in get_acorn_filename() argument
55 int retnamlen = isofs_name_translate(de, retname, inode); in get_acorn_filename()
59 std = sizeof(struct iso_directory_record) + de->name_len[0]; in get_acorn_filename()
62 if (de->length[0] - std != 32) in get_acorn_filename()
64 chr = ((unsigned char *) de) + std; in get_acorn_filename()
69 if (((de->flags[0] & 2) == 0) && (chr[13] == 0xff) in get_acorn_filename()
80 * This should _really_ be cleaned up some day..
95 struct iso_directory_record *de; in do_isofs_readdir() local
96 struct isofs_sb_info *sbi = ISOFS_SB(inode->i_sb); in do_isofs_readdir()
98 offset = ctx->pos & (bufsize - 1); in do_isofs_readdir()
99 block = ctx->pos >> bufbits; in do_isofs_readdir()
101 while (ctx->pos < inode->i_size) { in do_isofs_readdir()
110 de = (struct iso_directory_record *) (bh->b_data + offset); in do_isofs_readdir()
112 de_len = *(unsigned char *)de; in do_isofs_readdir()
123 ctx->pos = (ctx->pos + ISOFS_BLOCK_SIZE) & ~(ISOFS_BLOCK_SIZE - 1); in do_isofs_readdir()
124 block = ctx->pos >> bufbits; in do_isofs_readdir()
135 int slop = bufsize - offset + de_len; in do_isofs_readdir()
136 memcpy(tmpde, de, slop); in do_isofs_readdir()
137 offset &= bufsize - 1; in do_isofs_readdir()
145 memcpy((void *) tmpde + slop, bh->b_data, offset); in do_isofs_readdir()
147 de = tmpde; in do_isofs_readdir()
150 if (de_len < de->name_len[0] + in do_isofs_readdir()
154 inode->i_ino); in do_isofs_readdir()
156 return -EIO; in do_isofs_readdir()
160 isofs_normalize_block_and_offset(de, in do_isofs_readdir()
167 if (de->flags[-sbi->s_high_sierra] & 0x80) { in do_isofs_readdir()
169 ctx->pos += de_len; in do_isofs_readdir()
175 if (de->name_len[0] == 1 && de->name[0] == 0) { in do_isofs_readdir()
178 ctx->pos += de_len; in do_isofs_readdir()
185 if (de->name_len[0] == 1 && de->name[0] == 1) { in do_isofs_readdir()
188 ctx->pos += de_len; in do_isofs_readdir()
199 if ((sbi->s_hide && (de->flags[-sbi->s_high_sierra] & 1)) || in do_isofs_readdir()
200 (!sbi->s_showassoc && in do_isofs_readdir()
201 (de->flags[-sbi->s_high_sierra] & 4))) { in do_isofs_readdir()
202 ctx->pos += de_len; in do_isofs_readdir()
207 if (sbi->s_rock) { in do_isofs_readdir()
208 len = get_rock_ridge_filename(de, tmpname, inode); in do_isofs_readdir()
209 if (len != 0) { /* may be -1 */ in do_isofs_readdir()
216 if (sbi->s_joliet_level) { in do_isofs_readdir()
217 len = get_joliet_filename(de, tmpname, inode); in do_isofs_readdir()
221 if (sbi->s_mapping == 'a') { in do_isofs_readdir()
222 len = get_acorn_filename(de, tmpname, inode); in do_isofs_readdir()
225 if (sbi->s_mapping == 'n') { in do_isofs_readdir()
226 len = isofs_name_translate(de, tmpname, inode); in do_isofs_readdir()
229 p = de->name; in do_isofs_readdir()
230 len = de->name_len[0]; in do_isofs_readdir()
237 ctx->pos += de_len; in do_isofs_readdir()
258 return -ENOMEM; in isofs_readdir()