Merge tag 'for-rc-adfs' of git://git.armlinux.org.uk/~rmk/linux-arm
[linux-2.6-block.git] / fs / adfs / dir_f.c
index 382c9d7ad375be6df5ce6e96e00138257fada9d9..693f69ed3de3e3917c03212f02d0b5ad922d72a8 100644 (file)
@@ -47,21 +47,6 @@ static inline void adfs_writeval(unsigned char *p, int len, unsigned int val)
        }
 }
 
-static inline int adfs_readname(char *buf, char *ptr, int maxlen)
-{
-       char *old_buf = buf;
-
-       while ((unsigned char)*ptr >= ' ' && maxlen--) {
-               if (*ptr == '/')
-                       *buf++ = '.';
-               else
-                       *buf++ = *ptr;
-               ptr++;
-       }
-
-       return buf - old_buf;
-}
-
 #define ror13(v) ((v >> 13) | (v << 19))
 
 #define dir_u8(idx)                            \
@@ -216,29 +201,23 @@ static inline void
 adfs_dir2obj(struct adfs_dir *dir, struct object_info *obj,
        struct adfs_direntry *de)
 {
-       obj->name_len = adfs_readname(obj->name, de->dirobname, ADFS_F_NAME_LEN);
+       unsigned int name_len;
+
+       for (name_len = 0; name_len < ADFS_F_NAME_LEN; name_len++) {
+               if (de->dirobname[name_len] < ' ')
+                       break;
+
+               obj->name[name_len] = de->dirobname[name_len];
+       }
+
+       obj->name_len = name_len;
        obj->file_id  = adfs_readval(de->dirinddiscadd, 3);
        obj->loadaddr = adfs_readval(de->dirload, 4);
        obj->execaddr = adfs_readval(de->direxec, 4);
        obj->size     = adfs_readval(de->dirlen,  4);
        obj->attr     = de->newdiratts;
-       obj->filetype = -1;
 
-       /*
-        * object is a file and is filetyped and timestamped?
-        * RISC OS 12-bit filetype is stored in load_address[19:8]
-        */
-       if ((0 == (obj->attr & ADFS_NDA_DIRECTORY)) &&
-               (0xfff00000 == (0xfff00000 & obj->loadaddr))) {
-               obj->filetype = (__u16) ((0x000fff00 & obj->loadaddr) >> 8);
-
-               /* optionally append the ,xyz hex filetype suffix */
-               if (ADFS_SB(dir->sb)->s_ftsuffix)
-                       obj->name_len +=
-                               append_filetype_suffix(
-                                       &obj->name[obj->name_len],
-                                       obj->filetype);
-       }
+       adfs_object_fixup(dir, obj);
 }
 
 /*