config LIBNEWLIBC_LINUX_ERRNO_EXTENSIONS
bool "Use Linux errno extensions"
default n
+
+ config LIBNEWLIBC_CRYPT
+ bool "Enable crypt() and crypt_r() functions"
+ default y
endif
LIBNEWLIBC_COMMON_INCLUDES-y += -I$(LIBNEWLIBC_BASE)/include
LIBNEWLIBC_COMMON_INCLUDES-y += -I$(LIBNEWLIBC_BASE)/musl-imported/include
LIBNEWLIBC_COMMON_INCLUDES-y += -I$(LIBNEWLIBC_BASE)/musl-imported/arch/generic
+LIBNEWLIBGLUE_CINCLUDES-y += -I$(LIBNEWLIBC_BASE)/musl-imported/src/include
LIBNEWLIBC_COMMON_INCLUDES-$(CONFIG_ARCH_X86_64) += -I$(LIBNEWLIBC_BASE)/musl-imported/arch/x86_64
LIBNEWLIBC_COMMON_INCLUDES-y += -I$(LIBNEWLIB_LIBC)/include
LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/termios/tcsetattr.c
LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/termios/tcgetattr.c
+ifeq ($(CONFIG_LIBNEWLIBC_CRYPT),y)
+LIBNEWLIBGLUE_CFLAGS-y += -Wno-missing-braces -Wno-sign-compare -Wno-char-subscripts
+LIBNEWLIBGLUE_CFLAGS-y += -Dhidden=
+
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt_blowfish.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt_des.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt_md5.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt_r.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt_sha256.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/crypt_sha512.c
+LIBNEWLIBGLUE_SRCS-y += $(LIBNEWLIBC_BASE)/musl-imported/src/crypt/encrypt.c
+endif
+
################################################################################
# Newlib/libc code -- argz
################################################################################
#include <unistd.h>
-#include <crypt.h>
+#include <_crypt.h>
char *crypt(const char *key, const char *salt)
{
-#include <crypt.h>
+#include <_crypt.h>
char *__crypt_r(const char *key, const char *salt, struct crypt_data *data)
{
return __crypt_des(key, salt, output);
}
+/* TODO move this to some global header */
+#define weak_alias(old, new) \
+ extern __typeof(old) new __attribute__((__weak__, __alias__(#old)))
+
weak_alias(__crypt_r, crypt_r);
--- /dev/null
+#ifndef CRYPT_H
+#define CRYPT_H
+
+#include "../../include/crypt.h"
+
+/* TODO #include <features.h> */
+
+hidden char *__crypt_r(const char *, const char *, struct crypt_data *);
+
+hidden char *__crypt_des(const char *, const char *, char *);
+hidden char *__crypt_md5(const char *, const char *, char *);
+hidden char *__crypt_blowfish(const char *, const char *, char *);
+hidden char *__crypt_sha256(const char *, const char *, char *);
+hidden char *__crypt_sha512(const char *, const char *, char *);
+
+#endif
+++ /dev/null
-#ifndef CRYPT_H
-#define CRYPT_H
-
-#include "../../include/crypt.h"
-
-#include <features.h>
-
-hidden char *__crypt_r(const char *, const char *, struct crypt_data *);
-
-hidden char *__crypt_des(const char *, const char *, char *);
-hidden char *__crypt_md5(const char *, const char *, char *);
-hidden char *__crypt_blowfish(const char *, const char *, char *);
-hidden char *__crypt_sha256(const char *, const char *, char *);
-hidden char *__crypt_sha512(const char *, const char *, char *);
-
-#endif