X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcanon-host.c;h=df9cbbfb2ec331c5c47f35343ca468e97ff3c76c;hb=825d4b05a9f432fa39078a91b24d05da759a5ad6;hp=dcbec53385c1edd087d39fad9b9abaae2555dd23;hpb=a4eb413867359e1afd4caa3068f1968889e2e17a;p=gnulib.git diff --git a/lib/canon-host.c b/lib/canon-host.c index dcbec5338..df9cbbfb2 100644 --- a/lib/canon-host.c +++ b/lib/canon-host.c @@ -1,31 +1,28 @@ /* Host name canonicalization - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Written by Derek Price . - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2, or (at - your option) any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. - This program is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include #include "canon-host.h" -#include "getaddrinfo.h" -#include "strdup.h" +#include +#include /* Store the last error for the single-threaded version of this function. */ static int last_cherror; @@ -71,7 +68,12 @@ canon_host_r (char const *host, int *cherror) status = getaddrinfo (host, NULL, &hints, &res); if (!status) { - retval = strdup (res->ai_canonname); + /* http://lists.gnu.org/archive/html/bug-coreutils/2006-09/msg00300.html + says Darwin 7.9.0 getaddrinfo returns 0 but sets + res->ai_canonname to NULL. */ + retval = strdup (res->ai_canonname ? res->ai_canonname : host); + if (!retval && cherror) + *cherror = EAI_MEMORY; freeaddrinfo (res); } else if (cherror)