Mac Alias Format

Everything below is big-endian.

An Alias record starts as follows:

Offset

Size

Contents

0

4

Application specific four-character code

4

2

Record size (must be >= 150 bytes)

6

2

Version (we support versions 2 and 3)

For version 2 aliases, this is followed by

Offset

Size

Contents

8

2

Alias kind (0 = file, 1 = folder)

10

28

Volume name (Pascal-style string; first octet gives length)

38

4

Volume date (seconds since 1904-01-01 00:00:00 UTC)

42

2

Filesystem type (typically ‘H+’ for HFS+)

44

2

Disk type (0 = fixed, 1 = network, 2 = 400Kb, 3 = 800kb, 4 = 1.44MB, 5 = ejectable)

46

4

CNID of containing folder

50

64

Target name (Pascal-style string)

114

4

Target CNID

118

4

Target creation date (seconds since 1904-01-01 00:00:00 UTC)

122

4

Target creator code (four-character code)

126

4

Target type code (four-character code)

130

2

Number of directory levels from alias to root (or -1)

132

2

Number of directory levels from root to target (or -1)

134

4

Volume attributes

138

2

Volume filesystem ID

140

10

Reserved (set to zero)

For version 3 aliases, we have instead

Offset

Size

Contents

8

2

Alias kind (0 = file, 1 = folder)

10

8

Volume date (65536ths of a second since 1904-01-01 00:00:00 UTC)

18

4

Filesystem type (typically ‘H+00’ for HFS+)

22

2

Disk type (0 = fixed, 1 = network, 2 = 400Kb, 3 = 800kb, 4 = 1.44MB, 5 = ejectable)

24

4

CNID of containing folder

28

4

Target CNID

32

8

Target creation date (65536ths of a second since 1904-01-01 00:00:00 UTC)

40

4

Volume attributes

44

14

Reserved (set to zero)

This record is optionally followed by tag-length-value data:

Offset

Size

Contents

0

2

Tag

2

2

Length

4

Length

Value

If the length is odd, a pad byte is added at the end.

Valid tags are:

Tag

Contents

-1

Signifies the end of the alias record

0

Carbon folder name (a string)

1

CNID path (an array of CNIDs, one per directory)

2

Carbon path (a string)

3

AppleShare zone (a string)

4

AppleShare server name (a string)

5

AppleShare username (a string)

6

Driver name (a string)

9

Network mount information

10

Dial-up connection information

14

Unicode filename of target (a UTF-16 big endian string)

15

Unicode volume name (a UTF-16 big endian string)

16

High resolution volume creation date (65536ths of a second since 1904-01-01 00:00:00 UTC)

17

High resolution creation date (65536ths of a second since 1904-01-01 00:00:00 UTC)

18

POSIX path (a string)

19

POSIX path to volume mountpoint (a string)

20

Recursive alias of disk image (an alias record)

21

User home length prefix (two-byte integer, says how many directory levels to the user’s home folder)