summaryrefslogtreecommitdiff
path: root/srcx/jid.c
diff options
context:
space:
mode:
authorStef Walter <stef@memberwebs.com>2004-05-19 17:34:15 +0000
committerStef Walter <stef@memberwebs.com>2004-05-19 17:34:15 +0000
commit36987df385cbbcd8b7e72c97af620d76b8f1ae8f (patch)
tree66ddd87199009a7aeb44f037315f52919b10b499 /srcx/jid.c
parente70562b7b93e79372e230738038c62cf80436088 (diff)
Bug fixes for kvm prepare
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;