[libcxx-commits] [libcxx] 1e337b1 - [libc++] Revert "[SystemZ][z/OS] Missing wchar functions libc++"
Louis Dionne via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Mar 22 14:35:46 PDT 2021
Author: Louis Dionne
Date: 2021-03-22T17:35:43-04:00
New Revision: 1e337b1dd90369763ebe6aa4eb3e563c61ddb213
URL: https://github.com/llvm/llvm-project/commit/1e337b1dd90369763ebe6aa4eb3e563c61ddb213
DIFF: https://github.com/llvm/llvm-project/commit/1e337b1dd90369763ebe6aa4eb3e563c61ddb213.diff
LOG: [libc++] Revert "[SystemZ][z/OS] Missing wchar functions libc++"
This reverts commit febbf68b423b14d55a14980d2ba3ec37ef1e31dc because it
added files that were not under the LLVM license.
See https://reviews.llvm.org/D98207 for details.
Added:
Modified:
libcxx/include/wchar.h
libcxx/src/CMakeLists.txt
Removed:
libcxx/src/support/ibm/mbsnrtowcs.inc
libcxx/src/support/ibm/wcsnrtombs.inc
################################################################################
diff --git a/libcxx/include/wchar.h b/libcxx/include/wchar.h
index e4ba50046294..b21a78968e23 100644
--- a/libcxx/include/wchar.h
+++ b/libcxx/include/wchar.h
@@ -170,13 +170,13 @@ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD
}
#endif
-#if defined(__cplusplus) && (defined(_LIBCPP_MSVCRT_LIKE) || defined(__MVS__))
+#if defined(__cplusplus) && defined(_LIBCPP_MSVCRT_LIKE)
extern "C" {
size_t mbsnrtowcs(wchar_t *__restrict dst, const char **__restrict src,
size_t nmc, size_t len, mbstate_t *__restrict ps);
size_t wcsnrtombs(char *__restrict dst, const wchar_t **__restrict src,
size_t nwc, size_t len, mbstate_t *__restrict ps);
-} // extern "C"
-#endif // __cplusplus && (_LIBCPP_MSVCRT || __MVS__)
+} // extern "C++"
+#endif // __cplusplus && _LIBCPP_MSVCRT
#endif // _LIBCPP_WCHAR_H
diff --git a/libcxx/src/CMakeLists.txt b/libcxx/src/CMakeLists.txt
index 2afc69be37b8..55fb1a6ed3c4 100644
--- a/libcxx/src/CMakeLists.txt
+++ b/libcxx/src/CMakeLists.txt
@@ -92,8 +92,6 @@ elseif("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
)
elseif(ZOS)
list(APPEND LIBCXX_SOURCES
- support/ibm/mbsnrtowcs.inc
- support/ibm/wcsnrtombs.inc
support/ibm/xlocale_zos.cpp
)
endif()
diff --git a/libcxx/src/support/ibm/mbsnrtowcs.inc b/libcxx/src/support/ibm/mbsnrtowcs.inc
deleted file mode 100644
index aad3057df792..000000000000
--- a/libcxx/src/support/ibm/mbsnrtowcs.inc
+++ /dev/null
@@ -1,72 +0,0 @@
-/*-
- * Some portions of this implementation are copied from
- * FreeBSD libc. These are covered by the following copyright:
- *
- * Copyright (c) 2002-2004 Tim J. Robbins.
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-size_t
-mbsnrtowcs(wchar_t * __restrict dst, const char ** __restrict src,
- size_t nms, size_t len, mbstate_t * __restrict ps) {
- const char *s;
- size_t nchr;
- wchar_t wc;
- size_t nb;
-
- s = *src;
- nchr = 0;
-
- if (dst == NULL) {
- for (;;) {
- if ((nb = mbrtowc(&wc, s, nms, ps)) == (size_t)-1)
- /* Invalid sequence - mbrtowc() sets errno. */
- return ((size_t)-1);
- else if (nb == 0 || nb == (size_t)-2)
- return (nchr);
- s += nb;
- nms -= nb;
- nchr++;
- }
- /*NOTREACHED*/
- }
-
- while (len-- > 0) {
- if ((nb = mbrtowc(dst, s, nms, ps)) == (size_t)-1) {
- *src = s;
- return ((size_t)-1);
- } else if (nb == (size_t)-2) {
- *src = s + nms;
- return (nchr);
- } else if (nb == 0) {
- *src = NULL;
- return (nchr);
- }
- s += nb;
- nms -= nb;
- nchr++;
- dst++;
- }
- *src = s;
- return (nchr);
-}
diff --git a/libcxx/src/support/ibm/wcsnrtombs.inc b/libcxx/src/support/ibm/wcsnrtombs.inc
deleted file mode 100644
index 89c435e5cc4a..000000000000
--- a/libcxx/src/support/ibm/wcsnrtombs.inc
+++ /dev/null
@@ -1,90 +0,0 @@
-/*-
- * Copyright (c) 2002-2004 Tim J. Robbins.
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-size_t
-wcsnrtombs(char * __restrict dst, const wchar_t ** __restrict src,
- size_t nwc, size_t len, mbstate_t * __restrict ps) {
- mbstate_t mbsbak;
- char buf[MB_CUR_MAX];
- const wchar_t *s;
- size_t nbytes;
- size_t nb;
-
- s = *src;
- nbytes = 0;
-
- if (dst == NULL) {
- while (nwc-- > 0) {
- if ((nb = wcrtomb(buf, *s, ps)) == (size_t)-1)
- /* Invalid character - wcrtomb() sets errno. */
- return ((size_t)-1);
- else if (*s == L'\0')
- return (nbytes + nb - 1);
- s++;
- nbytes += nb;
- }
- return (nbytes);
- }
-
- while (len > 0 && nwc-- > 0) {
- if (len > (size_t)MB_CUR_MAX) {
- /* Enough space to translate in-place. */
- if ((nb = wcrtomb(dst, *s, ps)) == (size_t)-1) {
- *src = s;
- return ((size_t)-1);
- }
- } else {
- /*
- * May not be enough space; use temp. buffer.
- *
- * We need to save a copy of the conversion state
- * here so we can restore it if the multibyte
- * character is too long for the buffer.
- */
- mbsbak = *ps;
- if ((nb = wcrtomb(buf, *s, ps)) == (size_t)-1) {
- *src = s;
- return ((size_t)-1);
- }
- if (nb > len) {
- /* MB sequence for character won't fit. */
- *ps = mbsbak;
- break;
- }
- memcpy(dst, buf, nb);
- }
- if (*s == L'\0') {
- *src = NULL;
- return (nbytes + nb - 1);
- }
- s++;
- dst += nb;
- len -= nb;
- nbytes += nb;
- }
- *src = s;
- return (nbytes);
-}
-
More information about the libcxx-commits
mailing list