Lines Matching full:cp
100 Char *cp, *tcp; in dinit() local
111 cp = NULL; in dinit()
113 cp = Strsave(hp); in dinit()
116 cp = NULL; in dinit()
117 if (cp == NULL) { in dinit()
122 cp = SAVE("/"); in dinit()
137 cp = Strsave(hp); in dinit()
152 cp = dcanon(tcp, STRNULL); in dinit()
155 cp = dcanon(tcp, STRNULL); in dinit()
160 dp->di_name = cp; in dinit()
328 dnormalize(const Char *cp, int expnd) in dnormalize() argument
340 const Char *start = cp; in dnormalize()
348 for ( ; *cp && *(cp + 1); cp++) in dnormalize()
349 if (IS_DOTDOT(start, cp)) in dnormalize()
390 cp = start; in dnormalize()
394 while (*cp) in dnormalize()
395 if (IS_DOT(start, cp)) { in dnormalize()
396 if (*++cp) in dnormalize()
397 cp++; in dnormalize()
399 else if (IS_DOTDOT(start, cp)) { in dnormalize()
403 cp += 2; in dnormalize()
404 if (*cp) in dnormalize()
405 cp++; in dnormalize()
408 Strbuf_append1(&buf, *cp++); in dnormalize()
471 } while (*cp != '\0'); in dnormalize()
476 return Strsave(cp); in dnormalize()
487 Char *cp; in dochngd() local
493 cp = (dflag & DIR_OLD) ? varval(STRowd) : *v; in dochngd()
495 if (cp == NULL) { in dochngd()
498 else if ((cp = varval(STRhome)) == STRNULL || *cp == 0) in dochngd()
500 if (chdir(short2str(cp)) < 0) in dochngd()
502 cp = Strsave(cp); in dochngd()
509 else if ((dp = dfind(cp)) != 0) { in dochngd()
522 if ((cp = dfollow(cp, dflag & DIR_OLD)) == NULL) in dochngd()
525 dp->di_name = cp; in dochngd()
536 dgoto(Char *cp) in dgoto() argument
540 if (!ABSOLUTEP(cp)) in dgoto()
548 dp = xmalloc((cwdlen + Strlen(cp) + 2) * sizeof(Char)); in dgoto()
555 Strcpy(p, cp); in dgoto()
556 xfree(cp); in dgoto()
557 cp = dp; in dgoto()
561 dp = cp; in dgoto()
566 if (ABSOLUTEP(cp) && cp[1] == ':') { /* Only DOS paths are treated that way */ in dgoto()
569 ret = dcanon(cp, dp); in dgoto()
572 ret = dcanon(cp, dp); in dgoto()
581 dfollow(Char *cp, int old) in dfollow() argument
587 cp = old ? Strsave(cp) : globone(cp, G_ERROR); in dfollow()
588 cleanup_push(cp, xfree); in dfollow()
590 if (Strchr(cp, '`')) { in dfollow()
592 if (chdir(dptr = short2str(cp)) < 0) in dfollow()
597 cleanup_until(cp); in dfollow()
609 dp = dnormalize(cp, symlinks == SYM_IGNORE); in dfollow()
611 cleanup_until(cp); in dfollow()
616 if (chdir(short2str(cp)) >= 0) { in dfollow()
617 cleanup_ignore(cp); in dfollow()
618 cleanup_until(cp); in dfollow()
619 return dgoto(cp); in dfollow()
625 stderror(ERR_SYSTEM, short2str(cp), strerror(err)); in dfollow()
630 if (cp[0] != '/' && !prefix(STRdotsl, cp) && !prefix(STRdotdotsl, cp) in dfollow()
643 Strbuf_append(&buf, cp); in dfollow()
654 cleanup_until(cp); in dfollow()
657 else if (chdir(short2str(cp)) >= 0) { in dfollow()
661 cleanup_ignore(cp); in dfollow()
662 cleanup_until(cp); in dfollow()
663 return dgoto(cp); in dfollow()
669 dp = varval(cp); in dfollow()
671 cleanup_until(cp); in dfollow()
672 cp = Strsave(dp); in dfollow()
674 return dgoto(cp); in dfollow()
681 stderror(ERR_SYSTEM, short2str(cp), strerror(serrno)); in dfollow()
682 cleanup_until(cp); in dfollow()
697 Char *cp; in dopushd() local
702 cp = (dflag & DIR_OLD) ? varval(STRowd) : *v; in dopushd()
704 if (cp == NULL) { in dopushd()
706 if ((cp = varval(STRhome)) == STRNULL || *cp == 0) in dopushd()
708 if (chdir(short2str(cp)) < 0) in dopushd()
710 if ((cp = dfollow(cp, dflag & DIR_OLD)) == NULL) in dopushd()
713 dp->di_name = cp; in dopushd()
742 else if ((dp = dfind(cp)) != NULL) { in dopushd()
756 if ((ccp = dfollow(cp, dflag & DIR_OLD)) == NULL) in dopushd()
773 dfind(Char *cp) in dfind() argument
779 if (*cp++ != '+') in dfind()
781 for (ep = cp; Isdigit(*ep); ep++) in dfind()
785 i = getn(cp); in dfind()
805 Char *cp; in dopopd() local
811 cp = (dflag & DIR_OLD) ? varval(STRowd) : *v; in dopopd()
813 if (cp == NULL) in dopopd()
820 else if ((dp = dfind(cp)) == 0) in dopopd()
863 dcanon(Char *cp, Char *p) in dcanon() argument
865 cleanup_push(cp, xfree); in dcanon()
866 p = dcanon_internal(cp, p); in dcanon()
868 cleanup_ignore(cp); in dcanon()
869 cleanup_until(cp); in dcanon()
879 dcanon_internal(Char *cp, Char *p) in dcanon_internal() argument
895 clen = Strlen(cp); in dcanon_internal()
902 if (!ABSOLUTEP(cp)) { in dcanon_internal()
922 (void) Strcat(tmpdir, cp); in dcanon_internal()
923 xfree(cp); in dcanon_internal()
924 cp = p = tmpdir; in dcanon_internal()
928 slashslash = (cp[0] == '/' && cp[1] == '/'); in dcanon_internal()
949 if (&cp[1] == sp && sp[0] == '.' && sp[1] == '.' && sp[2] == '\0') in dcanon_internal()
953 if (--sp == cp) /* if path is one char (i.e. /) */ in dcanon_internal()
964 else if (--sp != cp) in dcanon_internal()
978 if (sp != cp && /* symlinks != SYM_IGNORE && */ in dcanon_internal()
979 (tlink = areadlink(short2str(cp))) != NULL) { in dcanon_internal()
1001 p1 = newcp = xmalloc(((sp - cp) + Strlen(mlink) + in dcanon_internal()
1006 for (p2 = cp; (*p1++ = *p2++) != '\0';) in dcanon_internal()
1015 p = sp - cp - 1 + newcp; in dcanon_internal()
1024 xfree(cp); in dcanon_internal()
1025 cp = newcp; in dcanon_internal()
1027 slashslash = (cp[0] == '/' && cp[1] == '/'); in dcanon_internal()
1033 if (sp != cp) in dcanon_internal()
1041 else if (cp == sp) in dcanon_internal()
1049 if (sp != cp && symlinks == SYM_CHASE && in dcanon_internal()
1050 (tlink = areadlink(short2str(cp))) != NULL) { in dcanon_internal()
1078 p1 = newcp = xmalloc(((sp - cp) + Strlen(mlink) + in dcanon_internal()
1083 for (p2 = cp; (*p1++ = *p2++) != '\0';) in dcanon_internal()
1092 p = sp - cp - 1 + newcp; in dcanon_internal()
1101 xfree(cp); in dcanon_internal()
1102 cp = newcp; in dcanon_internal()
1104 slashslash = (cp[0] == '/' && cp[1] == '/'); in dcanon_internal()
1123 if (p1 && *p1 == '/' && (Strncmp(p1, cp, cc) != 0 || in dcanon_internal()
1124 (cp[cc] != '/' && cp[cc] != '\0'))) { in dcanon_internal()
1144 p2 = copy = Strsave(cp); in dcanon_internal()
1162 newcp = Strspl(p1, cp + Strlen(p2)); in dcanon_internal()
1163 xfree(cp); in dcanon_internal()
1164 cp = newcp; in dcanon_internal()
1172 if (cp[1] != '/') { in dcanon_internal()
1173 p = xmalloc((Strlen(cp) + 2) * sizeof(Char)); in dcanon_internal()
1175 (void) Strcpy(&p[1], cp); in dcanon_internal()
1176 xfree(cp); in dcanon_internal()
1177 cp = p; in dcanon_internal()
1180 if (cp[1] == '/' && cp[2] == '/') { in dcanon_internal()
1181 for (p1 = &cp[1], p2 = &cp[2]; (*p1++ = *p2++) != '\0';) in dcanon_internal()
1185 return cp; in dcanon_internal()
1226 Char **cp; in dsetstack() local
1246 for (cp = vp->vec; cp && *cp && **cp; cp++) { in dsetstack()
1248 dp->di_name = Strsave(*cp); in dsetstack()