Bonjour a tous
Me voila confronté a un probleme que je ne sais pas par quel bout prendre
J'ai besoin d'ecrire une fonction qui me permettra de determiner si un pathname passé en parametre est:
- de type 8.3 (short filename)
- de type LFN (long filename)
- aucun des deux (donc incorrect)
J'ai listé les différents points permettant de différencier les deux types :
pour les 8.3:
*Caracteres interdits:
- les caracteres de control (0 - 31)
- les caracteres " * + , . / : ; < = > ? [ \ ] |
- le caractere 127
- le caractere 0xE5 (qui doit etre remplacé par 0x05)
* Longueur du pathname:
Maximum 80 caracteres ( 3 pour le driver letter (c:\), 12 pour le nom de fichier (nom+point+extension), 64 pour le path, 1 pour le NUL) ==> données trouvées sur le hardware white paper de micro$oft
D'ailleurs je trouve assez bizarre ce "64", a moins qu'il ne prenne pas en compte les '\' separant chaque nom de répertoire, dans ce cas on pourrait imbriquer au maximum 8 dossiers... mais sans les antislash, comment fait le system pour savoir ou commence et ou s'arrete un nom de répertoire?
* Longueur d'un nom:
Maximum 8 caracteres pour un répertoire (espaces interdits en milieu de nom)
pour les LFN:
*Caracteres interdits:
- les caracteres de control (0 - 31)
- les caracteres " * / : < > ? \ |
- le caractere 127
* Longueur d'un nom:
Maximum 260 pour un nom de fichier + extension et NUL
Maximum 248 pour un nom de dossier + NUL
Meme avec tout ceci je n'arrive pas a pondre un algorithme simple. Si vous avez des pistes pour m'aiguiller ce serait super.
Merci d'avance
Partager