Changeset View
Changeset View
Standalone View
Standalone View
lib/libcasper/libcasper/libcasper.c
Show First 20 Lines • Show All 302 Lines • ▼ Show 20 Lines | cap_xfer_nvlist(const cap_channel_t *chan, nvlist_t *nvl) | ||||
assert(chan != NULL); | assert(chan != NULL); | ||||
assert(chan->cch_magic == CAP_CHANNEL_MAGIC); | assert(chan->cch_magic == CAP_CHANNEL_MAGIC); | ||||
return (nvlist_xfer(chan->cch_sock, nvl, | return (nvlist_xfer(chan->cch_sock, nvl, | ||||
channel_nvlist_flags(chan))); | channel_nvlist_flags(chan))); | ||||
} | } | ||||
int | |||||
cap_close_stdio(const cap_channel_t *chan) | |||||
{ | |||||
nvlist_t *nvlmsg; | |||||
int error; | |||||
nvlmsg = nvlist_create(channel_nvlist_flags(chan)); | |||||
nvlist_add_string(nvlmsg, "cmd", "close_stdio"); | |||||
nvlmsg = cap_xfer_nvlist(chan, nvlmsg); | |||||
if (nvlmsg == NULL) | |||||
return (-1); | |||||
error = (int)nvlist_get_number(nvlmsg, "error"); | |||||
nvlist_destroy(nvlmsg); | |||||
if (error != 0) { | |||||
errno = error; | |||||
return (-1); | |||||
} | |||||
return (0); | |||||
} | |||||
cap_channel_t * | cap_channel_t * | ||||
cap_service_open(const cap_channel_t *chan, const char *name) | cap_service_open(const cap_channel_t *chan, const char *name) | ||||
{ | { | ||||
cap_channel_t *newchan; | cap_channel_t *newchan; | ||||
nvlist_t *nvl; | nvlist_t *nvl; | ||||
int sock, error; | int sock, error; | ||||
int flags; | int flags; | ||||
▲ Show 20 Lines • Show All 42 Lines • Show Last 20 Lines |