diff -ur stock3/linux-2.4.4/fs/isofs/util.c linux-2.4.4/fs/isofs/util.c --- stock3/linux-2.4.4/fs/isofs/util.c Wed Nov 29 10:11:38 2000 +++ linux-2.4.4/fs/isofs/util.c Mon Apr 30 20:49:33 2001 @@ -1,90 +1,9 @@ /* * linux/fs/isofs/util.c - * - * The special functions in the file are numbered according to the section - * of the iso 9660 standard in which they are described. isonum_733 will - * convert numbers according to section 7.3.3, etc. - * - * isofs special functions. This file was lifted in its entirety from - * the 386BSD iso9660 filesystem, by Pace Willisson . */ #include - -int -isonum_711 (char * p) -{ - return (*p & 0xff); -} - -int -isonum_712 (char * p) -{ - int val; - - val = *p; - if (val & 0x80) - val |= 0xffffff00; - return (val); -} - -int -isonum_721 (char * p) -{ - return ((p[0] & 0xff) | ((p[1] & 0xff) << 8)); -} - -int -isonum_722 (char * p) -{ - return (((p[0] & 0xff) << 8) | (p[1] & 0xff)); -} - -int -isonum_723 (char * p) -{ -#if 0 - if (p[0] != p[3] || p[1] != p[2]) { - fprintf (stderr, "invalid format 7.2.3 number\n"); - exit (1); - } -#endif - return (isonum_721 (p)); -} - -int -isonum_731 (char * p) -{ - return ((p[0] & 0xff) - | ((p[1] & 0xff) << 8) - | ((p[2] & 0xff) << 16) - | ((p[3] & 0xff) << 24)); -} - -int -isonum_732 (char * p) -{ - return (((p[0] & 0xff) << 24) - | ((p[1] & 0xff) << 16) - | ((p[2] & 0xff) << 8) - | (p[3] & 0xff)); -} - -int -isonum_733 (char * p) -{ -#if 0 - int i; - - for (i = 0; i < 4; i++) { - if (p[i] != p[7-i]) { - fprintf (stderr, "bad format 7.3.3 number\n"); - exit (1); - } - } -#endif - return (isonum_731 (p)); -} +#include /* * We have to convert from a MM/DD/YY format to the Unix ctime format. diff -ur stock3/linux-2.4.4/include/linux/iso_fs.h linux-2.4.4/include/linux/iso_fs.h --- stock3/linux-2.4.4/include/linux/iso_fs.h Fri Apr 27 15:48:20 2001 +++ linux-2.4.4/include/linux/iso_fs.h Tue May 1 11:45:21 2001 @@ -165,14 +165,46 @@ #define ISOFS_SUPER_MAGIC 0x9660 #ifdef __KERNEL__ -extern int isonum_711(char *); -extern int isonum_712(char *); -extern int isonum_721(char *); -extern int isonum_722(char *); -extern int isonum_723(char *); -extern int isonum_731(char *); -extern int isonum_732(char *); -extern int isonum_733(char *); +/* Number conversion inlines, named after the section in ISO 9660 + they correspond to. */ + +#include +#include + +static inline int isonum_711(char *p) +{ + return *(u8 *)p; +} +static inline int isonum_712(char *p) +{ + return *(s8 *)p; +} +static inline int isonum_721(char *p) +{ + return le16_to_cpu(get_unaligned((u16 *)p)); +} +static inline int isonum_722(char *p) +{ + return be16_to_cpu(get_unaligned((u16 *)p)); +} +static inline int isonum_723(char *p) +{ + /* Ignore bigendian datum due to broken mastering programs */ + return le16_to_cpu(get_unaligned((u16 *)p)); +} +static inline int isonum_731(char *p) +{ + return le32_to_cpu(get_unaligned((u32 *)p)); +} +static inline int isonum_732(char *p) +{ + return be32_to_cpu(get_unaligned((u32 *)p)); +} +static inline int isonum_733(char *p) +{ + /* Ignore bigendian datum due to broken mastering programs */ + return le32_to_cpu(get_unaligned((u32 *)p)); +} extern int iso_date(char *, int); extern int parse_rock_ridge_inode(struct iso_directory_record *, struct inode *);