X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/c6de44b989e9d7286337e4cbf4d82d919f9120e6..1e54f1850eda97e3b41c302b72c07a1f9cc4d637:/lunaix-os/kernel/fs/iso9660/directory.c diff --git a/lunaix-os/kernel/fs/iso9660/directory.c b/lunaix-os/kernel/fs/iso9660/directory.c index d240e1f..816f6eb 100644 --- a/lunaix-os/kernel/fs/iso9660/directory.c +++ b/lunaix-os/kernel/fs/iso9660/directory.c @@ -21,8 +21,10 @@ iso9660_fill_drecache(struct iso_drecache* cache, struct iso_drecord* drec) u32_t l = drec->name.len; while (l < (u32_t)-1 && drec->name.content[l--] != ';') ; - l = (l + 1) ? l : drec->name.len; - l = MIN(l, ISO9660_IDLEN); + l++; + l = l ? l : drec->name.len; + l = MIN(l, ISO9660_IDLEN - 1); + strncpy(cache->name_val, drec->name.content, l); cache->name = HSTR(cache->name_val, l); hstr_rehash(&cache->name, HSTR_FULL_HASH); @@ -32,7 +34,8 @@ int iso9660_setup_dnode(struct v_dnode* dnode, struct v_inode* inode) { if (!(inode->itype & VFS_IFDIR)) { - return; + vfs_assign_inode(dnode, inode); + return 0; } int errno = 0; @@ -113,9 +116,7 @@ found: vfs_i_addhash(inode); } - iso9660_setup_dnode(dnode, inode); - - return 0; + return iso9660_setup_dnode(dnode, inode); } static int