Lines Matching full:dp
101 struct directory *dp; in dinit() local
159 dp = xcalloc(sizeof(struct directory), 1); in dinit()
160 dp->di_name = cp; in dinit()
161 dp->di_count = 0; in dinit()
162 dhead.di_next = dhead.di_prev = dp; in dinit()
163 dp->di_next = dp->di_prev = &dhead; in dinit()
165 dnewcwd(dp, 0); in dinit()
166 setcopy(STRdirstack, dp->di_name, VAR_READWRITE|VAR_NOGLOB); in dinit()
170 dset(Char *dp) in dset() argument
177 setcopy(STRcwd, dp, VAR_READWRITE|VAR_NOGLOB); in dset()
178 tsetenv(STRPWD, dp); in dset()
232 struct directory *dp, *fdp; in dodirs() local
233 for (dp = dcwd->di_next; dp != dcwd; ) { in dodirs()
234 fdp = dp; in dodirs()
235 dp = dp->di_next; in dodirs()
239 dhead.di_next = dhead.di_prev = dp; in dodirs()
240 dp->di_next = dp->di_prev = &dhead; in dodirs()
259 struct directory *dp; in printdirs() local
263 dp = dcwd; in printdirs()
267 if (dp == &dhead) in printdirs()
273 s = dp->di_name; in printdirs()
288 } while ((dp = dp->di_prev) != dcwd); in printdirs()
331 /* return true if dp is of the form "../xxx" or "/../xxx" */ in dnormalize()
339 Char *dp, *cwd; in dnormalize() local
412 if ((dp = Strrchr(cwd, '/')) != NULL) { in dnormalize()
414 if (dp == &cwd[1]) in dnormalize()
417 *dp = '\0'; in dnormalize()
451 dp = Strspl(cwd, TRM(buf.s[0]) == '/' ? &buf.s[1] : buf.s); in dnormalize()
453 cwd = dp; in dnormalize()
488 struct directory *dp; in dochngd() local
509 else if ((dp = dfind(cp)) != 0) { in dochngd()
513 if (chdir(tmp = short2str(dp->di_name)) < 0) in dochngd()
518 dnewcwd(dp, dflag); in dochngd()
524 dp = xcalloc(sizeof(struct directory), 1); in dochngd()
525 dp->di_name = cp; in dochngd()
526 dp->di_count = 0; in dochngd()
527 dp->di_next = dcwd->di_next; in dochngd()
528 dp->di_prev = dcwd->di_prev; in dochngd()
529 dp->di_prev->di_next = dp; in dochngd()
530 dp->di_next->di_prev = dp; in dochngd()
532 dnewcwd(dp, dflag); in dochngd()
538 Char *dp, *ret; in dgoto() local
548 dp = xmalloc((cwdlen + Strlen(cp) + 2) * sizeof(Char)); in dgoto()
549 for (p = dp, q = dcwd->di_name; (*p++ = *q++) != '\0';) in dgoto()
557 cp = dp; in dgoto()
558 dp += cwdlen; in dgoto()
561 dp = cp; in dgoto()
569 ret = dcanon(cp, dp); in dgoto()
572 ret = dcanon(cp, dp); in dgoto()
583 Char *dp; in dfollow() local
594 dp = agetcwd(); in dfollow()
595 cleanup_push(dp, xfree); in dfollow()
596 if (dp != NULL) { in dfollow()
598 return dgoto(dp); in dfollow()
609 dp = dnormalize(cp, symlinks == SYM_IGNORE); in dfollow()
610 if (chdir(short2str(dp)) >= 0) { in dfollow()
612 return dgoto(dp); in dfollow()
615 xfree(dp); in dfollow()
649 dp = dnormalize(buf.s, symlinks == SYM_IGNORE || in dfollow()
651 if (chdir(short2str(dp)) >= 0) { in dfollow()
655 return dgoto(dp); in dfollow()
659 xfree(dp); in dfollow()
665 xfree(dp); in dfollow()
669 dp = varval(cp); in dfollow()
670 if ((dp[0] == '/' || dp[0] == '.') && chdir(short2str(dp)) >= 0) { in dfollow()
672 cp = Strsave(dp); in dfollow()
696 struct directory *dp; in dopushd() local
712 dp = xcalloc(sizeof(struct directory), 1); in dopushd()
713 dp->di_name = cp; in dopushd()
714 dp->di_count = 0; in dopushd()
715 dp->di_prev = dcwd; in dopushd()
716 dp->di_next = dcwd->di_next; in dopushd()
717 dcwd->di_next = dp; in dopushd()
718 dp->di_next->di_prev = dp; in dopushd()
723 if ((dp = dcwd->di_prev) == &dhead) in dopushd()
724 dp = dhead.di_prev; in dopushd()
725 if (dp == dcwd) in dopushd()
727 if (chdir(tmp = short2str(dp->di_name)) < 0) in dopushd()
729 dp->di_prev->di_next = dp->di_next; in dopushd()
730 dp->di_next->di_prev = dp->di_prev; in dopushd()
731 dp->di_next = dcwd->di_next; in dopushd()
732 dp->di_prev = dcwd; in dopushd()
733 dcwd->di_next->di_prev = dp; in dopushd()
734 dcwd->di_next = dp; in dopushd()
742 else if ((dp = dfind(cp)) != NULL) { in dopushd()
745 if (chdir(tmp = short2str(dp->di_name)) < 0) in dopushd()
751 dextract(dp); in dopushd()
758 dp = xcalloc(sizeof(struct directory), 1); in dopushd()
759 dp->di_name = ccp; in dopushd()
760 dp->di_count = 0; in dopushd()
761 dp->di_prev = dcwd; in dopushd()
762 dp->di_next = dcwd->di_next; in dopushd()
763 dcwd->di_next = dp; in dopushd()
764 dp->di_next->di_prev = dp; in dopushd()
766 dnewcwd(dp, dflag); in dopushd()
775 struct directory *dp; in dfind() local
788 for (dp = dcwd; i != 0; i--) { in dfind()
789 if ((dp = dp->di_prev) == &dhead) in dfind()
790 dp = dp->di_prev; in dfind()
791 if (dp == dcwd) in dfind()
794 return (dp); in dfind()
806 struct directory *dp, *p = NULL; in dopopd() local
814 dp = dcwd; in dopopd()
820 else if ((dp = dfind(cp)) == 0) in dopopd()
822 if (dp->di_prev == &dhead && dp->di_next == &dhead) in dopopd()
824 if (dp == dcwd) { in dopopd()
827 if ((p = dp->di_prev) == &dhead) in dopopd()
832 dp->di_prev->di_next = dp->di_next; in dopopd()
833 dp->di_next->di_prev = dp->di_prev; in dopopd()
834 dfree(dp); in dopopd()
835 if (dp == dcwd) { in dopopd()
847 dfree(struct directory *dp) in dfree() argument
850 if (dp->di_count != 0) { in dfree()
851 dp->di_next = dp->di_prev = 0; in dfree()
854 xfree(dp->di_name); in dfree()
855 xfree(dp); in dfree()
1193 dnewcwd(struct directory *dp, int dflag) in dnewcwd() argument
1201 if (dn != dp && Strcmp(dn->di_name, dp->di_name) == 0) { in dnewcwd()
1208 dcwd = dp; in dnewcwd()
1228 struct directory *dn, *dp; in dsetstack() local
1247 dp = xcalloc(sizeof(struct directory), 1); in dsetstack()
1248 dp->di_name = Strsave(*cp); in dsetstack()
1249 dp->di_count = 0; in dsetstack()
1250 dp->di_prev = dcwd; in dsetstack()
1251 dp->di_next = dcwd->di_next; in dsetstack()
1252 dcwd->di_next = dp; in dsetstack()
1253 dp->di_next->di_prev = dp; in dsetstack()
1288 struct directory *dp; in getstakd() local
1290 dp = dcwd; in getstakd()
1292 dp = dp->di_next; in getstakd()
1293 if (dp == &dhead) in getstakd()
1294 dp = dp->di_next; in getstakd()
1298 dp = dp->di_prev; in getstakd()
1299 if (dp == &dhead) in getstakd()
1300 dp = dp->di_prev; in getstakd()
1301 if (dp == dcwd) in getstakd()
1305 return dp->di_name; in getstakd()
1316 dextract(struct directory *dp) in dextract() argument
1318 if (dp == dcwd) in dextract()
1320 dp->di_next->di_prev = dp->di_prev; in dextract()
1321 dp->di_prev->di_next = dp->di_next; in dextract()
1322 dp->di_next = dcwd->di_next; in dextract()
1323 dp->di_prev = dcwd; in dextract()
1324 dp->di_next->di_prev = dp; in dextract()
1325 dcwd->di_next = dp; in dextract()
1364 struct directory *dp; in recdirs() local
1401 dp = dcwd->di_next; in recdirs()
1403 if (dp == &dhead) in recdirs()
1408 xprintf("cd %S\n", quote_meta(&qname, dp->di_name)); in recdirs()
1411 xprintf("pushd %S\n", quote_meta(&qname, dp->di_name)); in recdirs()
1416 } while ((dp = dp->di_next) != dcwd->di_next); in recdirs()