Lines Matching defs:rpnp
125 struct pathname *rpnp,
130 return (lookuppnatcred(pnp, rpnp, followlink, dirvpp, compvpp, NULL,
140 struct pathname *rpnp, /* if non-NULL, return resolved path */
178 return (lookuppnvp(pnp, rpnp, followlink, dirvpp,
183 lookuppnat(struct pathname *pnp, struct pathname *rpnp,
187 return (lookuppnatcred(pnp, rpnp, followlink, dirvpp, compvpp, startvp,
213 struct pathname *rpnp, /* if non-NULL, return resolved path */
237 if (rpnp)
238 rpnp->pn_pathlen = 0;
272 if (rpnp && VN_CMP(vp, rootvp))
273 (void) pn_set(rpnp, "/");
510 * If rpnp is non-NULL, remember the resolved path name therein.
513 * Exhausting rpnp results in error ENAMETOOLONG.
515 if (rpnp && strcmp(component, ".") != 0) {
519 rpnp->pn_pathlen != 0 &&
520 !((rpnp->pn_pathlen > 2 &&
521 strncmp(rpnp->pn_path+rpnp->pn_pathlen-3, "/..", 3) == 0) ||
522 (rpnp->pn_pathlen == 2 &&
523 strncmp(rpnp->pn_path, "..", 2) == 0))) {
524 while (rpnp->pn_pathlen &&
525 rpnp->pn_path[rpnp->pn_pathlen-1] != '/')
526 rpnp->pn_pathlen--;
527 if (rpnp->pn_pathlen > 1)
528 rpnp->pn_pathlen--;
529 rpnp->pn_path[rpnp->pn_pathlen] = '\0';
531 if (rpnp->pn_pathlen != 0 &&
532 rpnp->pn_path[rpnp->pn_pathlen-1] != '/')
533 rpnp->pn_path[rpnp->pn_pathlen++] = '/';
540 rpnp->pn_path + rpnp->pn_pathlen,
541 rpnp->pn_bufsize - rpnp->pn_pathlen, &len);
544 rpnp->pn_path + rpnp->pn_pathlen,
545 rpnp->pn_bufsize - rpnp->pn_pathlen, &len);
549 rpnp->pn_pathlen += (len - 1);
550 ASSERT(rpnp->pn_bufsize > rpnp->pn_pathlen);
594 if (rpnp) {
596 (void) pn_set(rpnp, "/");
597 else if (rpnp->pn_pathlen == 0)
598 (void) pn_set(rpnp, ".");
1418 pathname_t rpnp, pnp;
1450 pn_alloc(&rpnp);
1452 if (lookuppn(&pnp, &rpnp, NO_FOLLOW, NULL, &compvp) == 0) {
1455 strcmp(value, rpnp.pn_path) == 0) {
1459 pn_free(&rpnp);
1472 pn_free(&rpnp);