Hi there! I have system Glibc 2.2.2 with fully integrated crypt_blowfish() in it but check for Blowfish in ext/standard/config.m4 does not work (it doesn't detect blowfish on system). Wouldn't be better to extend this test to actually find blowfish-related functions in /usr/include/crypt.h in case when sample program using crypt(3) failed? For example, /usr/include/crypt.h on my system looks as following one and also libcrypt library contains __crypt_blowfish_rn() function: /* * UFC-crypt: ultra fast crypt(3) implementation * md5-crypt: one way encryption based on MD5 sum * blowfish-crypt: compatible with OpenBSD bcrypt (version 2a) * * Copyright (C) 1991, 92, 93, 96, 97, 98, 2000, 2001 Free Software Foundation, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with the GNU C Library; see the file COPYING.LIB. If not, * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * * @(#)crypt.h 1.5 12/20/96 * */ #ifndef _CRYPT_H #define _CRYPT_H 1 #include <features.h> __BEGIN_DECLS /* Encrypt at most 8 characters from KEY using salt to perturb DES. */ extern char *crypt (__const char *__key, __const char *__salt) __THROW; /* Setup DES tables according KEY. */ extern void setkey (__const char *__key) __THROW; /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt block in place. */ extern void encrypt (char *__block, int __edflag) __THROW; #ifdef __USE_GNU /* Reentrant versions of the functions above. The additional argument points to a structure where the results are placed in. */ struct crypt_data { char keysched[16 * 8]; char sb0[32768]; char sb1[32768]; char sb2[32768]; char sb3[32768]; /* end-of-aligment-critical-data */ char crypt_3_buf[14]; char current_salt[2]; long int current_saltbits; int direction, initialized; }; /* Encrypt characters from KEY using salt to initialize encryption algorithm. It's same function as crypt but another call entry. */ extern char *fcrypt (__const char *__key, __const char *__salt) __THROW; /* Encrypt characters from KEY using salt to initialize encryption algorithm. It's same function as crypt but another call entry. */ extern char *libc_crypt (__const char *__key, __const char *__salt) __THROW; extern char *crypt_r (__const char *__key, __const char *__salt, struct crypt_data * __restrict __data) __THROW; extern void setkey_r (__const char *__key, struct crypt_data * __restrict __data) __THROW; extern void encrypt_r (char *__block, int __edflag, struct crypt_data * __restrict __data) __THROW; extern char *crypt_rn (__const char *__key, __const char *__salt, void *__data, int __size) __THROW; extern char *crypt_ufc (__const char *__key, __const char *__salt) __THROW; extern char *crypt_ufc_r (__const char *__key, __const char *__salt, struct crypt_data * __restrict __data) __THROW; extern char *crypt_md5 (__const char *__key, __const char *__salt); extern char *crypt_md5_rn (__const char *__key, __const char *__salt, char *__output, int __size) __THROW; extern char *crypt_blowfish_rn(__const char *__key, __const char *__salt, char *__output, int __size) __THROW; extern char *crypt_gensalt (__const char *__prefix, unsigned long __count, __const char *__input, int __size) __THROW; extern char *crypt_gensalt_rn (__const char *__prefix, unsigned long __count, __const char *__input, int __isize, char *__output, int __osize) __THROW; extern char *crypt_gensalt_traditional_rn(unsigned long __count, __const char *__input, int __isize, char *__output, int __osize) __THROW; extern char *crypt_gensalt_extended_rn(unsigned long __count, __const char *__input, int __isize, char *__output, int __osize) __THROW; extern char *crypt_gensalt_md5_rn(unsigned long __count, __const char *__input, int __isize, char *__output, int __osize) __THROW; extern char *crypt_gensalt_blowfish_rn(unsigned long __count, __const char *__input, int __isize, char *__output, int __osize) __THROW; #endif __END_DECLS #endif /* crypt.h */ -- Sincerely yours, Alexander Bokovoy The Midgard Project | www.midgard-project.org | ALT Linux Team Minsk Linux Users Group | www.minsk-lug.net | www.altlinux.ru -- If you don't do the things that are not worth doing, who will? -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] To contact the list administrators, e-mail: [EMAIL PROTECTED]