From f94fe747aea2bacea12b1b5dedbf6ae1a4d6cdbd Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Wed, 8 Jul 2015 11:11:52 -0600 Subject: [PATCH] Undo part of a previous change. Move get/sethostname back from net/netdb to libc/unistd --- configs | 2 +- include/netdb.h | 2 + include/nuttx/net/netdb.h | 127 ---------------------------------- libc/misc/lib_utsname.c | 3 +- libc/unistd/lib_gethostname.c | 41 +++++++++-- libc/unistd/lib_sethostname.c | 38 +++++++++- net/Makefile | 1 - net/README.txt | 1 - net/netdb/Make.defs | 43 ------------ net/netdb/netdb.h | 76 -------------------- net/netdb/netdb_gethostname.c | 98 -------------------------- net/netdb/netdb_globals.c | 68 ------------------ net/netdb/netdb_sethostname.c | 103 --------------------------- 13 files changed, 73 insertions(+), 530 deletions(-) delete mode 100644 include/nuttx/net/netdb.h delete mode 100644 net/netdb/Make.defs delete mode 100644 net/netdb/netdb.h delete mode 100644 net/netdb/netdb_gethostname.c delete mode 100644 net/netdb/netdb_globals.c delete mode 100644 net/netdb/netdb_sethostname.c diff --git a/configs b/configs index ef0ed726cc..6112bb0384 160000 --- a/configs +++ b/configs @@ -1 +1 @@ -Subproject commit ef0ed726cc999572b60228cc8a4f482f53e6a228 +Subproject commit 6112bb038416a3553504fad20eca1bd39f79b371 diff --git a/include/netdb.h b/include/netdb.h index 12c8265c6c..28669c54fe 100644 --- a/include/netdb.h +++ b/include/netdb.h @@ -172,6 +172,8 @@ struct hostent * terminated by a null pointer. */ }; +#define h_addr h_addr_list[0] /* For backward compatibility */ + struct netent { FAR char *n_name; /* Official, fully-qualified (including the domain) diff --git a/include/nuttx/net/netdb.h b/include/nuttx/net/netdb.h deleted file mode 100644 index bdccd140fc..0000000000 --- a/include/nuttx/net/netdb.h +++ /dev/null @@ -1,127 +0,0 @@ -/**************************************************************************** - * include/nuttx/net/netdb.h - * - * Copyright (C) 2015 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * Includes some definitions that a compatible with the LGPL GNU C Library - * header file of the same name. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -#ifndef __INCLUDE_NUTTX_NET_NETDB_H -#define __INCLUDE_NUTTX_NET_NETDB_H - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include - -#include - -/**************************************************************************** - * Public Type Definitions - ****************************************************************************/ - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -#ifdef __cplusplus -#define EXTERN extern "C" -extern "C" -{ -#else -#define EXTERN extern -#endif - -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -/**************************************************************************** - * Name: netdb_gethostname - * - * Description: - * The netdb_gethostname() function will return the standard host name for - * the current machine. The namelen argument will specify the size of the - * array pointed to by the name argument. The returned name will be null- - * terminated, except that if namelen is an insufficient length to hold the - * host name, then the returned name will be truncated and it is - * unspecified whether the returned name is null-terminated. - * - * Host names are limited to {HOST_NAME_MAX} bytes. - * - * Input Parameters: - * name - The user-provided buffer to receive the host name. - * namelen - The size of the user provided buffer in bytes. - * - * Returned Value: - * Upon successful completion, 0 will be returned; otherwise, -1 will be - * returned. No errors are defined; errno variable is not set. - * - ****************************************************************************/ - -int netdb_gethostname(FAR char *name, size_t namelen); - -/**************************************************************************** - * Name: netdb_sethostname - * - * Description: - * - * netdb_sethostname() sets the hostname to the value given in the - * character array name. The len argument specifies the number of bytes in - * name. (Thus, name does not require a terminating null byte.) - * - * Input Parameters: - * name - The user buffer to providing the new host name. - * namelen - The size of the user buffer in bytes. - * - * Returned Value: - * Upon successful completion, 0 will be returned; otherwise, -1 will be - * returned. No errors are defined; errno variable is not set. - * - ****************************************************************************/ - -int netdb_sethostname(FAR const char *name, size_t size); - -#undef EXTERN -#ifdef __cplusplus -} -#endif - -#endif /* __INCLUDE_NUTTX_NET_NETDB_H */ diff --git a/libc/misc/lib_utsname.c b/libc/misc/lib_utsname.c index 6ba95deee2..e7b944723b 100644 --- a/libc/misc/lib_utsname.c +++ b/libc/misc/lib_utsname.c @@ -43,7 +43,6 @@ #include #include -#include /* In the protected and kernel build modes where kernel and application code * are separated, some of these common system property must reside only in @@ -101,7 +100,7 @@ int uname(FAR struct utsname *name) #ifdef CONFIG_NET /* Get the hostname */ - if (-1 == netdb_gethostname(name->nodename, HOST_NAME_MAX)) + if (-1 == gethostname(name->nodename, HOST_NAME_MAX)) { ret = -1; } diff --git a/libc/unistd/lib_gethostname.c b/libc/unistd/lib_gethostname.c index f95e9d9812..ec12b5afe5 100644 --- a/libc/unistd/lib_gethostname.c +++ b/libc/unistd/lib_gethostname.c @@ -2,7 +2,9 @@ * libc/unistd/lib_gethostname.c * * Copyright (C) 2015 Stavros Polymenis. All rights reserved. + * Copyright (C) 2015 Gregory Nutt. All rights reserved. * Author: Stavros Polymenis + * Gregory Nutt * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -43,7 +45,7 @@ #include #include -#include +#include /* This file is only compiled if network support is enabled */ @@ -53,6 +55,22 @@ * Pre-processor Definitions ****************************************************************************/ +/* The default host name is a system configuration setting. This may be + * changed via sethostname(), however. + */ + +#ifndef CONFIG_NET_HOSTNAME +# define CONFIG_NET_HOSTNAME "" +#endif + +/**************************************************************************** + * Public Data + ****************************************************************************/ + +/* This is the system hostname */ + +char g_hostname[HOST_NAME_MAX + 1] = CONFIG_NET_HOSTNAME; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -94,6 +112,21 @@ int gethostname(FAR char *name, size_t namelen) #if (!defined(CONFIG_BUILD_PROTECTED) && !defined(CONFIG_BUILD_KERNEL)) || \ defined(__KERNEL__) + irqstate_t flags; + + /* Return the host name, truncating to fit into the user provided buffer. + * The hostname is global resource. There is a microscopic possibility + * that it could change while we are copying it. + */ + + flags = irqsave(); + strncpy(name, g_hostname, namelen); + irqrestore(flags); + + return 0; + +#else + struct utsname info; int ret; @@ -110,12 +143,6 @@ int gethostname(FAR char *name, size_t namelen) strncpy(name, info.nodename, namelen); return 0; -#else - /* Otherwise, this function is just a thin wrapper around - * netdb_gethostname(). - */ - - return netdb_gethostname(name, namelen); #endif } diff --git a/libc/unistd/lib_sethostname.c b/libc/unistd/lib_sethostname.c index 20ac5bbc77..2546e0fce9 100644 --- a/libc/unistd/lib_sethostname.c +++ b/libc/unistd/lib_sethostname.c @@ -39,9 +39,10 @@ #include +#include #include -#include +#include /* This file is only compiled if network support is enabled */ @@ -60,6 +61,26 @@ * Pre-processor Definitions ****************************************************************************/ +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#ifndef MIN +# define MIN(a,b) ((a) < (b) ? (a) : (b)) +#endif + +#ifndef MAX +# define MAX(a,b) ((a) > (b) ? (a) : (b)) +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +/* This is the system hostname (defined in lib_gethostname). */ + +extern char g_hostname[HOST_NAME_MAX + 1]; + /**************************************************************************** * Public Functions ****************************************************************************/ @@ -89,9 +110,20 @@ int sethostname(FAR const char *name, size_t size) { - /* This is just a thin layer over netdb_sethostname() */ + irqstate_t flags; - return netdb_sethostname(name, size); + /* Save the new host name, truncating to HOST_NAME_MAX if necessary. This + * internal copy is always NUL terminated. The hostname is global resource. + * There is a microscopic possibility that it could be accessed while we + * are setting it. + */ + + flags = irqsave(); + strncpy(g_hostname, name, MIN(HOST_NAME_MAX, size)); + g_hostname[HOST_NAME_MAX] = '\0'; + irqrestore(flags); + + return 0; } #endif /* CONFIG_NET */ diff --git a/net/Makefile b/net/Makefile index 413f159609..ce3faf0f3a 100644 --- a/net/Makefile +++ b/net/Makefile @@ -68,7 +68,6 @@ include local/Make.defs include tcp/Make.defs include udp/Make.defs include devif/Make.defs -include netdb/Make.defs include route/Make.defs include utils/Make.defs endif diff --git a/net/README.txt b/net/README.txt index c4f12ffd22..db0a59452a 100644 --- a/net/README.txt +++ b/net/README.txt @@ -21,7 +21,6 @@ Directory Structure +- route - Routing table support +- tcp - Transmission Control Protocol +- udp - User Datagram Protocol - +- netdb - Host name support `- utils - Miscellaneous utility functions diff --git a/net/netdb/Make.defs b/net/netdb/Make.defs deleted file mode 100644 index b4ac51d7e8..0000000000 --- a/net/netdb/Make.defs +++ /dev/null @@ -1,43 +0,0 @@ -############################################################################ -# net/netdb/Make.defs -# -# Copyright (C) 2015 Gregory Nutt. All rights reserved. -# Author: Gregory Nutt -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# 3. Neither the name NuttX nor the names of its contributors may be -# used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS -# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED -# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# -############################################################################ - -# Network database interface source files - -NET_CSRCS += netdb_gethostname.c netdb_sethostname.c netdb_globals.c - -# Include database device interface build support - -DEPPATH += --dep-path netdb -VPATH += :netdb diff --git a/net/netdb/netdb.h b/net/netdb/netdb.h deleted file mode 100644 index cb86302db7..0000000000 --- a/net/netdb/netdb.h +++ /dev/null @@ -1,76 +0,0 @@ -/**************************************************************************** - * net/netdb/netdb.h - * - * Copyright (C) 2015 Gregory Nutt. All rights reserved. - * Author: Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -#ifndef _NET_NETDB_NETDB_H -#define _NET_NETDB_NETDB_H - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -#ifdef __cplusplus -#define EXTERN extern "C" -extern "C" -{ -#else -#define EXTERN extern -#endif - -/* This is the system hostname */ - -EXTERN char g_hostname[HOST_NAME_MAX + 1]; - -/**************************************************************************** - * Public Function Prototypes - ****************************************************************************/ - -#undef EXTERN -#ifdef __cplusplus -} -#endif - -#endif /* _NET_NETDB_NETDB_H */ diff --git a/net/netdb/netdb_gethostname.c b/net/netdb/netdb_gethostname.c deleted file mode 100644 index a7667ec2ce..0000000000 --- a/net/netdb/netdb_gethostname.c +++ /dev/null @@ -1,98 +0,0 @@ -/**************************************************************************** - * net/netdb/netdb_gethostname.c - * - * Copyright (C) 2015 Stavros Polymenis. All rights reserved. - * Copyright (C) 2015 Gregory Nutt. All rights reserved. - * Author: Stavros Polymenis - * Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include -#include -#include - -#include -#include - -#include "netdb/netdb.h" - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: netdb_gethostname - * - * Description: - * The netdb_gethostname() function will return the standard host name for - * the current machine. The namelen argument will specify the size of the - * array pointed to by the name argument. The returned name will be null- - * terminated, except that if namelen is an insufficient length to hold the - * host name, then the returned name will be truncated and it is - * unspecified whether the returned name is null-terminated. - * - * Host names are limited to {HOST_NAME_MAX} bytes. - * - * Input Parameters: - * name - The user-provided buffer to receive the host name. - * namelen - The size of the user provided buffer in bytes. - * - * Returned Value: - * Upon successful completion, 0 will be returned; otherwise, -1 will be - * returned. No errors are defined; errno variable is not set. - * - ****************************************************************************/ - -int netdb_gethostname(FAR char *name, size_t namelen) -{ - irqstate_t flags; - - /* Return the host name, truncating to fit into the user provided buffer. - * The hostname is global resource. There is a microscopic possibility - * that it could change while we are copying it. - */ - - flags = irqsave(); - strncpy(name, g_hostname, namelen); - irqrestore(flags); - - return 0; -} diff --git a/net/netdb/netdb_globals.c b/net/netdb/netdb_globals.c deleted file mode 100644 index fe29864b43..0000000000 --- a/net/netdb/netdb_globals.c +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** - * net/netdb/netdb_globals.c - * - * Copyright (C) 2015 Stavros Polymenis. All rights reserved. - * Copyright (C) 2015 Gregory Nutt. All rights reserved. - * Author: Stavros Polymenis - * Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include "netdb/netdb.h" - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -/* The default host name is a system configuration setting. This may be - * changed via sethostname(), however. - */ - -#ifndef CONFIG_NET_HOSTNAME -# define CONFIG_NET_HOSTNAME "" -#endif - -/**************************************************************************** - * Public Data - ****************************************************************************/ - -/* This is the system hostname */ - -char g_hostname[HOST_NAME_MAX + 1] = CONFIG_NET_HOSTNAME; - -/**************************************************************************** - * Public Functions - ****************************************************************************/ diff --git a/net/netdb/netdb_sethostname.c b/net/netdb/netdb_sethostname.c deleted file mode 100644 index 8114534aa5..0000000000 --- a/net/netdb/netdb_sethostname.c +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************************** - * net/netdb/netdb_sethostname.c - * - * Copyright (C) 2015 Stavros Polymenis. All rights reserved. - * Copyright (C) 2015 Gregory Nutt. All rights reserved. - * Author: Stavros Polymenis - * Gregory Nutt - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * 3. Neither the name NuttX nor the names of its contributors may be - * used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS - * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED - * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - ****************************************************************************/ - -/**************************************************************************** - * Included Files - ****************************************************************************/ - -#include - -#include -#include - -#include -#include - -#include "netdb/netdb.h" - -/**************************************************************************** - * Pre-processor Definitions - ****************************************************************************/ - -#ifndef MIN -# define MIN(a,b) ((a) < (b) ? (a) : (b)) -#endif - -#ifndef MAX -# define MAX(a,b) ((a) > (b) ? (a) : (b)) -#endif - -/**************************************************************************** - * Public Functions - ****************************************************************************/ - -/**************************************************************************** - * Name: netdb_sethostname - * - * Description: - * - * netdb_sethostname() sets the hostname to the value given in the - * character array name. The len argument specifies the number of bytes in - * name. (Thus, name does not require a terminating null byte.) - * - * Input Parameters: - * name - The user buffer to providing the new host name. - * namelen - The size of the user buffer in bytes. - * - * Returned Value: - * Upon successful completion, 0 will be returned; otherwise, -1 will be - * returned. No errors are defined; errno variable is not set. - * - ****************************************************************************/ - -int netdb_sethostname(FAR const char *name, size_t size) -{ - irqstate_t flags; - - /* Save the new host name, truncating to HOST_NAME_MAX if necessary. This - * internal copy is always NUL terminated. The hostname is global resource. - * There is a microscopic possibility that it could be accessed while we - * are setting it. - */ - - flags = irqsave(); - strncpy(g_hostname, name, MIN(HOST_NAME_MAX, size)); - g_hostname[HOST_NAME_MAX] = '\0'; - irqrestore(flags); - - return 0; -}