|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
commit 137fe72eca6923a00381a3ca9f0e7672c1f85e3f
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Author: Florian Weimer <fweimer@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Date: Fri Apr 29 09:33:07 2016 +0200
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
glob: Simplify the interface for the GLOB_ALTDIRFUNC callback gl_readdir
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Previously, application code had to set up the d_namlen member if
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
the target supported it, involving conditional compilation. After
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
this change, glob will use the length of the string in d_name instead
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
of d_namlen to determine the file name length. All glibc targets
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
provide the d_type and d_ino members, and setting them as needed for
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
gl_readdir is straightforward.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Changing the behavior with regards to d_ino is left to a future
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
cleanup.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Index: b/manual/examples/mkdirent.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
===================================================================
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
--- /dev/null
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+++ b/manual/examples/mkdirent.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -0,0 +1,42 @@
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+/* Example for creating a struct dirent object for use with glob.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ Copyright (C) 2016 Free Software Foundation, Inc.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ This program is free software; you can redistribute it and/or
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ modify it under the terms of the GNU General Public License
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ as published by the Free Software Foundation; either version 2
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ of the License, or (at your option) any later version.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ This program is distributed in the hope that it will be useful,
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ GNU General Public License for more details.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ You should have received a copy of the GNU General Public License
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ along with this program; if not, if not, see <http://www.gnu.org/licenses/>.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+*/
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+#include <dirent.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+#include <errno.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+#include <stddef.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+#include <stdlib.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+#include <string.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+struct dirent *
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+mkdirent (const char *name)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+{
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ size_t dirent_size = offsetof (struct dirent, d_name) + 1;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ size_t name_length = strlen (name);
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ size_t total_size = dirent_size + name_length;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ if (total_size < dirent_size)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ errno = ENOMEM;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ return NULL;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ struct dirent *result = malloc (total_size);
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ if (result == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ return NULL;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ result->d_type = DT_UNKNOWN;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ result->d_ino = 1; /* Do not skip this entry. */
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ memcpy (result->d_name, name, name_length + 1);
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ return result;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Index: b/manual/pattern.texi
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
===================================================================
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
--- a/manual/pattern.texi
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+++ b/manual/pattern.texi
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -237,7 +237,44 @@ function used to read the contents of a
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@code{GLOB_ALTDIRFUNC} bit is set in the flag parameter. The type of
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
this field is @w{@code{struct dirent *(*) (void *)}}.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-This is a GNU extension.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+An implementation of @code{gl_readdir} needs to initialize the following
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+members of the @code{struct dirent} object:
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@table @code
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@item d_type
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+This member should be set to the file type of the entry if it is known.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+Otherwise, the value @code{DT_UNKNOWN} can be used. The @code{glob}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+function may use the specified file type to avoid callbacks in cases
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+where the file type indicates that the data is not required.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@item d_ino
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+This member needs to be non-zero, otherwise @code{glob} may skip the
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+current entry and call the @code{gl_readdir} callback function again to
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+retrieve another entry.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@item d_name
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+This member must be set to the name of the entry. It must be
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+null-terminated.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@end table
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+The example below shows how to allocate a @code{struct dirent} object
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+containing a given name.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@smallexample
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@include mkdirent.c.texi
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@end smallexample
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+The @code{glob} function reads the @code{struct dirent} members listed
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+above and makes a copy of the file name in the @code{d_name} member
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+immediately after the @code{gl_readdir} callback function returns.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+Future invocations of any of the callback functions may dealloacte or
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+reuse the buffer. It is the responsibility of the caller of the
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+@code{glob} function to allocate and deallocate the buffer, around the
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+call to @code{glob} or using the callback functions. For example, an
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+application could allocate the buffer in the @code{gl_readdir} callback
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+function, and deallocate it in the @code{gl_closedir} callback function.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+The @code{gl_readdir} member is a GNU extension.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@item gl_opendir
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
The address of an alternative implementation of the @code{opendir}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Index: b/posix/bug-glob2.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
===================================================================
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
--- a/posix/bug-glob2.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+++ b/posix/bug-glob2.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -193,7 +193,7 @@ my_readdir (void *gdir)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
return NULL;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- dir->d.d_ino = dir->idx;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ dir->d.d_ino = 1; /* glob should not skip this entry. */
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#ifdef _DIRENT_HAVE_D_TYPE
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
dir->d.d_type = filesystem[dir->idx].type;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Index: b/posix/glob.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
===================================================================
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
--- a/posix/glob.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+++ b/posix/glob.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -57,10 +57,8 @@
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#if defined HAVE_DIRENT_H || defined __GNU_LIBRARY__
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# include <dirent.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# define NAMLEN(dirent) strlen((dirent)->d_name)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#else
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# define dirent direct
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# define NAMLEN(dirent) (dirent)->d_namlen
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# ifdef HAVE_SYS_NDIR_H
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# include <sys/ndir.h>
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# endif
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -76,12 +74,6 @@
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#endif
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-/* In GNU systems, <dirent.h> defines this macro for us. */
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-#ifdef _D_NAMLEN
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# undef NAMLEN
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# define NAMLEN(d) _D_NAMLEN(d)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-#endif
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
/* When used in the GNU libc the symbol _DIRENT_HAVE_D_TYPE is available
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
if the `d_type' member for `struct dirent' is available.
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
HAVE_STRUCT_DIRENT_D_TYPE plays the same role in GNULIB. */
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -105,12 +97,6 @@
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
/* If the system has the `struct dirent64' type we use it internally. */
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#if defined _LIBC && !defined COMPILE_GLOB64
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# if defined HAVE_DIRENT_H || defined __GNU_LIBRARY__
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# define CONVERT_D_NAMLEN(d64, d32)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# else
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# define CONVERT_D_NAMLEN(d64, d32) \
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- (d64)->d_namlen = (d32)->d_namlen;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
-# endif
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# if (defined POSIX || defined WINDOWS32) && !defined __GNU_LIBRARY__
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# define CONVERT_D_INO(d64, d32)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -127,8 +113,7 @@
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# endif
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
# define CONVERT_DIRENT_DIRENT64(d64, d32) \
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- memcpy ((d64)->d_name, (d32)->d_name, NAMLEN (d32) + 1); \
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- CONVERT_D_NAMLEN (d64, d32) \
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ strcpy ((d64)->d_name, (d32)->d_name); \
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
CONVERT_D_INO (d64, d32) \
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
CONVERT_D_TYPE (d64, d32)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#endif
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -1562,7 +1547,6 @@ glob_in_dir (const char *pattern, const
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
while (1)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
{
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
const char *name;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- size_t len;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#if defined _LIBC && !defined COMPILE_GLOB64
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
struct dirent64 *d;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
union
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -1630,12 +1614,10 @@ glob_in_dir (const char *pattern, const
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
names = newnames;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
cur = 0;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- len = NAMLEN (d);
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- names->name[cur] = (char *) malloc (len + 1);
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ names->name[cur] = strdup (d->d_name);
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
if (names->name[cur] == NULL)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
goto memory_error;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- *((char *) mempcpy (names->name[cur++], name, len))
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- = '\0';
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ ++cur;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
++nfound;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
Index: b/posix/tst-gnuglob.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
===================================================================
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
--- a/posix/tst-gnuglob.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+++ b/posix/tst-gnuglob.c
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
@@ -211,7 +211,7 @@ my_readdir (void *gdir)
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
return NULL;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
}
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
- dir->d.d_ino = dir->idx;
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
+ dir->d.d_ino = 1; /* glob should not skip this entry. */
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
#ifdef _DIRENT_HAVE_D_TYPE
|
|
![](https://seccdn.libravatar.org/avatar/3a472f8ae167e3d9ad669220b1e8ed6d98f2576fa0461d58f9444841c8e3b2f5?s=16&d=retro) |
6ca2fbe |
dir->d.d_type = filesystem[dir->idx].type;
|