Lines Matching defs:pnp
73 pn_alloc(struct pathname *pnp)
75 pn_alloc_sz(pnp, MAXPATHLEN);
78 pn_alloc_sz(struct pathname *pnp, size_t sz)
80 pnp->pn_path = pnp->pn_buf = kmem_alloc(sz, KM_SLEEP);
81 pnp->pn_pathlen = 0;
82 pnp->pn_bufsize = sz;
89 pn_free(struct pathname *pnp)
92 kmem_free(pnp->pn_buf, pnp->pn_bufsize);
93 pnp->pn_path = pnp->pn_buf = NULL;
94 pnp->pn_pathlen = pnp->pn_bufsize = 0;
104 pn_get_buf(char *str, enum uio_seg seg, struct pathname *pnp,
109 pnp->pn_path = pnp->pn_buf = buf;
110 pnp->pn_bufsize = bufsize;
112 error = copyinstr(str, pnp->pn_path, bufsize, &pnp->pn_pathlen);
114 error = copystr(str, pnp->pn_path, bufsize, &pnp->pn_pathlen);
117 pnp->pn_pathlen--; /* don't count null byte */
125 pn_get(char *str, enum uio_seg seg, struct pathname *pnp)
131 if ((error = pn_get_buf(str, seg, pnp, buf, MAXPATHLEN)) != 0)
132 pn_free(pnp);
143 pn_set(struct pathname *pnp, char *path)
147 pnp->pn_path = pnp->pn_buf;
148 error = copystr(path, pnp->pn_path, pnp->pn_bufsize, &pnp->pn_pathlen);
149 pnp->pn_pathlen--; /* don't count null byte */
165 pn_insert(struct pathname *pnp, struct pathname *sympnp, size_t complen)
172 if (pnp->pn_pathlen + sympnp->pn_pathlen >= pnp->pn_bufsize)
174 if (pnp->pn_pathlen != 0)
175 ovbcopy(pnp->pn_path, pnp->pn_buf + sympnp->pn_pathlen,
176 pnp->pn_pathlen);
177 bcopy(sympnp->pn_path, pnp->pn_buf, sympnp->pn_pathlen);
178 pnp->pn_pathlen += sympnp->pn_pathlen;
179 pnp->pn_buf[pnp->pn_pathlen] = '\0';
180 pnp->pn_path = pnp->pn_buf;
185 if ((pnp->pn_path - pnp->pn_buf) - complen +
186 pnp->pn_pathlen + sympnp->pn_pathlen >= pnp->pn_bufsize)
189 if (pnp->pn_pathlen != 0)
190 ovbcopy(pnp->pn_path, pnp->pn_path - complen +
191 sympnp->pn_pathlen, pnp->pn_pathlen + 1);
192 pnp->pn_path -= complen;
193 bcopy(sympnp->pn_path, pnp->pn_path, sympnp->pn_pathlen);
194 pnp->pn_pathlen += sympnp->pn_pathlen;
201 pn_getsymlink(vnode_t *vp, struct pathname *pnp, cred_t *crp)
207 aiov.iov_base = pnp->pn_path = pnp->pn_buf;
208 aiov.iov_len = pnp->pn_bufsize;
214 auio.uio_resid = pnp->pn_bufsize;
216 pnp->pn_pathlen = pnp->pn_bufsize - auio.uio_resid;
217 if (pnp->pn_pathlen == pnp->pn_bufsize)
220 pnp->pn_path[pnp->pn_pathlen] = '\0';
231 pn_getcomponent(struct pathname *pnp, char *component)
236 path = pnp->pn_path;
237 pathlen = pnp->pn_pathlen;
253 pnp->pn_path = cp;
254 pnp->pn_pathlen = pathlen - (cp - path);
263 pn_skipslash(struct pathname *pnp)
265 while (pnp->pn_pathlen > 0 && *pnp->pn_path == '/') {
266 pnp->pn_path++;
267 pnp->pn_pathlen--;
278 pn_setlast(struct pathname *pnp)
280 char *buf = pnp->pn_buf;
281 char *path = pnp->pn_path + pnp->pn_pathlen - 1;
292 pnp->pn_path = path;
293 pnp->pn_pathlen = endpath - path;
301 pn_fixslash(struct pathname *pnp)
303 char *start = pnp->pn_path;
304 char *end = start + pnp->pn_pathlen;
308 if (pnp->pn_pathlen == end - start)
311 pnp->pn_pathlen = end - start;
320 pn_addslash(struct pathname *pnp)
322 if (pnp->pn_path + pnp->pn_pathlen + 1 >=
323 pnp->pn_buf + pnp->pn_bufsize) {
324 if (pnp->pn_pathlen + 1 >= pnp->pn_bufsize) /* no room */
330 ovbcopy(pnp->pn_path, pnp->pn_buf, pnp->pn_pathlen);
331 pnp->pn_path = pnp->pn_buf;
333 pnp->pn_path[pnp->pn_pathlen++] = '/';
334 pnp->pn_path[pnp->pn_pathlen] = '\0';