/* Copyright (C) 2015-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk4hname8.ctr */ /** @file dk4hname8.c The dk4hname8 module. */ #line 67 "dk4hname8.ctr" #include "dk4conf.h" #include "dk4hname8.h" #if DK4_ON_WINDOWS #ifndef WINDOWS_H_INCLUDED #include #define WINDOWS_H_INCLUDED 1 #endif #endif #if DK4_HAVE_UNISTD_H #ifndef UNISTD_H_INCLUDED #include #define UNISTD_H_INCLUDED 1 #endif #endif #if DK4_HAVE_ASSERT_H #ifndef ASSERT_H_INCLUDED #include #define ASSERT_H_INCLUDED 1 #endif #endif int dk4hostname_c8(char *buffer, size_t sz, dk4_er_t *erp) { #if DK4_ON_WINDOWS DWORD s; #endif int back = 0; #if DK4_USE_ASSERT assert(NULL != buffer); assert(0 < sz); #endif if ((NULL != buffer) && (0 < sz)) { #if DK4_ON_WINDOWS if ((dk4_um_t)sz <= (dk4_um_t)0xFFFFFFFFUL) { s = (DWORD)sz; if (GetComputerNameExA(ComputerNameNetBIOS, buffer, &s)) { if ((size_t)s < sz) { buffer[(size_t)s] = '\0'; back = 1; } else { dk4error_set_simple_error_code(erp, DK4_E_BUFFER_TOO_SMALL); } } else { dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } #else if (0 == gethostname(buffer, sz)) { buffer[sz - 1] = '\0'; back = 1; } else { dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } #endif if (0 != back) { /* Strip domain part (if any) */ while('\0' != *buffer) { if ('.' == *buffer) { *buffer = '\0'; } buffer++; } } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; }