Ada.Directories

Thomas De Contes <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
bonjour :-)

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


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/"


Il y a Dir_Seps , mais apparemment il est très très peu utilisé

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 ?
Est ce qu'il y a d'autres précautions à prendre ?


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


D'ailleurs, ça serait bien d'avoir qqch qui nous donne la racine,  
puisque c'est dépendant de la plate-forme

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/)



case :


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
(c'est pas trop confus ?)

Et moi, j'aime bien mettre des majuscules dans le nom de certains  
fichiers, quelquefois


J'ai Ada.Directories.Validity "the POSIX version of this package"
avec Is_Path_Name_Case_Sensitive return True;

Heureusement, comme ça je peux continuer à mettre des majuscules :-)
Puisque si ça avait été False ça aurait été quelquefois (mais pas  
toujours) converti en minuscules ...
(c'est fait exprès ?)

Mais, ça ne risque pas de poser de problèmes, quand on appelle un  
fichier avec des noms différents (au niveau de la case), si gnat  
croit que c'est des fichiers différents ?



ergonomie :


Je trouve que les procédures pour "partir à la recherche" du contenu  
d'un dossier sont assez lourdes à utiliser
(pas vous ?)

Pourquoi ne pas avoir fait tout simplement une fonction qui renvoie  
un tableau d'Unbounded_String ?
(Pas besoin de faire un type aussi sophistiqué que File_List de  
OS_Services,
On a juste à utiliser chaque chaîne comme il faut, avec les sous  
programmes habituels, pour avoir les informations qu'on veut sur  
chaque fichier)

(Mêmes remarques pour Ada.Environment_Variables)


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)

A ma connaissance, c'est typiquement une vision de linuxien, de  
vouloir mettre un filtre partout où il y a des listes de fichiers
Sur mac on n'a pas du tout cette habitude

Pourquoi pas une fonction match, qui dit si un fichier passe dans un  
filtre ou pas
Voire une fonction qui prend un tableau d'Unbounded_String (ci  
dessus) et qui le renvoie "nettoyé"
(En plus, comme ça ça pourrais servir à plein d'autres choses qu'aux  
fichiers :-) )



J'aimerais aussi faire quelques commentaires sur le code source

Mais j'ai peut être pas la dernière version :
Mon a-direct.adb a été modifié le 7/6/2007
"package body Ada.Directories is" l 50
"end Ada.Directories;" l 1240
Et vous ?


Exemple :

Chez moi, Create_Directory ne fait pas d'erreur si le dossier qu'on  
veut créer existe deja
C'est normal ?

Amha, dans tous les cas il vaudrait mieux rajouter une ligne, pour  
préciser exactement ce qu'on veut (rien ou une erreur),
avec Is_Directory(New_Directory), l 352



-- 
j'agis contre l'assistanat, je travaille dans une SCOP !


_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.