Obligement - L'Amiga au maximum

Mardi 21 novembre 2017 - 07:25  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Dossier : Liens matériels, liens symboliques
(Article écrit par Pierre Ardichvili et extrait d'Amiga News - mars 1993)


Introduction

AmigaOS 2.0 a introduit une nouvelle notion, celle de liaisons. Certains disent aussi "liens". Nous nous conformerons ici à la terminologie du manuel livré par Commodore avec AmigaOS. Le mot "liaison" désigne le fichier qui établit le lien. Un lien est aussi bien l'équivalent pour des fichiers de données, de l'alias pour les fichiers exécutables.

On crée un fichier de liaison, appelons-le FLECHE, qui ne fait que pointer sur un fichier de destination. Appelons-le CIBLE. Pour commencer par les choses simples, on dispose pour ce faire de la commande "Makelink" d'AmigaOS, dont la syntaxe est dans le cas de figure :

Makelink FLECHE CIBLE

CIBLE est ici ce que l'on appelle un nom complet, c'est-à-dire comprenant le chemin complet de CIBLE s'il n'est pas dans le répertoire courant.

Lorsqu'un programme quelconque (une commande AmigaOS, un éditeur ou tout programme susceptible d'utiliser le fichier de données CIBLE) recevra comme argument FLECHE, il traitera en fait le fichier CIBLE. Ceci peut être très commode peur appeler un fichier enfoui dans une profonde arborescence de répertoires, ou pour faire en sorte de ne pas devoir modifier le programme si l'on déplace le fichier CIBLE. On peut créer une liaison vers un fichier ou vers un répertoire. Dans ce dernier cas, la commande "Makelink" demande l'option FORCE.

Liaisons matérielles et liens symboliques

Le lien décrit ci-dessus est qualifié de lien matériel car il concerne deux fichiers situés sur le même volume. La commande AmigaOS "Makelink" ne traite que de ce type de liens. Il existe aussi des liens symboliques. La différence tient à la manière de réaliser le lien.

Un fichier AmigaOS comporte un bloc dit "File Header", normalement suivi de blocs contenant les données proprement dites. Lorsque l'on établit un lien matériel, par exemple par la commande "Makelink", AmigaOS place dans les octets 01D6 et 01D7 (vers le milieu de la dernière ligne du bloc) du fichier origine le numéro du bloc dans lequel se trouve le File Header du fichier destination. Cette information est amplement suffisante car le fichier destination se trouve sur la même unité physique. Par ailleurs, le fichier origine ne comporte qu'un File Header et aucun bloc de données, c'est pourquoi il apparaît comme un fichier de taille nulle.

Le lien symbolique est plus souple, car le File Header du fichier liaison comporte, juste à la suite de ses octets de somme de contrôle, et sous la forme d'une chaîne ASCII, le chemin complet du fichier de destination, que ce dernier fichier réside ou non sur le même volume. Les liens symboliques ne peuvent être créés que par un appel à la fonction "MakeLink()" dans un programme.

Complications

Structure des fichiers

A part leur taille nulle et le fait qu'ils ne comportent qu'un bloc File Header et aucun bloc de données, les liaisons matérielles sont des fichiers de données classiques, de type FFFC ou -4. Ils apparaissent donc comme des fichiers normaux dans l'affichage qui suit une commande Dir, List ou autre. Par contre, pourquoi diable les liaisons symboliques ont-elles un code de type 3, qui est celui des répertoires ?

Le commentaire que l'on trouve dans "dosextens.h" est d'ailleurs savoureux : "looks like dir, but may point to a file!". Elles apparaissent par conséquent comme des répertoires dans les affichages dont nous venons de parler, mais il n'est évidemment pas question de faire un CD ou un Dir dessus, sauf bien sûr si la destination du lien est elle-même un répertoire. Aspirine SVP.

AmigaOS réagit d'ailleurs par un message approprié, sans dommage. Pas question non plus d'examiner ces fichiers au moyen d'un éditeur binaire en les appelant par leur nom, on tombe nécessairement sur la visualisation du fichier destination. Il faut utiliser le bon vieux DiskX ou la dernière version de AZap et trouver le numéro du bloc File Header du fichier de liaison à examiner.

Considérations logiques

La différence de réalisation des liens matériels et symboliques est à l'origine d'un comportement différent lors de la restauration.

J'établis un lien de dh0:fleche vers dh0:placard/cible, et je sauvegarde dh0:. Qu'il s'agisse d'un lien matériel ou symbolique, si je restaure vers dh0:, le résultat sera le même. Par contre, si je restaure vers une autre partition dh1:, dans le cas d'une liaison matérielle, j'obtiendrai une liaison dh1:fleche qui pointera vers dh1:placard/cible. En effet, le contenu de dh1:fleche se réduit à un numéro de bloc, implicitement dans le même volume.

Dans le cas d'une liaison symbolique, le contenu de dh1:fleche est la chaîne ASCII "dh0:placard/cible", et le lien pointe sur un fichier destination situé dans dh0:.

Ceci est d'ailleurs sans doute la raison peur laquelle la commande "Makelink" d'AmigaOS ne traite normalement que les liens matériels, moins délicats à traiter.

Comportement des programmes

Les logiciels de copie de sauvegarde Quarterback, Ami-Back et ABackup (à l'exception de certaines versions, dont la 2.10) traitent correctement les liens matériels et symboliques.

Ces trois programmes refusent de sauvegarder ou de restaurer les liens si les fichiers de destination soit ne sont pas compris dans la sélection de la sauvegarde, soit, dans le cas de liens symboliques vers d'autres volumes, si le fichier destination n'est pas présent. Les différences tiennent à l'affichage. Les messages d'erreur sont variables, je signale simplement que les listings d'erreur fournis par Ami-Back sont parfois sibyllins et incomplets.

Par contre, la documentation d'Ami-Back met clairement l'utilisateur en garde au sujet de la restauration des liens matériels sur une autre unité logique. La documentation de Quarterback ne souffle pas un mot sur les liens. ABackup offre dans ses menus de configuration l'option de prendre les liens en compte ou de les ignorer.

Lha, du moins la version dont je dispose, ne reconnaît pas les liens symboliques : dans le cas de liens matériels, comme on peut s'y attendre, il inclut dans l'archive, sous le nom du fichier liaison, le contenu du fichier destination.

Quant à Ami'FastBack, comme d'ailleurs Ami-Back en mode image, il est évident qu'il sauvegarde le fichier liaison tel quel, mais sans aucune vérification quant à l'existence du fichier destination.

Conclusion

La sauvegarde et la restauration des liens matériels ou symboliques peut causer des surprises, mais ne devrait pas poser de problèmes sérieux ; elle demande certaines précautions, la meilleure étant d'avoir une bonne compréhension du fonctionnement des liens.


[Retour en haut] / [Retour aux articles]