Tous les systèmes de fichiers doivent stocker, gérer et retrouver à la fois des
données et des métadonnées. Cependant, du fait que les créateurs du système de
fichiers Macintosh ont choisi de ne pas créer seulement une branche de données
(en anglais data fork) mais aussi une branche de ressources (en anglais
resource fork), il a bien fallu trouver une solution pour stocker ces
deux branches (voir la page d'informations que nous
leur consacrons) dans un fichier unique sur les volumes Macintosh (volumes HFS, pour
Hierarchical File System, et HFS+, souvent appelé Mac OS Étendu),
tandis que les métadonnées (les signatures, etc.)
sont stockées dans l'arborescence des fichiers (et non pas dans les fichiers
eux-mêmes).
Cependant, les fichiers ne restent pas toujours sur les disques où ils ont été
créés. C'était déjà vrai dans le passé, lorsqu'on été créées les normes
BinHex et MacBinary,
précisément pour permettre de regrouper les trois éléments des fichiers Macintosh
sur des serveurs de données.
Losrqu'Apple a choisi de supporter directement sur les Macintosh les disques et
disquettes PC (FAT), il leur a également fallu supporter le stockage des deux
branches et des métadonnées sur ces supports qui ne les connaissaient pas.
Dans le passé, nous avons eu le trop bien connu Échanges PC-Mac,
and Apple utilise aujourd'hui le format AppleDouble sur les volumes FAT32. Vous
avez peut-êtrre déjà vu ces curieux fichiers qui commencent par un point et un
trait de soulignement, avec un fichier nommé belle_image et un autre nommé
._belle_image ?
L'un des problèmes posés par toutes ces solutions déjà anciennes (mais qui
continuent d'être largement utilisées aujourd'hui) était qu'il était difficile
de déterminer la nature réelle du fichier de l'extérieur (et même de l'intérieur).
Apple a donc choisi de définir ce que l'on appelle des signatures magiques,
c'est-à-dire des séquences de données qu'il y a peu de chance de retrouver
aléatoirement au même endroit du fichier.
La "signature magique" des fichiers AppleSingle est 0x00051600 tandis qu'elle est
de 0x00051607 pour les fichiers AppleDouble. Cette signature se trouve dans les
quatre premiers octets du fichier unique dans le cas de la norme AppleSingle et
dans les quatre premier octets du fichier d'en-tête (qui contient tous les
éléments du fichier hormis la branche de données) dans le
cas de la norme AppleDouble.
Attention comme toujours au fait que les données Macintosh sont « gros-boutiennes ».
L'ordre indiqué correspond à l'ordre des octets dans le fichier.
La norme AppleSingle prévoit un fichier unique (d'où son nom), dans lequel on trouve d'abord une structure de données pointant sur les différents éléments composant le fichier (nom du fichier, dates du fichier, informations du Finde, branche de données et branche de ressources.
Comme son nom l'indique également, la norme AppleDouble prévoit deux fichiers.
Le premier, le fichier principal, contient la branche de données. Il est stocké
sous le nom qui a été donné par l'utilisateur.
Un second fichier, appelé fichier d'en-tête, généralement préfixé par la
séquence '._' (sous Unix, les fichiers dont le nom commence par un point sont
considérés comme des fichiers cachés), contient lui aussi une structure de
données (similaire à celle de la norme AppleSingle) ainsi que, essentiellement,
la branche de ressources.
Le fichier d'en-tête ne peut pas être vide. Le fichier principal peut être vide.
Il est possible d'avoir un fichier d'en-tête également pour un dossier.
Les deux formats sont gérés par MacMail et par notre nouveau Mac2SFM.