#include <netdb.h>
int setnetgrent(const char *groupe_réseau);
void endnetgrent(void);
int getnetgrent(char **restrict hôte,
char **restrict utilisateur, char **restrict domaine);
int getnetgrent_r(char **restrict hôte,
char **restrict utilisateur, char **restrict domaine,
char tampon[restrict .taille_tampon], size_t taille_tampon);
int innetgr(const char *groupe_réseau, const char *hôte,
const char *utilisateur, const char *domaine);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
setnetgrent(), endnetgrent(), getnetgrent(), getnetgrent_r(), innetgr() :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE || _SVID_SOURCE
L'appel setnetgrent() définit le « groupe_réseau » dans lequel un appel getnetgrent() ultérieur effectuera sa recherche. La fonction getnetgrent() récupère l'entrée « groupe_réseau » suivante et renvoie les pointeurs dans hôte, utilisateur et domaine. Un pointeur NULL signifie que l'entrée correspondante ne concorde avec aucune chaîne. Les pointeurs sont valables tant qu'il n'y a pas d'appel à d'autres fonctions relatives au « groupe_réseau ». Pour éviter ce problème, vous pouvez utiliser la fonction GNU getnetgrent_r() qui enregistre les chaînes dans le tampon fourni. Pour libérer tous les tampons alloués, utilisez endnetgrent().
Dans la plupart des cas, il vous suffira de vérifier si le triplet (nom_hôte, nom_utilisateur, nom_domaine) est membre d'un groupe réseau. Pour ce faire, la fonction innetgr() peut être utilisée sans faire appel aux trois fonctions précédentes. Rappelons encore qu'un pointeur NULL est un joker (Ndt : wildcard) et correspond à n'importe quelle chaîne. La fonction est sûre du point de vue des threads.
| Interface | Attribut | Valeur |
| setnetgrent(), getnetgrent_r(), innetgr() | Sécurité des threads |
MT-Unsafe race:netgrent
locale
|
| endnetgrent() | Sécurité des threads |
MT-Unsafe race:netgrent
|
| getnetgrent() | Sécurité des threads |
MT-Unsafe race:netgrent
race:netgrentbuf locale
|
Dans le tableau ci-dessus, netgrent dans race:netgrent signifie que si une des fonctions setnetgrent(), getnetgrent_r(), innetgr(), getnetgrent() ou endnetgrent() est utilisée en parallèle dans différents threads d'un programme, des situations de compétition de données peuvent survenir.
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à