glob: sparse fixes
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
parent
278ca6847f
commit
e7ef703f07
36
lib/glob.c
36
lib/glob.c
|
@ -100,11 +100,8 @@ const __ptr_t b;
|
||||||
`glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
|
`glob' returns GLOB_ABEND; if it returns zero, the error is ignored.
|
||||||
If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
|
If memory cannot be allocated for PGLOB, GLOB_NOSPACE is returned.
|
||||||
Otherwise, `glob' returns zero. */
|
Otherwise, `glob' returns zero. */
|
||||||
int glob(pattern, flags, errfunc, pglob)
|
int glob(const char *pattern, int flags,
|
||||||
const char *pattern;
|
int (*errfunc) __P((const char *, int)), glob_t *pglob)
|
||||||
int flags;
|
|
||||||
int (*errfunc) __P((const char *, int));
|
|
||||||
glob_t *pglob;
|
|
||||||
{
|
{
|
||||||
const char *filename;
|
const char *filename;
|
||||||
char *dirname = NULL;
|
char *dirname = NULL;
|
||||||
|
@ -171,7 +168,7 @@ glob_t *pglob;
|
||||||
For each name we found, call glob_in_dir on it and FILENAME,
|
For each name we found, call glob_in_dir on it and FILENAME,
|
||||||
appending the results to PGLOB. */
|
appending the results to PGLOB. */
|
||||||
for (i = 0; i < dirs.gl_pathc; ++i) {
|
for (i = 0; i < dirs.gl_pathc; ++i) {
|
||||||
int oldcount;
|
int oldcount1;
|
||||||
|
|
||||||
#ifdef SHELL
|
#ifdef SHELL
|
||||||
{
|
{
|
||||||
|
@ -186,7 +183,7 @@ glob_t *pglob;
|
||||||
}
|
}
|
||||||
#endif /* SHELL. */
|
#endif /* SHELL. */
|
||||||
|
|
||||||
oldcount = pglob->gl_pathc;
|
oldcount1 = pglob->gl_pathc;
|
||||||
status = glob_in_dir(filename, dirs.gl_pathv[i],
|
status = glob_in_dir(filename, dirs.gl_pathv[i],
|
||||||
(flags | GLOB_APPEND) &
|
(flags | GLOB_APPEND) &
|
||||||
~GLOB_NOCHECK, errfunc, pglob);
|
~GLOB_NOCHECK, errfunc, pglob);
|
||||||
|
@ -202,8 +199,8 @@ glob_t *pglob;
|
||||||
|
|
||||||
/* Stick the directory on the front of each name. */
|
/* Stick the directory on the front of each name. */
|
||||||
prefix_array(dirs.gl_pathv[i],
|
prefix_array(dirs.gl_pathv[i],
|
||||||
&pglob->gl_pathv[oldcount],
|
&pglob->gl_pathv[oldcount1],
|
||||||
pglob->gl_pathc - oldcount,
|
pglob->gl_pathc - oldcount1,
|
||||||
flags & GLOB_MARK);
|
flags & GLOB_MARK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,11 +283,8 @@ out:
|
||||||
unless DIRNAME is just "/". Each old element of ARRAY is freed.
|
unless DIRNAME is just "/". Each old element of ARRAY is freed.
|
||||||
If ADD_SLASH is non-zero, allocate one character more than
|
If ADD_SLASH is non-zero, allocate one character more than
|
||||||
necessary, so that a slash can be appended later. */
|
necessary, so that a slash can be appended later. */
|
||||||
static int prefix_array(dirname, array, n, add_slash)
|
static int prefix_array(const char *dirname, char **array, size_t n,
|
||||||
const char *dirname;
|
int add_slash)
|
||||||
char **array;
|
|
||||||
size_t n;
|
|
||||||
int add_slash;
|
|
||||||
{
|
{
|
||||||
register size_t i;
|
register size_t i;
|
||||||
size_t dirlen = strlen(dirname);
|
size_t dirlen = strlen(dirname);
|
||||||
|
@ -319,12 +313,8 @@ int add_slash;
|
||||||
and matches are searched for in DIRECTORY.
|
and matches are searched for in DIRECTORY.
|
||||||
The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done.
|
The GLOB_NOSORT bit in FLAGS is ignored. No sorting is ever done.
|
||||||
The GLOB_APPEND flag is assumed to be set (always appends). */
|
The GLOB_APPEND flag is assumed to be set (always appends). */
|
||||||
static int glob_in_dir(pattern, directory, flags, errfunc, pglob)
|
static int glob_in_dir(const char *pattern, const char *directory,
|
||||||
const char *pattern;
|
int flags, int (*errfunc) __P((const char *, int)), glob_t *pglob)
|
||||||
const char *directory;
|
|
||||||
int flags;
|
|
||||||
int (*errfunc) __P((const char *, int));
|
|
||||||
glob_t *pglob;
|
|
||||||
{
|
{
|
||||||
__ptr_t stream;
|
__ptr_t stream;
|
||||||
|
|
||||||
|
@ -457,12 +447,10 @@ glob_t *pglob;
|
||||||
#endif /* CONFIG_FAKE_GLOB */
|
#endif /* CONFIG_FAKE_GLOB */
|
||||||
|
|
||||||
/* Free storage allocated in PGLOB by a previous `glob' call. */
|
/* Free storage allocated in PGLOB by a previous `glob' call. */
|
||||||
void globfree(pglob)
|
void globfree(glob_t *pglob)
|
||||||
register glob_t *pglob;
|
|
||||||
{
|
{
|
||||||
if (pglob->gl_pathv != NULL) {
|
if (pglob->gl_pathv != NULL) {
|
||||||
register int i =
|
int i = pglob->gl_flags & GLOB_DOOFFS ? pglob->gl_offs : 0;
|
||||||
pglob->gl_flags & GLOB_DOOFFS ? pglob->gl_offs : 0;
|
|
||||||
for (; i < pglob->gl_pathc; ++i)
|
for (; i < pglob->gl_pathc; ++i)
|
||||||
if (pglob->gl_pathv[i] != NULL)
|
if (pglob->gl_pathv[i] != NULL)
|
||||||
free((__ptr_t) pglob->gl_pathv[i]);
|
free((__ptr_t) pglob->gl_pathv[i]);
|
||||||
|
|
Loading…
Reference in New Issue