Droits d'écriture
Le
Lucas Levrel

[Cross-post fclc++ et fco.ms-windows.programmation, suivi à votre bon
plaisir !]
Bonjour,
Mon programme, écrit en C++, sauve des données dans un fichier spécifié
par l'utilisateur. Le choix se fait avec le sélecteur de fichier GTK, qui
retourne le nom de fichier dans une « C-string ». Puis je fais :
ofstream journal(filename);
journal<<session.str();
journal.close();
Quand je teste (sous XP) le programme, qui est dans le répertoire
Téléchargements, le dossier par défaut du sélecteur est Téléchargements,
et là, impossible de créer un fichier (aucun fichier n'est créé dans le
répertoire à l'issue des instructions ci-dessus). En revanche, ça marche
dans le répertoire Bureau (c'est-à-dire, l'exécutable est dans
Téléchargements et l'utilisateur « navigue » jusqu'au répertoire Bureau
dans le sélecteur).
Mes questions :
- Est-ce un problème de permissions ? Ça me paraît étrange qu'un
utilisateur ne puisse pas créer un fichier dans ce répertoire !
- Dans mon code, que rajouter comme tests pour traquer l'erreur ?
- Des idées de la cause du problème, si ce ne sont pas les permissions ?
Merci.
--
LL
plaisir !]
Bonjour,
Mon programme, écrit en C++, sauve des données dans un fichier spécifié
par l'utilisateur. Le choix se fait avec le sélecteur de fichier GTK, qui
retourne le nom de fichier dans une « C-string ». Puis je fais :
ofstream journal(filename);
journal<<session.str();
journal.close();
Quand je teste (sous XP) le programme, qui est dans le répertoire
Téléchargements, le dossier par défaut du sélecteur est Téléchargements,
et là, impossible de créer un fichier (aucun fichier n'est créé dans le
répertoire à l'issue des instructions ci-dessus). En revanche, ça marche
dans le répertoire Bureau (c'est-à-dire, l'exécutable est dans
Téléchargements et l'utilisateur « navigue » jusqu'au répertoire Bureau
dans le sélecteur).
Mes questions :
- Est-ce un problème de permissions ? Ça me paraît étrange qu'un
utilisateur ne puisse pas créer un fichier dans ce répertoire !
- Dans mon code, que rajouter comme tests pour traquer l'erreur ?
- Des idées de la cause du problème, si ce ne sont pas les permissions ?
Merci.
--
LL
Le 30/03/2012 17:11, Lucas Levrel a écrit :
Je laisse le crosspost car je ne sais pas quel sera le meilleur groupe
pour la suite.
Je ne sais pas.
Non plus.
À tout hasard : la présence de deux caractères non ASCII dans le nom
« Téléchargements », et aucun dans le nom « Bureau » ? Je ne sais pas
si ça peut vraiment jouer, mais c'est une piste possible.
C'est exact, GTK encore ses chaînes de caractères en UTF8
Yann
Merci. J'ai donc deux pistes à explorer :
- déterminer l'encodage utilisé par l'OS et convertir le nom de fichier
dans cet encodage ;
- utiliser la bibli gio pour ouvrir le fichier.
Je vais me pencher moi-même sur la seconde, mais si vous savez comment
aborder la première, je suis preneur !
--
LL
S'il s'agit de Windows (XP et supérieur en tout cas), c'est l'encodage
Latin-1 (aka ISO-8859-1) qui est utilisé (pour les PCs vendus en France
en tous cas ; je suppose qu'ils s'adaptent). Le monde Unix et ses
bibliothèques ont par contre majoritairement adopté l'UTF-8.
Voilà. Ma question était donc de déterminer l'encodage de l'OS à
l'exécution. Ceci dit, pour mon problème particulier, j'ai suivi ma
deuxième piste (utiliser la bibliothèque GIO) et ça marche bien.
--
LL