diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-08-21 17:22:56 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-08-21 17:22:56 +0000 |
commit | 5148d49f37ad2648ef77159b0b2d1b332c584ed9 (patch) | |
tree | 5db7d9cb4929ea18160d7adb37d1635c63f59f03 /nss/nss_db/db-netgrp.c | |
parent | 1ddf537f074f453f4d8b70c1b5df3f9ac728bec4 (diff) | |
download | glibc-5148d49f37ad2648ef77159b0b2d1b332c584ed9.tar.gz glibc-5148d49f37ad2648ef77159b0b2d1b332c584ed9.tar.xz glibc-5148d49f37ad2648ef77159b0b2d1b332c584ed9.zip |
Update.
1998-08-21 17:21 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/glob64.c: Define __stat using __xstat64. 1998-08-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * Makefile (elf/ldso_install): Put back. The problem still persists. * elf/Makefile (ldso_install): Likewise. 1998-08-20 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * db2/db/db.c (db_open) [_LIBC]: Rename to __nss_db_open and create weak alias. * include/db.h: Declare __nss_db_open. * db2/Versions: Export it. * db2/makedb.c: Convert to use db2 API. * nss/nss_db/db-XXX.c: Likewise. * nss/nss_db/db-netgrp.c: Likewise. * nss/nss_db/db-alias.c: Likewise. (_nss_db_getaliasent_r): Allow retrying with a larger buffer. 1998-08-19 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> * sysdeps/unix/sysv/linux/Makefile (sysdep_routines): Remove sys_setresuid, already built automatically (or not). * sysdeps/unix/sysv/linux/syscalls.list: Define __setresuid instead of __syscall_setresuid and add back setresuid. * sysdeps/unix/sysv/linux/seteuid.c: Use __setresuid instead of __syscall_setresuid. 1998-08-21 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/unix/sysv/linux/sys/mount.h: Fix typo. * libio/libioP.c (FILEBUF_LITERAL): Also initialize new _offset
Diffstat (limited to 'nss/nss_db/db-netgrp.c')
-rw-r--r-- | nss/nss_db/db-netgrp.c | 33 |
1 files changed, 23 insertions, 10 deletions
diff --git a/nss/nss_db/db-netgrp.c b/nss/nss_db/db-netgrp.c index d63d1cb1af..8707d85f04 100644 --- a/nss/nss_db/db-netgrp.c +++ b/nss/nss_db/db-netgrp.c @@ -18,7 +18,7 @@ write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include <db_185.h> +#include <db.h> #include <errno.h> #include <fcntl.h> #include <string.h> @@ -43,32 +43,44 @@ enum nss_status _nss_db_setnetgrent (const char *group) { enum nss_status status = NSS_STATUS_SUCCESS; + int err; __libc_lock_lock (lock); /* Make sure the data base file is open. */ if (db == NULL) { - db = __dbopen (DBFILE, O_RDONLY, 0, DB_BTREE, NULL); + err = __nss_db_open (DBFILE, DB_BTREE, O_RDONLY, 0, NULL, NULL, &db); - if (db == NULL) - status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + if (err != 0) + { + __set_errno (err); + status = err == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; + } else { /* We have to make sure the file is `closed on exec'. */ + int fd; int result, flags; - result = flags = fcntl ((*db->fd) (db), F_GETFD, 0); + err = db->fd (db, &fd); + if (err != 0) + { + __set_errno (err); + result = -1; + } + else + result = flags = fcntl (fd, F_GETFD, 0); if (result >= 0) { flags |= FD_CLOEXEC; - result = fcntl ((*db->fd) (db), F_SETFD, flags); + result = fcntl (fd, F_SETFD, flags); } if (result < 0) { /* Something went wrong. Close the stream and return a failure. */ - (*db->close) (db); + db->close (db, 0); db = NULL; status = NSS_STATUS_UNAVAIL; } @@ -77,10 +89,11 @@ _nss_db_setnetgrent (const char *group) if (status == NSS_STATUS_SUCCESS) { - DBT key = { data: (void *) group, size: strlen (group) }; + DBT key = { data: (void *) group, size: strlen (group), flags: 0 }; DBT value; - if ((*db->get) (db, &key, &value, 0) != 0) + value.flags = 0; + if (db->get (db, NULL, &key, &value, 0) != 0) status = NSS_STATUS_NOTFOUND; else cursor = entry = value.data; @@ -100,7 +113,7 @@ _nss_db_endnetgrent (void) if (db != NULL) { - (*db->close) (db); + db->close (db, 0); db = NULL; } |