X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fcanon-host.c;h=6083e793939fa005e60131af3edd0ca7c1f600a4;hb=f4c549fab688ce822556eadcf60fdda5042ade11;hp=c0b7c13445874f92207c3acae929dbbf1c125931;hpb=0632e115747ff96e93330c88f536d7354a7ce507;p=gnulib.git diff --git a/lib/canon-host.c b/lib/canon-host.c index c0b7c1344..6083e7939 100644 --- a/lib/canon-host.c +++ b/lib/canon-host.c @@ -1,29 +1,28 @@ /* Host name canonicalization - Copyright (C) 2005, 2006 Free Software Foundation, Inc. + Copyright (C) 2005-2010 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 . */ #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; @@ -69,9 +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; + *cherror = EAI_MEMORY; freeaddrinfo (res); } else if (cherror)