+2007-11-16 Nicolas François <nicolas.francois@centraliens.net>
+
+ * configure.in: Check if the l64a function exists instead of a64l
+ which we do not use.
+ * libmisc/salt.c: Add support for uClibc with no l64a().
+
2007-11-16 Nicolas François <nicolas.francois@centraliens.net>
* configure.in: Check if the netdb.h header file and the innetgr
systems, username with an @ will be treated like any other username
(i.e. lookup in the local database for an user with an @). Thanks to
Mike Frysinger for the patch.
+- Add support for uClibc with no l64a().
shadow-4.0.18.1 -> shadow-4.0.18.2 28-10-2007
utime.h ulimit.h sys/resource.h gshadow.h shadow.h lastlog.h \
locale.h rpc/key_prot.h netdb.h)
-AC_CHECK_FUNCS(a64l fchmod fchown fsync getgroups gethostname getspnam \
+AC_CHECK_FUNCS(l64a fchmod fchown fsync getgroups gethostname getspnam \
gettimeofday getusershell getutent initgroups lchown lckpwdf lstat \
memcpy memset setgroups sigaction strchr updwtmp updwtmpx innetgr)
AC_SYS_LARGEFILE
*
* Written by Marek Michalkiewicz <marekm@i17linuxb.ists.pwr.wroc.pl>,
* public domain.
+ *
+ * l64a was Written by J.T. Conklin <jtc@netbsd.org>. Public domain.
*/
#include <config.h>
#include "prototypes.h"
#include "defines.h"
#include "getdef.h"
+
+#ifndef HAVE_L64A
+char *l64a(long value)
+{
+ static char buf[8];
+ char *s = buf;
+ int digit;
+ int i;
+
+ if (value < 0) {
+ errno = EINVAL;
+ return(NULL);
+ }
+
+ for (i = 0; value != 0 && i < 6; i++) {
+ digit = value & 0x3f;
+
+ if (digit < 2)
+ *s = digit + '.';
+ else if (digit < 12)
+ *s = digit + '0' - 2;
+ else if (digit < 38)
+ *s = digit + 'A' - 12;
+ else
+ *s = digit + 'a' - 38;
+
+ value >>= 6;
+ s++;
+ }
+
+ *s = '\0';
+
+ return(buf);
+}
+#endif /* !HAVE_L64A */
+
/*
* Generate 8 base64 ASCII characters of random salt. If MD5_CRYPT_ENAB
* in /etc/login.defs is "yes", the salt string will be prefixed by "$1$"