summaryrefslogtreecommitdiffstats
path: root/fs/udf/unicode.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/udf/unicode.c')
-rw-r--r--fs/udf/unicode.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/fs/udf/unicode.c b/fs/udf/unicode.c
index 18df831afd3d..ad806c3125c1 100644
--- a/fs/udf/unicode.c
+++ b/fs/udf/unicode.c
@@ -295,9 +295,10 @@ try_again:
295 return u_len; 295 return u_len;
296} 296}
297 297
298int udf_dstrCS0toUTF8(uint8_t *utf_o, int o_len, 298int udf_dstrCS0toChar(struct super_block *sb, uint8_t *utf_o, int o_len,
299 const uint8_t *ocu_i, int i_len) 299 const uint8_t *ocu_i, int i_len)
300{ 300{
301 int (*conv_f)(wchar_t, unsigned char *, int);
301 int s_len = 0; 302 int s_len = 0;
302 303
303 if (i_len > 0) { 304 if (i_len > 0) {
@@ -309,8 +310,14 @@ int udf_dstrCS0toUTF8(uint8_t *utf_o, int o_len,
309 } 310 }
310 } 311 }
311 312
312 return udf_name_from_CS0(utf_o, o_len, ocu_i, s_len, 313 if (UDF_QUERY_FLAG(sb, UDF_FLAG_UTF8)) {
313 udf_uni2char_utf8, 0); 314 conv_f = udf_uni2char_utf8;
315 } else if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) {
316 conv_f = UDF_SB(sb)->s_nls_map->uni2char;
317 } else
318 BUG();
319
320 return udf_name_from_CS0(utf_o, o_len, ocu_i, s_len, conv_f, 0);
314} 321}
315 322
316int udf_get_filename(struct super_block *sb, const uint8_t *sname, int slen, 323int udf_get_filename(struct super_block *sb, const uint8_t *sname, int slen,