# Copyright (c) 2023 Meta
#
# SPDX-License-Identifier: Apache-2.0

config POSIX_UNAME
	bool "Support for uname"
	default y if POSIX_API
	help
	  The uname() function shall store information identifying the current
	  system in the structure pointed to by name.

if POSIX_UNAME
config POSIX_UNAME_VERSION_LEN
	int "uname version string length"
	default 60
	help
	  Defines the maximum string length of uname version.

config POSIX_UNAME_NODENAME_LEN
	int "uname nodename string length"
	default 6 if !NET_HOSTNAME_UNIQUE
	default 22 if NET_HOSTNAME_UNIQUE
	help
	  Defines the maximum string length of nodename version.

endif # POSIX_UNAME
