Added configure check for crypt.
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 12 May 2005 10:10:32 +0000 (10:10 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 12 May 2005 10:10:32 +0000 (10:10 +0000)
configure.in
util/passwddb.c

index 42c973b..746181e 100644 (file)
@@ -1,5 +1,5 @@
 dnl Zebra, Index Data ApS, 1995-2005
-dnl $Id: configure.in,v 1.122 2005-05-11 12:39:36 adam Exp $
+dnl $Id: configure.in,v 1.123 2005-05-12 10:10:32 adam Exp $
 dnl
 AC_INIT(include/idzebra/version.h)
 AM_INIT_AUTOMAKE(idzebra,1.4.0)
@@ -16,6 +16,11 @@ AM_PROG_LIBTOOL
 dnl
 dnl ------ headers
 AC_CHECK_HEADERS(sys/times.h unistd.h)
+dnl ------ crypt
+AC_CHECK_LIB(crypt, crypt)
+if test "$ac_cv_lib_crypt_crypt" = "yes"; then
+       AC_CHECK_HEADERS(crypt.h)
+fi
 dnl
 dnl ------ threads
 AC_ARG_ENABLE(threads, [  --disable-threads       disable threads],[enable_threads=$enableval],[enable_threads=yes])
index e57eb0d..f372728 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: passwddb.c,v 1.10 2005-01-15 19:38:42 adam Exp $
+/* $Id: passwddb.c,v 1.11 2005-05-12 10:10:32 adam Exp $
    Copyright (C) 1995-2005
    Index Data ApS
 
@@ -21,18 +21,14 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 */
 
 
-#ifdef WIN32
-#else
+#if HAVE_UNISTD_H
 #include <unistd.h>
 #endif
+
 #include <string.h>
 #include <stdio.h>
 
-#ifndef USE_CRYPT
-#define USE_CRYPT 0
-#endif
-
-#if USE_CRYPT
+#if HAVE_CRYPT_H
 #include <crypt.h>
 #endif
 
@@ -42,115 +38,115 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include <passwddb.h>
 
 struct passwd_entry {
-       char *name;
-       char *des;
-       struct passwd_entry *next;
+    char *name;
+    char *des;
+    struct passwd_entry *next;
 };
 
 struct passwd_db {
-       struct passwd_entry *entries;
+    struct passwd_entry *entries;
 };
 
 Passwd_db passwd_db_open (void)
 {
-       struct passwd_db *p = (struct passwd_db *) xmalloc (sizeof(*p));
-       p->entries = 0;
-       return p;
+    struct passwd_db *p = (struct passwd_db *) xmalloc (sizeof(*p));
+    p->entries = 0;
+    return p;
 }
 
 static int get_entry (const char **p, char *dst, int max)
 {      
-       int i = 0;
-       while ((*p)[i] != ':' && (*p)[i])
-               i++;
-       if (i >= max)
-               i = max-1;
-       if (i)
-               memcpy (dst, *p, i);
-       dst[i] = '\0';
-       *p += i;
-       if (*p)
-               (*p)++;
-       return i;
+    int i = 0;
+    while ((*p)[i] != ':' && (*p)[i])
+       i++;
+    if (i >= max)
+       i = max-1;
+    if (i)
+       memcpy (dst, *p, i);
+    dst[i] = '\0';
+    *p += i;
+    if (*p)
+       (*p)++;
+    return i;
 }
 
 int passwd_db_file (Passwd_db db, const char *fname)
 {
-       FILE *f;
-       char buf[1024];
-       f = fopen (fname, "r");
-       if (!f)
-               return -1;
-       while (fgets (buf, sizeof(buf)-1, f))
-       {
-               struct passwd_entry *pe;
-               char name[128];
-               char des[128];
-               char *p;
-               const char *cp = buf;
-               if ((p = strchr (buf, '\n')))
-                       *p = '\0';
-               get_entry (&cp, name, 128);
-               get_entry (&cp, des, 128);
-
-               pe = (struct passwd_entry *) xmalloc (sizeof(*pe));
-               pe->name = xstrdup (name);
-               pe->des = xstrdup (des);
-               pe->next = db->entries;
-               db->entries = pe;
-       }
-       fclose (f);
-       return 0;
+    FILE *f;
+    char buf[1024];
+    f = fopen (fname, "r");
+    if (!f)
+       return -1;
+    while (fgets (buf, sizeof(buf)-1, f))
+    {
+       struct passwd_entry *pe;
+       char name[128];
+       char des[128];
+       char *p;
+       const char *cp = buf;
+       if ((p = strchr (buf, '\n')))
+           *p = '\0';
+       get_entry (&cp, name, 128);
+       get_entry (&cp, des, 128);
+
+       pe = (struct passwd_entry *) xmalloc (sizeof(*pe));
+       pe->name = xstrdup (name);
+       pe->des = xstrdup (des);
+       pe->next = db->entries;
+       db->entries = pe;
+    }
+    fclose (f);
+    return 0;
 }
 
 void passwd_db_close (Passwd_db db)
 {
-       struct passwd_entry *pe = db->entries;
-       while (pe)
-       {
-               struct passwd_entry *pe_next = pe->next;
+    struct passwd_entry *pe = db->entries;
+    while (pe)
+    {
+       struct passwd_entry *pe_next = pe->next;
        
-               xfree (pe->name);
-               xfree (pe->des);
-               xfree (pe);
-               pe = pe_next;
-       }
-       xfree (db);
+       xfree (pe->name);
+       xfree (pe->des);
+       xfree (pe);
+       pe = pe_next;
+    }
+    xfree (db);
 }
 
 void passwd_db_show (Passwd_db db)
 {
-       struct passwd_entry *pe;
-       for (pe = db->entries; pe; pe = pe->next)
-               yaz_log (YLOG_LOG,"%s:%s", pe->name, pe->des);
+    struct passwd_entry *pe;
+    for (pe = db->entries; pe; pe = pe->next)
+       yaz_log (YLOG_LOG,"%s:%s", pe->name, pe->des);
 }
 
 int passwd_db_auth (Passwd_db db, const char *user, const char *pass)
 {
-       struct passwd_entry *pe;
-#if USE_CRYPT
-       char salt[3];
-       const char *des_try;
+    struct passwd_entry *pe;
+#if HAVE_CRYPT_H
+    char salt[3];
+    const char *des_try;
 #endif
-       for (pe = db->entries; pe; pe = pe->next)
-               if (user && !strcmp (user, pe->name))
-                       break;
-       if (!pe)
-               return -1;
-#if USE_CRYPT
-       if (strlen (pe->des) < 3)
-               return -3;
-       if (!pass)
-           return -2;
-       memcpy (salt, pe->des, 2);
-       salt[2] = '\0'; 
-       des_try = crypt (pass, salt);
-       if (strcmp (des_try, pe->des))
-               return -2;
+    for (pe = db->entries; pe; pe = pe->next)
+       if (user && !strcmp (user, pe->name))
+           break;
+    if (!pe)
+       return -1;
+#if HAVE_CRYPT_H
+    if (strlen (pe->des) < 3)
+       return -3;
+    if (!pass)
+       return -2;
+    memcpy (salt, pe->des, 2);
+    salt[2] = '\0';    
+    des_try = crypt (pass, salt);
+    if (strcmp (des_try, pe->des))
+       return -2;
 #else
-       if (strcmp (pe->des, pass))
-               return -2;
+    if (strcmp (pe->des, pass))
+       return -2;
 #endif
-       return 0;       
+    return 0;  
 }