Lines Matching refs:pglob

152 	 int (*errfunc)(const char *, int), glob11_t * __restrict pglob)
164 pglob->gl_pathc = 0;
165 pglob->gl_pathv = NULL;
167 pglob->gl_offs = 0;
170 limit.l_path_lim = pglob->gl_matchc;
174 pglob->gl_flags = flags & ~GLOB_MAGCHAR;
175 pglob->gl_errfunc = errfunc;
176 pglob->gl_matchc = 0;
186 return (err_nomatch(pglob, &limit, pattern));
208 return (err_nomatch(pglob, &limit, pattern));
218 return (err_nomatch(pglob, &limit, pattern));
222 return (globexp0(patbuf, pglob, &limit, pattern));
224 return (glob0(patbuf, pglob, &limit, pattern));
228 globexp0(const Char *pattern, glob11_t *pglob, struct glob_limit *limit,
235 if ((pglob->gl_flags & GLOB_LIMIT) &&
240 return (glob0(pattern, pglob, limit, origpat));
243 oldpathc = pglob->gl_pathc;
245 if ((rv = globexp1(pattern, pglob, limit)) != 0)
248 return (globfinal(pglob, limit, oldpathc, origpat));
257 globexp1(const Char *pattern, glob11_t *pglob, struct glob_limit *limit)
262 if ((pglob->gl_flags & GLOB_LIMIT) &&
267 return (globexp2(ptr, pattern, pglob, limit));
270 return (glob0(pattern, pglob, limit, NULL));
280 globexp2(const Char *ptr, const Char *pattern, glob11_t *pglob,
318 return (glob0(pattern, pglob, limit, NULL));
363 rv = globexp1(patbuf, pglob, limit);
384 globtilde(const Char *pattern, Char *patbuf, size_t patbuf_len, glob11_t *pglob)
397 if (*pattern != TILDE || !(pglob->gl_flags & GLOB_TILDE))
495 glob0(const Char *pattern, glob11_t *pglob, struct glob_limit *limit,
502 qpatnext = globtilde(pattern, patbuf, MAXPATHLEN, pglob);
507 oldpathc = pglob->gl_pathc;
537 pglob->gl_flags |= GLOB_MAGCHAR;
541 pglob->gl_flags |= GLOB_MAGCHAR;
545 pglob->gl_flags |= GLOB_MAGCHAR;
562 if ((err = glob1(patbuf, pglob, limit)) != 0)
566 return (globfinal(pglob, limit, oldpathc, origpat));
572 globfinal(glob11_t *pglob, struct glob_limit *limit, size_t oldpathc,
574 if (pglob->gl_pathc == oldpathc)
575 return (err_nomatch(pglob, limit, origpat));
577 if (!(pglob->gl_flags & GLOB_NOSORT))
578 qsort(pglob->gl_pathv + pglob->gl_offs + oldpathc,
579 pglob->gl_pathc - oldpathc, sizeof(char *), compare);
591 glob1(Char *pattern, glob11_t *pglob, struct glob_limit *limit)
599 pattern, pglob, limit));
609 glob11_t *pglob, struct glob_limit *limit)
622 if (g_lstat(pathbuf, &sb, pglob))
625 if ((pglob->gl_flags & GLOB_LIMIT) &&
630 if ((pglob->gl_flags & GLOB_MARK) &&
634 g_stat(pathbuf, &sb, pglob) == 0 &&
643 ++pglob->gl_matchc;
644 return (globextend(pathbuf, pglob, limit, NULL));
672 p, pglob, limit));
680 glob11_t *pglob, struct glob_limit *limit)
694 if (pglob->gl_errfunc != NULL &&
702 if ((dirp = g_opendir(pathbuf, pglob)) == NULL) {
705 err = err_aborted(pglob, errno, buf);
713 /* pglob->gl_readdir takes a void *, fix this manually */
714 if (pglob->gl_flags & GLOB_ALTDIRFUNC)
716 (struct freebsd11_dirent *(*)(DIR *))pglob->gl_readdir;
729 if ((pglob->gl_flags & GLOB_LIMIT) &&
759 if (too_long && (err = err_aborted(pglob, ENAMETOOLONG,
772 pglob, limit);
779 if (pglob->gl_flags & GLOB_ALTDIRFUNC)
780 (*pglob->gl_closedir)(dirp);
789 (err = err_aborted(pglob, errno, buf)))
813 globextend(const Char *path, glob11_t *pglob, struct glob_limit *limit,
821 if ((pglob->gl_flags & GLOB_LIMIT) &&
822 pglob->gl_matchc > limit->l_path_lim) {
827 newn = 2 + pglob->gl_pathc + pglob->gl_offs;
829 pathv = reallocarray(pglob->gl_pathv, newn, sizeof(*pathv));
833 if (pglob->gl_pathv == NULL && pglob->gl_offs > 0) {
835 pathv += pglob->gl_offs;
836 for (i = pglob->gl_offs + 1; --i > 0; )
839 pglob->gl_pathv = pathv;
857 if ((pglob->gl_flags & GLOB_LIMIT) &&
863 pathv[pglob->gl_offs + pglob->gl_pathc++] = copy;
865 pathv[pglob->gl_offs + pglob->gl_pathc] = NULL;
942 freebsd11_globfree(glob11_t *pglob)
947 if (pglob->gl_pathv != NULL) {
948 pp = pglob->gl_pathv + pglob->gl_offs;
949 for (i = pglob->gl_pathc; i--; ++pp)
952 free(pglob->gl_pathv);
953 pglob->gl_pathv = NULL;
958 g_opendir(Char *str, glob11_t *pglob)
971 if (pglob->gl_flags & GLOB_ALTDIRFUNC)
972 return ((*pglob->gl_opendir)(buf));
978 g_lstat(Char *fn, struct freebsd11_stat *sb, glob11_t *pglob)
986 if (pglob->gl_flags & GLOB_ALTDIRFUNC)
987 return((*pglob->gl_lstat)(buf, sb));
992 g_stat(Char *fn, struct freebsd11_stat *sb, glob11_t *pglob)
1000 if (pglob->gl_flags & GLOB_ALTDIRFUNC)
1001 return ((*pglob->gl_stat)(buf, sb));
1041 err_nomatch(glob11_t *pglob, struct glob_limit *limit, const char *origpat) {
1048 if ((pglob->gl_flags & GLOB_NOCHECK) ||
1049 ((pglob->gl_flags & GLOB_NOMAGIC) &&
1050 !(pglob->gl_flags & GLOB_MAGCHAR)))
1051 return (globextend(NULL, pglob, limit, origpat));
1056 err_aborted(glob11_t *pglob, int err, char *buf) {
1057 if ((pglob->gl_errfunc != NULL && pglob->gl_errfunc(buf, err)) ||
1058 (pglob->gl_flags & GLOB_ERR))