Re: Ada.Directories
Jean-Pierre Rosen <[email protected]>
| Newsgroups | gmane.comp.lang.ada.france |
|---|---|
| Message-ID | <[email protected]> |
Thomas De Contes a écrit :
> quelques questions et commentaires sur Ada.Directories
>
> portabilité :
>
> J'aimerais faire l'application la plus portable possible, mais j'ai
> un peu de mal à savoir quoi faire
Si l'on veut *vraiment* être portable, c'est très difficile. Si l'on se
limite à quelques systèmes (Windows, Unix) on y arrive assez bien. Je ne
connais pas le problème du Mac.
> Quand on veut utiliser dossier/sous-dossier/ , apparemment il ne faut
> surtout pas utiliser cette chaîne telle quelle dans les sous
> programmes de Ada.Directories, mais il faut la construire :
> Compose(Compose( Current_Directory , "dossier" ), "sous-dossier" )
>
> Sinon, par exemple avec Create_Path, sous windows on risquerait de se
> retrouver avec un dossier qui s'appelle "dossier/sous-dossier/"
Ne pas oublier que sous certains systèmes (VMS), ce n'est pas un simple
caractère qui sépare les dossiers: la partie "répertoires" est mise
entre crochets.
> Il y a Dir_Seps , mais apparemment il est très très peu utilisé
?? Pas dans Directories
> Donc finalement, ce qu'il y a à faire,
> c'est de ne jamais utiliser dans un nom des caractères qui peuvent
> éventuellement être utilisés comme séparateurs (il n'y a que '/' et
> '\' ?), et ne jamais les utiliser directement comme séparateurs non
> plus ?
Pour Dos et Unix, il faut au moins ajouter ';', ':', éventuellement '$'
et '%', '<', '>'. Si on ajoute VMS, il y en a d'autres.
> En fait, je crois que ce qu'il y a de plus compliqué, c'est le fait
> qu'on peut se retrouver sur une plate-forme donnée avec un fichier
> dont le nom contient un caractère qui sert de séparateur sur une
> autre plate-forme
Oui. En pratique, les lettres, chiffres, '-' et '_' sont sûrs (et à mon
avis suffisants). Le reste est potentiellement dangereux.
> D'ailleurs, ça serait bien d'avoir qqch qui nous donne la racine,
> puisque c'est dépendant de la plate-forme
C'est quoi, la racine? En Dos, il y en a une par disque. Et même en
Unix, il peut y en avoir plusieurs, si l'on considère les chroot.
> Et même, si c'était possible, les chemins qui nous indiquent
> directement là où mettre les préférences des applications, etc
> (Par exemple, les préférences sous mac os x c'est ~/Library/
> Preferences/)
Là, il faut abandonner tout espoir de portabilité!
> Je suis sous mac os x, avec un systeme de fichier qui est case-
> insensitive,
> Mais si on crée un fichier avec des majuscules et des minuscules
> mélangées, il s'en souvient
> Simplement on peur relire le fichier en indiquant d'autres majuscules
> et minuscules
Pareil sous Dos
>
> J'ai Ada.Directories.Validity "the POSIX version of this package"
> avec Is_Path_Name_Case_Sensitive return True;
?? Pas vu ça dans la norme
> ergonomie :
>
> Je trouve que les procédures pour "partir à la recherche" du contenu
> d'un dossier sont assez lourdes à utiliser
> (pas vous ?)
C'est un schéma d'itérateur très classique.
> Pourquoi ne pas avoir fait tout simplement une fonction qui renvoie
> un tableau d'Unbounded_String ?
Et si on a des dizaines de milliers de fichiers?
>
> Personnellement, je trouve que le paramètre Pattern n'a rien à faire là
> Amha, la moindre des choses, ça serait de mettre une valeur par
> défaut qui ne filtre rien (j'espère que c'est pas dépendant de la
> plate-forme, au moins)
C'est le cas dans Start_Search:
Filter : in Filter_Type := (others => True)
> Pourquoi [...]
La définition d'un tel paquetage est toujours un compromis délicat entre
utilisabilité et portabilité. Si ce paquetage n'a été introduit qu'en
Ada 2005, c'est que l'on trouvait qu'il était trop difficile de définir
quelque chose de suffisemment portable. Et les gens qui ont fait ce
paquetage connaissaient bien de nombreux OS!
--
---------------------------------------------------------
J-P. Rosen ([email protected])
Visit Adalog's web site at http://www.adalog.fr
_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france