getfullhostname.c
上传用户:liugui
上传日期:2007-01-04
资源大小:822k
文件大小:3k
源码类别:

代理服务器

开发平台:

Unix_Linux

  1. /*
  2.  * $Id: getfullhostname.c,v 1.17 1998/07/22 20:36:35 wessels Exp $
  3.  *
  4.  * DEBUG: 
  5.  * AUTHOR: Harvest Derived
  6.  *
  7.  * SQUID Internet Object Cache  http://squid.nlanr.net/Squid/
  8.  * ----------------------------------------------------------
  9.  *
  10.  *  Squid is the result of efforts by numerous individuals from the
  11.  *  Internet community.  Development is led by Duane Wessels of the
  12.  *  National Laboratory for Applied Network Research and funded by the
  13.  *  National Science Foundation.  Squid is Copyrighted (C) 1998 by
  14.  *  Duane Wessels and the University of California San Diego.  Please
  15.  *  see the COPYRIGHT file for full details.  Squid incorporates
  16.  *  software developed and/or copyrighted by other sources.  Please see
  17.  *  the CREDITS file for full details.
  18.  *
  19.  *  This program is free software; you can redistribute it and/or modify
  20.  *  it under the terms of the GNU General Public License as published by
  21.  *  the Free Software Foundation; either version 2 of the License, or
  22.  *  (at your option) any later version.
  23.  *  
  24.  *  This program is distributed in the hope that it will be useful,
  25.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  26.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  27.  *  GNU General Public License for more details.
  28.  *  
  29.  *  You should have received a copy of the GNU General Public License
  30.  *  along with this program; if not, write to the Free Software
  31.  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
  32.  *
  33.  */
  34. #include "config.h"
  35. #if HAVE_LIBC_H
  36. #include <libc.h>
  37. #endif
  38. #if HAVE_STDIO_H
  39. #include <stdio.h>
  40. #endif
  41. #if HAVE_STDLIB_H
  42. #include <stdlib.h>
  43. #endif
  44. #if HAVE_STRING_H
  45. #include <string.h>
  46. #endif
  47. #if HAVE_SYS_PARAM_H
  48. #include <sys/param.h>
  49. #endif
  50. #if HAVE_SYS_TYPES_H
  51. #include <sys/types.h>
  52. #endif
  53. #if HAVE_SYS_SOCKET_H
  54. #include <sys/socket.h>
  55. #endif
  56. #if HAVE_NETINET_IN_H
  57. #include <netinet/in.h>
  58. #endif
  59. #if HAVE_ARPA_INET_H
  60. #include <arpa/inet.h>
  61. #endif
  62. #if HAVE_NETDB_H && !defined(_SQUID_NETDB_H_) /* protect on NEXTSTEP */
  63. #define _SQUID_NETDB_H_
  64. #include <netdb.h>
  65. #endif
  66. #if HAVE_UNISTD_H
  67. #include <unistd.h>
  68. #endif
  69. #include "util.h"
  70. /*
  71.  *  getfullhostname() - Returns the fully qualified name of the current 
  72.  *  host, or NULL on error.  Pointer is only valid until the next call
  73.  *  to the gethost*() functions.
  74.  */
  75. const char *
  76. getfullhostname(void)
  77. {
  78.     const struct hostent *hp = NULL;
  79.     static char buf[SQUIDHOSTNAMELEN + 1];
  80.     if (gethostname(buf, SQUIDHOSTNAMELEN) < 0)
  81. return NULL;
  82.     if ((hp = gethostbyname(buf)) != NULL)
  83. xstrncpy(buf, hp->h_name, SQUIDHOSTNAMELEN);
  84.     return buf;
  85. }