Le 02/04/2018 à 18:41, Jérôme Villafruela a écrit :
> Le 01/04/2018 à 17:01, anne.guilde@??? a écrit :
>> Le 01/04/2018 à 13:14, anne.guilde@??? a écrit :
>>> bonjour,
>>>
>>> j'ai le message suivant
>>> ----
>>> 10:43:06: Échec de la récupération de la date du fichier
>>> « /media/anne/e63b0852-e3c8-4690-b779-28a6f785210c/initrd.img »
>>> (erreur 2 : Aucun fichier ou dossier de ce type)
>>> 10:43:06: Une erreur inattendue est intervenue. En voici la
>>> description :
>>>
>>> *** IBPP::SQLException ***
>>> Context: Statement::Execute( INSERT INTO FILES (FILE_ID, FILE_NAME,
>>> FILE_EXT, FILE_SIZE, FILE_DATETIME, PATH_FILE_ID, PATH_ID,
>>> FILE_DESCRIPTION) VALUES (941562, 'initrd.img', 'img', 0,
>>> '292278994-08-16 17:47:04', NULL, 70288, NULL) )
>>> Message: isc_dsql_execute2 failed
>>>
>>> SQL Message : -413
>>> Overflow occurred during data type conversion.
>>>
>>> Engine Code : 335544334
>>> Engine Message :
>>> conversion error from string "292278994-08-16 17:47:04"
>>> ----
>>>
>>> Pourquoi cette date "292278994-08-16 17:47:04"?
>>>
>>> La date de ce fichier est
>>>
>>> lrwxrwxrwx 1 root root 29 juin 21 2017 initrd.img ->
>>> boot/initrd.img-4.9.0-3-amd64
>>> => 21 juin 2017
>>>
>
> J'ai reproduit le problème avec exactement le même message, dans mon cas
> le fichier causant le problème est un lien symbolique dont la cible
> n'est pas accessible (sur une partition non montée) , est ce aussi le
> cas ici ?
>
>
C'est tout à fait cela.
Tu as aussi la date "292278994-08-16 17:47:04"?
>>> J'ai le source des programmes.
>>>
>>> J'ai fait une recherche avec grep sur FILE_DATETIME
>>> ----
>>> # grep -ir 'FILE_DATETIME' ../vvv/VVV-1.3-src/
>>> Fichier binaire ../vvv/VVV-1.3-src/VVV.fbk correspondant
>>> ../vvv/VVV-1.3-src/src/data_interface/fb_virtual_files.cpp:
>>> FB_st->Get("FILE_DATETIME", ts);
>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp: sql +=
>>> wxT("FILE_NAME, FILE_EXT, FILE_SIZE, FILE_DATETIME, PATH_FILE_ID,
>>> PATH_ID, FILE_DESCRIPTION) VALUES (");
>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp: sql +=
>>> wxT("FILE_DATETIME = ") + DateTime.Format( wxT("'%Y-%m-%d %H:%M:%S'")
>>> ) + wxT(", ") +
>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:
>>> FB_st->Get("FILE_DATETIME", ts);
>>> ../vvv/VVV-1.3-src/src/data_interface/fb_files.cpp: sql =
>>> wxT("UPDATE FILES SET FILE_DATETIME = ") + fdt.Format( wxT("'%Y-%m-%d
>>> %H:%M:%S'") ) + wxT(", ");
>>> ../vvv/VVV-1.3-src/src/data_interface/virtual_files.cpp: wxString sql
>>> = wxT("select virtual_files.file_id, virtual_files.virtual_path_id,
>>> virtual_files.physical_file_id, virtual_files.virtual_path_file_id,
>>> files.file_name, files.file_size, files.file_ext,
>>> files.file_datetime, files.path_id, files.path_file_id,
>>> files.file_description ");
>>> ../vvv/VVV-1.3-src/src/convert_db_unicode.cpp:
>>> stIn->Get("FILE_DATETIME", ts);
>>> ../vvv/VVV-1.3-src/src/convert_db_unicode.cpp: sql +=
>>> wxT("FILE_NAME, FILE_EXT, FILE_SIZE, FILE_DATETIME, PATH_FILE_ID,
>>> PATH_ID, FILE_DESCRIPTION) VALUES (");
>>> ../vvv/VVV-1.3-src/VVV.sql: FILE_DATETIME TIMESTAMP,
>>> ../vvv/VVV-1.3-src/VVV.sql: insert into FILES(
>>> FILE_ID, FILE_NAME, FILE_SIZE, FILE_EXT, FILE_DATETIME, PATH_ID )
>>> ----
>>>
>>> J'ai une recherche dans ce fichier
>>> /vvv/VVV-1.3-src/src/data_interface/fb_files.cpp:
>>> ...
>>> FB_st->Get("FILE_DATETIME", ts);
>>>
>>> DateTime.Set( ts.Day(), (wxDateTime::Month) (wxDateTime::Jan
>>> + ts.Month() - 1), ts.Year(), ts.Hours(), ts.Minutes(), ts.Seconds() );
>>> ...
>>>
>>> Je ne comprends pas vraiment cette syntaxe.
>>>
>>> Si quelqu'un pouvait me décortiquer
>>>
>>
>
> DateTime est un objet de type wxDateTime (de la bibliothèque wxWidgets,
> défini dans la classe CFiles, source files.h ) dont on appelle la
> métode Set
> (http://docs.wxwidgets.org/stable/classwx_date_time.html#a6f7ee89e55144c61ac19a6543e67db6a
> )
>
>
>> suite de mes questions
>>
>> - Comment faire pour faire du pas à pas (mode debug)?
>> Il faut recompiler?
>> Si oui, comment et quel paquet installer?
>
> L'outil de build utilisé est CMake, il faut installer :
>
> apt install build-essentials
> apt install cmake
>
> Pour lancer le build :
>
> cd VVV-1.3-src/src
> cmake .
>
> Mais chez moi le build échoue car il manque des dépendances, je ne
> connais pas CMake, y a t'il moyen de récupérer automatiquement la liste
> des dépendances ?
> Dans CMakeLists.txt Il y a une ligne :
>
> FIND_PACKAGE(wxWidgets REQUIRED html adv core base net aui xrc qa
> richtext )
>
> comment se fait le lien avec le nom des paquets ?
>
> Bonne soirée,
>
> Jérôme
>
Merci pour tous ces renseignements.
Je vais faire des essais...
Encore des questions :
avec la commande find, il y a l'option -P et -F
-P Ne jamais suivre les liens symboliques, ce qui est le
comportement par défaut. Quand find analyse ou affiche les informations
concernant un fichier, et que ce fichier est un lien symbolique, les
informations utilisées sont celles qui concernent le lien symbolique
lui-même (et non le fichier pointé).
-L Suivre les liens symboliques. Quand find analyse ou
affiche les informations concernant un fichier, ce sont celles extraites
des caractéristiques du fichier vers lequel mène les liens, et non celle
du lien lui-même (sauf s'il s'agit d'un lien cassé, ou si find est
incapable d'analyser le fichier vers lequel pointe le lien).
L'utilisation de cette option implique -noleaf qui sera toujours
active pour les utilisations ultérieures de l'option -P. Si l'option -L
est active et que find découvre un lien symbolique vers un
sous-répertoire lors de ses recherches, le sous-répertoire pointé par le
lien symbolique sera examiné.
Quand l'option -L est active, le prédicat -type
correspondra toujours au type du fichier pointé par le lien symbolique
plutôt que celui du lien lui-même (sauf si le lien symbolique est
cassé). Les prédicats -lname et -ilname renvoient toujours faux lors de
l'utilisation de -L.
Y-a-t-il ce genre de subtilités en C++?
En C++, dans les sources de vvv où lit-il les répertoires/fichiers?
Merci
Anne