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

menuconfig 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
