Optimize a bit by using mempcpy.
[kopensolaris-gnu/glibc.git] / nss / getXXbyYY_r.c
index 6ddfd61..18f0bae 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
 
@@ -93,11 +93,17 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
   int no_more;
   enum nss_status status = NSS_STATUS_UNAVAIL;
 
+#ifdef HANDLE_DIGITS_DOTS
+# define resbuf (*resbuf)
+# include "digits_dots.c"
+# undef resbuf
+#endif
+
   if (startp == NULL)
     {
       no_more = DB_LOOKUP_FCT (&nip, REENTRANT_NAME_STRING, (void **) &fct);
       if (no_more)
-       startp = (service_user *) -1;
+       startp = (service_user *) -1l;
       else
        {
          startp = nip;
@@ -118,7 +124,7 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
   else
     {
       fct = start_fct;
-      no_more = (nip = startp) == (service_user *) -1;
+      no_more = (nip = startp) == (service_user *) -1l;
     }
 
   while (no_more == 0)
@@ -129,9 +135,12 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer,
                            (void **) &fct, status, 0);
     }
 
+#ifdef HANDLE_DIGITS_DOTS
+done:
+#endif
   *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL;
   return status == NSS_STATUS_SUCCESS ? 0 : -1;
 }
 
-#define do_weak_alias(n1, n2) weak_alias ((n1), (n2))
+#define do_weak_alias(n1, n2) weak_alias (n1, (n2))
 do_weak_alias (INTERNAL (REENTRANT_NAME), REENTRANT_NAME)