summaryrefslogtreecommitdiff
path: root/srcx/jid.c
diff options
context:
space:
mode:
Diffstat (limited to 'srcx/jid.c')
-rw-r--r--srcx/jid.c41
1 files changed, 14 insertions, 27 deletions
diff --git a/srcx/jid.c b/srcx/jid.c
index 5d2e4d0..93d0e94 100644
--- a/srcx/jid.c
+++ b/srcx/jid.c
@@ -54,7 +54,9 @@ static void usage();
int main(int argc, char* argv[])
{
- int jid = 0;
+ struct xprison* sxp = NULL;
+ struct xprison* xp = NULL;
+ size_t len;
char* e;
/* Remove the program name */
@@ -64,45 +66,30 @@ int main(int argc, char* argv[])
if(argc != 1)
usage();
- if(running_in_jail())
+ if(running_in_jail() != 0)
errx(1, "can't run from inside jail");
- jid = strtol(argv[0], &e, 10);
+ len = get_jail_sysctl(&xp);
+ xp = find_jail(argv[0], len, sxp);
+
+ strtol(argv[0], &e, 10);
/* If it was all a number ... */
if(!*e)
{
- struct xprison* xp;
- size_t len, i;
-
- len = get_jail_sysctl(&xp);
- if(len > 0)
- {
- for(i = 0; i < len; i++)
- {
- if(xp[i].pr_id == jid)
- {
- printf("%s\n", xp[i].pr_host);
- jid = -1;
- break;
- }
- }
-
- free(xp);
-
- if(jid != -1)
- errx(1, "unknown jail id: %s", argv[0]);
- }
+ if(xp == NULL)
+ errx(1, "unknown jail id: %s", argv[0]);
+
+ printf("%s\n", xp->pr_host);
}
/* otherwise it's a host name */
else
{
- jid = translate_jail_name(argv[0]);
- if(jid == -1)
+ if(xp == NULL)
errx(1, "unknown jail host name: %s", argv[0]);
- printf("%d\n", (int)jid);
+ printf("%d\n", xp->pr_host);
}
return 0;