diff options
author | Elliott Hughes <enh@google.com> | 2018-06-27 13:30:02 -0700 |
---|---|---|
committer | Elliott Hughes <enh@google.com> | 2018-06-27 14:08:48 -0700 |
commit | e7d185f59e50afb0b1d9105f7d426584167be0f0 (patch) | |
tree | ad2bac24da7280235bfa65bc315c14b58cc86664 | |
parent | e5a5eec5e588957aba2582ef25795bb3b573669f (diff) | |
download | bionic-e7d185f59e50afb0b1d9105f7d426584167be0f0.tar.gz |
<sys/un.h>: add SUN_LEN.
Also used by lldb.
Bug: N/A
Test: ran tests
Change-Id: I4c2aa60e7a3d8c691742c12ebde142d9438bf60f
-rw-r--r-- | libc/include/sys/un.h | 5 | ||||
-rw-r--r-- | tests/Android.bp | 1 | ||||
-rw-r--r-- | tests/sys_un_test.cpp | 27 |
3 files changed, 33 insertions, 0 deletions
diff --git a/libc/include/sys/un.h b/libc/include/sys/un.h index 3e1c429d7..03ef5e423 100644 --- a/libc/include/sys/un.h +++ b/libc/include/sys/un.h @@ -33,4 +33,9 @@ #include <linux/un.h> #include <sys/cdefs.h> +#if defined(__USE_BSD) || defined(__USE_GNU) +#include <string.h> +#define SUN_LEN(__ptr) (offsetof(struct sockaddr_un, sun_path) + strlen((__ptr)->sun_path)) +#endif + #endif diff --git a/tests/Android.bp b/tests/Android.bp index 00f285657..b504fa109 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -167,6 +167,7 @@ cc_test_library { "sys_ttydefaults_test.cpp", "sys_types_test.cpp", "sys_uio_test.cpp", + "sys_un_test.cpp", "sys_vfs_test.cpp", "sys_xattr_test.cpp", "system_properties_test.cpp", diff --git a/tests/sys_un_test.cpp b/tests/sys_un_test.cpp new file mode 100644 index 000000000..08a4d0f2e --- /dev/null +++ b/tests/sys_un_test.cpp @@ -0,0 +1,27 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <sys/un.h> + +#include <string.h> +#include <gtest/gtest.h> + +TEST(sys_un, SUN_LEN_macro) { + sockaddr_un sun = {}; + sun.sun_family = 1; + strcpy(sun.sun_path, "hello"); + ASSERT_EQ(2U + strlen("hello"), SUN_LEN(&sun)); +} |