Je constate un comportement bizarre de ExamineFtpDirectory() en PB4.31 x86 sous Windows XP, et je voudrais vous demander votre avis avant de faire un rapport de bug.
Voilà la situation:
Dans ma boîte, j'ai un serveur UNIX (sous AIX 5.3, pour les connaisseurs) accessible dans le réseau local. Sur ce serveur, j'ai un répertoire nommé "20090609".
Voilà le contenu du répertoire, vu par FileZilla:
Code : Tout sélectionner
Nom Taille Type Date Heure
20090609-190000.sur 51877 Fichier SUR 09/06/2009 19:08
20090609-190107.sur 52319 Fichier SUR 09/06/2009 19:09
20090609-190108.sur 51892 Fichier SUR 09/06/2009 19:09
20090609-190115.sur 55189 Fichier SUR 09/06/2009 19:09
Voilà le programme utilisé (trouvé sur le forum anglais):
Code : Tout sélectionner
InitNetwork()
Procedure list_ftp2(Ftp, Dir.s, Fulldir.s)
Protected NewList Dirs.s()
SetFTPDirectory(Ftp, Dir)
If ExamineFTPDirectory(Ftp)
While NextFTPDirectoryEntry(Ftp)
If FTPDirectoryEntryType(Ftp) = #PB_FTP_Directory
AddElement(Dirs())
Dirs() = FTPDirectoryEntryName(Ftp)
Else
Debug Fulldir + "/" + FTPDirectoryEntryName(Ftp)
EndIf
Wend
ForEach Dirs()
list_ftp2(Ftp, Dirs(), Fulldir + "/" + Dirs())
Next
EndIf
SetFTPDirectory(Ftp, "..")
EndProcedure
Procedure.s list_ftp(dir$)
Protected ftp = OpenFTP(#PB_Any, "serveur", "login", "password") ; là, j'ai enlevé l'adresse du serveur et les login/password, parce que c'est confidentiel ;)
If ftp
list_ftp2(ftp, dir$, dir$)
CloseFTP(ftp)
EndIf
EndProcedure
; Lister le contenu du répertoire "20090609" sur le serveur
list_ftp("20090609")
Code : Tout sélectionner
20090609/20090609-190115.sur
20090609/20090609-190108.sur
20090609/20090609-190107.sur
20090609/19:08 20090609-190000.sur ; <= cette entrée est incorrecte!
Le problème, c'est que sur le premier fichier (donc le dernier dans la liste), ExamineFtpDirectory s'est planté: le nom du fichier est faux (il semble contenir l'heure de création). De plus, FTPDirectoryEntryDate renvoie -1. Bref: cette entrée est inexploitable!
Ce bug se produit avec d'autres répertoires, et affecte indifféremment les fichiers ou les répertoires de la liste. Seul point commun: c'est toujours le premier de la liste qui est touché, et l'heure est toujours ajoutée au début du nom.
Vous avez une idée d'où ça peut venir? Une solution?
