Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 140008
b: refs/heads/master
c: 530f1a5
h: refs/heads/master
v: v3
  • Loading branch information
Marcin Slusarz authored and Jan Kara committed Apr 2, 2009
1 parent 3c5d607 commit 62eb66e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 17 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ba9aadd80c24775e55a93ebe0c2491b4d2899257
refs/heads/master: 530f1a5e3e93a038a457faf716975ed19f82831d
41 changes: 25 additions & 16 deletions trunk/fs/udf/unicode.c
Original file line number Diff line number Diff line change
Expand Up @@ -324,34 +324,43 @@ static int udf_NLStoCS0(struct nls_table *nls, dstring *ocu, struct ustr *uni,
int udf_get_filename(struct super_block *sb, uint8_t *sname, uint8_t *dname,
int flen)
{
struct ustr filename, unifilename;
int len;
struct ustr *filename, *unifilename;
int len = 0;

if (udf_build_ustr_exact(&unifilename, sname, flen))
filename = kmalloc(sizeof(struct ustr), GFP_NOFS);
if (!filename)
return 0;

unifilename = kmalloc(sizeof(struct ustr), GFP_NOFS);
if (!unifilename)
goto out1;

if (udf_build_ustr_exact(unifilename, sname, flen))
goto out2;

if (UDF_QUERY_FLAG(sb, UDF_FLAG_UTF8)) {
if (!udf_CS0toUTF8(&filename, &unifilename)) {
if (!udf_CS0toUTF8(filename, unifilename)) {
udf_debug("Failed in udf_get_filename: sname = %s\n",
sname);
return 0;
goto out2;
}
} else if (UDF_QUERY_FLAG(sb, UDF_FLAG_NLS_MAP)) {
if (!udf_CS0toNLS(UDF_SB(sb)->s_nls_map, &filename,
&unifilename)) {
if (!udf_CS0toNLS(UDF_SB(sb)->s_nls_map, filename,
unifilename)) {
udf_debug("Failed in udf_get_filename: sname = %s\n",
sname);
return 0;
goto out2;
}
} else
return 0;

len = udf_translate_to_linux(dname, filename.u_name, filename.u_len,
unifilename.u_name, unifilename.u_len);
if (len)
return len;

return 0;
goto out2;

len = udf_translate_to_linux(dname, filename->u_name, filename->u_len,
unifilename->u_name, unifilename->u_len);
out2:
kfree(unifilename);
out1:
kfree(filename);
return len;
}

int udf_put_filename(struct super_block *sb, const uint8_t *sname,
Expand Down

0 comments on commit 62eb66e

Please sign in to comment.