]> git.ozlabs.org Git - yaboot.git/blobdiff - second/iso_util.c
Commit yaboot 1.3.0
[yaboot.git] / second / iso_util.c
diff --git a/second/iso_util.c b/second/iso_util.c
new file mode 100644 (file)
index 0000000..b8fca04
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ *  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 <pace@blitz.com>.
+ */
+
+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));
+}
+