Changes in uspace/srv/fs/mfs/mfs_dentry.c [7a46bfe:c2e50d7] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/fs/mfs/mfs_dentry.c
r7a46bfe rc2e50d7 44 44 int 45 45 mfs_read_dentry(struct mfs_node *mnode, 46 46 struct mfs_dentry_info *d_info, unsigned index) 47 47 { 48 48 const struct mfs_instance *inst = mnode->instance; … … 57 57 58 58 if (block == 0) { 59 /* End of the dentries list*/59 /* End of the dentries list */ 60 60 r = EOK; 61 61 goto out_err; … … 76 76 d_info->d_inum = conv32(sbi->native, d3->d_inum); 77 77 memcpy(d_info->d_name, d3->d_name, MFS3_MAX_NAME_LEN); 78 d_info->d_name[MFS3_MAX_NAME_LEN] = 0; 78 79 } else { 79 80 const int namelen = longnames ? MFS_L_MAX_NAME_LEN : 80 81 MFS_MAX_NAME_LEN; 81 82 82 83 struct mfs_dentry *d; 83 84 84 85 d = b->data + dentry_off * (longnames ? MFSL_DIRSIZE : 85 86 MFS_DIRSIZE); 86 87 d_info->d_inum = conv16(sbi->native, d->d_inum); 87 88 memcpy(d_info->d_name, d->d_name, namelen); 89 d_info->d_name[namelen] = 0; 88 90 } 89 91 … … 99 101 /**Write a directory entry on disk. 100 102 * 101 * @param d_info 102 * 103 * @return 103 * @param d_info Pointer to the directory entry structure to write on disk. 104 * 105 * @return EOK on success or a negative error code. 104 106 */ 105 107 int … … 166 168 return ENAMETOOLONG; 167 169 168 /* Search the directory entry to be removed*/170 /* Search the directory entry to be removed */ 169 171 unsigned i; 170 172 for (i = 0; i < mnode->ino_i->i_size / sbi->dirsize ; ++i) { … … 176 178 177 179 if (name_len == d_name_len && 178 !bcmp(d_info.d_name, d_name, name_len)) { 180 !bcmp(d_info.d_name, d_name, name_len)) { 181 179 182 d_info.d_inum = 0; 180 183 r = mfs_write_dentry(&d_info); … … 195 198 */ 196 199 int 197 mfs_insert_dentry(struct mfs_node *mnode, const char *d_name, fs_index_t d_inum) 200 mfs_insert_dentry(struct mfs_node *mnode, const char *d_name, 201 fs_index_t d_inum) 198 202 { 199 203 int r; … … 207 211 return ENAMETOOLONG; 208 212 209 /* Search for an empty dentry*/213 /* Search for an empty dentry */ 210 214 unsigned i; 211 215 for (i = 0; i < mnode->ino_i->i_size / sbi->dirsize; ++i) { … … 215 219 216 220 if (d_info.d_inum == 0) { 217 /* This entry is not used*/221 /* This entry is not used */ 218 222 empty_dentry_found = true; 219 223 break; … … 229 233 230 234 if (b == 0) { 231 /* Increase the inode size*/235 /* Increase the inode size */ 232 236 233 237 uint32_t dummy; … … 249 253 d_info.d_inum = d_inum; 250 254 memcpy(d_info.d_name, d_name, name_len); 251 d_info.d_name[name_len] = 0; 255 if (name_len < sbi->max_name_len) 256 d_info.d_name[name_len] = 0; 252 257 253 258 r = mfs_write_dentry(&d_info);
Note:
See TracChangeset
for help on using the changeset viewer.