Move xdr_* functions from nis/nis_xdr.h.
[kopensolaris-gnu/glibc.git] / nss / nss_db / db-alias.c
index 810fc3a..27b7952 100644 (file)
@@ -1,5 +1,5 @@
 /* Mail alias file parser in nss_db module.
-   Copyright (C) 1996, 1997 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -21,7 +21,7 @@
 #include <aliases.h>
 #include <alloca.h>
 #include <ctype.h>
-#include <db.h>
+#include <db_185.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <bits/libc-lock.h>
@@ -134,7 +134,7 @@ _nss_db_endaliasent (void)
    the result.  */
 static enum nss_status
 lookup (const DBT *key, struct aliasent *result, char *buffer,
-           size_t buflen)
+       size_t buflen, int *errnop)
 {
   enum nss_status status;
   DBT value;
@@ -154,7 +154,7 @@ lookup (const DBT *key, struct aliasent *result, char *buffer,
       if (buflen < key->size + 1)
        {
        no_more_room:
-         __set_errno (ERANGE);
+         *errnop = ERANGE;
          return NSS_STATUS_TRYAGAIN;
        }
 
@@ -218,16 +218,17 @@ lookup (const DBT *key, struct aliasent *result, char *buffer,
 }
 \f
 enum nss_status
-_nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen)
+_nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen,
+                      int *errnop)
 {
-  /* Return next entry in host file.  */
+  /* Return next entry in alias file.  */
   enum nss_status status;
   char buf[20];
   DBT key;
 
   __libc_lock_lock (lock);
-  key.size = 1 + snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
-  status = lookup (&key, result, buffer, buflen);
+  key.size = snprintf (key.data = buf, sizeof buf, "0%u", entidx++);
+  status = lookup (&key, result, buffer, buflen, errnop);
   __libc_lock_unlock (lock);
 
   return status;
@@ -236,7 +237,7 @@ _nss_db_getaliasent_r (struct aliasent *result, char *buffer, size_t buflen)
 
 enum nss_status
 _nss_db_getaliasbyname_r (const char *name, struct aliasent *result,
-                         char *buffer, size_t buflen)
+                         char *buffer, size_t buflen, int *errnop)
 {
   DBT key;
   enum nss_status status;
@@ -248,7 +249,7 @@ _nss_db_getaliasbyname_r (const char *name, struct aliasent *result,
   memcpy (&((char *) key.data)[1], name, key.size - 1);
 
   __libc_lock_lock (lock);
-  status = lookup (&key, result, buffer, buflen);
+  status = lookup (&key, result, buffer, buflen, errnop);
   __libc_lock_unlock (lock);
 
   return status;