Changeset View
Changeset View
Standalone View
Standalone View
head/lib/libjail/jail_getid.c
Show First 20 Lines • Show All 47 Lines • ▼ Show 20 Lines | |||||
int | int | ||||
jail_getid(const char *name) | jail_getid(const char *name) | ||||
{ | { | ||||
char *ep; | char *ep; | ||||
int jid; | int jid; | ||||
struct iovec jiov[4]; | struct iovec jiov[4]; | ||||
jid = strtoul(name, &ep, 10); | jid = strtoul(name, &ep, 10); | ||||
if (*name && !*ep) | if (*name && !*ep) { | ||||
return jid; | jiov[0].iov_base = __DECONST(char *, "jid"); | ||||
jiov[0].iov_len = sizeof("jid"); | |||||
jiov[1].iov_base = &jid; | |||||
jiov[1].iov_len = sizeof(jid); | |||||
} else { | |||||
jiov[0].iov_base = __DECONST(char *, "name"); | jiov[0].iov_base = __DECONST(char *, "name"); | ||||
jiov[0].iov_len = sizeof("name"); | jiov[0].iov_len = sizeof("name"); | ||||
jiov[1].iov_len = strlen(name) + 1; | jiov[1].iov_len = strlen(name) + 1; | ||||
jiov[1].iov_base = alloca(jiov[1].iov_len); | jiov[1].iov_base = alloca(jiov[1].iov_len); | ||||
strcpy(jiov[1].iov_base, name); | strcpy(jiov[1].iov_base, name); | ||||
} | |||||
jiov[2].iov_base = __DECONST(char *, "errmsg"); | jiov[2].iov_base = __DECONST(char *, "errmsg"); | ||||
jiov[2].iov_len = sizeof("errmsg"); | jiov[2].iov_len = sizeof("errmsg"); | ||||
jiov[3].iov_base = jail_errmsg; | jiov[3].iov_base = jail_errmsg; | ||||
jiov[3].iov_len = JAIL_ERRMSGLEN; | jiov[3].iov_len = JAIL_ERRMSGLEN; | ||||
jail_errmsg[0] = 0; | jail_errmsg[0] = 0; | ||||
jid = jail_get(jiov, 4, 0); | jid = jail_get(jiov, 4, 0); | ||||
if (jid < 0 && !jail_errmsg[0]) | if (jid < 0 && !jail_errmsg[0]) | ||||
snprintf(jail_errmsg, JAIL_ERRMSGLEN, "jail_get: %s", | snprintf(jail_errmsg, JAIL_ERRMSGLEN, "jail_get: %s", | ||||
Show All 40 Lines |