Explorar o código

LibC: Move crypt() and crypt_r() to the right header file

According to POSIX.1 these should be in <crypt.h>.
Gunnar Beutner %!s(int64=4) %!d(string=hai) anos
pai
achega
ce77caf479

+ 2 - 0
CMakeLists.txt

@@ -208,7 +208,9 @@ endif()
 add_link_options(--sysroot ${CMAKE_BINARY_DIR}/Root)
 
 include_directories(Userland/Libraries/LibC)
+include_directories(Userland/Libraries/LibCrypt)
 include_directories(Userland/Libraries/LibM)
+include_directories(Userland/Libraries/LibPthread)
 include_directories(Userland/Libraries/LibSystem)
 include_directories(Userland/Services)
 include_directories(Userland)

+ 2 - 0
Ports/openssh/package.sh

@@ -8,6 +8,8 @@ depends="zlib openssl"
 useconfigure=true
 configopts="--prefix=/usr/local --disable-utmp --disable-strip --sysconfdir=/etc/ssh --with-ssl-dir=${SERENITY_INSTALL_ROOT}/usr/local/lib"
 
+export LDFLAGS="-lcrypt -lcore"
+
 pre_configure() {
     run autoreconf
 }

+ 0 - 8
Userland/Libraries/LibC/unistd.h

@@ -171,14 +171,6 @@ enum {
 
 long sysconf(int name);
 
-struct crypt_data {
-    int initialized;
-    char result[65];
-};
-
-char* crypt(const char* key, const char* salt);
-char* crypt_r(const char* key, const char* salt, struct crypt_data* data);
-
 // If opterr is set (the default), print error messages to stderr.
 extern int opterr;
 // On errors, optopt is set to the erroneous *character*.

+ 1 - 0
Userland/Libraries/LibCore/Account.cpp

@@ -9,6 +9,7 @@
 #include <AK/ScopeGuard.h>
 #include <LibCore/Account.h>
 #include <LibCore/File.h>
+#include <crypt.h>
 #include <errno.h>
 #include <grp.h>
 #include <pwd.h>

+ 2 - 1
Userland/Libraries/LibCrypt/crypt.cpp

@@ -6,8 +6,9 @@
 #include <AK/Base64.h>
 #include <AK/Types.h>
 #include <LibCrypto/Hash/SHA2.h>
+#include <crypt.h>
+#include <errno.h>
 #include <string.h>
-#include <unistd.h>
 
 extern "C" {
 

+ 28 - 0
Userland/Libraries/LibCrypt/crypt.h

@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
+ *
+ * SPDX-License-Identifier: BSD-2-Clause
+ */
+
+/* standard symbolic constants and types
+ *
+ * values from POSIX standard unix specification
+ *
+ * https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/unistd.h.html
+ */
+
+#pragma once
+
+#include <sys/cdefs.h>
+
+__BEGIN_DECLS
+
+struct crypt_data {
+    int initialized;
+    char result[65];
+};
+
+char* crypt(const char* key, const char* salt);
+char* crypt_r(const char* key, const char* salt, struct crypt_data* data);
+
+__END_DECLS