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