Bonsoir,
Voilà, je dois utiliser la fonction access pour tester les droits en écriture sur un fichier. Tout va bien si je ne cherche pas à coder la capture de l'erreur, par contre si j'essaye, mon compilo
me jete comme un mal propre...
Si quelqu'un peut me dire comment on récupére le code erreur le la commande access en cas d'échec, ce serait super
voilà, j'ai tapé ça :
Code :
- if(access(fic,W_OK)==0) printf("\nAccès en écriture sur %s OK\n",fic);
- else {
- printf("\nAccès en écriture refusé sur %s :\n",fic);
- switch(errno) {
- case EACCES : break;
- case ELOOP : break;
- case ENAMETOOLONG : break;
- case ENOENT : break;
- case ENOTDIR : break;
- case EROFS : break;
- case EFAULT : break;
- case EINVAL : break;
- case EIO : break;
- case ENOMEM : break;
- case ETXTBSY : break;
- défault : break;
- }
- }
|
et le compilo me crache ça :
main.c:93: error: 'errno' undeclared (first use in this function)
main.c:93: error: (Each undeclared identifier is reported only once
main.c:93: error: for each function it appears in.)
main.c:94: error: 'EACCES' undeclared (first use in this function)
main.c:95: error: 'ELOOP' undeclared (first use in this function)
main.c:96: error: 'ENAMETOOLONG' undeclared (first use in this function)
main.c:97: error: 'ENOENT' undeclared (first use in this function)
main.c:98: error: 'ENOTDIR' undeclared (first use in this function)
main.c:99: error: 'EROFS' undeclared (first use in this function)
main.c:100: error: 'EFAULT' undeclared (first use in this function)
main.c:101: error: 'EINVAL' undeclared (first use in this function)
main.c:102: error: 'EIO' undeclared (first use in this function)
main.c:103: error: 'ENOMEM' undeclared (first use in this function)
main.c:104: error: 'ETXTBSY' undeclared (first use in this function)
Pourtant sur le man 2 access :
Citation :
VALEUR RENVOYÃE
L'appel renvoie 0 s'il réussit (toutes les requêtes sont
autorisées), ou -1 s'il échoue (au moins une requête du mode est
interdite), auquel cas errno contient le code d'erreur.
|
Voili, voilà et merci d'avance
Laurent.