libexplain
1.4.D001
|
00001 /* 00002 * libexplain - Explain errno values returned by libc functions 00003 * Copyright (C) 2009, 2013 Peter Miller 00004 * Written by Peter Miller <pmiller@opensource.org.au> 00005 * 00006 * This program is free software; you can redistribute it and/or modify 00007 * it under the terms of the GNU Lesser General Public License as 00008 * published by the Free Software Foundation; either version 3 of the 00009 * License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Lesser General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Lesser General Public License 00017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 #include <libexplain/ac/limits.h> 00021 #include <libexplain/ac/unistd.h> 00022 00023 #include <libexplain/host_name_max.h> 00024 00025 00026 long 00027 explain_get_host_name_max(void) 00028 { 00029 #ifdef _SC_HOST_NAME_MAX 00030 /* 00031 * SUSv2 guarantees that "Host names are limited to 255 bytes". 00032 * POSIX.1-2001 guarantees that "Host names (not including the 00033 * terminating null byte) are limited to HOST_NAME_MAX bytes". On 00034 * Linux 1.* and 2.*, HOST_NAME_MAX is defined as 64. Linux 0.x 00035 * kernels imposed a limit of 8 bytes. 00036 */ 00037 { 00038 long result; 00039 00040 result = sysconf(_SC_HOST_NAME_MAX); 00041 if (result > 0) 00042 return result; 00043 } 00044 #endif 00045 #if HOST_NAME_MAX > 0 00046 return HOST_NAME_MAX; 00047 #elif _POSIX_HOST_NAME_MAX > 0 00048 return _POSIX_HOST_NAME_MAX; 00049 #else 00050 return 64; 00051 #endif 00052 } 00053 00054 00055 /* vim: set ts=8 sw=4 et : */