]> err.no Git - linux-2.6/blobdiff - include/linux/msdos_fs.h
Merge branch 'master'
[linux-2.6] / include / linux / msdos_fs.h
index 9a3d2725798439e2a745bca4f564f89228e77ae3..941da5c016a01e1434d3291fe1ec466c16adbb45 100644 (file)
@@ -282,6 +282,17 @@ static inline u8 fat_attr(struct inode *inode)
                MSDOS_I(inode)->i_attrs;
 }
 
+static inline unsigned char fat_checksum(const __u8 *name)
+{
+       unsigned char s = name[0];
+       s = (s<<7) + (s>>1) + name[1];  s = (s<<7) + (s>>1) + name[2];
+       s = (s<<7) + (s>>1) + name[3];  s = (s<<7) + (s>>1) + name[4];
+       s = (s<<7) + (s>>1) + name[5];  s = (s<<7) + (s>>1) + name[6];
+       s = (s<<7) + (s>>1) + name[7];  s = (s<<7) + (s>>1) + name[8];
+       s = (s<<7) + (s>>1) + name[9];  s = (s<<7) + (s>>1) + name[10];
+       return s;
+}
+
 static inline sector_t fat_clus_to_blknr(struct msdos_sb_info *sbi, int clus)
 {
        return ((sector_t)clus - FAT_START_ENT) * sbi->sec_per_clus