Lines Matching refs:pnp

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