readdir.c (53812) | readdir.c (53872) |
---|---|
1/* 2 * Copyright (c) 1983, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * | 1/* 2 * Copyright (c) 1983, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 16 unchanged lines hidden (view full) --- 25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31 * SUCH DAMAGE. 32 * |
33 * $FreeBSD: head/lib/libc/gen/readdir.c 53812 1999-11-28 05:38:13Z alfred $ | 33 * $FreeBSD: head/lib/libc/gen/readdir.c 53872 1999-11-29 06:12:22Z wes $ |
34 * 35 */ 36 37#if defined(LIBC_SCCS) && !defined(lint) 38static char sccsid[] = "@(#)readdir.c 8.3 (Berkeley) 9/29/94"; 39#endif /* LIBC_SCCS and not lint */ 40 41#include <sys/param.h> --- 48 unchanged lines hidden (view full) --- 90{ 91 struct dirent *dp; 92 int ret; 93 94 if (dirp->dd_fd < 0) { 95 return EBADF; 96 } 97#ifdef _THREAD_SAFE | 34 * 35 */ 36 37#if defined(LIBC_SCCS) && !defined(lint) 38static char sccsid[] = "@(#)readdir.c 8.3 (Berkeley) 9/29/94"; 39#endif /* LIBC_SCCS and not lint */ 40 41#include <sys/param.h> --- 48 unchanged lines hidden (view full) --- 90{ 91 struct dirent *dp; 92 int ret; 93 94 if (dirp->dd_fd < 0) { 95 return EBADF; 96 } 97#ifdef _THREAD_SAFE |
98 if ((ret = _FD_LOCK(dirp->dd_fd, FD_READ, NULL)) != 0) | 98 if ((ret = _FD_LOCK(dirp->dd_fd, FD_READ, NULL)) != 0) { |
99 return ret; | 99 return ret; |
100 } |
|
100#endif 101 errno = 0; 102 dp = readdir(dirp); 103 if (dp == NULL && errno != 0) { 104#ifdef _THREAD_SAFE 105 _FD_UNLOCK(dirp->dd_fd, FD_READ); 106#endif 107 return errno; 108 } | 101#endif 102 errno = 0; 103 dp = readdir(dirp); 104 if (dp == NULL && errno != 0) { 105#ifdef _THREAD_SAFE 106 _FD_UNLOCK(dirp->dd_fd, FD_READ); 107#endif 108 return errno; 109 } |
109 if (dp != NULL) | 110 if (dp != NULL) { |
110 memcpy(entry, dp, sizeof *entry); | 111 memcpy(entry, dp, sizeof *entry); |
112 } |
|
111#ifdef _THREAD_SAFE 112 _FD_UNLOCK(dirp->dd_fd, FD_READ); 113#endif | 113#ifdef _THREAD_SAFE 114 _FD_UNLOCK(dirp->dd_fd, FD_READ); 115#endif |
114 if (dp != NULL) 115 *result = entry; 116 else | 116 if (dp != NULL) { 117 *result = entry; 118 } else { |
117 *result = NULL; | 119 *result = NULL; |
120 } |
|
118 return 0; 119} | 121 return 0; 122} |