OVH Cloud OVH Cloud

Test sur fichier menteur

9 réponses
Avatar
grrr9
Bonjour,

j'ai deux fichiers: un .xml et un .db (sqlite)
j'effectue successivement ce même test sur ces deux fichiers:
-r $fichier && -w _
sur le xml il me renvoie vrai
sur le .db il me renvoie faux
les deux fichiers sont dans le même répertoire, j'ai l'acces en
"controle total" sur les deux, ils sont sur une partition NTFS sous
winXP.
Perl est en version 5.8 d'activestate.

si quelqu'un pouvait m'indiquer ce que fume le chameau, histoire que
j'en profite un peu .
merci

9 réponses

Avatar
Eric
Ca fait bien longtemps que j'ai pas joué avec perl, mais
il me semble que tu devrai mettre $_ au lieu de _

-r $fichier && -w $_


A moins que ...


"dede33" a écrit dans le message news:

Bonjour,

j'ai deux fichiers: un .xml et un .db (sqlite)
j'effectue successivement ce même test sur ces deux fichiers:
-r $fichier && -w _
sur le xml il me renvoie vrai
sur le .db il me renvoie faux
les deux fichiers sont dans le même répertoire, j'ai l'acces en
"controle total" sur les deux, ils sont sur une partition NTFS sous
winXP.
Perl est en version 5.8 d'activestate.

si quelqu'un pouvait m'indiquer ce que fume le chameau, histoire que
j'en profite un peu .
merci


Avatar
Alex Marandon
In article , dede33 wrote:
j'ai deux fichiers: un .xml et un .db (sqlite)
j'effectue successivement ce même test sur ces deux fichiers:
-r $fichier && -w _
sur le xml il me renvoie vrai
sur le .db il me renvoie faux
les deux fichiers sont dans le même répertoire, j'ai l'acces en
"controle total" sur les deux, ils sont sur une partition NTFS sous
winXP.
Perl est en version 5.8 d'activestate.


Et si tu postais un vrai bout de code ?

si quelqu'un pouvait m'indiquer ce que fume le chameau, histoire que
j'en profite un peu .


Ce genre de remarque me fait penser que le problème est surement entre
la chaise et l'écran :-)

Avatar
Paul GABORIT
À (at) Thu, 18 Dec 2003 14:57:46 +0100,
"Eric" écrivait (wrote):
Ca fait bien longtemps que j'ai pas joué avec perl, mais
il me semble que tu devrai mettre $_ au lieu de _

-r $fichier && -w $_


A moins que ...


À moins de lire la doc ;-)

On peut écrire un truc comme :

if ( -r $fichier and -w _ ) {
# 'and' est beaucoup plus sûr et lisible que '&&'
}

Cela évite de refaire appel à la fonction 'stat' puisqu'on interroge le même
fichier. Le résultat du dernier appel à 'stat' est mémorisé et un test sur _
permet d'y faire référence. (cf. perlfunc).

Pour en revenir à la question initiale, il est difficile de répondre sans
avoir des informations plus précises. Il faudrait vérifier les droits de
chacun des deux fichiers via un autre outil que Perl...

Peut-être est-ce un problème d'ACL (ou son équivalent sous Windows NT) ? Dans
ce cas, comme indiqué dans 'perlfunc', il faut se pencher sur le pragma
'filetest' :

perldoc filetest

PS: finalement, tout est dans le doc ;-)

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>


Avatar
Alain BARBET
Ce genre de remarque me fait penser que le problème est surement entre
la chaise et l'écran :-)


fo gratter dédé !

Avatar
grrr9
Alex Marandon wrote in message news:...
In article , dede33 wrote:
...
Et si tu postais un vrai bout de code ?


# Si le fichier config n'existe pas
unless(-e $fichier_config){
cree_config();
}
# Si le fichier config n'est pas accessible en lecture/ecriture
unless(-r $fichier_config && -W _){
message($visu, $langue, 'msg10', 'msg12');
sortie();
}
# Si la base de donnée n'existe pas
unless(-e $fichier_db){
cree_BDD();
}
# Si la base de donnée n'est pas accessible en lecture écriture
unless(-r $fichier_db && -w _){
message($visu, $langue, 'msg10', 'msg13');
sortie();
}

c'est le test en ecriture qui pose problème, si je ne garde que "-r
$fichier" ça passe.
J'ai essayé aussi en remplaçant "&&" par "and" comme preconisé par
paul, mais cela ne change rien.

Les permissions sur ces deux fichiers sont strictement les mêmes
(contrôle totale pour moi et le compte system), ils sont dans le même
répertoire, la seule différences entre les deux tiens à la nature même
de ces fichiers: xml (donc txt) pour le premier, et sqlite (donc
binaire) pour le second qui pose problème.
Aucun autre processus n'utilise ces fichiers, ils ont une taille de
quelques Ko.

Ce genre de remarque me fait penser que le problème est surement entre
la chaise et l'écran :-)


C'est pas parceque je ne place pas un smiley que je fais du 1er degré
-<8o}

Avatar
Paul GABORIT
À (at) 19 Dec 2003 08:03:59 -0800,
(dede33) écrivait (wrote):
Les permissions sur ces deux fichiers sont strictement les mêmes
(contrôle totale pour moi et le compte system), ils sont dans le même
répertoire, la seule différences entre les deux tiens à la nature même
de ces fichiers: xml (donc txt) pour le premier, et sqlite (donc
binaire) pour le second qui pose problème.


Celui qui pose problème ne serait-il pas déclaré en "lecture seul" ou
"archive" au autres attributs "exotiques" de Windows ?

Avez-vous essayer le pragma 'filetest' ?

--
Paul Gaborit - <http://www.enstimac.fr/~gaborit/>
Perl en français - <http://www.enstimac.fr/Perl/>

Avatar
dominix
dede33 wrote:
Alex Marandon wrote in message
news:...
In article , dede33
wrote: ...
Et si tu postais un vrai bout de code ?


# Si le fichier config n'existe pas
unless(-e $fichier_config){
cree_config();
}
# Si le fichier config n'est pas accessible en lecture/ecriture
unless(-r $fichier_config && -W _){
...

unless(-r $fichier_db && -w _){


juste une remarque, (des fois on a de la m...elasse dans les yeux)
-w et -W n'ont pas la meme signification.
il y a une difference entre les deux si le programme n'est pas
execute par le vrai proprietaire des fichiers (ou si le proprietaire
est different)

--
dominix


Avatar
grrr9
Paul GABORIT wrote in message news:...
Celui qui pose problème ne serait-il pas déclaré en "lecture seul" ou
"archive" au autres attributs "exotiques" de Windows ?


HOU QUE J'AI HONTE !!
honte, honte, honte, honte, honte, honte, honte, honte, honte, honte,
honte, honte, honte, honte, honte, honte, honte, honte, honte, honte,
honte, honte, honte, honte, honte, honte, honte, honte, honte, honte,
honte, honte, honte, honte, honte, honte, honte, honte, honte, honte,

désolé à tous, j'étais tellement fixé sur les acls que j'en ai oublié
cet attribut winesque !
J'utilise mon script en compilé avec perlapp.
dans mon script, si le fichier db n'existe pas, il est créé à partir
d'un fichier DB modèle empaqueté dans le .exe. à l'execution de l'exe,
tous les fichiers empaquetés sont decompressés dans un répertoire
temporaire le temps de l'execution. Et apparament, il decompresse avec
l'attribut 'lecture seule'.

honte à moi et encore merci à tous. (merci aussi à dominix pour sa
precision uid effectif et réel).

Avatar
Jean-Michel Hiver
désolé à tous, j'étais tellement fixé sur les acls que j'en ai oublié
cet attribut winesque !


Tiens en parlant de 'liste de controle', j'ai ecrit un module Perl qui
fait ca:

http://search.cpan.org/~jhiver/MKDoc-Control_List/lib/MKDoc/Control_List.pm

Ca peut etre utilise pour l'acces (en retournant les valeurs 'allow' or
'deny') mais aussi pour plein d'autre choses j'espere :)

Qu'en pensez-vous?