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