Lines Matching refs:gp

78 gl_diropen(glob_t* gp, const char* path)  in gl_diropen()  argument
80 return (*gp->gl_opendir)(path); in gl_diropen()
88 gl_dirnext(glob_t* gp, void* handle) in gl_dirnext() argument
92 while (dp = (struct dirent*)(*gp->gl_readdir)(handle)) in gl_dirnext()
99 gp->gl_status |= GLOB_NOTDIR; in gl_dirnext()
111 gl_dirclose(glob_t* gp, void* handle) in gl_dirclose() argument
113 (gp->gl_closedir)(handle); in gl_dirclose()
121 gl_type(glob_t* gp, const char* path, int flags) in gl_type() argument
126 if ((flags & GLOB_STARSTAR) ? (*gp->gl_lstat)(path, &st) : (*gp->gl_stat)(path, &st)) in gl_type()
144 gl_attr(glob_t* gp, const char* path, int flags) in gl_attr() argument
154 gl_nextdir(glob_t* gp, char* dir) in gl_nextdir() argument
156 if (!(dir = gp->gl_nextpath)) in gl_nextdir()
157 dir = gp->gl_nextpath = stakcopy(pathbin()); in gl_nextdir()
158 switch (*gp->gl_nextpath) in gl_nextdir()
164 while (*gp->gl_nextpath == ':') in gl_nextdir()
165 gp->gl_nextpath++; in gl_nextdir()
169 while (*gp->gl_nextpath) in gl_nextdir()
170 if (*gp->gl_nextpath++ == ':') in gl_nextdir()
172 *(gp->gl_nextpath - 1) = 0; in gl_nextdir()
185 errorcheck(register glob_t* gp, const char* path) in errorcheck() argument
189 if (gp->gl_errfn) in errorcheck()
190 r = (*gp->gl_errfn)(path, errno); in errorcheck()
191 if (gp->gl_flags & GLOB_ERR) in errorcheck()
194 gp->gl_error = GLOB_ABORTED; in errorcheck()
231 addmatch(register glob_t* gp, const char* dir, const char* pat, register const char* rescan, char* … in addmatch() argument
237 stakseek(MATCHPATH(gp)); in addmatch()
241 stakputc(gp->gl_delim); in addmatch()
248 if ((*gp->gl_type)(gp, stakptr(MATCHPATH(gp)), 0) != GLOB_DIR) in addmatch()
250 stakputc(gp->gl_delim); in addmatch()
261 ap->gl_next = gp->gl_rescan; in addmatch()
262 gp->gl_rescan = ap; in addmatch()
266 …if (!endslash && (gp->gl_flags & GLOB_MARK) && (type = (*gp->gl_type)(gp, stakptr(MATCHPATH(gp)), … in addmatch()
268 if ((gp->gl_flags & GLOB_COMPLETE) && type != GLOB_EXE) in addmatch()
273 else if (type == GLOB_DIR && (gp->gl_flags & GLOB_MARK)) in addmatch()
274 stakputc(gp->gl_delim); in addmatch()
277 ap->gl_next = gp->gl_match; in addmatch()
278 gp->gl_match = ap; in addmatch()
279 gp->gl_pathc++; in addmatch()
282 if (gp->gl_flags & GLOB_COMPLETE) in addmatch()
293 glob_dir(glob_t* gp, globlist_t* ap) in glob_dir() argument
315 int meta = ((gp->re_flags & REG_ICASE) && *ap->gl_begin != '/') ? MATCH_META : 0; in glob_dir()
325 if (*gp->gl_intr) in glob_dir()
327 gp->gl_error = GLOB_INTR; in glob_dir()
331 prefix = dirname = ap->gl_path + gp->gl_extra; in glob_dir()
350 if (!first && !*rescan && *(rescan - 2) == gp->gl_delim) in glob_dir()
353 c = (*gp->gl_type)(gp, prefix, 0); in glob_dir()
354 *(rescan - 2) = gp->gl_delim; in glob_dir()
356 addmatch(gp, NiL, prefix, NiL, rescan - 1, anymeta); in glob_dir()
358 else if ((anymeta || !(gp->gl_flags & GLOB_NOCHECK)) && (*gp->gl_type)(gp, prefix, 0)) in glob_dir()
359 addmatch(gp, NiL, prefix, NiL, NiL, anymeta); in glob_dir()
375 if (!(gp->gl_flags & GLOB_AUGMENTED)) in glob_dir()
382 if (!(gp->gl_flags & GLOB_NOESCAPE)) in glob_dir()
390 if (c == gp->gl_delim) in glob_dir()
408 if (!rescan && (gp->gl_flags & GLOB_COMPLETE)) in glob_dir()
430 if (!complete && (gp->gl_flags & GLOB_STARSTAR)) in glob_dir()
453 if (rescan && !complete && (gp->gl_flags & GLOB_STARSTAR)) in glob_dir()
472 gp->gl_starstar++; in glob_dir()
473 if (gp->gl_opt) in glob_dir()
474 pat = strcpy(gp->gl_opt, pat); in glob_dir()
479 if (!(dirname = (*gp->gl_nextdir)(gp, dirname))) in glob_dir()
483 …if ((!starstar && !gp->gl_starstar || (*gp->gl_type)(gp, dirname, GLOB_STARSTAR) == GLOB_DIR) && (… in glob_dir()
485 if (!(gp->re_flags & REG_ICASE) && ((*gp->gl_attr)(gp, dirname, 0) & GLOB_ICASE)) in glob_dir()
489 if (err = regcomp(&rei, pat, gp->re_flags|REG_ICASE)) in glob_dir()
494 if (gp->gl_ignore) in glob_dir()
496 if (!gp->gl_ignorei) in glob_dir()
498 if (regcomp(&gp->re_ignorei, gp->gl_fignore, gp->re_flags|REG_ICASE)) in glob_dir()
500 gp->gl_error = GLOB_APPERR; in glob_dir()
503 gp->gl_ignorei = &gp->re_ignorei; in glob_dir()
505 ire = gp->gl_ignorei; in glob_dir()
514 if (err = regcomp(&rec, pat, gp->re_flags)) in glob_dir()
519 ire = gp->gl_ignore; in glob_dir()
522 *restore2 = gp->gl_delim; in glob_dir()
523 while ((name = (*gp->gl_dirnext)(gp, dirf)) && !*gp->gl_intr) in glob_dir()
525 if (notdir = (gp->gl_status & GLOB_NOTDIR)) in glob_dir()
526 gp->gl_status &= ~GLOB_NOTDIR; in glob_dir()
530 addmatch(gp, prefix, name, matchdir, NiL, anymeta); in glob_dir()
534 addmatch(gp, prefix, name, rescan, NiL, anymeta); in glob_dir()
536 addmatch(gp, prefix, name, starstar==2?"":NiL, NiL, anymeta); in glob_dir()
540 (*gp->gl_dirclose)(gp, dirf); in glob_dir()
541 if (err || errno && !errorcheck(gp, dirname)) in glob_dir()
544 else if (!complete && !errorcheck(gp, dirname)) in glob_dir()
548 if (*gp->gl_intr) in glob_dir()
550 gp->gl_error = GLOB_INTR; in glob_dir()
555 *restore1 = gp->gl_delim; in glob_dir()
557 *restore2 = gp->gl_delim; in glob_dir()
563 gp->gl_error = GLOB_NOSPACE; in glob_dir()
567 glob(const char* pattern, int flags, int (*errfn)(const char*, int), register glob_t* gp) in glob() argument
586 gp->gl_rescan = 0; in glob()
587 gp->gl_error = 0; in glob()
588 gp->gl_errfn = errfn; in glob()
591 if ((gp->gl_flags |= GLOB_APPEND) ^ (flags|GLOB_MAGIC)) in glob()
593 if (((gp->gl_flags & GLOB_STACK) == 0) == (gp->gl_stak == 0)) in glob()
595 if (gp->gl_starstar > 1) in glob()
596 gp->gl_flags |= GLOB_STARSTAR; in glob()
598 gp->gl_starstar = 0; in glob()
602 gp->gl_flags = (flags&0xffff)|GLOB_MAGIC; in glob()
603 gp->re_flags = REG_SHELL|REG_NOSUB|REG_LEFT|REG_RIGHT|((flags&GLOB_AUGMENTED)?REG_AUGMENTED:0); in glob()
604 gp->gl_pathc = 0; in glob()
605 gp->gl_ignore = 0; in glob()
606 gp->gl_ignorei = 0; in glob()
607 gp->gl_starstar = 0; in glob()
610 gp->gl_fignore = 0; in glob()
611 gp->gl_suffix = 0; in glob()
612 gp->gl_intr = 0; in glob()
613 gp->gl_delim = 0; in glob()
614 gp->gl_handle = 0; in glob()
615 gp->gl_diropen = 0; in glob()
616 gp->gl_dirnext = 0; in glob()
617 gp->gl_dirclose = 0; in glob()
618 gp->gl_type = 0; in glob()
619 gp->gl_attr = 0; in glob()
620 gp->gl_nextdir = 0; in glob()
621 gp->gl_stat = 0; in glob()
622 gp->gl_lstat = 0; in glob()
623 gp->gl_extra = 0; in glob()
627 gp->gl_opendir = (GL_opendir_f)opendir; in glob()
628 gp->gl_readdir = (GL_readdir_f)readdir; in glob()
629 gp->gl_closedir = (GL_closedir_f)closedir; in glob()
630 if (!gp->gl_stat) in glob()
631 gp->gl_stat = (GL_stat_f)pathstat; in glob()
633 if (!gp->gl_lstat) in glob()
634 gp->gl_lstat = (GL_stat_f)lstat; in glob()
635 if (!gp->gl_intr) in glob()
636 gp->gl_intr = &intr; in glob()
637 if (!gp->gl_delim) in glob()
638 gp->gl_delim = '/'; in glob()
639 if (!gp->gl_diropen) in glob()
640 gp->gl_diropen = gl_diropen; in glob()
641 if (!gp->gl_dirnext) in glob()
642 gp->gl_dirnext = gl_dirnext; in glob()
643 if (!gp->gl_dirclose) in glob()
644 gp->gl_dirclose = gl_dirclose; in glob()
645 if (!gp->gl_type) in glob()
646 gp->gl_type = gl_type; in glob()
647 if (!gp->gl_attr) in glob()
648 gp->gl_attr = gl_attr; in glob()
650 gp->re_flags |= REG_ICASE; in glob()
651 if (!gp->gl_fignore) in glob()
652 gp->re_flags |= REG_SHELL_DOT; in glob()
653 else if (*gp->gl_fignore) in glob()
655 if (regcomp(&gp->re_ignore, gp->gl_fignore, gp->re_flags)) in glob()
657 gp->gl_ignore = &gp->re_ignore; in glob()
659 if (gp->gl_flags & GLOB_STACK) in glob()
660 gp->gl_stak = 0; in glob()
661 else if (!(gp->gl_stak = stakcreate(0))) in glob()
663 if ((gp->gl_flags & GLOB_COMPLETE) && !gp->gl_nextdir) in glob()
664 gp->gl_nextdir = gl_nextdir; in glob()
666 skip = gp->gl_pathc; in glob()
667 if (gp->gl_stak) in glob()
668 oldstak = stakinstall(gp->gl_stak, 0); in glob()
670 extra += gp->gl_offs; in glob()
671 if (gp->gl_suffix) in glob()
672 suflen = strlen(gp->gl_suffix); in glob()
675 f = gp->gl_flags; in glob()
717 flags = (gp->gl_flags = f) & 0xffff; in glob()
719 gp->re_flags |= REG_ICASE; in glob()
721 gp->re_flags &= ~REG_ICASE; in glob()
732 …list_t*)stakalloc((optlen ? 2 : 1) * strlen(pattern) + sizeof(globlist_t) + suflen + gp->gl_extra); in glob()
735 ap->gl_begin = ap->gl_path + gp->gl_extra; in glob()
738 pat = strcopy(pat, gp->gl_suffix); in glob()
739 gp->gl_pat = optlen ? strncpy(gp->gl_opt = pat + 1, pattern, optlen) : (char*)0; in glob()
742 gp->gl_match = 0; in glob()
745 gp->gl_rescan = ap->gl_next; in glob()
746 glob_dir(gp, ap); in glob()
747 } while (!gp->gl_error && (ap = gp->gl_rescan)); in glob()
748 if (gp->gl_pathc == skip) in glob()
752 gp->gl_pathc++; in glob()
753 top->gl_next = gp->gl_match; in glob()
754 gp->gl_match = top; in glob()
755 strcopy(top->gl_path + gp->gl_extra, nocheck); in glob()
758 gp->gl_error = GLOB_NOMATCH; in glob()
761 gp->gl_list = gp->gl_match; in glob()
764 argv = (char**)stakalloc((gp->gl_pathc + extra) * sizeof(char*)); in glob()
765 if (gp->gl_flags & GLOB_APPEND) in glob()
768 memcpy(argv, gp->gl_pathv, skip * sizeof(char*)); in glob()
777 gp->gl_pathv = argv; in glob()
779 ap = gp->gl_match; in glob()
782 *argv++ = ap->gl_path + gp->gl_extra; in glob()
789 if (gp->gl_starstar > 1) in glob()
790 av[gp->gl_pathc = struniq(av, argv - av)] = 0; in glob()
791 gp->gl_starstar = 0; in glob()
794 if (gp->gl_starstar > 1) in glob()
795 gp->gl_flags &= ~GLOB_STARSTAR; in glob()
796 if (gp->gl_stak) in glob()
798 return gp->gl_error; in glob()
802 globfree(glob_t* gp) in globfree() argument
804 if ((gp->gl_flags & GLOB_MAGIC) == GLOB_MAGIC) in globfree()
806 gp->gl_flags &= ~GLOB_MAGIC; in globfree()
807 if (gp->gl_stak) in globfree()
808 stkclose(gp->gl_stak); in globfree()
809 if (gp->gl_ignore) in globfree()
810 regfree(gp->gl_ignore); in globfree()
811 if (gp->gl_ignorei) in globfree()
812 regfree(gp->gl_ignorei); in globfree()