-int isofncmp __P((u_char *, int, u_char *, int));
-int ucsfncmp __P((u_int16_t *, int, u_int16_t *, int));
-void isofntrans __P((u_char *, int, u_char *, u_short *, int));
-void ucsfntrans __P((u_int16_t *, int, u_char *, u_short *, int));
-ino_t isodirino __P((struct iso_directory_record *, struct iso_mnt *));
-int attrcalcsize __P((struct attrlist *attrlist));
-void packattrblk __P((struct attrlist *alist, struct vnode *vp,
- void **attrbufptrptr, void **varbufptrptr));
+int isofncmp(u_char *fn, int fnlen, u_char *isofn, int isolen);
+int ucsfncmp(u_int16_t *, int, u_int16_t *, int);
+void isofntrans(u_char *infn, int infnlen, u_char *outfn, u_short *outfnlen,
+ int original, int assoc);
+void ucsfntrans(u_int16_t *, int, u_char *, u_short *, int, int);
+int attrcalcsize(struct attrlist *attrlist);
+struct iso_node;
+void packcommonattr(struct attrlist *alist, struct iso_node *ip,
+ void **attrbufptrptr, void **varbufptrptr);
+void packdirattr(struct attrlist *alist, struct iso_node *ip,
+ void **attrbufptrptr, void **varbufptrptr);
+void packfileattr(struct attrlist *alist, struct iso_node *ip,
+ void **attrbufptrptr, void **varbufptrptr);
+void packattrblk(struct attrlist *alist, struct vnode *vp,
+ void **attrbufptrptr, void **varbufptrptr);
+
+
+/*
+ * Associated files have a leading "._".
+ */
+#define ASSOCCHAR1 '.'
+#define ASSOCCHAR2 '_'
+
+/*
+ * This header is prepended on media tracks, such as Video CD MPEG files.
+ */
+struct riff_header {
+ char riff[4]; // "RIFF"
+ u_int32_t fileSize; // little endian file size, not including this field or sig
+ char cdxa[4]; // "CDXA"
+ char fmt[4]; // "fmt "
+ u_int32_t fmtSize; // always 16 (XXX this is an assumption)
+ char fmtData[16]; // CDXA extension of ISO directory entry, padded to 16 bytes
+ char data[4]; // "data"
+ u_int32_t dataSize; // number of sectors * 2352, little endian
+};
+
+#define CDXA_SECTOR_SIZE 2352
+
+
+/*
+ * AppleDouble constants
+ */
+#define APPLEDOUBLE_MAGIC 0x00051607
+#define APPLEDOUBLE_VERSION 0x00020000