Créer un fichier avec une URL Internet dedans

GreensourceGreensource Membre
02:48 modifié dans API AppKit #1
Je ne sais pas trop où poser cette question. C'est pas vraiment de la programmation mais ça me pose un souci quand même.
En gros je voudrais créer un fichier qui quand on clique dessus interprête l'URL qui y est contenu.
Par exemple un http://www.google.com lance Safari avec la page www.google.com
ou bien smb://a.b.c.d se connecte au serveur a.b.c.d

J'ai parfois vu des fichiers avec un icone de safari dedans c'est peu être ça? Mais pas moyen de remetre la main dessus.

Merci

Réponses

  • CéroceCéroce Membre, Modérateur
    02:48 modifié #2
    Attrape la Favicon du site (dans la barre d'adresse) et glisse-là  sur le bureau.

    Par contre, je ne sais pas trop comment ça fonctionne, le fichier est vide (ils utilisent le resource fork ou quoi ?)
  • mpergandmpergand Membre
    juin 2009 modifié #3
    Ca marche pas avec les favicons.
    &lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;<br />&lt;!DOCTYPE plist PUBLIC &quot;-//Apple//DTD PLIST 1.0//EN&quot; &quot;http://www.apple.com/DTDs/PropertyList-1.0.dtd&quot;&gt;<br />&lt;plist version=&quot;1.0&quot;&gt;<br />&lt;dict&gt;<br />	&lt;key&gt;URL&lt;/key&gt;<br />	&lt;string&gt;http://www.osx-dev.com/index.php?topic=3858.msg38540;topicseen#new&lt;/string&gt;<br />&lt;/dict&gt;<br />&lt;/plist&gt;<br />
    


    [EDIT]

    Exact, pour les favicons, l'URL est dans le resource fork !
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #4
    Ca m'étonne toujours encore de voir qu'il y a des rsrc fork qui trainnent encore dans OSX, tant pour les favicons que pour les alias (dont l'information sur la cible est dans les rsrc fork aussi je crois) et pour les clippings (extraits de texte qu'on obtient par drag&drop d'un texte sur le bureau, extraits d'image sur le mm genre, ...).

    Bon ça devrait disparaà®tre avec Snow Leopard j'imagine, le Finder étant entièrement Cocoatisé, et je suis pas sûr qu'on ait une API propre pour accéder aux rsrc forks sans passer par Carbon... donc ils ont dû en profiter pour changer ça je pense ?
  • GreensourceGreensource Membre
    02:48 modifié #5
    Excuser mon ignorance mais je ne sais absolument pas de quoi vous parlez à  propos de "fork" machin, "rsrc" truc  ;)
  • mpergandmpergand Membre
    02:48 modifié #6
    dans 1244633955:

    Ca m'étonne toujours encore de voir qu'il y a des rsrc fork qui trainnent encore dans OSX, tant pour les favicons que pour les alias (dont l'information sur la cible est dans les rsrc fork aussi je crois) et pour les clippings (extraits de texte qu'on obtient par drag&drop d'un texte sur le bureau, extraits d'image sur le mm genre, ...).

    Bon ça devrait disparaà®tre avec Snow Leopard j'imagine, le Finder étant entièrement Cocoatisé, et je suis pas sûr qu'on ait une API propre pour accéder aux rsrc forks sans passer par Carbon... donc ils ont dû en profiter pour changer ça je pense ?


    Quoi ? du carbon pas propre dans léo tout blanc !!!  ;)

    Sans rire, comment tu fais pour utiliser ton Mac sans le FileManager (100% genuine carbon inside)

    Les resources forks disparaà®tront avec HFS, donc avec l'arrivée du zfs ?

    Mais il paraà®t que zfs peut gérer les forks ...
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #7
    Bah dans tous les cas les forks j'ai jamais été fan, justement parce que ce n'est pas géré par tous les filesystems. Donc quand on transfert les fichiers d'un ordi à  un autre ou qu'on envoie par mail...

    Autant les metadatas d'un fichier, si c'est pas géré par le filesystem de destination, c'est simplement perdu/ignoré... mais c'est pas si grave, car c'est plutôt des infos comme "avec quoi je veux ouvrir ce fichier" ou "quelle couleur je donne à  ce fichier dans le Finder" je crois, ou des infos spotlight, enfin il me semble que c'est à  peu près ça que contiennent les métadatas, en tout cas rien de vital.

    Autant les resourceforks contiennent des ressources, des données indispensables pour lire le fichier. Un TextClipping ou un favicon sans ses resourceforks ne sert plus à  rien, on a perdu les données utiles...
    Le pire c'est que ce genre de fichiers ne contient QUE des ressource forks, donc pourquoi ils ne les mettent pas dans la partie datafork (quitte à  les formatter comme des fichiers de ressources, ce qui est fait pour certains autres fichiers d'ailleurs dans Léopard)... remarque je dis ça j'ai pas vérifié, si ça se trouve pour les clippings et les favicons c'est pas réellement dans les resourceforks, mais bien dans les dataforks, formatté comme des resourceforks.


    Notez la présence des utilitaires en ligne de commande "Rez" et "DeRez" dans /Developer/Tools permettant de manipuler tout ça si besoin.
  • GreensourceGreensource Membre
    02:48 modifié #8
    Je me permet de redemander, vous entendez quoi par vos fork?
    Par ce que tout ce que je trouve c'est une commande pour créer un nouveau processus ^^ Et je pense pas que vous parliez de ça?  :)
  • AliGatorAliGator Membre, Modérateur
    juin 2009 modifié #9
    dans 1244640183:

    Je me permet de redemander, vous entendez quoi par vos fork?
    Par ce que tout ce que je trouve c'est une commande pour créer un nouveau processus ^^ Et je pense pas que vous parliez de ça?  :)
    En fait historiquement (surtout sous OS 9) chaque fichier était (enfin pouvait être) découpé en deux parties (c'était un seul fichier sur le disque mais comme si ton fichier avait 2 "branches" si on veut, d'où le terme de "fork") : les "data fork", la partie "données pures" du fichier, et les "resource fork", la partie contenant des ressources.
    Par exemple une application Carbon sous OS9 contenait souvent son code binaire (compilé) dans les data fork, et ses ressources (images, sons, design des boites de dialogue, ...) dans les resource fork.
    On utilisait des logiciels comme ResEdit ou Resorcerer pour éditer la partie "resource fork" (alors que la partie "data fork" est celle à  laquelle tu accèdes "normalement" en lisant le fichier, par exemple via un éditeur hexa ou un éditeur de texte).

    Ce système pose le problème que les resource fork ne sont pas supportés par des filesystems comme ceux du monde Windows, donc transférer un fichier Mac sous Windows risquait de faire perdre des données (les resource forks justement, qui passaient du coup à  la trappe) et menaçait donc l'intégrité du fichier. Maintenant les resource forks sont donc de moins en moins utilisées voire vouées à  être abandonnées, et tout ce bazar est géré autrement.
    Sauf pour des irréductibles comme les favicons ou les textclippings justement, qui résistent encore et toujours à  l'uniformisation et gardent encore trace du passé apparemment...

    http://en.wikipedia.org/wiki/Resource_fork

    --

    NB : Il me semble que quand tu crées une archive d'un dossier ou d'un fichier avec le Finder, si les fichiers à  zipper contiennent des resourceForks, il les sépare du fichier et les mets dans un fichier à  part (en recopiant ces resourceforks dans la partie datafork dudit nouveau fichier du coup) et met ce fichier dans un répertoire ".__MACOS_X" à  la racine du zip. On appelle ça le "resource splitting", où l'on sépare les dataforks et resourceforks d'un fichier dans 2 fichiers séparés (chacun n'ayant alors plus qu'un datafork et pas de resourcefork).
    C'est donc pour ça que tu peux voir ce genre de dossier ".__MACOS_X" dans les archives dézippées sous Windows si elles viennent du monde mac.

    De plus, lors de la copie d'un fichier mac sur un volume Windows, si le fichier contient des resourceforks, elles sont aussi splittées dans un fichier séparé (et mises dans sa partie datafork), fichier qui a le même nom que le fichier d'origine... précédé de "._". C'est aussi donc de là  que viennent tous ces fichiers "._machin" que tu peux parfois voir quand tu transfères des fichiers d'un Mac à  un PC sous Windows...

    Bref, vous aussi rejoignez moi dans le CPATRF (Comité Pour l'Abandon Total des Resource Forks) :P
  • GreensourceGreensource Membre
    02:48 modifié #10
    AAAAAAAAHHH c'est donc ça l'explication du .__MACOSX bizaroà¯de!
    Ca c'est cool de enfin savoir ça, je m'était toujours demandé ^^

    Est-ce à  dire qu'avec le Léopard des Neiges il ne sera plus là ?
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #11
    Bah heu... hopefully...

    Enfin disons qu'avec Snow Leopard, perso j'espère que tous les fichiers utilisés par le Finder abandonneront l'utilisation des resourceforks, donc en particulier que tous les fichiers gérés par OSX lui-même ne les utiliseront plus, textclippings, favicons et aliases compris.
    Ce qui permettra si on utilise que des logiciels "standards" et "pas trop vieux" ou que des logiciels Apple, de ne plus manipuler de fichiers avec des data forks... et donc de ne plus jamais avoir de "._machin" (et de "__MACOS_X" dans les zip).

    Maintenant je pense qu'Apple va garder la partie gestion de ces fichiers ayant des resource forks, par soucis de retrocompatibilité, c'est à  dire que si malgré le fait que plus aucun service et plus aucune appli Mac de ton Snow Leopard (Finder compris) n'utilise plus de resourceforks, tu as quand même un fichier avec un resourcefork qui attérit sur ton mac (récupéré d'un vieux disque, d'une vieille appli, d'un pote qui a une version antérieure d'OSX, ...) il saura encore les gérer.

    Mais j'espère juste qu'ils deviendront plus rares... quoique je suis médisant, c'est déjà  progressivement le cas, avec OSX ils restent quand même relativement rares il me semble, à  part ces quelques exceptions citées, c'est rien comparé à  ce qu'on avait sous feu OS9 :P
  • tabliertablier Membre
    02:48 modifié #12
    Je ne suis pas aussi catégorique en ce qui concerne la disparition des "fork".
    Je programme depuis Mac OS 3 ou 4 (  :-\\ c'est vieux tout ça), à  l'époque le ressource fork contenait tout le logiciel, même le code exécutable. Le code exécutable est, d'une certaine manière, une ressource du logiciel. Comme toutes les routines existaient pour manipuler le ressource fork, cela permettait de mettre à  jour la partie buggué d'un logiciel en concervant le reste. Les fichiers de donnée avait normalement dans leur resourcefork les références de leur créateur et du type des données contenues. C'est de là  que vient le "PkgInfo".
    C'est avec MacOS 8 puis 9 et le PPC que l'on a vu le code exécutable passé dans le datafork. En fait le code 68xxx était logé dans le ressource fork et le code PPC dans le datafork (si je me souviens bien).
    Avec les Bundles modernes les forks pourraient disparaitrent. Oui, mais Appel devrait changer un certain nombre d'automatismes comme les Alias qui gardent la trace du fichier d'origine, même s'il est déplacé!
      :( Enfin, certains programmes utilisent toujours les resourcefork! Je viens d'ouvrir Toast Titanium 9.x et dans chaque dossier Resources/xxx.lproj il existe un fichier "Localized.rsrc". Dans le dossier des ressources de CDFinder, il existe un fichier "CDFinder.rsrc" ....etc
    Alors, je ne pense pas que les forks vont disparaitre rapidement et je ne suis pas sur que leur disparition soit souhaitable!

    NB: quelqu'un peut-il me faire une émoticone avec une barbe blanche et une canne?
  • AliGatorAliGator Membre, Modérateur
    juin 2009 modifié #13
    dans 1244658320:
    Oui, mais Appel devrait changer un certain nombre d'automatismes comme les Alias qui gardent la trace du fichier d'origine, même s'il est déplacé!
      :( Enfin, certains programmes utilisent toujours les resourcefork! Je viens d'ouvrir Toast Titanium 9.x et dans chaque dossier Resources/xxx.lproj il existe un fichier "Localized.rsrc". Dans le dossier des ressources de CDFinder, il existe un fichier "CDFinder.rsrc" ....etc
    Eh bien là  je ne suis pas d'accord avec toi.
    Je n'ai pas dit (et ne milite pas spécialement pour) que les ressources, et le format utilisé pour les ressources, allait disparaà®tre, mais juste les forks... et là  c'est une grande nuance !

    En effet pour reprendre ton exemple tu parles de fichier "Localized.rsrc". Ce genre de fichier n'a pas de fork. Il n'a pas un data fork et un resource fork. Il n'a qu'un data fork, dont les données sont formattées comme l'étaient les resource forks à  l'époque de ResEdit & co.

    C'est à  dire que le fichier "Localized.rsrc" ne contient qu'une zone "data fork". Et dans cette zone, on trouve les octets arrangés exactement comme ils seraient arrangés dans la "resource fork" d'un fichier forké.

    Mais si tu ouvres ce fichier avec un éditeur genre ResEdit, il ne trouvera pas de resources. Il faudrait passer le fichier Localized.rsrc à  la moulinette d'outils comme Rez/DeRez/RezWack/UnRezWack pour copier les octets présents dans le data fork du fichier vers le resource fork de ce fichier (ou d'un nouveau), puis seulement ouvrir le fichier (celui dans lequel on a transféré les resources dans le resource fork) avec ResEdit.

    Donc dans un fichier .r ou .rsrc le format des données, l'agencement des octets quoi, est le même que celui que l'on trouve dans un resource fork d'un fichier... sauf que ces données sont placées dans le "data fork" du fichier.
    Tu peux faire le test, d'une part en copiant ce fichier "Localized.rsrc" par exemple sur un volume Windows, puis en le récupérant ensuite, tu verras qu'il est toujours intègre... ou sinon en faisant mumuse avec RezWack et UnRezWack pour passer les octets de ces ressources d'un fork à  l'autre.


    L'idée ce n'est donc pas de supprimer le format de données stockant des ressources (je crois que c'est un format un peu comme les formats RIFF, MOV et autres confrères, un code FOURCC, un ID, une longueur, et les données, les uns à  la suite des autres), mais de transvaser ces octets binaires du resource fork au data fork pour ne plus avoir des fichiers n'ayant que des data forks (enfin n'ayant pas de forks, ayant tout dans leur partie données quoi).
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #14
    olivier$ DeRez /Applications/iTunes.app/Contents/Resources/French.lproj/Localized.rsrc
    ### DeRez - The resource fork of "/Applications/iTunes.app/Contents/Resources/French.lproj/Localized.rsrc" is empty and uninitialized.
  • tabliertablier Membre
    02:48 modifié #15
    Vrai! mais ce n'est pas le cas pour tout les programmes. Ci-dessous l'image du fichier  Localized.rsrc de toast 9.x ouvert dans Resorcerer. Et, justement ce fichier n'a qu'un resourcefork et pas de datafork.
    Aller, je vais au pieu, c'est l'heure. A+
    toast.jpg
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #16
    Tu as vérifié avec UnRezWack que le fichier n'avait pas de datafork et qu'un resourcefork ?

    Car autant ResEdit je sais qu'il ne sait ouvrir que les resourceforks, autant je crois que Resourcerer est suffisamment "intelligent" pour ouvrir les resourceforks s'il y en a... mais si c'est un fichier ".rsrc" au format "resources dans le datafork, et pas de resourceforks", il sait automatiquement aller lire les resources dans le bon fork, justement parce qu'avec l'abandon progressif des resourceforks, ce format "on met les resources dans un fichier séparé non forké, plutôt que dans le fork "resources" d'un fichier forké est de plus en plus répandu sous OSX...

    J'ai pas Toast pour tester, mais je suis prêt à  parier que c'est le cas, c'est à  dire que ton Localized.rsrc est comme celui que j'ai pris en exemple dans le bundle de iTunes, il n'est pas forké (il n'a que des data forks si tu veux) et c'est juste que Resorcerer est assez intelligent pour aller lire les resources dans le datafork quand le fichier n'est pas forké...
  • schlumschlum Membre
    02:48 modifié #17
    dans 1244633955:
    Bon ça devrait disparaà®tre avec Snow Leopard j'imagine, le Finder étant entièrement Cocoatisé, et je suis pas sûr qu'on ait une API propre pour accéder aux rsrc forks sans passer par Carbon... donc ils ont dû en profiter pour changer ça je pense ?


    Désolé de gâcher ta joie, mais on peut y accéder directement avec les fonctions BSD elles-mêmes avec l'extension de path "/..namedfork/rsrc"  ;) (c'est en dur dans le Kernel...)
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #18
    Oh intéressant ça comme info, je savais pas... ça peut s'avérer très pratique ma fois ;)

    Par contre "en dur dans le kernel" ? Alors que ça dépend du filesystem ?! Etonnant...
  • schlumschlum Membre
    02:48 modifié #19
    dans 1244639221:
    Autant les metadatas d'un fichier, si c'est pas géré par le filesystem de destination, c'est simplement perdu/ignoré... mais c'est pas si grave, car c'est plutôt des infos comme "avec quoi je veux ouvrir ce fichier" ou "quelle couleur je donne à  ce fichier dans le Finder" je crois, ou des infos spotlight, enfin il me semble que c'est à  peu près ça que contiennent les métadatas, en tout cas rien de vital.


    Plusieurs choses fausses... Quand on copie sur un FS qui ne gère pas certaines données, tout est mis dans un fichier "._nom" (format AppleDouble) ; et dans le sens contraire, c'est également géré... Tout passe par "copyfile" (man copyfile)
    Les infos Spotlight n'ont jamais été dans le rsrc... Dans 10.4, c'était dans les fichiers .DS_Store, dans 10.5, c'est un extended attribute.

    Je ne crois pas à  l'abandon des rsrc... Tout simplement pour la compatibilité ascendante ;) Imagine, on perdrait toutes les données des rsrc sur les anciens fichiers ! impensable !
    Au pire, ils peuvent ne plus l'utiliser pour les nouveaux (mais dans ce cas, les icônes des fichiers, tu les stockes où ??).
  • schlumschlum Membre
    02:48 modifié #20
    dans 1244735785:

    Oh intéressant ça comme info, je savais pas... ça peut s'avérer très pratique ma fois ;)

    Par contre "en dur dans le kernel" ? Alors que ça dépend du filesystem ?! Etonnant...


    Dans la partie HSF du Kernel  ;)

    Bossé sur un driver, il renvoyait ce genre de paths avec les "..namedford"

    Il y a plusieurs choses bizarres codées en dur dans le Kernel... comme le uid / gid 99  :o
  • schlumschlum Membre
    02:48 modifié #21
    dans 1244641212:

    Ce système pose le problème que les resource fork ne sont pas supportés par des filesystems comme ceux du monde Windows, donc transférer un fichier Mac sous Windows risquait de faire perdre des données (les resource forks justement, qui passaient du coup à  la trappe) et menaçait donc l'intégrité du fichier. Maintenant les resource forks sont donc de moins en moins utilisées voire vouées à  être abandonnées, et tout ce bazar est géré autrement.
    Sauf pour des irréductibles comme les favicons ou les textclippings justement, qui résistent encore et toujours à  l'uniformisation et gardent encore trace du passé apparemment...


    Non, aucun problème avec AppleDouble qui gère tout ça pour la compatibilité entre FS  ;)
    Tu as oublié le plus important... Les icônes des fichiers sont stockées dans les rsrc. Et AMHA c'est pas près de changer (toujours pour question de compatibilité ascendante !)

    NB : Il me semble que quand tu crées une archive d'un dossier ou d'un fichier avec le Finder, si les fichiers à  zipper contiennent des resourceForks, il les sépare du fichier et les mets dans un fichier à  part (en recopiant ces resourceforks dans la partie datafork dudit nouveau fichier du coup) et met ce fichier dans un répertoire ".__MACOS_X" à  la racine du zip. On appelle ça le "resource splitting", où l'on sépare les dataforks et resourceforks d'un fichier dans 2 fichiers séparés (chacun n'ayant alors plus qu'un datafork et pas de resourcefork).
    C'est donc pour ça que tu peux voir ce genre de dossier ".__MACOS_X" dans les archives dézippées sous Windows si elles viennent du monde mac.


    Pour tar, il utilise AppleDouble ; pour zip, je ne sait point ; peut-être un autre format.

    De plus, lors de la copie d'un fichier mac sur un volume Windows, si le fichier contient des resourceforks, elles sont aussi splittées dans un fichier séparé (et mises dans sa partie datafork), fichier qui a le même nom que le fichier d'origine... précédé de "._". C'est aussi donc de là  que viennent tous ces fichiers "._machin" que tu peux parfois voir quand tu transfères des fichiers d'un Mac à  un PC sous Windows...


    Il n'y a pas que les ressources dans ces fichiers, tu y trouveras aussi les ACL, les extended attributes et tout un tas d'autres infos gérées par AppleDouble ; pareil, ils ne sont pas près de disparaà®tre !
  • AliGatorAliGator Membre, Modérateur
    02:48 modifié #22
    C'est pas dans les metadatas ça plutôt que dans les ressources, les ACL et xattrs ?
  • tabliertablier Membre
    02:48 modifié #23
    je reprend la discussion sur les .rsrc. J'ai transferé le "Localized.rsrc" sur le vieux G3 que j'ai remis sous MAcOS 9.2.2. (je dois être le seul en France a pouvoir encore faire ça!) Et bien Aligator peut changer son nom en Alig_napastord car Resedit décrète que le fichier n'a pas de ressource. J'ai voulu voir à  quoi correspondait son contenu (ne pas mourir idiot!!). Pour cela, avec Resedit j'ai créé un fichier ressource vide, puis avec Hexedit j'ai copié intégralement le contenu de "Localized.rsrc" dans le nouveau fichier. J'ai réouvert le nouveau fichier avec Resedit. Résultat ci-dessous! Le contenu est bien conforme au contenu d'un resourcefork même s'il apparait comme un datafork!
    Localized.jpg
  • schlumschlum Membre
    02:48 modifié #24
    dans 1244736491:

    C'est pas dans les metadatas ça plutôt que dans les ressources, les ACL et xattrs ?


    Oui, ce ne sont pas des ressources... Mais ça n'empêche que c'est dans le format AppleDouble (les fichiers ._)  ;)

    C'est pour ça qu'il faut bien différencier les deux... AppleDouble ≠ Ressoures et même si les ressources disparaissent, les fichiers ._ sur les FS Windows resteront !
Connectez-vous ou Inscrivez-vous pour répondre.