Lines Matching refs:dp
79 struct directory *dp; in dinit() local
131 dp = xcalloc(1, sizeof(*dp)); in dinit()
132 dp->di_name = cp; in dinit()
133 dp->di_count = 0; in dinit()
134 dhead.di_next = dhead.di_prev = dp; in dinit()
135 dp->di_next = dp->di_prev = &dhead; in dinit()
137 dnewcwd(dp); in dinit()
141 dset(Char *dp) in dset() argument
151 vec[0] = Strsave(dp); in dset()
154 Setenv(STRPWD, dp); in dset()
204 struct directory *dp; in printdirs() local
211 dp = dcwd; in printdirs()
215 if (dp == &dhead) in printdirs()
222 (len = Strlen(hp), Strncmp(hp, dp->di_name, len) == 0) && in printdirs()
223 (dp->di_name[len] == '\0' || dp->di_name[len] == '/')) in printdirs()
224 len = Strlen(s = (dp->di_name + len)) + 2; in printdirs()
226 len = Strlen(s = dp->di_name) + 1; in printdirs()
233 (void) fprintf(cshout, "%s%s%c", (s != dp->di_name)? "~" : "", in printdirs()
235 } while ((dp = dp->di_prev) != dcwd); in printdirs()
280 Char *dp, *cwd; in dnormalize() local
304 dp = Strrchr(cwd, '/'); in dnormalize()
305 if (dp) { in dnormalize()
306 *dp = '\0'; in dnormalize()
316 dp = Strspl(cwd, cp); in dnormalize()
318 return dp; in dnormalize()
338 struct directory *dp; in dochngd() local
352 else if ((dp = dfind(*v)) != 0) { in dochngd()
356 if (chdir(tmp = short2str(dp->di_name)) < 0) in dochngd()
361 dnewcwd(dp); in dochngd()
366 dp = xcalloc(1, sizeof(*dp)); in dochngd()
367 dp->di_name = cp; in dochngd()
368 dp->di_count = 0; in dochngd()
369 dp->di_next = dcwd->di_next; in dochngd()
370 dp->di_prev = dcwd->di_prev; in dochngd()
371 dp->di_prev->di_next = dp; in dochngd()
372 dp->di_next->di_prev = dp; in dochngd()
374 dnewcwd(dp); in dochngd()
380 Char *dp; in dgoto() local
392 dp = xreallocarray(NULL, in dgoto()
394 for (p = dp, q = dcwd->di_name; (*p++ = *q++) != '\0';) in dgoto()
403 cp = dp; in dgoto()
404 dp += cwdlen; in dgoto()
407 dp = cp; in dgoto()
409 cp = dcanon(cp, dp); in dgoto()
421 Char *dp; in dfollow() local
428 dp = dnormalize(cp); in dfollow()
429 if (chdir(short2str(dp)) >= 0) { in dfollow()
431 return dgoto(dp); in dfollow()
434 free(dp); in dfollow()
447 for (dp = buf, p = *cdp; (*dp++ = *p++) != '\0';) in dfollow()
449 dp[-1] = '/'; in dfollow()
450 for (p = cp; (*dp++ = *p++) != '\0';) in dfollow()
460 dp = value(cp); in dfollow()
461 if ((dp[0] == '/' || dp[0] == '.') && chdir(short2str(dp)) >= 0) { in dfollow()
463 cp = Strsave(dp); in dfollow()
482 struct directory *dp; in dopushd() local
489 if ((dp = dcwd->di_prev) == &dhead) in dopushd()
490 dp = dhead.di_prev; in dopushd()
491 if (dp == dcwd) in dopushd()
493 if (chdir(tmp = short2str(dp->di_name)) < 0) in dopushd()
495 dp->di_prev->di_next = dp->di_next; in dopushd()
496 dp->di_next->di_prev = dp->di_prev; in dopushd()
497 dp->di_next = dcwd->di_next; in dopushd()
498 dp->di_prev = dcwd; in dopushd()
499 dcwd->di_next->di_prev = dp; in dopushd()
500 dcwd->di_next = dp; in dopushd()
504 else if ((dp = dfind(*v)) != NULL) { in dopushd()
507 if (chdir(tmp = short2str(dp->di_name)) < 0) in dopushd()
514 dp = xcalloc(1, sizeof(*dp)); in dopushd()
515 dp->di_name = ccp; in dopushd()
516 dp->di_count = 0; in dopushd()
517 dp->di_prev = dcwd; in dopushd()
518 dp->di_next = dcwd->di_next; in dopushd()
519 dcwd->di_next = dp; in dopushd()
520 dp->di_next->di_prev = dp; in dopushd()
522 dnewcwd(dp); in dopushd()
531 struct directory *dp; in dfind() local
544 for (dp = dcwd; i != 0; i--) { in dfind()
545 if ((dp = dp->di_prev) == &dhead) in dfind()
546 dp = dp->di_prev; in dfind()
547 if (dp == dcwd) in dfind()
550 return (dp); in dfind()
561 struct directory *dp, *p = NULL; in dopopd() local
566 dp = dcwd; in dopopd()
569 else if ((dp = dfind(*v)) == 0) in dopopd()
571 if (dp->di_prev == &dhead && dp->di_next == &dhead) in dopopd()
573 if (dp == dcwd) { in dopopd()
576 if ((p = dp->di_prev) == &dhead) in dopopd()
581 dp->di_prev->di_next = dp->di_next; in dopopd()
582 dp->di_next->di_prev = dp->di_prev; in dopopd()
583 if (dp == dcwd) in dopopd()
588 dfree(dp); in dopopd()
595 dfree(struct directory *dp) in dfree() argument
598 if (dp->di_count != 0) { in dfree()
599 dp->di_next = dp->di_prev = 0; in dfree()
602 free(dp->di_name); in dfree()
603 free(dp); in dfree()
898 dnewcwd(struct directory *dp) in dnewcwd() argument
900 dcwd = dp; in dnewcwd()