Lines Matching refs:fa

63 fileargs_get_lstat_cache(fileargs_t *fa, const char *name, struct stat *sb)  in fileargs_get_lstat_cache()  argument
69 assert(fa != NULL); in fileargs_get_lstat_cache()
70 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_get_lstat_cache()
73 if (fa->fa_cache == NULL) in fileargs_get_lstat_cache()
76 nvl = dnvlist_get_nvlist(fa->fa_cache, name, NULL); in fileargs_get_lstat_cache()
92 fileargs_get_fd_cache(fileargs_t *fa, const char *name) in fileargs_get_fd_cache() argument
98 assert(fa != NULL); in fileargs_get_fd_cache()
99 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_get_fd_cache()
102 if (fa->fa_cache == NULL) in fileargs_get_fd_cache()
105 if ((fa->fa_fdflags & O_CREAT) != 0) in fileargs_get_fd_cache()
108 nvl = dnvlist_get_nvlist(fa->fa_cache, name, NULL); in fileargs_get_fd_cache()
112 tnvl = nvlist_take_nvlist(fa->fa_cache, name); in fileargs_get_fd_cache()
122 if ((fa->fa_fdflags & O_CLOEXEC) != O_CLOEXEC) { in fileargs_get_fd_cache()
123 if (fcntl(fd, F_SETFD, fa->fa_fdflags) == -1) { in fileargs_get_fd_cache()
133 fileargs_set_cache(fileargs_t *fa, nvlist_t *nvl) in fileargs_set_cache() argument
136 nvlist_destroy(fa->fa_cache); in fileargs_set_cache()
137 fa->fa_cache = nvl; in fileargs_set_cache()
141 fileargs_fetch(fileargs_t *fa, const char *name, const char *cmd) in fileargs_fetch() argument
146 assert(fa != NULL); in fileargs_fetch()
153 nvl = cap_xfer_nvlist(fa->fa_chann, nvl); in fileargs_fetch()
202 fileargs_t *fa; in fileargs_create() local
204 fa = malloc(sizeof(*fa)); in fileargs_create()
205 if (fa != NULL) { in fileargs_create()
206 fa->fa_cache = NULL; in fileargs_create()
207 fa->fa_chann = chan; in fileargs_create()
208 fa->fa_fdflags = fdflags; in fileargs_create()
209 fa->fa_magic = FILEARGS_MAGIC; in fileargs_create()
212 return (fa); in fileargs_create()
255 fileargs_t *fa; in fileargs_initnv() local
267 fa = fileargs_cinitnv(cas, limits); in fileargs_initnv()
270 return (fa); in fileargs_initnv()
277 fileargs_t *fa; in fileargs_cinitnv() local
288 fa = NULL; in fileargs_cinitnv()
304 fa = fileargs_create(chann, flags); in fileargs_cinitnv()
305 if (fa == NULL) in fileargs_cinitnv()
308 return (fa); in fileargs_cinitnv()
318 fileargs_open(fileargs_t *fa, const char *name) in fileargs_open() argument
324 assert(fa != NULL); in fileargs_open()
325 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_open()
332 if (fa->fa_chann == NULL) { in fileargs_open()
337 fd = fileargs_get_fd_cache(fa, name); in fileargs_open()
341 nvl = fileargs_fetch(fa, name, "open"); in fileargs_open()
348 fileargs_set_cache(fa, nvl); in fileargs_open()
357 fileargs_fopen(fileargs_t *fa, const char *name, const char *mode) in fileargs_fopen() argument
361 if ((fd = fileargs_open(fa, name)) < 0) { in fileargs_fopen()
369 fileargs_lstat(fileargs_t *fa, const char *name, struct stat *sb) in fileargs_lstat() argument
376 assert(fa != NULL); in fileargs_lstat()
377 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_lstat()
389 if (fa->fa_chann == NULL) { in fileargs_lstat()
394 if (fileargs_get_lstat_cache(fa, name, sb) != -1) in fileargs_lstat()
397 nvl = fileargs_fetch(fa, name, "lstat"); in fileargs_lstat()
407 fileargs_set_cache(fa, nvl); in fileargs_lstat()
416 fileargs_realpath(fileargs_t *fa, const char *pathname, char *reserved_path) in fileargs_realpath() argument
421 assert(fa != NULL); in fileargs_realpath()
422 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_realpath()
429 if (fa->fa_chann == NULL) { in fileargs_realpath()
434 nvl = fileargs_fetch(fa, pathname, "realpath"); in fileargs_realpath()
451 fileargs_free(fileargs_t *fa) in fileargs_free() argument
454 if (fa == NULL) in fileargs_free()
457 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_free()
459 nvlist_destroy(fa->fa_cache); in fileargs_free()
460 if (fa->fa_chann != NULL) { in fileargs_free()
461 cap_close(fa->fa_chann); in fileargs_free()
463 explicit_bzero(&fa->fa_magic, sizeof(fa->fa_magic)); in fileargs_free()
464 free(fa); in fileargs_free()
468 fileargs_unwrap(fileargs_t *fa, int *flags) in fileargs_unwrap() argument
472 if (fa == NULL) in fileargs_unwrap()
475 assert(fa->fa_magic == FILEARGS_MAGIC); in fileargs_unwrap()
477 chan = fa->fa_chann; in fileargs_unwrap()
479 *flags = fa->fa_fdflags; in fileargs_unwrap()
482 nvlist_destroy(fa->fa_cache); in fileargs_unwrap()
483 explicit_bzero(&fa->fa_magic, sizeof(fa->fa_magic)); in fileargs_unwrap()
484 free(fa); in fileargs_unwrap()