diff options
author | Stef Walter <stef@memberwebs.com> | 2004-05-19 17:34:15 +0000 |
---|---|---|
committer | Stef Walter <stef@memberwebs.com> | 2004-05-19 17:34:15 +0000 |
commit | 36987df385cbbcd8b7e72c97af620d76b8f1ae8f (patch) | |
tree | 66ddd87199009a7aeb44f037315f52919b10b499 /srcx/jid.c | |
parent | e70562b7b93e79372e230738038c62cf80436088 (diff) |
Bug fixes for kvm prepare
Diffstat (limited to 'srcx/jid.c')
-rw-r--r-- | srcx/jid.c | 41 |
1 files changed, 14 insertions, 27 deletions
@@ -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; |