This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs. |
Find paths matching a pattern
#include <glob.h> int glob( const char* pattern, int flags, int (*errfunc)( const char* epath, int error ), glob_t* pglob );
You must create the glob_t structure before calling glob(). The glob() function allocates storage as needed for the gl_pathv array. Use globfree() to free this space.
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
This function is in libc.a, but not in libc.so (in order to save space). |
The glob() function finds pathnames matching the given pattern.
In order to have access to a pathname, glob() must have search permission on every component of the path except the last, and read permission on each directory of every filename component of pattern that contains any of the special characters (*, ?, [ and ]).
The errfunc argument is a pointer to an error-handler function with this prototype:
int errfunc( const char* epath, int error );
The errfunc function is called when glob() encounters a directory that it can't open or read. The arguments are:
The errfunc function should return 0 if glob() should continue, or a nonzero value if glob() should stop searching.
You can set errfunc to NULL to ignore these types of errors.
The flags argument can be set to any combination of the following bits:
Zero for success, or an error value.
This simple example attempts to find all of the .c files in the current directory and print them in the order the filesystem found them.
#include <unistd.h> #include <stdio.h> #include <glob.h> int main( void ) { glob_t paths; int retval; paths.gl_pathc = 0; paths.gl_pathv = NULL; paths.gl_offs = 0; retval = glob( "*.c", GLOB_NOCHECK | GLOB_NOSORT, NULL, &paths ); if( retval == 0 ) { int idx; for( idx = 0; idx < paths.gl_pathc; idx++ ) { printf( "[%d]: %s\n", idx, paths.gl_pathv[idx] ); } globfree( &paths ); } else { puts( "glob() failed" ); } return 0; }
Safety: | |
---|---|
Cancellation point | Yes |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
Don't change the values in pglob between calling glob() and globfree().
globfree(), wordexp(), wordfree()