OpenCoverage

xgethostname.c

Absolute File Name:/home/opencoverage/opencoverage/guest-scripts/coreutils/src/gnulib/lib/xgethostname.c
Source codeSwitch to Preprocessed file
LineSourceCount
1/* xgethostname.c -- return current hostname with unlimited length-
2-
3 Copyright (C) 1992, 1996, 2000-2001, 2003-2006, 2009-2018 Free Software-
4 Foundation, Inc.-
5-
6 This program is free software: you can redistribute it and/or modify-
7 it under the terms of the GNU General Public License as published by-
8 the Free Software Foundation; either version 3 of the License, or-
9 (at your option) any later version.-
10-
11 This program is distributed in the hope that it will be useful,-
12 but WITHOUT ANY WARRANTY; without even the implied warranty of-
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the-
14 GNU General Public License for more details.-
15-
16 You should have received a copy of the GNU General Public License-
17 along with this program. If not, see <https://www.gnu.org/licenses/>. */-
18-
19/* written by Jim Meyering */-
20-
21#include <config.h>-
22-
23/* Specification. */-
24#include "xgethostname.h"-
25-
26#include <stdlib.h>-
27#include <errno.h>-
28#include <unistd.h>-
29-
30#include "xalloc.h"-
31-
32#ifndef INITIAL_HOSTNAME_LENGTH-
33# define INITIAL_HOSTNAME_LENGTH 34-
34#endif-
35-
36/* Return the current hostname in malloc'd storage.-
37 If malloc fails, exit.-
38 Upon any other failure, return NULL and set errno. */-
39char *-
40xgethostname (void)-
41{-
42 char *hostname = NULL;-
43 size_t size = INITIAL_HOSTNAME_LENGTH;-
44-
45 while (1)-
46 {-
47 /* Use SIZE_1 here rather than SIZE to work around the bug in-
48 SunOS 5.5's gethostname whereby it NUL-terminates HOSTNAME-
49 even when the name is as long as the supplied buffer. */-
50 size_t size_1;-
51-
52 hostname = x2realloc (hostname, &size);-
53 size_1 = size - 1;-
54 hostname[size_1 - 1] = '\0';-
55 errno = 0;-
56-
57 if (gethostname (hostname, size_1) == 0)
gethostname (h..., size_1) == 0Description
TRUEnever evaluated
FALSEnever evaluated
0
58 {-
59 if (! hostname[size_1 - 1])
! hostname[size_1 - 1]Description
TRUEnever evaluated
FALSEnever evaluated
0
60 break;
never executed: break;
0
61 }
never executed: end of block
0
62 else if (errno != 0 && errno != ENAMETOOLONG && errno != EINVAL
(*__errno_location ()) != 0Description
TRUEnever evaluated
FALSEnever evaluated
(*__errno_location ()) != 36Description
TRUEnever evaluated
FALSEnever evaluated
(*__errno_location ()) != 22Description
TRUEnever evaluated
FALSEnever evaluated
0
63 /* OSX/Darwin does this when the buffer is not large enough */-
64 && errno != ENOMEM)
(*__errno_location ()) != 12Description
TRUEnever evaluated
FALSEnever evaluated
0
65 {-
66 int saved_errno = errno;-
67 free (hostname);-
68 errno = saved_errno;-
69 return NULL;
never executed: return ((void *)0) ;
0
70 }-
71 }
never executed: end of block
0
72-
73 return hostname;
never executed: return hostname;
0
74}-
Source codeSwitch to Preprocessed file

Generated by Squish Coco 4.1.2