Blame genisoimage/apple.h

Packit 45fded
/*
Packit 45fded
 * This file has been modified for the cdrkit suite.
Packit 45fded
 *
Packit 45fded
 * The behaviour and appearence of the program code below can differ to a major
Packit 45fded
 * extent from the version distributed by the original author(s).
Packit 45fded
 *
Packit 45fded
 * For details, see Changelog file distributed with the cdrkit package. If you
Packit 45fded
 * received this file from another source then ask the distributing person for
Packit 45fded
 * a log of modifications.
Packit 45fded
 *
Packit 45fded
 */
Packit 45fded
Packit 45fded
/* @(#)apple.h	1.7 04/03/02 joerg, Copyright 1997, 1998, 1999, 2000 James Pearson */
Packit 45fded
/*
Packit 45fded
 *      Copyright (c) 1997, 1998, 1999, 2000 James Pearson
Packit 45fded
 *
Packit 45fded
 * This program is free software; you can redistribute it and/or modify
Packit 45fded
 * it under the terms of the GNU General Public License as published by
Packit 45fded
 * the Free Software Foundation; either version 2, or (at your option)
Packit 45fded
 * any later version.
Packit 45fded
 *
Packit 45fded
 * This program is distributed in the hope that it will be useful,
Packit 45fded
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 45fded
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 45fded
 * GNU General Public License for more details.
Packit 45fded
 *
Packit 45fded
 * You should have received a copy of the GNU General Public License
Packit 45fded
 * along with this program; see the file COPYING.  If not, write to
Packit 45fded
 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
Packit 45fded
 */
Packit 45fded
Packit 45fded
/*
Packit 45fded
 * apple.h:	cut down macfile.h from CAP distribution
Packit 45fded
 */
Packit 45fded
#ifndef	_APPLE_H
Packit 45fded
#define	_APPLE_H
Packit 45fded
Packit 45fded
#include "mactypes.h"
Packit 45fded
Packit 45fded
#ifndef	O_BINARY
Packit 45fded
#define	O_BINARY 0
Packit 45fded
#endif /* O_BINARY */
Packit 45fded
Packit 45fded
#ifdef	_WIN32_TEST
Packit 45fded
#undef	UNICODE
Packit 45fded
#include <windows.h>
Packit 45fded
#endif /* _WIN32 */
Packit 45fded
Packit 45fded
#ifndef	MIN
Packit 45fded
#define	MIN(a, b) (((a) < (b)) ? (a):(b))
Packit 45fded
#endif /* MIN */
Packit 45fded
Packit 45fded
#define	CT_SIZE		4			/* Size of type/creator */
Packit 45fded
#define	NUMMAP		512			/* initial number of maps */
Packit 45fded
#define	BLANK		"    "			/* blank type/creator */
Packit 45fded
#define	DEFMATCH	"*"			/* default mapping extension */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	char		*extn;			/* filename extension */
Packit 45fded
	int		elen;			/* length of extension */
Packit 45fded
	char		type[CT_SIZE+1];	/* extension type */
Packit 45fded
	char		creator[CT_SIZE+1];	/* extension creator */
Packit 45fded
	unsigned short	fdflags;		/* finder flags */
Packit 45fded
} afpmap;
Packit 45fded
Packit 45fded
/* from "data.h" - libhfs routines */
Packit 45fded
unsigned long d_toutime(unsigned long);
Packit 45fded
unsigned long d_dtoutime(long);
Packit 45fded
long d_getl(unsigned char *);
Packit 45fded
short d_getw(unsigned char *);
Packit 45fded
Packit 45fded
/* for libfile routines */
Packit 45fded
int init_magic(char *);
Packit 45fded
char * get_magic_match(const char *);
Packit 45fded
Packit 45fded
typedef unsigned char byte;
Packit 45fded
typedef unsigned char word[2];
Packit 45fded
typedef unsigned char dword[4];
Packit 45fded
Packit 45fded
#define	INFOLEN 32		/* Finder info is 32 bytes */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	/* base finder information */
Packit 45fded
	char fdType[4];			/* File type [4] */
Packit 45fded
	char fdCreator[4];		/* File creator [8] */
Packit 45fded
	word fdFlags;			/* Finder flags [10] */
Packit 45fded
	word fdLocation[2];		/* File's location [14] */
Packit 45fded
	word fdFldr;			/* File's window [16] */
Packit 45fded
	/* extended finder information */
Packit 45fded
	word fdIconID;			/* Icon ID [18] */
Packit 45fded
	word fdUnused[3];		/* Unused [24] */
Packit 45fded
	byte fdScript;			/* Script system used [25] */
Packit 45fded
	byte fdXFlags;			/* Reserved [26] */
Packit 45fded
	word fdComment;			/* Comment ID [28] */
Packit 45fded
	dword fdPutAway;		/* Home directory ID [32] */
Packit 45fded
} Finfo;
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	/* base finder information */
Packit 45fded
	word frRect[4];			/* Folder's rectangle [8] */
Packit 45fded
	word frFlags;			/* Finder flags [10] */
Packit 45fded
	word frLocation[2];		/* Folder's location [14] */
Packit 45fded
	word frView;			/* Folder's view [16] */
Packit 45fded
	/* extended finder information */
Packit 45fded
	word frScroll[2];		/* Folder's scroll position [20] */
Packit 45fded
	dword frOpenChain;		/* ID's of open folders [24] */
Packit 45fded
	byte frScript;			/* Script system used [25] */
Packit 45fded
	byte frXFlags;			/* Reserved [26] */
Packit 45fded
	word frComment;			/* Comment ID [28] */
Packit 45fded
	dword frPutAway;		/* Home directory ID [32] */
Packit 45fded
} Dinfo;
Packit 45fded
Packit 45fded
/****** TYPE_CAP ******/
Packit 45fded
Packit 45fded
/*
Packit 45fded
 * taken from the CAP distribution:
Packit 45fded
 * macfile.h - header file with Macintosh file definitions
Packit 45fded
 *
Packit 45fded
 * AppleTalk package for UNIX (4.2 BSD).
Packit 45fded
 *
Packit 45fded
 * Copyright (c) 1986, 1987, 1988 by The Trustees of Columbia University in the
Packit 45fded
 * City of New York.
Packit 45fded
 *
Packit 45fded
 * Edit History:
Packit 45fded
 *
Packit 45fded
 *  Sept 1987	Created by Charlie
Packit 45fded
 *
Packit 45fded
 */
Packit 45fded
Packit 45fded
Packit 45fded
#ifndef	USE_MAC_DATES
Packit 45fded
#define	USE_MAC_DATES
Packit 45fded
#endif /* USE_MAC_DATES */
Packit 45fded
Packit 45fded
#define	MAXCLEN 199		/* max size of a comment string */
Packit 45fded
#define	FINFOLEN 32		/* Finder info is 32 bytes */
Packit 45fded
#define	MAXMACFLEN 31		/* max Mac file name length */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	byte	finderinfo[INFOLEN];	/* Finder info */
Packit 45fded
	word	fi_attr;		/* attributes */
Packit 45fded
#define	FI_MAGIC1 255
Packit 45fded
	byte	fi_magic1;		/* was: length of comment */
Packit 45fded
#define	FI_VERSION 0x10			/* version major 1, minor 0 */
Packit 45fded
					/* if we have more than 8 versions wer're */
Packit 45fded
					/* doiong something wrong anyway */
Packit 45fded
	byte	fi_version;		/* version number */
Packit 45fded
#define	FI_MAGIC 0xda
Packit 45fded
	byte	fi_magic;		/* magic word check */
Packit 45fded
	byte	fi_bitmap;		/* bitmap of included info */
Packit 45fded
#define	FI_BM_SHORTFILENAME 0x1		/* is this included? */
Packit 45fded
#define	FI_BM_MACINTOSHFILENAME 0x2	/* is this included? */
Packit 45fded
	byte	fi_shortfilename[12+1];	/* possible short file name */
Packit 45fded
	byte	fi_macfilename[32+1];	/* possible macintosh file name */
Packit 45fded
	byte	fi_comln;		/* comment length */
Packit 45fded
	byte	fi_comnt[MAXCLEN+1];	/* comment string */
Packit 45fded
#ifdef	USE_MAC_DATES
Packit 45fded
	byte	fi_datemagic;		/* sanity check */
Packit 45fded
#define	FI_MDATE 0x01			/* mtime & utime are valid */
Packit 45fded
#define	FI_CDATE 0x02			/* ctime is valid */
Packit 45fded
	byte	fi_datevalid;		/* validity flags */
Packit 45fded
	byte	fi_ctime[4];		/* mac file create time */
Packit 45fded
	byte	fi_mtime[4];		/* mac file modify time */
Packit 45fded
	byte	fi_utime[4];		/* (real) time mtime was set */
Packit 45fded
#endif /* USE_MAC_DATES */
Packit 45fded
} FileInfo;
Packit 45fded
Packit 45fded
/* Atribute flags */
Packit 45fded
#define	FI_ATTR_SETCLEAR 0x8000 /* set-clear attributes */
Packit 45fded
#define	FI_ATTR_READONLY 0x20	/* file is read-only */
Packit 45fded
#define	FI_ATTR_ROPEN 0x10	/* resource fork in use */
Packit 45fded
#define	FI_ATTR_DOPEN 0x80	/* data fork in use */
Packit 45fded
#define	FI_ATTR_MUSER 0x2	/* multi-user */
Packit 45fded
#define	FI_ATTR_INVISIBLE 0x1	/* invisible */
Packit 45fded
Packit 45fded
/**** MAC STUFF *****/
Packit 45fded
Packit 45fded
/* Flags */
Packit 45fded
#define	FNDR_fOnDesk 0x1
Packit 45fded
#define	FNDR_fHasBundle 0x2000
Packit 45fded
#define	FNDR_fInvisible 0x4000
Packit 45fded
/* locations */
Packit 45fded
#define	FNDR_fTrash -3	/* File in Trash */
Packit 45fded
#define	FNDR_fDesktop -2	/* File on desktop */
Packit 45fded
#define	FNDR_fDisk 0	/* File in disk window */
Packit 45fded
Packit 45fded
/****** TYPE_ESHARE ******/
Packit 45fded
Packit 45fded
/*
Packit 45fded
 *	Information supplied by Jens-Uwe Mager (jum@helios.de)
Packit 45fded
 */
Packit 45fded
Packit 45fded
#define	ES_VERSION 	0x0102
Packit 45fded
#define	ES_MAGIC 	0x3681093
Packit 45fded
#define	ES_INFOLEN	32
Packit 45fded
#define	ES_INFO_SIZE	512
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	dword		magic;
Packit 45fded
	dword		serno;			/* written only, never read */
Packit 45fded
	word		version;
Packit 45fded
	word		attr;			/* invisible... */
Packit 45fded
	word		openMax;		/* max number of opens */
Packit 45fded
	word		filler0;
Packit 45fded
	dword		backupCleared;		/* time backup bit cleared */
Packit 45fded
	dword		id;			/* dir/file id */
Packit 45fded
	dword		createTime;		/* unix format */
Packit 45fded
	dword		backupTime;		/* unix format */
Packit 45fded
	byte		finderinfo[INFOLEN];	/* Finder info */
Packit 45fded
} es_FileInfo;
Packit 45fded
Packit 45fded
/****** TYPE_USHARE ******/
Packit 45fded
Packit 45fded
/*
Packit 45fded
 * similar to the EtherShare layout, but the finder info stuff is different
Packit 45fded
 * info provided by: Phil Sylvester <psylvstr@interaccess.com>
Packit 45fded
 */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	byte		finderinfo[INFOLEN];	/* Finder info */
Packit 45fded
	dword		btime;			/* mac file backup time [36]*/
Packit 45fded
	byte		unknown2[4];		/* ignore [40] */
Packit 45fded
	dword		ctime;			/* mac file create time [44]*/
Packit 45fded
	byte		unknown3[8];		/* ignore [52] */
Packit 45fded
	dword		mtime;			/* mac file modify time [56]*/
Packit 45fded
	byte		unknown4[456];		/* ignore [512] */
Packit 45fded
} us_FileInfo;
Packit 45fded
Packit 45fded
/****** TYPE_DOUBLE, TYPE_SINGLE ******/
Packit 45fded
Packit 45fded
/*
Packit 45fded
 *	Taken from cvt2cap (c) May 1988, Paul Campbell
Packit 45fded
 */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	dword id;
Packit 45fded
	dword offset;
Packit 45fded
	dword length;
Packit 45fded
} a_entry;
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	dword   magic;
Packit 45fded
	dword   version;
Packit 45fded
	char    home[16];
Packit 45fded
	word    nentries;
Packit 45fded
	a_entry	entries[1];
Packit 45fded
} a_hdr;
Packit 45fded
Packit 45fded
#define	A_HDR_SIZE	26
Packit 45fded
#define	A_ENTRY_SIZE	sizeof (a_entry)
Packit 45fded
Packit 45fded
#define	A_VERSION1	0x00010000
Packit 45fded
#define	A_VERSION2	0x00020000
Packit 45fded
#define	APPLE_SINGLE	0x00051600
Packit 45fded
#define	APPLE_DOUBLE	0x00051607
Packit 45fded
#define	ID_DATA		1
Packit 45fded
#define	ID_RESOURCE	2
Packit 45fded
#define	ID_NAME		3
Packit 45fded
#define	ID_FILEI	7	/* v1 */
Packit 45fded
#define	ID_FILEDATESI	8	/* v2 */
Packit 45fded
#define	ID_FINDER	9
Packit 45fded
Packit 45fded
#define	A_DATE		16
Packit 45fded
Packit 45fded
/****** TYPE_MACBIN ******/
Packit 45fded
/*
Packit 45fded
 *	taken from capit.c by Nigel Perry, np@doc.ic.ac.uk which is adapted
Packit 45fded
 *	from unmacbin by John M. Sellens, jmsellens@watdragon.uwaterloo.ca
Packit 45fded
 */
Packit 45fded
Packit 45fded
Packit 45fded
#define	MB_NAMELEN 63		/* maximum legal Mac file name length */
Packit 45fded
#define	MB_SIZE 128
Packit 45fded
Packit 45fded
/*
Packit 45fded
 * Format of a bin file:
Packit 45fded
 * A bin file is composed of 128 byte blocks.  The first block is the
Packit 45fded
 * info_header (see below).  Then comes the data fork, null padded to fill the
Packit 45fded
 * last block.  Then comes the resource fork, padded to fill the last block.  A
Packit 45fded
 * proposal to follow with the text of the Get Info box has not been implemented,
Packit 45fded
 * to the best of my knowledge.  Version, zero1 and zero2 are what the receiving
Packit 45fded
 * program looks at to determine if a MacBinary transfer is being initiated.
Packit 45fded
 */
Packit 45fded
typedef struct {   		/* info file header (128 bytes). Unfortunately, these */
Packit 45fded
				/* longs don't align to word boundaries */
Packit 45fded
	byte version;		/* there is only a version 0 at this time */
Packit 45fded
	byte nlen;		/* Length of filename. */
Packit 45fded
	byte name[MB_NAMELEN];	/* Filename */
Packit 45fded
	byte type[4];		/* File type. */
Packit 45fded
	byte auth[4];		/* File creator. */
Packit 45fded
	byte flags;		/* file flags: LkIvBnSyBzByChIt */
Packit 45fded
	byte zero1;		/* Locked, Invisible,Bundle, System */
Packit 45fded
				/* Bozo, Busy, Changed, Init */
Packit 45fded
	byte icon_vert[2];	/* Vertical icon position within window */
Packit 45fded
	byte icon_horiz[2];	/* Horizontal icon postion in window */
Packit 45fded
	byte window_id[2];	/* Window or folder ID. */
Packit 45fded
	byte protect;		/* = 1 for protected file, 0 otherwise */
Packit 45fded
	byte zero2;
Packit 45fded
	byte dflen[4];		/* Data Fork length (bytes) - most sig.  */
Packit 45fded
	byte rflen[4];		/* Resource Fork length	byte first */
Packit 45fded
	byte cdate[4];		/* File's creation date. */
Packit 45fded
	byte mdate[4];		/* File's "last modified" date. */
Packit 45fded
	byte ilen[2];		/* GetInfo message length */
Packit 45fded
	byte flags2;		/* Finder flags, bits 0-7 */
Packit 45fded
	byte unused[14];
Packit 45fded
	byte packlen[4];	/* length of total files when unpacked */
Packit 45fded
	byte headlen[2];	/* length of secondary header */
Packit 45fded
	byte uploadvers;	/* Version of MacBinary II that the uploading program is written for */
Packit 45fded
	byte readvers;		/* Minimum MacBinary II version needed to read this file */
Packit 45fded
	byte crc[2];		/* CRC of the previous 124 bytes */
Packit 45fded
	byte padding[2];	/* two trailing unused bytes */
Packit 45fded
} mb_info;
Packit 45fded
Packit 45fded
/****** TYPE_FE ******/
Packit 45fded
Packit 45fded
/* Information provided by Mark Weinstein <mrwesq@earthlink.net> */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	byte	nlen;
Packit 45fded
	byte	name[31];
Packit 45fded
	byte	finderinfo[INFOLEN];	/* Finder info */
Packit 45fded
	byte	cdate[4];
Packit 45fded
	byte	mdate[4];
Packit 45fded
	byte	bdate[4];
Packit 45fded
	byte	fileid[4];
Packit 45fded
	byte	sname[8];
Packit 45fded
	byte	ext[3];
Packit 45fded
	byte	pad;
Packit 45fded
} fe_info;
Packit 45fded
Packit 45fded
#define	FE_SIZE 92
Packit 45fded
Packit 45fded
/****** TYPE_SGI ******/
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	byte    unknown1[8];
Packit 45fded
	byte	finderinfo[INFOLEN];	/* Finder info */
Packit 45fded
	byte    unknown2[214];
Packit 45fded
	byte    name[32];
Packit 45fded
	byte    unknown3[14];
Packit 45fded
} sgi_info;
Packit 45fded
Packit 45fded
#define	SGI_SIZE 300
Packit 45fded
Packit 45fded
/****** TYPE_SFM ******/
Packit 45fded
Packit 45fded
/*
Packit 45fded
 * Information provided by Lou Rieger <lrieger@meridiancg.com> taken from
Packit 45fded
 * an email from Eddie Bowers <eddieb@microsoft.com>
Packit 45fded
 */
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	byte	afpi_Signature[4];	/* Must be 0x00504641 */
Packit 45fded
	byte	afpi_Version[4];	/* Must be 0x00010000 */
Packit 45fded
	byte	afpi_Reserved1[4];
Packit 45fded
	byte	afpi_BackupTime[4];	/* Backup time for the file/dir */
Packit 45fded
	byte	finderinfo[INFOLEN];	/* Finder info */
Packit 45fded
	byte	afpi_ProDosInfo[6];	/* ProDos Info */
Packit 45fded
	byte	afpi_Reserved2[6];
Packit 45fded
} sfm_info;
Packit 45fded
Packit 45fded
#define	SFM_MAGIC	0x00504641
Packit 45fded
#define	SFM_VERSION	0x00010000
Packit 45fded
Packit 45fded
/****** TYPE_DHFS ******/
Packit 45fded
Packit 45fded
#ifdef IS_MACOS_X
Packit 45fded
Packit 45fded
/*
Packit 45fded
 *	Code ideas from 'hfstar' by Marcel Weiher marcel@metaobject.com,
Packit 45fded
 *	another GNU hfstar by Torres Vedras paulotex@yahoo.com and
Packit 45fded
 *	hfspax by Howard Oakley howard@quercus.demon.co.uk
Packit 45fded
 */
Packit 45fded
Packit 45fded
#include <sys/attr.h>
Packit 45fded
Packit 45fded
typedef struct {
Packit 45fded
	unsigned long	info_length;
Packit 45fded
	struct timespec	ctime;
Packit 45fded
	struct timespec	mtime;
Packit 45fded
	byte		info[32];
Packit 45fded
} attrinfo;
Packit 45fded
Packit 45fded
#endif /* IS_MACOS_X */
Packit 45fded
Packit 45fded
#endif /* _APPLE_H */