IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Algorithme de détermination d'un ShortFilename (8.3) ou LongFileName (LFN)


Sujet :

Algorithmes et structures de données

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut Algorithme de détermination d'un ShortFilename (8.3) ou LongFileName (LFN)
    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

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Je ne sais pas si tu as besoin de réaliser une fonction pour un exercice qui faite cela ou bien si tu cherches un moyen mais dans l'API Microsoft il y a une fonction toute faite : CheckNameLegalDOS8Dot3 (voir ici http://msdn2.microsoft.com/en-us/lib...07(VS.85).aspx)

    Si tu n'as pas le droit de l'utiliser (parce que c'est de la triche), tu pourras au moins vérifier si ta fonction marche comme celle de Microsoft

    Maintenant, si tu dois le faire sur une plateforme autre que Microsoft, oublie ma réponse
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Marmoccelle Voir le message
    Meme avec tout ceci je n'arrive pas a pondre un algorithme simple. Si vous avez des pistes pour m'aiguiller ce serait super.
    Tu as regardé du coté des expressions régulière ? Ca ne m'a pas l'air bien compliqué à résoudre comme ça !

    Bonne chance

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Arf j'y ai pensé apres avoir posté le message, j'aurais du précisé sur quelle platforme et avec quel langage je devais programmer ca

    C'est a faire en C sur microcontrolleur, j'avais deja trouvé ces fonctions de l'API, d'autres ttes pretes en C# mais rien en C


    @alex_pi: expressions régulieres? tu peux developper stp, ca ne me dit rien du tout

    Edit: Euh pour les expressions régulieres ca va pas etre possible, je n'ai pas la lib regex de dispo

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Bon ca y est j'ai enfin réussi a poser un algo correct.

    Par contre j'aimerais tester ma routine pour etre sur qu'il n'y a pas de bug ni erreur quelconque. Le probleme c'est que je suis a court d'idée pour faire une liste de pathname valide, et d'autres invalides. Vous savez ou je pourrais trouver ceci? a moins que je puisse faire valider mes fonctions (C) par un/des membre(s) du forum?

    A+ et merci d'avance

  6. #6
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Tu peux toujours poster le code, mais le mieux c'est que tu vérifies avec tous les cas qui peuvent poser des problèmes (tu donnes des mots qui ne sont pas valides et tu vérifies s'ils sont bien reconnus comme tel)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Tu peux toujours poster le code, mais le mieux c'est que tu vérifies avec tous les cas qui peuvent poser des problèmes (tu donnes des mots qui ne sont pas valides et tu vérifies s'ils sont bien reconnus comme tel)
    Oui oui c'est bien ce que je fais, mais mon imagination pour les pathname tordus a des limites c'est pour ca, plus il y a de monde, plus de tests pourront etre fait ou au moins soulever un point que j'aurais omis




    Merci

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Voila la liste des path que j'ai testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    ================================================================
    ================================================================
    		PATHNAME AUTORISES (short)
    ================================================================
    ================================================================
    \dossier1\dossier2\fichier.ext		OK
    \dossier1\dossier2\fichier.		OK
    \dossier1\dossier2\fichier		OK
    dossier1\dossier2\fichier.ext		OK
    dossier1\dossier2\fichier.		OK
    dossier1\dossier2\fichier		OK
    \fichier.ext				OK
    \fichier.				OK
    \fichier				OK
    fichier.ext				OK
    fichier.				OK
    fichier					OK
    a					OK
    \a					OK
    a.					OK
    \a.					OK
     
     
    ================================================================
    ================================================================
    		PATHNAME NON VALIDE (short)
    ================================================================
    ================================================================
    \dossier1\dossierlong\file.ext		OK
    \dossier1\dossier2\longfilename.ext	OK
    \dossier1\dossier2\file.extension	OK
    \dossier1\dossier2\file.ext\		OK
    \dossier1\ dossier\file.ext		OK
    \dossier1\dos+ier2\file.ext		OK
    \dossier1\dossier2\fi=e.ext		OK
    \dossier1\dossier2\file.e*t		OK
    \dossier1\dossier2\			OK
    \dossier1\dossier\ file.ext		OK
    \dossier1\dossier\file. ex		OK
    \					OK
    .					OK
    \\					OK
    \.					OK
    .\					OK
    ..					OK

  9. #9
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Des noms valides que tu ne testes pas. Je sais, l'écriture est un peu "tordue"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dossier1\..\dossier1\..\dossier1\..\dossier1\fichier.ext
    dossier1\.\.\.\.\dossier1\fichier.ext
    dossier1\\\\\dossier1\fichier.ext
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par ram_0000 Voir le message
    Des noms valides que tu ne testes pas. Je sais, l'écriture est un peu "tordue"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    dossier1\..\dossier1\..\dossier1\..\dossier1\fichier.ext
    dossier1\.\.\.\.\dossier1\fichier.ext
    dossier1\\\\\dossier1\fichier.ext
    Oula oui c'est tordu ca, on peut le rencontrer ou?

    Pour moi le ".." permet de remonter dans le parent directory, et le "." de rester dans le dir actuel, mais je pensais que ca ne pouvait etre utilisé qu'en début de path

    Par contre pour le "\\\\\\" je vois pas ce que ca permet de faire?

    Ce sont des path valides sur windows?

  11. #11
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Marmoccelle Voir le message
    Oula oui c'est tordu ca, on peut le rencontrer ou?

    Pour moi le ".." permet de remonter dans le parent directory, et le "." de rester dans le dir actuel, mais je pensais que ca ne pouvait etre utilisé qu'en début de path

    Par contre pour le "\\\\\\" je vois pas ce que ca permet de faire?

    Ce sont des path valides sur windows?
    Oui ces path sont valides.

    En debut de path:

    \ --> racine du volume
    \\ --> debut d'une sequence UNC

    Au milieu du path:

    \\ est equivalent a 1 seul \
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    Ok d'accord, ca doit etre vraiment tres rare alors, a moins que l'utilisateur s'endorme sur la touche back slash


    Plus serieusement, le path dossier1\\\\\\\dossier2\ et strictement équivalent a dossier1\.\.\.\.\dossier2\ alors?

  13. #13
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par Marmoccelle Voir le message
    Ok d'accord, ca doit etre vraiment tres rare alors, a moins que l'utilisateur s'endorme sur la touche back slash


    Plus serieusement, le path dossier1\\\\\\\dossier2\ et strictement équivalent a dossier1\.\.\.\.\dossier2\ alors?
    oui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Z:\>dir \jdk1.6.0\jre\bin\java.*
    java.dll
    java.exe
     
    Z:\>dir \jdk1.6.0\\\\\\\\\\\\jre\bin\java.*
    java.dll
    java.exe
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 69
    Points : 34
    Points
    34
    Par défaut
    OK, super, merci pour toutes vos réponses.

    Je n'avais pas prévu ce cas dans mes routines, du coup elles me renvoient une erreur pour ces 3 cas de figure.

    Ca ne sera pas long de corriger pour le dernier (\\\\\), il me suffit de virer le test de longueur mini du nom (au moins 1 char valide sinon erreur)

    Par contre pour les 2 premiers cas, ceux faisant apparaitre les DOT, ca va pas etre une mince affaire, car je suis parti de l'hypothese qu'un point ne pouvait etre trouvé que dans un nom de fichier, donc en gros, si un point est compris entre 2 back_slash, le pathname est invalide.


    Je pense que je laisserai ces cas comme "invalides" car trop complexe a prendre en compte, et puis surtout, ce ne sont pas les path les plus utilisés, tant pis si je dois restreindre un peu le champs de path acceptable.

Discussions similaires

  1. Algorithme de détermination de CFC
    Par faaffou dans le forum Débuter
    Réponses: 2
    Dernier message: 29/03/2014, 23h20
  2. Réponses: 4
    Dernier message: 22/01/2011, 09h36
  3. algorithme de détermination de "sous-séries"
    Par Giansolo dans le forum Algorithmes et structures de données
    Réponses: 40
    Dernier message: 08/03/2007, 14h11
  4. Algorithme qui détermine un espace couleur hybride
    Par hanane78 dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/02/2007, 18h15
  5. [Image] Algorithme pour déterminer une forme continue
    Par wizzmasta dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 25/04/2006, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo