Return 2 if contacting the daemon failed.
[kopensolaris-gnu/glibc.git] / nscd / nscd_getpw_r.c
index c956abc..4420b80 100644 (file)
@@ -48,7 +48,7 @@ __nscd_getpwuid_r (uid_t uid, struct passwd *resultbuf, char *buffer,
                   size_t buflen)
 {
   char *p = buffer;
-  char plen;
+  int plen;
 
   plen = snprintf (buffer, buflen, "%d", uid);
   if (plen == -1)
@@ -67,16 +67,21 @@ nscd_open_socket (void)
 {
   struct sockaddr_un addr;
   int sock;
+  int saved_errno = errno;
 
   sock = socket (PF_UNIX, SOCK_STREAM, 0);
   if (sock < 0)
-    return -1;
+    {
+      __set_errno (saved_errno);
+      return -1;
+    }
 
   addr.sun_family = AF_UNIX;
   strcpy (addr.sun_path, _PATH_NSCDSOCKET);
   if (connect (sock, (struct sockaddr *) &addr, sizeof (addr)) < 0)
     {
       close (sock);
+      __set_errno (saved_errno);
       return -1;
     }
 
@@ -93,7 +98,8 @@ __nscd_getpw_r (const char *key, request_type type, struct passwd *resultbuf,
   ssize_t nbytes;
 
   if (sock == -1)
-    return 1;
+    /* Returning two signals that contacting the daemon failed.  */
+    return 2;
 
   req.version = NSCD_VERSION;
   req.type = type;