AppleSingle & AppleDouble

Résumé : Présentation des normes AppleSingle et AppleDouble, utilisées pour stocker les fichiers Macintosh à branches multiples sur des systèmes de fichiers qui ne connaissent que les fichiers monolithiques.
 

Introduction

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 ?

Signature magique

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.

AppleSingle

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.

AppleDouble

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.

Utilitaires

Les deux formats sont gérés par MacMail et par notre nouveau Mac2SFM.

 
Pierre Duhem (ex-Logiciels & Services Duhem)
3, rue Pierre Haret - F-75009 Paris (France) - Tél. (+33) [0]149 700 455
web : http://www.macdisk.com