Lines Matching defs:pnp

75 pn_alloc(struct pathname *pnp)
77 pnp->pn_path = pnp->pn_buf = kmem_alloc(MAXPATHLEN, KM_SLEEP);
78 pnp->pn_pathlen = 0;
79 pnp->pn_bufsize = MAXPATHLEN;
86 pn_free(struct pathname *pnp)
89 kmem_free(pnp->pn_buf, pnp->pn_bufsize);
90 pnp->pn_path = pnp->pn_buf = NULL;
91 pnp->pn_pathlen = pnp->pn_bufsize = 0;
101 pn_get_buf(char *str, enum uio_seg seg, struct pathname *pnp,
106 pnp->pn_path = pnp->pn_buf = buf;
107 pnp->pn_bufsize = bufsize;
109 error = copyinstr(str, pnp->pn_path, bufsize, &pnp->pn_pathlen);
111 error = copystr(str, pnp->pn_path, bufsize, &pnp->pn_pathlen);
114 pnp->pn_pathlen--; /* don't count null byte */
122 pn_get(char *str, enum uio_seg seg, struct pathname *pnp)
128 if ((error = pn_get_buf(str, seg, pnp, buf, MAXPATHLEN)) != 0)
129 pn_free(pnp);
140 pn_set(struct pathname *pnp, char *path)
144 pnp->pn_path = pnp->pn_buf;
145 error = copystr(path, pnp->pn_path, pnp->pn_bufsize, &pnp->pn_pathlen);
146 pnp->pn_pathlen--; /* don't count null byte */
162 pn_insert(struct pathname *pnp, struct pathname *sympnp, size_t complen)
169 if (pnp->pn_pathlen + sympnp->pn_pathlen >= pnp->pn_bufsize)
171 if (pnp->pn_pathlen != 0)
172 ovbcopy(pnp->pn_path, pnp->pn_buf + sympnp->pn_pathlen,
173 pnp->pn_pathlen);
174 bcopy(sympnp->pn_path, pnp->pn_buf, sympnp->pn_pathlen);
175 pnp->pn_pathlen += sympnp->pn_pathlen;
176 pnp->pn_buf[pnp->pn_pathlen] = '\0';
177 pnp->pn_path = pnp->pn_buf;
182 if ((pnp->pn_path - pnp->pn_buf) - complen +
183 pnp->pn_pathlen + sympnp->pn_pathlen >= pnp->pn_bufsize)
186 if (pnp->pn_pathlen != 0)
187 ovbcopy(pnp->pn_path, pnp->pn_path - complen +
188 sympnp->pn_pathlen, pnp->pn_pathlen + 1);
189 pnp->pn_path -= complen;
190 bcopy(sympnp->pn_path, pnp->pn_path, sympnp->pn_pathlen);
191 pnp->pn_pathlen += sympnp->pn_pathlen;
198 pn_getsymlink(vnode_t *vp, struct pathname *pnp, cred_t *crp)
204 aiov.iov_base = pnp->pn_path = pnp->pn_buf;
205 aiov.iov_len = pnp->pn_bufsize;
211 auio.uio_resid = pnp->pn_bufsize;
213 pnp->pn_pathlen = pnp->pn_bufsize - auio.uio_resid;
214 if (pnp->pn_pathlen == pnp->pn_bufsize)
217 pnp->pn_path[pnp->pn_pathlen] = '\0';
228 pn_getcomponent(struct pathname *pnp, char *component)
233 path = pnp->pn_path;
234 pathlen = pnp->pn_pathlen;
250 pnp->pn_path = cp;
251 pnp->pn_pathlen = pathlen - (cp - path);
260 pn_skipslash(struct pathname *pnp)
262 while (pnp->pn_pathlen > 0 && *pnp->pn_path == '/') {
263 pnp->pn_path++;
264 pnp->pn_pathlen--;
275 pn_setlast(struct pathname *pnp)
277 char *buf = pnp->pn_buf;
278 char *path = pnp->pn_path + pnp->pn_pathlen - 1;
289 pnp->pn_path = path;
290 pnp->pn_pathlen = endpath - path;
298 pn_fixslash(struct pathname *pnp)
300 char *start = pnp->pn_path;
301 char *end = start + pnp->pn_pathlen;
305 if (pnp->pn_pathlen == end - start)
308 pnp->pn_pathlen = end - start;
317 pn_addslash(struct pathname *pnp)
319 if (pnp->pn_path + pnp->pn_pathlen + 1 >=
320 pnp->pn_buf + pnp->pn_bufsize) {
321 if (pnp->pn_pathlen + 1 >= pnp->pn_bufsize) /* no room */
327 ovbcopy(pnp->pn_path, pnp->pn_buf, pnp->pn_pathlen);
328 pnp->pn_path = pnp->pn_buf;
330 pnp->pn_path[pnp->pn_pathlen++] = '/';
331 pnp->pn_path[pnp->pn_pathlen] = '\0';