am 5c7816f4
: Merge "More OpenBSD cleanup (primarily string)."
* commit '5c7816f425cb70ca6920e816aba33ce3d691ef10': More OpenBSD cleanup (primarily string).
This commit is contained in:
commit
6358fc2d0b
@ -84,9 +84,7 @@ libc/
|
|||||||
netbsd/
|
netbsd/
|
||||||
stdio/
|
stdio/
|
||||||
stdlib/
|
stdlib/
|
||||||
string/
|
|
||||||
unistd/
|
unistd/
|
||||||
wchar/
|
|
||||||
# These are legacy files of unknown provenance. In the past, bionic was a
|
# These are legacy files of unknown provenance. In the past, bionic was a
|
||||||
# mess of random versions of random files from all three of FreeBSD, NetBSD,
|
# mess of random versions of random files from all three of FreeBSD, NetBSD,
|
||||||
# and OpenBSD! We've been working to clean that up, but these directories
|
# and OpenBSD! We've been working to clean that up, but these directories
|
||||||
|
@ -45,7 +45,6 @@ libc_common_src_files := \
|
|||||||
bionic/ether_aton.c \
|
bionic/ether_aton.c \
|
||||||
bionic/ether_ntoa.c \
|
bionic/ether_ntoa.c \
|
||||||
bionic/fdprintf.c \
|
bionic/fdprintf.c \
|
||||||
bionic/flockfile.c \
|
|
||||||
bionic/ftime.c \
|
bionic/ftime.c \
|
||||||
bionic/fts.c \
|
bionic/fts.c \
|
||||||
bionic/getdtablesize.c \
|
bionic/getdtablesize.c \
|
||||||
@ -109,8 +108,6 @@ libc_common_src_files := \
|
|||||||
unistd/syslog.c \
|
unistd/syslog.c \
|
||||||
unistd/system.c \
|
unistd/system.c \
|
||||||
unistd/time.c \
|
unistd/time.c \
|
||||||
wchar/wcswidth.c \
|
|
||||||
wchar/wcsxfrm.c \
|
|
||||||
|
|
||||||
# Fortify implementations of libc functions.
|
# Fortify implementations of libc functions.
|
||||||
libc_common_src_files += \
|
libc_common_src_files += \
|
||||||
@ -149,6 +146,7 @@ libc_bionic_src_files := \
|
|||||||
bionic/eventfd_read.cpp \
|
bionic/eventfd_read.cpp \
|
||||||
bionic/eventfd_write.cpp \
|
bionic/eventfd_write.cpp \
|
||||||
bionic/ffs.cpp \
|
bionic/ffs.cpp \
|
||||||
|
bionic/flockfile.cpp \
|
||||||
bionic/fork.cpp \
|
bionic/fork.cpp \
|
||||||
bionic/futimens.cpp \
|
bionic/futimens.cpp \
|
||||||
bionic/getauxval.cpp \
|
bionic/getauxval.cpp \
|
||||||
@ -261,7 +259,6 @@ libc_upstream_freebsd_src_files := \
|
|||||||
upstream-freebsd/lib/libc/string/wcscspn.c \
|
upstream-freebsd/lib/libc/string/wcscspn.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsdup.c \
|
upstream-freebsd/lib/libc/string/wcsdup.c \
|
||||||
upstream-freebsd/lib/libc/string/wcslcat.c \
|
upstream-freebsd/lib/libc/string/wcslcat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcslcpy.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcsncasecmp.c \
|
upstream-freebsd/lib/libc/string/wcsncasecmp.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsncat.c \
|
upstream-freebsd/lib/libc/string/wcsncat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsncmp.c \
|
upstream-freebsd/lib/libc/string/wcsncmp.c \
|
||||||
@ -319,6 +316,80 @@ libc_upstream_netbsd_src_files := \
|
|||||||
upstream-netbsd/lib/libc/thread-stub/__isthreaded.c \
|
upstream-netbsd/lib/libc/thread-stub/__isthreaded.c \
|
||||||
upstream-netbsd/lib/libc/unistd/killpg.c \
|
upstream-netbsd/lib/libc/unistd/killpg.c \
|
||||||
|
|
||||||
|
libc_upstream_openbsd_src_files := \
|
||||||
|
upstream-openbsd/lib/libc/gen/exec.c \
|
||||||
|
upstream-openbsd/lib/libc/gen/ftok.c \
|
||||||
|
upstream-openbsd/lib/libc/gen/fnmatch.c \
|
||||||
|
upstream-openbsd/lib/libc/gen/toupper_.c \
|
||||||
|
upstream-openbsd/lib/libc/gen/tolower_.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strstr.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strsep.c \
|
||||||
|
upstream-openbsd/lib/libc/string/wcslcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcasecmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strdup.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcspn.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strtok.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strpbrk.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strspn.c \
|
||||||
|
upstream-openbsd/lib/libc/string/wcswidth.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strndup.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/ungetc.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/vsnprintf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/tmpnam.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/setbuffer.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fsetpos.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/setbuf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/vprintf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/perror.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/remove.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/getc.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/funopen.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/ferror.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/putchar.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/vscanf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fflush.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fpurge.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fputs.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/tempnam.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/printf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fileno.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/stdio.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/getdelim.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fseek.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fputc.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fgetln.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fdopen.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fgets.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fgetc.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/feof.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/vasprintf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/refill.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/getline.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/rewind.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/wbuf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/gets.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fgetpos.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fscanf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/putc.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/vsprintf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/rget.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/clrerr.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/scanf.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/puts.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/getchar.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/ftell.c \
|
||||||
|
upstream-openbsd/lib/libc/stdio/fwalk.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/strtoul.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/strtoull.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/atoi.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/atoll.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/atol.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/strtoimax.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/strtoumax.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/strtoll.c \
|
||||||
|
upstream-openbsd/lib/libc/stdlib/strtol.c \
|
||||||
|
upstream-openbsd/lib/libc/locale/wcsxfrm.c \
|
||||||
|
|
||||||
libc_arch_static_src_files := \
|
libc_arch_static_src_files := \
|
||||||
bionic/dl_iterate_phdr_static.cpp \
|
bionic/dl_iterate_phdr_static.cpp \
|
||||||
|
|
||||||
@ -514,7 +585,7 @@ include $(BUILD_STATIC_LIBRARY)
|
|||||||
|
|
||||||
include $(CLEAR_VARS)
|
include $(CLEAR_VARS)
|
||||||
|
|
||||||
LOCAL_SRC_FILES := $(call all-c-files-under,upstream-openbsd)
|
LOCAL_SRC_FILES := $(libc_upstream_openbsd_src_files)
|
||||||
LOCAL_CFLAGS := \
|
LOCAL_CFLAGS := \
|
||||||
$(libc_common_cflags) \
|
$(libc_common_cflags) \
|
||||||
-I$(LOCAL_PATH)/upstream-openbsd \
|
-I$(LOCAL_PATH)/upstream-openbsd \
|
||||||
|
@ -10,19 +10,13 @@ libc_bionic_src_files_arm := \
|
|||||||
bionic/mmap.cpp
|
bionic/mmap.cpp
|
||||||
|
|
||||||
libc_common_src_files_arm += \
|
libc_common_src_files_arm += \
|
||||||
|
bionic/index.cpp \
|
||||||
bionic/memchr.c \
|
bionic/memchr.c \
|
||||||
bionic/memmove.c.arm \
|
bionic/memmove.c.arm \
|
||||||
bionic/memrchr.c \
|
bionic/memrchr.c \
|
||||||
bionic/strchr.cpp \
|
bionic/strchr.cpp \
|
||||||
bionic/strnlen.c \
|
bionic/strnlen.c \
|
||||||
string/bcopy.c \
|
bionic/strrchr.cpp \
|
||||||
string/index.c \
|
|
||||||
string/strlcat.c \
|
|
||||||
string/strlcpy.c \
|
|
||||||
string/strncat.c \
|
|
||||||
string/strncmp.c \
|
|
||||||
string/strncpy.c \
|
|
||||||
string/strrchr.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcscat.c \
|
upstream-freebsd/lib/libc/string/wcscat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcschr.c \
|
upstream-freebsd/lib/libc/string/wcschr.c \
|
||||||
upstream-freebsd/lib/libc/string/wcscmp.c \
|
upstream-freebsd/lib/libc/string/wcscmp.c \
|
||||||
@ -30,6 +24,12 @@ libc_common_src_files_arm += \
|
|||||||
upstream-freebsd/lib/libc/string/wcslen.c \
|
upstream-freebsd/lib/libc/string/wcslen.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
||||||
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/bcopy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncpy.c \
|
||||||
|
|
||||||
# The C++ fortify function implementations for which there is an
|
# The C++ fortify function implementations for which there is an
|
||||||
# arm assembler version.
|
# arm assembler version.
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
libc_bionic_src_files_arm += \
|
libc_bionic_src_files_arm += \
|
||||||
arch-arm/generic/bionic/memcpy.S \
|
arch-arm/generic/bionic/memcpy.S \
|
||||||
arch-arm/generic/bionic/memset.S \
|
arch-arm/generic/bionic/memset.S \
|
||||||
string/strcat.c \
|
|
||||||
arch-arm/generic/bionic/strcmp.S \
|
arch-arm/generic/bionic/strcmp.S \
|
||||||
arch-arm/generic/bionic/strcpy.S \
|
arch-arm/generic/bionic/strcpy.S \
|
||||||
arch-arm/generic/bionic/strlen.c \
|
arch-arm/generic/bionic/strlen.c \
|
||||||
bionic/__strcat_chk.cpp \
|
bionic/__strcat_chk.cpp \
|
||||||
bionic/__strcpy_chk.cpp \
|
bionic/__strcpy_chk.cpp \
|
||||||
|
upstream-openbsd/lib/libc/string/strcat.c \
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
# arm64 specific configs
|
# arm64 specific configs
|
||||||
|
|
||||||
libc_common_src_files_arm64 := \
|
libc_common_src_files_arm64 := \
|
||||||
|
bionic/index.cpp \
|
||||||
bionic/memchr.c \
|
bionic/memchr.c \
|
||||||
|
bionic/__memcmp16.cpp \
|
||||||
bionic/memcmp.c \
|
bionic/memcmp.c \
|
||||||
bionic/memcpy.c \
|
bionic/memcpy.c \
|
||||||
bionic/memmove.c \
|
bionic/memmove.c \
|
||||||
@ -9,19 +11,7 @@ libc_common_src_files_arm64 := \
|
|||||||
bionic/memset.c \
|
bionic/memset.c \
|
||||||
bionic/strchr.cpp \
|
bionic/strchr.cpp \
|
||||||
bionic/strnlen.c \
|
bionic/strnlen.c \
|
||||||
string/bcopy.c \
|
bionic/strrchr.cpp \
|
||||||
string/index.c \
|
|
||||||
string/memcmp16.c \
|
|
||||||
string/strcat.c \
|
|
||||||
string/strcmp.c \
|
|
||||||
string/strcpy.c \
|
|
||||||
string/strlcat.c \
|
|
||||||
string/strlcpy.c \
|
|
||||||
string/strlen.c \
|
|
||||||
string/strncat.c \
|
|
||||||
string/strncmp.c \
|
|
||||||
string/strncpy.c \
|
|
||||||
string/strrchr.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcscat.c \
|
upstream-freebsd/lib/libc/string/wcscat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcschr.c \
|
upstream-freebsd/lib/libc/string/wcschr.c \
|
||||||
upstream-freebsd/lib/libc/string/wcscmp.c \
|
upstream-freebsd/lib/libc/string/wcscmp.c \
|
||||||
@ -29,6 +19,16 @@ libc_common_src_files_arm64 := \
|
|||||||
upstream-freebsd/lib/libc/string/wcslen.c \
|
upstream-freebsd/lib/libc/string/wcslen.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
||||||
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/bcopy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlen.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncpy.c \
|
||||||
|
|
||||||
# Fortify implementations of libc functions.
|
# Fortify implementations of libc functions.
|
||||||
libc_common_src_files_arm64 += \
|
libc_common_src_files_arm64 += \
|
||||||
|
@ -10,23 +10,14 @@ libc_bionic_src_files_mips += \
|
|||||||
bionic/mmap.cpp
|
bionic/mmap.cpp
|
||||||
|
|
||||||
libc_common_src_files_mips += \
|
libc_common_src_files_mips += \
|
||||||
|
bionic/index.cpp \
|
||||||
bionic/memchr.c \
|
bionic/memchr.c \
|
||||||
bionic/memcmp.c \
|
bionic/memcmp.c \
|
||||||
bionic/memmove.c \
|
bionic/memmove.c \
|
||||||
bionic/memrchr.c \
|
bionic/memrchr.c \
|
||||||
bionic/strchr.cpp \
|
bionic/strchr.cpp \
|
||||||
bionic/strnlen.c \
|
bionic/strnlen.c \
|
||||||
string/bcopy.c \
|
bionic/strrchr.cpp \
|
||||||
string/index.c \
|
|
||||||
string/strcat.c \
|
|
||||||
string/strcmp.c \
|
|
||||||
string/strcpy.c \
|
|
||||||
string/strlcat.c \
|
|
||||||
string/strlcpy.c \
|
|
||||||
string/strncat.c \
|
|
||||||
string/strncmp.c \
|
|
||||||
string/strncpy.c \
|
|
||||||
string/strrchr.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcscat.c \
|
upstream-freebsd/lib/libc/string/wcscat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcschr.c \
|
upstream-freebsd/lib/libc/string/wcschr.c \
|
||||||
upstream-freebsd/lib/libc/string/wcscmp.c \
|
upstream-freebsd/lib/libc/string/wcscmp.c \
|
||||||
@ -34,6 +25,15 @@ libc_common_src_files_mips += \
|
|||||||
upstream-freebsd/lib/libc/string/wcslen.c \
|
upstream-freebsd/lib/libc/string/wcslen.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
||||||
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/bcopy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncpy.c \
|
||||||
|
|
||||||
# Fortify implementations of libc functions.
|
# Fortify implementations of libc functions.
|
||||||
libc_common_src_files_mips += \
|
libc_common_src_files_mips += \
|
||||||
|
@ -1,23 +1,14 @@
|
|||||||
# mips64 specific configs
|
# mips64 specific configs
|
||||||
|
|
||||||
libc_common_src_files_mips64 := \
|
libc_common_src_files_mips64 := \
|
||||||
|
bionic/index.cpp \
|
||||||
bionic/memchr.c \
|
bionic/memchr.c \
|
||||||
bionic/memcmp.c \
|
bionic/memcmp.c \
|
||||||
bionic/memmove.c \
|
bionic/memmove.c \
|
||||||
bionic/memrchr.c \
|
bionic/memrchr.c \
|
||||||
bionic/strchr.cpp \
|
bionic/strchr.cpp \
|
||||||
bionic/strnlen.c \
|
bionic/strnlen.c \
|
||||||
string/bcopy.c \
|
bionic/strrchr.cpp \
|
||||||
string/index.c \
|
|
||||||
string/strcat.c \
|
|
||||||
string/strcmp.c \
|
|
||||||
string/strcpy.c \
|
|
||||||
string/strlcat.c \
|
|
||||||
string/strlcpy.c \
|
|
||||||
string/strncat.c \
|
|
||||||
string/strncmp.c \
|
|
||||||
string/strncpy.c \
|
|
||||||
string/strrchr.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcscat.c \
|
upstream-freebsd/lib/libc/string/wcscat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcschr.c \
|
upstream-freebsd/lib/libc/string/wcschr.c \
|
||||||
upstream-freebsd/lib/libc/string/wcscmp.c \
|
upstream-freebsd/lib/libc/string/wcscmp.c \
|
||||||
@ -25,6 +16,16 @@ libc_common_src_files_mips64 := \
|
|||||||
upstream-freebsd/lib/libc/string/wcslen.c \
|
upstream-freebsd/lib/libc/string/wcslen.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
||||||
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/bcopy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlen.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncpy.c \
|
||||||
|
|
||||||
# Fortify implementations of libc functions.
|
# Fortify implementations of libc functions.
|
||||||
libc_common_src_files_mips64 += \
|
libc_common_src_files_mips64 += \
|
||||||
@ -54,10 +55,8 @@ libc_bionic_src_files_mips64 := \
|
|||||||
# FIXME TODO
|
# FIXME TODO
|
||||||
## libc_bionic_src_files_mips64 += arch-mips64/string/memcpy.S
|
## libc_bionic_src_files_mips64 += arch-mips64/string/memcpy.S
|
||||||
## libc_bionic_src_files_mips64 += arch-mips64/string/memset.S
|
## libc_bionic_src_files_mips64 += arch-mips64/string/memset.S
|
||||||
## libc_bionic_src_files_mips64 += arch-mips64/string/mips_strlen.c
|
|
||||||
libc_bionic_src_files_mips64 += bionic/memcpy.c
|
libc_bionic_src_files_mips64 += bionic/memcpy.c
|
||||||
libc_bionic_src_files_mips64 += bionic/memset.c
|
libc_bionic_src_files_mips64 += bionic/memset.c
|
||||||
libc_bionic_src_files_mips64 += string/strlen.c
|
|
||||||
|
|
||||||
|
|
||||||
libc_crt_target_cflags_mips64 := \
|
libc_crt_target_cflags_mips64 := \
|
||||||
|
@ -58,15 +58,16 @@ libc_bionic_src_files_x86 += \
|
|||||||
arch-x86/string/strncmp.S \
|
arch-x86/string/strncmp.S \
|
||||||
arch-x86/string/strcat.S \
|
arch-x86/string/strcat.S \
|
||||||
arch-x86/string/memcmp.S \
|
arch-x86/string/memcmp.S \
|
||||||
string/memcmp16.c \
|
bionic/__memcmp16.cpp \
|
||||||
string/strcpy.c \
|
|
||||||
string/strncat.c \
|
|
||||||
string/strncpy.c \
|
|
||||||
string/strlcat.c \
|
|
||||||
string/strlcpy.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcscpy.c \
|
upstream-freebsd/lib/libc/string/wcscpy.c \
|
||||||
upstream-freebsd/lib/libc/string/wcscat.c \
|
upstream-freebsd/lib/libc/string/wcscat.c \
|
||||||
upstream-freebsd/lib/libc/string/wmemcmp.c
|
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncpy.c \
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
libc_bionic_src_files_x86 += \
|
libc_bionic_src_files_x86 += \
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
# x86_64 specific configs
|
# x86_64 specific configs
|
||||||
|
|
||||||
libc_common_src_files_x86_64 := \
|
libc_common_src_files_x86_64 := \
|
||||||
|
bionic/index.cpp \
|
||||||
bionic/memchr.c \
|
bionic/memchr.c \
|
||||||
bionic/memcmp.c \
|
bionic/memcmp.c \
|
||||||
bionic/memcpy.c \
|
bionic/memcpy.c \
|
||||||
@ -9,18 +10,7 @@ libc_common_src_files_x86_64 := \
|
|||||||
bionic/memset.c \
|
bionic/memset.c \
|
||||||
bionic/strchr.cpp \
|
bionic/strchr.cpp \
|
||||||
bionic/strnlen.c \
|
bionic/strnlen.c \
|
||||||
string/bcopy.c \
|
bionic/strrchr.cpp \
|
||||||
string/index.c \
|
|
||||||
string/strcat.c \
|
|
||||||
string/strcmp.c \
|
|
||||||
string/strcpy.c \
|
|
||||||
string/strlcat.c \
|
|
||||||
string/strlcpy.c \
|
|
||||||
string/strlen.c \
|
|
||||||
string/strncat.c \
|
|
||||||
string/strncmp.c \
|
|
||||||
string/strncpy.c \
|
|
||||||
string/strrchr.c \
|
|
||||||
upstream-freebsd/lib/libc/string/wcscat.c \
|
upstream-freebsd/lib/libc/string/wcscat.c \
|
||||||
upstream-freebsd/lib/libc/string/wcschr.c \
|
upstream-freebsd/lib/libc/string/wcschr.c \
|
||||||
upstream-freebsd/lib/libc/string/wcscmp.c \
|
upstream-freebsd/lib/libc/string/wcscmp.c \
|
||||||
@ -28,6 +18,16 @@ libc_common_src_files_x86_64 := \
|
|||||||
upstream-freebsd/lib/libc/string/wcslen.c \
|
upstream-freebsd/lib/libc/string/wcslen.c \
|
||||||
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
upstream-freebsd/lib/libc/string/wcsrchr.c \
|
||||||
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
upstream-freebsd/lib/libc/string/wmemcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/bcopy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlcpy.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strlen.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncat.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncmp.c \
|
||||||
|
upstream-openbsd/lib/libc/string/strncpy.c \
|
||||||
|
|
||||||
# Fortify implementations of libc functions.
|
# Fortify implementations of libc functions.
|
||||||
libc_common_src_files_x86_64 += \
|
libc_common_src_files_x86_64 += \
|
||||||
@ -51,8 +51,7 @@ libc_bionic_src_files_x86_64 := \
|
|||||||
arch-x86_64/bionic/sigsetjmp.S \
|
arch-x86_64/bionic/sigsetjmp.S \
|
||||||
arch-x86_64/bionic/syscall.S \
|
arch-x86_64/bionic/syscall.S \
|
||||||
arch-x86_64/bionic/vfork.S \
|
arch-x86_64/bionic/vfork.S \
|
||||||
string/memcmp16.c \
|
bionic/__memcmp16.cpp \
|
||||||
|
|
||||||
|
|
||||||
libc_crt_target_cflags_x86_64 += \
|
libc_crt_target_cflags_x86_64 += \
|
||||||
-m64 \
|
-m64 \
|
||||||
|
@ -30,14 +30,13 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
|
|
||||||
/* Unoptimised version of __memcmp16 */
|
// Unoptimized version of __memcmp16.
|
||||||
int __memcmp16(const unsigned short *ptr1, const unsigned short *ptr2, size_t n)
|
int __memcmp16(const unsigned short *ptr1, const unsigned short *ptr2, size_t n) {
|
||||||
{
|
|
||||||
size_t i;
|
|
||||||
|
|
||||||
for (i = 0; i < n; i++) {
|
for (size_t i = 0; i < n; i++) {
|
||||||
if (*ptr1 != *ptr2)
|
if (*ptr1 != *ptr2) {
|
||||||
return *ptr1 - *ptr2;
|
return *ptr1 - *ptr2;
|
||||||
|
}
|
||||||
ptr1++;
|
ptr1++;
|
||||||
ptr2++;
|
ptr2++;
|
||||||
}
|
}
|
@ -1,4 +1,3 @@
|
|||||||
/* $OpenBSD: rindex.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 Regents of the University of California.
|
* Copyright (c) 1988 Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
@ -26,50 +26,33 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* implement flockfile(), ftrylockfile() and funlockfile()
|
|
||||||
*
|
|
||||||
* we can't use the OpenBSD implementation which uses kernel-specific
|
|
||||||
* APIs not available on Linux.
|
|
||||||
*
|
|
||||||
* Instead, we use a pthread_mutex_t within the FILE* internal state.
|
|
||||||
* See fileext.h for details.
|
|
||||||
*
|
|
||||||
* the behaviour, if fclose() is called while the corresponding
|
|
||||||
* file is locked is totally undefined.
|
|
||||||
*/
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "fileext.h"
|
#include "fileext.h"
|
||||||
|
|
||||||
|
// We can't use the OpenBSD implementation which uses kernel-specific
|
||||||
|
// APIs not available on Linux. Instead we use a pthread_mutex_t within
|
||||||
|
// struct __sfileext (see fileext.h).
|
||||||
|
|
||||||
void
|
void flockfile(FILE* fp) {
|
||||||
flockfile(FILE * fp)
|
|
||||||
{
|
|
||||||
if (fp != NULL) {
|
if (fp != NULL) {
|
||||||
_FLOCK_LOCK(fp);
|
pthread_mutex_lock(&_FLOCK(fp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int ftrylockfile(FILE* fp) {
|
||||||
|
// The specification for ftrylockfile() says it returns 0 on success,
|
||||||
|
// or non-zero on error. So return an errno code directly on error.
|
||||||
|
if (fp == NULL) {
|
||||||
|
return EINVAL;
|
||||||
|
}
|
||||||
|
|
||||||
int
|
return pthread_mutex_trylock(&_FLOCK(fp));
|
||||||
ftrylockfile(FILE *fp)
|
}
|
||||||
{
|
|
||||||
/* The specification for ftrylockfile() says it returns 0 on success,
|
|
||||||
* or non-zero on error. So return an errno code directly on error.
|
|
||||||
*/
|
|
||||||
int ret = EINVAL;
|
|
||||||
|
|
||||||
|
void funlockfile(FILE* fp) {
|
||||||
if (fp != NULL) {
|
if (fp != NULL) {
|
||||||
ret = _FLOCK_TRYLOCK(fp);
|
pthread_mutex_unlock(&_FLOCK(fp));
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
funlockfile(FILE * fp)
|
|
||||||
{
|
|
||||||
if (fp != NULL) {
|
|
||||||
_FLOCK_UNLOCK(fp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,3 @@
|
|||||||
/* $OpenBSD: index.c,v 1.5 2005/08/08 08:05:37 espie Exp $ */
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1990 The Regents of the University of California.
|
* Copyright (c) 1990 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -28,16 +27,9 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#undef _FORTIFY_SOURCE
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
char *
|
char* index(const char* p, int ch) {
|
||||||
index(const char *p, int ch)
|
return __strchr_chk(p, ch, __BIONIC_FORTIFY_UNKNOWN_SIZE);
|
||||||
{
|
|
||||||
for (;; ++p) {
|
|
||||||
if (*p == (char) ch)
|
|
||||||
return((char *)p);
|
|
||||||
if (!*p)
|
|
||||||
return((char *)NULL);
|
|
||||||
}
|
|
||||||
/* NOTREACHED */
|
|
||||||
}
|
}
|
@ -30,6 +30,6 @@
|
|||||||
#undef _FORTIFY_SOURCE
|
#undef _FORTIFY_SOURCE
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
extern "C" char* strchr(const char* p, int ch) {
|
char* strchr(const char* p, int ch) {
|
||||||
return __strchr_chk(p, ch, __BIONIC_FORTIFY_UNKNOWN_SIZE);
|
return __strchr_chk(p, ch, __BIONIC_FORTIFY_UNKNOWN_SIZE);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
/* $OpenBSD: rindex.c,v 1.6 2005/08/08 08:05:37 espie Exp $ */
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988 Regents of the University of California.
|
* Copyright (c) 1988 Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@ -28,10 +27,9 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#undef _FORTIFY_SOURCE
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
char *
|
char* strrchr(const char* p, int ch) {
|
||||||
strrchr(const char *p, int ch)
|
|
||||||
{
|
|
||||||
return __strrchr_chk(p, ch, __BIONIC_FORTIFY_UNKNOWN_SIZE);
|
return __strrchr_chk(p, ch, __BIONIC_FORTIFY_UNKNOWN_SIZE);
|
||||||
}
|
}
|
@ -49,6 +49,7 @@ extern char* strchr(const char *, int) __purefunc;
|
|||||||
extern char* __strchr_chk(const char *, int, size_t);
|
extern char* __strchr_chk(const char *, int, size_t);
|
||||||
|
|
||||||
extern char* strrchr(const char *, int) __purefunc;
|
extern char* strrchr(const char *, int) __purefunc;
|
||||||
|
extern char* __strrchr_chk(const char *, int, size_t);
|
||||||
|
|
||||||
extern size_t strlen(const char *) __purefunc;
|
extern size_t strlen(const char *) __purefunc;
|
||||||
extern size_t __strlen_chk(const char *, size_t);
|
extern size_t __strlen_chk(const char *, size_t);
|
||||||
@ -263,8 +264,6 @@ char* strchr(const char *s, int c) {
|
|||||||
return __strchr_chk(s, c, bos);
|
return __strchr_chk(s, c, bos);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern char* __strrchr_chk(const char *, int, size_t);
|
|
||||||
|
|
||||||
__BIONIC_FORTIFY_INLINE
|
__BIONIC_FORTIFY_INLINE
|
||||||
char* strrchr(const char *s, int c) {
|
char* strrchr(const char *s, int c) {
|
||||||
size_t bos = __bos(s);
|
size_t bos = __bos(s);
|
||||||
|
@ -147,6 +147,9 @@ extern wchar_t *wmemset(wchar_t *, wchar_t, size_t);
|
|||||||
extern int wprintf(const wchar_t *, ...);
|
extern int wprintf(const wchar_t *, ...);
|
||||||
extern int wscanf(const wchar_t *, ...);
|
extern int wscanf(const wchar_t *, ...);
|
||||||
|
|
||||||
|
extern size_t wcslcat(wchar_t*, const wchar_t*, size_t);
|
||||||
|
extern size_t wcslcpy(wchar_t*, const wchar_t*, size_t);
|
||||||
|
|
||||||
/* No really supported. These are just for making libstdc++-v3 happy. */
|
/* No really supported. These are just for making libstdc++-v3 happy. */
|
||||||
typedef void *wctrans_t;
|
typedef void *wctrans_t;
|
||||||
extern wint_t towctrans(wint_t, wctrans_t);
|
extern wint_t towctrans(wint_t, wctrans_t);
|
||||||
|
@ -52,18 +52,9 @@ do { \
|
|||||||
_UB(fp)._base = NULL; \
|
_UB(fp)._base = NULL; \
|
||||||
_UB(fp)._size = 0; \
|
_UB(fp)._size = 0; \
|
||||||
WCIO_INIT(fp); \
|
WCIO_INIT(fp); \
|
||||||
_FLOCK_INIT(fp); \
|
_FLOCK(fp).value = __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* Helper macros to avoid a function call when you know that fp is not NULL.
|
|
||||||
* Notice that we keep _FLOCK_INIT() fast by slightly breaking our pthread
|
|
||||||
* encapsulation.
|
|
||||||
*/
|
|
||||||
#define _FLOCK_INIT(fp) _FLOCK(fp).value = __PTHREAD_RECURSIVE_MUTEX_INIT_VALUE
|
|
||||||
#define _FLOCK_LOCK(fp) pthread_mutex_lock(&_FLOCK(fp))
|
|
||||||
#define _FLOCK_TRYLOCK(fp) pthread_mutex_trylock(&_FLOCK(fp))
|
|
||||||
#define _FLOCK_UNLOCK(fp) pthread_mutex_unlock(&_FLOCK(fp))
|
|
||||||
|
|
||||||
#define _FILEEXT_SETUP(f, fext) \
|
#define _FILEEXT_SETUP(f, fext) \
|
||||||
do { \
|
do { \
|
||||||
(f)->_ext._base = (unsigned char *)(fext); \
|
(f)->_ext._base = (unsigned char *)(fext); \
|
||||||
|
@ -1,70 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* 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. The name of the author may not be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED ``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 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.
|
|
||||||
*
|
|
||||||
* from OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
#if 0
|
|
||||||
#if defined(LIBC_SCCS) && !defined(lint)
|
|
||||||
__RCSID("$NetBSD: wcslcpy.c,v 1.1 2000/12/23 23:14:36 itojun Exp $");
|
|
||||||
#endif /* LIBC_SCCS and not lint */
|
|
||||||
#endif
|
|
||||||
__FBSDID("$FreeBSD$");
|
|
||||||
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <wchar.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Copy src to string dst of size siz. At most siz-1 characters
|
|
||||||
* will be copied. Always NUL terminates (unless siz == 0).
|
|
||||||
* Returns wcslen(src); if retval >= siz, truncation occurred.
|
|
||||||
*/
|
|
||||||
size_t
|
|
||||||
wcslcpy(wchar_t *dst, const wchar_t *src, size_t siz)
|
|
||||||
{
|
|
||||||
wchar_t *d = dst;
|
|
||||||
const wchar_t *s = src;
|
|
||||||
size_t n = siz;
|
|
||||||
|
|
||||||
/* Copy as many bytes as will fit */
|
|
||||||
if (n != 0 && --n != 0) {
|
|
||||||
do {
|
|
||||||
if ((*d++ = *s++) == 0)
|
|
||||||
break;
|
|
||||||
} while (--n != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Not enough room in dst, add NUL and traverse rest of src */
|
|
||||||
if (n == 0) {
|
|
||||||
if (siz != 0)
|
|
||||||
*d = '\0'; /* NUL-terminate dst */
|
|
||||||
while (*s++)
|
|
||||||
;
|
|
||||||
}
|
|
||||||
|
|
||||||
return(s - src - 1); /* count does not include NUL */
|
|
||||||
}
|
|
@ -1,14 +1,10 @@
|
|||||||
|
/* $OpenBSD: wcsxfrm.c,v 1.2 2012/12/05 23:20:00 deraadt Exp $ */
|
||||||
|
/* $OpenBSD: wcsxfrm.c,v 1.2 2012/12/05 23:20:00 deraadt Exp $ */
|
||||||
|
/* $NetBSD: multibyte_sb.c,v 1.4 2003/08/07 16:43:04 agc Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1989, 1993
|
* Copyright (c) 1991 The Regents of the University of California.
|
||||||
* The Regents of the University of California. All rights reserved.
|
* All rights reserved.
|
||||||
* (c) UNIX System Laboratories, Inc.
|
|
||||||
* All or some portions of this file are derived from material licensed
|
|
||||||
* to the University of California by American Telephone and Telegraph
|
|
||||||
* Co. or Unix System Laboratories, Inc. and are reproduced herein with
|
|
||||||
* the permission of UNIX System Laboratories, Inc.
|
|
||||||
*
|
|
||||||
* This code is derived from software contributed to Berkeley by
|
|
||||||
* Paul Borman at Krystal Technologies.
|
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions
|
* modification, are permitted provided that the following conditions
|
||||||
@ -18,7 +14,7 @@
|
|||||||
* 2. Redistributions in binary form must reproduce the above copyright
|
* 2. Redistributions in binary form must reproduce the above copyright
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
* 4. Neither the name of the University nor the names of its contributors
|
* 3. Neither the name of the University nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
* may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
* without specific prior written permission.
|
||||||
*
|
*
|
||||||
@ -35,23 +31,12 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <sys/cdefs.h>
|
|
||||||
__FBSDID("$FreeBSD$");
|
|
||||||
|
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
|
|
||||||
int
|
size_t
|
||||||
wcswidth(const wchar_t *pwcs, size_t n)
|
wcsxfrm(wchar_t *dest, const wchar_t *src, size_t n)
|
||||||
{
|
{
|
||||||
wchar_t wc;
|
if (n == 0)
|
||||||
int len, l;
|
return wcslen(src);
|
||||||
|
return wcslcpy(dest, src, n);
|
||||||
len = 0;
|
|
||||||
while (n-- > 0 && (wc = *pwcs++) != L'\0') {
|
|
||||||
if ((l = wcwidth(wc)) < 0)
|
|
||||||
return (-1);
|
|
||||||
len += l;
|
|
||||||
}
|
}
|
||||||
return (len);
|
|
||||||
}
|
|
||||||
|
|
@ -29,7 +29,16 @@
|
|||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if !defined(_KERNEL) && !defined(_STANDALONE)
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#else
|
||||||
|
#include <lib/libkern/libkern.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(APIWARN)
|
||||||
|
__warn_references(strcpy,
|
||||||
|
"warning: strcpy() is almost always misused, please use strlcpy()");
|
||||||
|
#endif
|
||||||
|
|
||||||
char *
|
char *
|
||||||
strcpy(char *to, const char *from)
|
strcpy(char *to, const char *from)
|
@ -38,6 +38,7 @@
|
|||||||
int
|
int
|
||||||
strncmp(const char *s1, const char *s2, size_t n)
|
strncmp(const char *s1, const char *s2, size_t n)
|
||||||
{
|
{
|
||||||
|
|
||||||
if (n == 0)
|
if (n == 0)
|
||||||
return (0);
|
return (0);
|
||||||
do {
|
do {
|
52
libc/upstream-openbsd/lib/libc/string/wcslcpy.c
Normal file
52
libc/upstream-openbsd/lib/libc/string/wcslcpy.c
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
/* $OpenBSD: wcslcpy.c,v 1.5 2011/07/24 15:21:28 millert Exp $ */
|
||||||
|
/* $NetBSD: wcslcpy.c,v 1.2 2001/01/03 14:33:02 lukem Exp $ */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
*
|
||||||
|
* Permission to use, copy, modify, and distribute this software for any
|
||||||
|
* purpose with or without fee is hereby granted, provided that the above
|
||||||
|
* copyright notice and this permission notice appear in all copies.
|
||||||
|
*
|
||||||
|
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copy src to string dst of size siz. At most siz-1 characters
|
||||||
|
* will be copied. Always NUL terminates (unless siz == 0).
|
||||||
|
* Returns wcslen(src); if retval >= siz, truncation occurred.
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
wcslcpy(wchar_t *dst, const wchar_t *src, size_t siz)
|
||||||
|
{
|
||||||
|
wchar_t *d = dst;
|
||||||
|
const wchar_t *s = src;
|
||||||
|
size_t n = siz;
|
||||||
|
|
||||||
|
/* Copy as many bytes as will fit */
|
||||||
|
if (n != 0) {
|
||||||
|
while (--n != 0) {
|
||||||
|
if ((*d++ = *s++) == '\0')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Not enough room in dst, add NUL and traverse rest of src */
|
||||||
|
if (n == 0) {
|
||||||
|
if (siz != 0)
|
||||||
|
*d = '\0'; /* NUL-terminate dst */
|
||||||
|
while (*s++)
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
return(s - src - 1); /* count does not include NUL */
|
||||||
|
}
|
@ -1,6 +1,8 @@
|
|||||||
|
/* $OpenBSD: wcswidth.c,v 1.4 2011/04/04 18:16:24 stsp Exp $ */
|
||||||
|
/* $NetBSD: wcswidth.c,v 1.2 2001/01/03 14:29:37 lukem Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1995 Alex Tatmanjants <alex@elvisti.kiev.ua>
|
* Copyright (c)1999 Citrus Project,
|
||||||
* at Electronni Visti IA, Kiev, Ukraine.
|
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@ -12,10 +14,10 @@
|
|||||||
* notice, this list of conditions and the following disclaimer in the
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
* documentation and/or other materials provided with the distribution.
|
* documentation and/or other materials provided with the distribution.
|
||||||
*
|
*
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
|
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
||||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||||
@ -23,35 +25,26 @@
|
|||||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
* 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
|
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
* SUCH DAMAGE.
|
* SUCH DAMAGE.
|
||||||
|
*
|
||||||
|
* citrus Id: wcswidth.c,v 1.1 1999/12/29 21:47:45 tshiozak Exp
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <wchar.h>
|
#include <wchar.h>
|
||||||
|
|
||||||
/*
|
int
|
||||||
* Placeholder wcsxfrm() implementation. See wcscoll.c for a description of
|
wcswidth(const wchar_t *s, size_t n)
|
||||||
* the logic used.
|
|
||||||
*/
|
|
||||||
size_t
|
|
||||||
wcsxfrm(wchar_t * __restrict dest, const wchar_t * __restrict src, size_t len)
|
|
||||||
{
|
{
|
||||||
int prim, sec, l;
|
int w, q;
|
||||||
size_t slen;
|
|
||||||
char *mbsrc, *s, *ss;
|
|
||||||
|
|
||||||
if (*src == L'\0') {
|
w = 0;
|
||||||
if (len != 0)
|
while (n && *s) {
|
||||||
*dest = L'\0';
|
q = wcwidth(*s);
|
||||||
return (0);
|
if (q == -1)
|
||||||
|
return (-1);
|
||||||
|
w += q;
|
||||||
|
s++;
|
||||||
|
n--;
|
||||||
}
|
}
|
||||||
|
|
||||||
slen = wcslen(src);
|
return w;
|
||||||
if (len > 0) {
|
|
||||||
if (slen < len)
|
|
||||||
wcscpy(dest, src);
|
|
||||||
else {
|
|
||||||
wcsncpy(dest, src, len - 1);
|
|
||||||
dest[len - 1] = L'\0';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return (slen);
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user