E-MailRelay
src
glib
ghostname_unix.cpp
Go to the documentation of this file.
1
//
2
// Copyright (C) 2001-2024 Graeme Walker <graeme_walker@users.sourceforge.net>
3
//
4
// This program is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// This program is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
// ===
17
///
18
/// \file ghostname_unix.cpp
19
///
20
21
#include "gdef.h"
22
#include "
ghostname.h
"
23
#include "
gstr.h
"
24
#include "
genvironment.h
"
25
#include <sys/utsname.h>
26
27
std::string
G::hostname
()
28
{
29
struct
utsname info {} ;
30
int
rc = ::uname( &info ) ;
31
if
( rc == -1 )
32
return
{} ;
33
34
info.nodename[
sizeof
(info.nodename)-1U] =
'\0'
;
35
std::string_view name =
G::Str::headView
( info.nodename , {
"."
,1U} ,
false
) ;
36
37
if
( name.empty() )
// pathologically "uname -n" can be empty
38
return
Environment::get(
"HOSTNAME"
, std::string() ) ;
39
40
return
Str::printable( name ) ;
41
}
42
G::Str::headView
static std::string_view headView(std::string_view in, std::size_t pos, std::string_view default_={}) noexcept
Like head() but returning a view into the input string.
Definition:
gstr.cpp:1308
genvironment.h
ghostname.h
gstr.h
G::hostname
std::string hostname()
Returns the hostname.
Definition:
ghostname_unix.cpp:27
Generated by
1.9.3