Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

fabriquer un alias d'alias

24 réponses
Avatar
pere.noel
je cherche un moyen pour fabriquer un alias d'alias (but : tester une
extension C pour Ruby).

le problème :

si je crée un "target_alias" d'un fichier "target" puis un
"alias_of_alias" de l'alias "target_alias" j'obtiens un alias qui pointe
directement sur "target", ce qui n'est pas le but recherché...

j'ai essayé de "ruser" ))

je crée un fichier texte vode "target_alias" par touch ;
je crée un alias de celui-ci "alias_of_alias" ;
je supprime "target_alias" par rm -f ;
je crée un fichier quelconque "target" ;
enfin je crée un alias "target_alias de "target".

pas de pot "alias_of_alias" pointe quand même directement sur "target"
et non, ce que je recherche, sur "target_alais".

qq'un sur la liste as-patpro a répondu "impossible" de même sur la liste
alt.comp.lang.applescript.

ça me gène de produire un code dont une fonctionalité n'est pas testée :

OSErr FSResolveAliasFile (
FSRef * theRef,
Boolean resolveAliasChains, // <== c'est ce que je souhaite tester...
Boolean * targetIsFolder,
Boolean * wasAliased
);
--
une bévue

10 réponses

1 2 3
Avatar
Patrick Stadelmann
In article <1hl4uh4.kpsyee1w3h3g1N%,
(Une bévue) wrote:

pas de pot "alias_of_alias" pointe quand même directement sur "target"
et non, ce que je recherche, sur "target_alais".


Ce n'est pas ce que j'ai observé (voir ma réponse dans a.c.l.a).
Attention le Finder résout la chaîne complète donc on ne peut évidemment
pas l'utiliser pour déterminer quelle est la cible directe de
"alias_of_alias" !

Patrick
--
Patrick Stadelmann

Avatar
pere.noel
Patrick Stadelmann wrote:


Ce n'est pas ce que j'ai observé (voir ma réponse dans a.c.l.a).
Attention le Finder résout la chaîne complète donc on ne peut évidemment
pas l'utiliser pour déterminer quelle est la cible directe de
"alias_of_alias" !


oui, j'ai lu ta réponse sur "alt.comp.lang.applescript"

bon d'après cette dernière expérience le premier fichier test il ne faut
pas le virer par "rm -f" mais en le mettant à la corbeille et
optionnellement en vidant la corbeille.

c'est la différence entre ta manip et la mienne.

en tout cas avec ta manip ça roule, sous cette condition sinon (par rm
-f) l'alias est réputé "broken"...
--
une bévue

Avatar
Saïd
Une bévue :
Patrick Stadelmann wrote:


Ce n'est pas ce que j'ai observé (voir ma réponse dans a.c.l.a).
Attention le Finder résout la chaîne complète donc on ne peut évidemment
pas l'utiliser pour déterminer quelle est la cible directe de
"alias_of_alias" !


oui, j'ai lu ta réponse sur "alt.comp.lang.applescript"

bon d'après cette dernière expérience le premier fichier test il ne faut
pas le virer par "rm -f" mais en le mettant à la corbeille et
optionnellement en vidant la corbeille.

c'est la différence entre ta manip et la mienne.

en tout cas avec ta manip ça roule, sous cette condition sinon (par rm
-f) l'alias est réputé "broken"...


Sous Tiger ou Panther? Je dis ca prce qu'il me semblait que sous Tiger les
commandes Unix etaient "aware" des specificites de HFS+. Par exemple, cp
copie aussi la partie ressources (ce qui n'est pas le cas sous Panther).
Mais peut-tre que les alias mac OS X sont un autre hack qui ne depends meme
pas du HFS+.

--
Saïd.
"Bless this, O Lord, that with it thou mayst blow thine enemies to tiny
bits, in thy mercy."
In the Book of Armaments, Chapter 4. (The Holy Hand Grenade)


Avatar
pere.noel
Saïd wrote:

en tout cas avec ta manip ça roule, sous cette condition sinon (par rm
-f) l'alias est réputé "broken"...


Sous Tiger ou Panther? Je dis ca prce qu'il me semblait que sous Tiger les
commandes Unix etaient "aware" des specificites de HFS+. Par exemple, cp
copie aussi la partie ressources (ce qui n'est pas le cas sous Panther).
Mais peut-tre que les alias mac OS X sont un autre hack qui ne depends meme
pas du HFS+.


je suis sous Tiger 10.4.7

résultat de resolve alias si test est viré par rm -f :

path to alias file (from target alias file) :
/Users/yvon/Desktop/test_patrick/test_alias
a.alias_path=/Users/yvon/Desktop/test_patrick/test_alias
a.path_exists?úlse
a.is_alias_file?úlse
a.is_alias_broken?=true
-------------------^^^^
a.is_resolve_alias_chains?úlse
a.resolved_path ----------------^--- que dalle ))
a.was_aliased?úlse
---------------^^^^^
a.is_folder_alias?úlse
a.is_file_alias?úlse
^

mais bon, pour cp, c'est ok.
tiens au fait qq'un sur "fr.comp.lang.c" m'a dit qu'un alais file du
finder correspond à un hardlink unix, perso j'en doute, mais je connais
mieux les simples symlink.
--
une bévue


Avatar
Saïd
Une bévue :

mais bon, pour cp, c'est ok.
tiens au fait qq'un sur "fr.comp.lang.c" m'a dit qu'un alais file du
finder correspond à un hardlink unix, perso j'en doute, mais je connais
mieux les simples symlink.


J'en doute aussi. Si c'est un hard link, alors le fichier ne disparait pas
si on efface l'original.

--
Saïd.
"Bless this, O Lord, that with it thou mayst blow thine enemies to tiny
bits, in thy mercy."
In the Book of Armaments, Chapter 4. (The Holy Hand Grenade)

Avatar
Patrick Stadelmann
In article ,
Saïd wrote:

Une bévue :

mais bon, pour cp, c'est ok.
tiens au fait qq'un sur "fr.comp.lang.c" m'a dit qu'un alais file du
finder correspond à un hardlink unix, perso j'en doute, mais je connais
mieux les simples symlink.


J'en doute aussi. Si c'est un hard link, alors le fichier ne disparait pas
si on efface l'original.


La confusion vient du fait que le comportement d'un alias ressemble à
celui d'un hard link : la cible est toujours localisée même si on la
renomme ou si on la déplace. Mais du point de vue de son implémentation,
un alias est en fait plus proche d'un symlink (i.e. il s'agit bien d'un
fichier indépendant et non pas d'une entrée additionnelle dans le
catalogue).

Patrick
--
Patrick Stadelmann


Avatar
pere.noel
Patrick Stadelmann wrote:


La confusion vient du fait que le comportement d'un alias ressemble à
celui d'un hard link : la cible est toujours localisée même si on la
renomme ou si on la déplace. Mais du point de vue de son implémentation,
un alias est en fait plus proche d'un symlink (i.e. il s'agit bien d'un
fichier indépendant et non pas d'une entrée additionnelle dans le
catalogue).


ok merci, question annexe en "pur unix" il n'y a pas d'équivalent à un
Alias Record ?

on ne peut avoir dans un fichier "pur unix" un ensemble d'AliasHandle
comme produit par des AliasRecords ??
--
une bévue

Avatar
Patrick Stadelmann
In article <1hl54ek.1s75ngh1vdr1luN%,
(Une bévue) wrote:

ok merci, question annexe en "pur unix" il n'y a pas d'équivalent à un
Alias Record ?


Pas que je sache, c'est une technologie qui vient de Mac OS (Système 7
plus précisément).

on ne peut avoir dans un fichier "pur unix" un ensemble d'AliasHandle
comme produit par des AliasRecords ??


Qu'entends-tu par : fichier "pur Unix" ? On peut stocker les AliasRecord
où on veut (e.g. sous forme de "dump" hexadécimal dans un fichier
.plist) mais le Finder ne peut les exploiter directement que via des
fichier de type "alias".

Patrick
--
Patrick Stadelmann

Avatar
pere.noel
Saïd wrote:


Sous Tiger ou Panther? Je dis ca prce qu'il me semblait que sous Tiger les
commandes Unix etaient "aware" des specificites de HFS+. Par exemple, cp
copie aussi la partie ressources (ce qui n'est pas le cas sous Panther).
Mais peut-tre que les alias mac OS X sont un autre hack qui ne depends meme
pas du HFS+.


je rectifie ce que j'ai écrit ça marche aussi bien par rm -f que part
move to Trash...
--
une bévue

Avatar
pere.noel
Patrick Stadelmann wrote:

on ne peut avoir dans un fichier "pur unix" un ensemble d'AliasHandle
comme produit par des AliasRecords ??


Qu'entends-tu par : fichier "pur Unix" ? On peut stocker les AliasRecord
où on veut (e.g. sous forme de "dump" hexadécimal dans un fichier
.plist) mais le Finder ne peut les exploiter directement que via des
fichier de type "alias".


ok pas de possibilté "pure unix" pour un alias record.

par contre le dump hexa vers une plist d'un AliasRecord m'intéresse,
c'est ce qui est appellé AliasHandle dans la docum ???

je cherche à créer une extension C pour Ruby qui crée un/des
AliasRecord(s) et stocke le contenu soit dans une plist soit dans un
fichier yaml (+ utilisé sur ruby que plist).

c'est la dernière tache* qu'il me reste à faire pour mon ext <<



* mis à part gérer les différentes erreurs possibles et la déallocation
))
--
une bévue


1 2 3