herror obsolète

Répondant à une autre question , je suis tombé sur la page de manuel d’une fonction appelée herror . Cela ressemble beaucoup à perror sauf qu’il perror erreurs liées à un problème de recherche d’hôte. La page de manuel indique que cette fonction est «obsolète». Une fonction hsterror qui pourrait être utilisée pour transformer le numéro d’erreur en une chaîne de caractères sans l’imprimer est également marquée comme étant obsolète.

Ce que je ne vois pas, c’est que rien n’indique pourquoi l’ un d’eux est obsolète et quel substitut il faudrait utiliser. Alors, quel est le moyen préféré pour transformer un h_errno erreur obscur h_errno en une chaîne lisible par l’utilisateur sur un système GNU libc linux? Chaque petite application devrait-elle fournir sa propre table de traduction et espérer que l’ensemble des codes d’erreur possibles ne changera pas de sitôt?

Ils sont obsolètes car gethostbyname* est obsolète. Utilisez plutôt getaddrinfo et utilisez gai_strerror pour les erreurs.

De la page de manuel gethostbyname(3) :

Les fonctions gethostbyname * () et gethostbyaddr * () sont obsolètes. Les applications doivent plutôt utiliser getaddrinfo (3) et getnameinfo (3) .