summaryrefslogtreecommitdiff
path: root/manual/pattern.texi
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-02-12 09:15:54 +0000
committerUlrich Drepper <drepper@redhat.com>2001-02-12 09:15:54 +0000
commit0fc95b8219bc2c47c00b206f592a5ad1830c023a (patch)
tree7d3dd24a22962a4d48d0a608c68b7cfcba06f993 /manual/pattern.texi
parentb5e73f5664cc2c3fce94162cdc6d97ac8232776f (diff)
Update.
2001-02-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/ieee754/ldbl-96/e_j0l.c: New file. Contributed by Stephen L. Moshier <moshier@na-net.ornl.gov>. 2001-02-11 Jakub Jelinek <jakub@redhat.com> * sysdeps/generic/strtoll.c (__strtoq_internal): Ressurect alias which was exported from libc. * sysdeps/generic/strtoull.c (__strtouq_internal): Likewise.
Diffstat (limited to 'manual/pattern.texi')
-rw-r--r--manual/pattern.texi125
1 files changed, 119 insertions, 6 deletions
diff --git a/manual/pattern.texi b/manual/pattern.texi
index 1a90ddc240..6479a1fbec 100644
--- a/manual/pattern.texi
+++ b/manual/pattern.texi
@@ -205,6 +205,84 @@ This is a GNU extension.
@end table
@end deftp
+For use in the @code{glob64} function @file{glob.h} contains another
+definition for a very similar type. @code{glob64_t} differs from
+@code{glob_t} only in the types of the members @code{gl_readdir},
+@code{gl_stat}, and @code{gl_lstat}.
+
+@comment glob.h
+@comment GNU
+@deftp {Data Type} glob64_t
+This data type holds a pointer to a word vector. More precisely, it
+records both the address of the word vector and its size. The GNU
+implementation contains some more fields which are non-standard
+extensions.
+
+@table @code
+@item gl_pathc
+The number of elements in the vector, excluding the initial null entries
+if the GLOB_DOOFFS flag is used (see gl_offs below).
+
+@item gl_pathv
+The address of the vector. This field has type @w{@code{char **}}.
+
+@item gl_offs
+The offset of the first real element of the vector, from its nominal
+address in the @code{gl_pathv} field. Unlike the other fields, this
+is always an input to @code{glob}, rather than an output from it.
+
+If you use a nonzero offset, then that many elements at the beginning of
+the vector are left empty. (The @code{glob} function fills them with
+null pointers.)
+
+The @code{gl_offs} field is meaningful only if you use the
+@code{GLOB_DOOFFS} flag. Otherwise, the offset is always zero
+regardless of what is in this field, and the first real element comes at
+the beginning of the vector.
+
+@item gl_closedir
+The address of an alternative implementation of the @code{closedir}
+function. It is used if the @code{GLOB_ALTDIRFUNC} bit is set in
+the flag parameter. The type of this field is
+@w{@code{void (*) (void *)}}.
+
+This is a GNU extension.
+
+@item gl_readdir
+The address of an alternative implementation of the @code{readdir64}
+function used to read the contents of a directory. It is used if the
+@code{GLOB_ALTDIRFUNC} bit is set in the flag parameter. The type of
+this field is @w{@code{struct dirent64 *(*) (void *)}}.
+
+This is a GNU extension.
+
+@item gl_opendir
+The address of an alternative implementation of the @code{opendir}
+function. It is used if the @code{GLOB_ALTDIRFUNC} bit is set in
+the flag parameter. The type of this field is
+@w{@code{void *(*) (const char *)}}.
+
+This is a GNU extension.
+
+@item gl_stat
+The address of an alternative implementation of the @code{stat64} function
+to get information about an object in the filesystem. It is used if the
+@code{GLOB_ALTDIRFUNC} bit is set in the flag parameter. The type of
+this field is @w{@code{int (*) (const char *, struct stat64 *)}}.
+
+This is a GNU extension.
+
+@item gl_lstat
+The address of an alternative implementation of the @code{lstat64}
+function to get information about an object in the filesystems, not
+following symbolic links. It is used if the @code{GLOB_ALTDIRFUNC} bit
+is set in the flag parameter. The type of this field is @code{@w{int
+(*) (const char *,} @w{struct stat64 *)}}.
+
+This is a GNU extension.
+@end table
+@end deftp
+
@comment glob.h
@comment POSIX.2
@deftypefun int glob (const char *@var{pattern}, int @var{flags}, int (*@var{errfunc}) (const char *@var{filename}, int @var{error-code}), glob_t *@var{vector-ptr})
@@ -234,7 +312,7 @@ that your application is making.
If @code{glob} succeeds, it returns 0. Otherwise, it returns one
of these error codes:
-@table @code
+@vtable @code
@comment glob.h
@comment POSIX.2
@item GLOB_ABORTED
@@ -261,10 +339,38 @@ at least one file.
@comment POSIX.2
@item GLOB_NOSPACE
It was impossible to allocate memory to hold the result.
-@end table
+@end vtable
In the event of an error, @code{glob} stores information in
@code{*@var{vector-ptr}} about all the matches it has found so far.
+
+It is important to notive that the @code{glob} function will not fail if
+it encounters directories or files which cannot be handled without the
+LFS interfaces. The implementation of @code{glob} is supposed to use
+these functions internally. This at least is the assumptions made by
+the Unix standard. The GNU extension of allowing the user to provide
+own directory handling and @code{stat} functions complicates things a
+bit. If these callback functions are used and a large file or directory
+is encountered @code{glob} @emph{can} fail.
+@end deftypefun
+
+@comment glob.h
+@comment GNU
+@deftypefun int glob64 (const char *@var{pattern}, int @var{flags}, int (*@var{errfunc}) (const char *@var{filename}, int @var{error-code}), glob64_t *@var{vector-ptr})
+The @code{glob64} function was added as part of the Large File Summit
+extensions but is not part of the original LFS proposal. The reason for
+this is simple: it is not necessary. The necessity for a @code{glob64}
+function is added by the extensions of the GNU @code{glob}
+implementation which allows the user to provide own directory handling
+and @code{stat} functions. The @code{readdir} and @code{stat} functions
+do depend on the choice of @code{_FILE_OFFSET_BITS} since the definition
+of the types @code{struct dirent} and @code{struct stat} will change
+depending on the choice.
+
+Beside this difference the @code{glob64} works just like @code{glob} in
+all aspects.
+
+This function is a GNU extension.
@end deftypefun
@node Flags for Globbing
@@ -274,7 +380,7 @@ This section describes the flags that you can specify in the
@var{flags} argument to @code{glob}. Choose the flags you want,
and combine them with the C bitwise OR operator @code{|}.
-@table @code
+@vtable @code
@comment glob.h
@comment POSIX.2
@item GLOB_APPEND
@@ -362,7 +468,7 @@ If you use @code{GLOB_NOESCAPE}, then @samp{\} is an ordinary character.
@code{glob} does its work by calling the function @code{fnmatch}
repeatedly. It handles the flag @code{GLOB_NOESCAPE} by turning on the
@code{FNM_NOESCAPE} flag in calls to @code{fnmatch}.
-@end table
+@end vtable
@node More Flags for Globbing
@subsection More Flags for Globbing
@@ -372,7 +478,7 @@ Beside the flags described in the last section, the GNU implementation of
@file{glob.h} file. Some of the extensions implement functionality
which is available in modern shell implementations.
-@table @code
+@vtable @code
@comment glob.h
@comment GNU
@item GLOB_PERIOD
@@ -502,7 +608,7 @@ This functionality is only available with the GNU @code{glob}
implementation. It is mainly used internally to increase the
performance but might be useful for a user as well and therefore is
documented here.
-@end table
+@end vtable
Calling @code{glob} will in most cases allocate resources which are used
to represent the result of the function call. If the same object of
@@ -519,6 +625,13 @@ calls to @code{glob} associated with the object pointed to by
@code{glob_t} typed object isn't used anymore.
@end deftypefun
+@comment glob.h
+@comment GNU
+@deftypefun void globfree64 (glob64_t *@var{pglob})
+This function is equivalent to @code{globfree} but it frees records of
+type @code{glob64_t} which were allocated by @code{glob64}.
+@end deftypefun
+
@node Regular Expressions
@section Regular Expression Matching