diff -urN busybox/include/libbb.h busybox.cryptpw/include/libbb.h
--- busybox/include/libbb.h	2004-09-14 21:04:07.000000000 -0600
+++ busybox.cryptpw/include/libbb.h	2004-10-09 05:55:00.000000000 -0600
@@ -433,6 +433,10 @@
 extern char *pw_encrypt(const char *clear, const char *salt);
 extern struct spwd *pwd_to_spwd(const struct passwd *pw);
 extern int obscure(const char *old, const char *newval, const struct passwd *pwdp);
+extern int palindrome(const char *newval);
+extern int simple(const char *newval);
+extern int get_algo(char *a);
+extern char *crypt_make_salt(void);
 
 extern int bb_xopen(const char *pathname, int flags);
 extern ssize_t bb_xread(int fd, void *buf, size_t count);
diff -urN busybox/libbb/Makefile.in busybox.cryptpw/libbb/Makefile.in
--- busybox/libbb/Makefile.in	2004-10-08 01:45:31.000000000 -0600
+++ busybox.cryptpw/libbb/Makefile.in	2004-10-09 05:55:00.000000000 -0600
@@ -25,10 +25,10 @@
 LIBBB_SRC:= \
 	bb_asprintf.c ask_confirmation.c change_identity.c chomp.c \
 	compare_string_array.c concat_path_file.c copy_file.c copyfd.c \
-	correct_password.c create_icmp_socket.c create_icmp6_socket.c \
+	correct_password.c create_icmp_socket.c create_icmp6_socket.c crypt_make_salt.c \
 	device_open.c dump.c error_msg.c error_msg_and_die.c find_mount_point.c \
 	find_pid_by_name.c find_root_device.c fgets_str.c full_read.c \
-	full_write.c get_last_path_component.c get_line_from_file.c get_ug_id.c \
+	full_write.c get_algo.c get_last_path_component.c get_line_from_file.c get_ug_id.c \
 	get_terminal_width_height.c hash_fd.c herror_msg.c herror_msg_and_die.c \
 	human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \
 	kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \
diff -urN busybox/libbb/crypt_make_salt.c busybox.cryptpw/libbb/crypt_make_salt.c
--- busybox/libbb/crypt_make_salt.c	1969-12-31 17:00:00.000000000 -0700
+++ busybox.cryptpw/libbb/crypt_make_salt.c	2004-10-09 05:55:00.000000000 -0600
@@ -0,0 +1,43 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * crypt_make_salt 
+ *
+ * i64c was also put here, this is the only function that uses it.
+ *
+ * Lifted from loginutils/passwd.c by Thomas Lundquist <thomasez@zelow.no>
+ *
+ */
+
+#include <unistd.h>
+#include <time.h>
+
+#include <libbb.h>
+
+static int i64c(int i)
+{
+	if (i <= 0)
+		return ('.');
+	if (i == 1)
+		return ('/');
+	if (i >= 2 && i < 12)
+		return ('0' - 2 + i);
+	if (i >= 12 && i < 38)
+		return ('A' - 12 + i);
+	if (i >= 38 && i < 63)
+		return ('a' - 38 + i);
+	return ('z');
+}
+
+extern char *crypt_make_salt(void)
+{
+	time_t now;
+	static unsigned long x;
+	static char result[3];
+
+	time(&now);
+	x += now + getpid() + clock();
+	result[0] = i64c(((x >> 18) ^ (x >> 6)) & 077);
+	result[1] = i64c(((x >> 12) ^ x) & 077);
+	result[2] = '\0';
+	return result;
+}
diff -urN busybox/libbb/get_algo.c busybox.cryptpw/libbb/get_algo.c
--- busybox/libbb/get_algo.c	1969-12-31 17:00:00.000000000 -0700
+++ busybox.cryptpw/libbb/get_algo.c	2004-10-09 05:55:00.000000000 -0600
@@ -0,0 +1,20 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * get_algo 
+ *
+ * Lifted from loginutils/passwd.c
+ *
+ */
+
+#include <string.h>
+
+#include <libbb.h>
+
+extern int get_algo(char *a)
+{
+	int x = 1;					/* standard: MD5 */
+
+	if (strcasecmp(a, "des") == 0)
+		x = 0;
+	return x;
+}
diff -urN busybox/libbb/obscure.c busybox.cryptpw/libbb/obscure.c
--- busybox/libbb/obscure.c	2003-08-06 02:33:08.000000000 -0600
+++ busybox.cryptpw/libbb/obscure.c	2004-10-09 05:55:00.000000000 -0600
@@ -44,7 +44,7 @@
  * can't be a palindrome - like `R A D A R' or `M A D A M'
  */
 
-static int palindrome(const char *newval)
+extern int palindrome(const char *newval)
 {
 	int i, j;
 
@@ -79,7 +79,7 @@
  * a nice mix of characters.
  */
 
-static int simple(const char *newval)
+extern int simple(const char *newval)
 {
 	int digits = 0;
 	int uppers = 0;
diff -urN busybox/loginutils/passwd.c busybox.cryptpw/loginutils/passwd.c
--- busybox/loginutils/passwd.c	2004-09-14 20:39:09.000000000 -0600
+++ busybox.cryptpw/loginutils/passwd.c	2004-10-09 05:55:00.000000000 -0600
@@ -21,16 +21,6 @@
 static void set_filesize_limit(int blocks);
 
 
-int get_algo(char *a)
-{
-	int x = 1;					/* standard: MD5 */
-
-	if (strcasecmp(a, "des") == 0)
-		x = 0;
-	return x;
-}
-
-
 extern int update_passwd(const struct passwd *pw, char *crypt_pw)
 {
 	char filename[1024];
@@ -286,36 +276,6 @@
 	return 0;
 }
 
-static int i64c(int i)
-{
-	if (i <= 0)
-		return ('.');
-	if (i == 1)
-		return ('/');
-	if (i >= 2 && i < 12)
-		return ('0' - 2 + i);
-	if (i >= 12 && i < 38)
-		return ('A' - 12 + i);
-	if (i >= 38 && i < 63)
-		return ('a' - 38 + i);
-	return ('z');
-}
-
-static char *crypt_make_salt(void)
-{
-	time_t now;
-	static unsigned long x;
-	static char result[3];
-
-	time(&now);
-	x += now + getpid() + clock();
-	result[0] = i64c(((x >> 18) ^ (x >> 6)) & 077);
-	result[1] = i64c(((x >> 12) ^ x) & 077);
-	result[2] = '\0';
-	return result;
-}
-
-
 static int new_password(const struct passwd *pw, int amroot, int algo)
 {
 	char *clear;
diff -ruN busybox-1.00/libbb/Makefile.in busybox-identd/libbb/Makefile.in
--- busybox-1.00/libbb/Makefile.in	2004-10-08 09:45:31.000000000 +0200
+++ busybox-identd/libbb/Makefile.in	2004-10-31 12:03:20.000000000 +0100
@@ -30,7 +30,8 @@
 	find_pid_by_name.c find_root_device.c fgets_str.c full_read.c \
 	full_write.c get_last_path_component.c get_line_from_file.c get_ug_id.c \
 	get_terminal_width_height.c hash_fd.c herror_msg.c herror_msg_and_die.c \
-	human_readable.c inet_common.c inode_hash.c interface.c isdirectory.c \
+	human_readable.c inet_common.c inode_hash.c interface.c \
+	is_ip_address.c isdirectory.c \
 	kernel_version.c last_char_is.c llist_add_to.c login.c loop.c \
 	make_directory.c mode_string.c module_syscalls.c mtab.c mtab_file.c \
 	my_getgrgid.c my_getgrnam.c my_getpwnam.c my_getug.c\
diff -ruN busybox-1.00/libbb/is_ip_address.c busybox-identd/libbb/is_ip_address.c
--- busybox-1.00/libbb/is_ip_address.c	1970-01-01 01:00:00.000000000 +0100
+++ busybox-identd/libbb/is_ip_address.c	2004-10-31 12:11:12.000000000 +0100
@@ -0,0 +1,24 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * is_ip_address 
+ *
+ * i64c was also put here, this is the only function that uses it.
+ *
+ * Lifted from loginutils/nslookup.c by Thomas Lundquist <thomasez@zelow.no>
+ *
+ */
+
+#include <libbb.h>
+
+/* naive function to check whether char *s is an ip address */
+extern int is_ip_address(const char *s)
+{
+	while (*s) {
+		if ((isdigit(*s)) || (*s == '.')) {
+			s++;
+			continue;
+		}
+		return 0;
+	}
+	return 1;
+}
diff -ruN busybox-1.00/networking/nslookup.c busybox-identd/networking/nslookup.c
--- busybox-1.00/networking/nslookup.c	2004-10-13 09:25:01.000000000 +0200
+++ busybox-identd/networking/nslookup.c	2004-10-31 12:02:30.000000000 +0100
@@ -152,19 +152,6 @@
 	}
 }
 
-/* naive function to check whether char *s is an ip address */
-static int is_ip_address(const char *s)
-{
-	while (*s) {
-		if ((isdigit(*s)) || (*s == '.')) {
-			s++;
-			continue;
-		}
-		return 0;
-	}
-	return 1;
-}
-
 /* ________________________________________________________________________ */
 int nslookup_main(int argc, char **argv)
 {

