Files
haiku-beta6/src/bin/listimage.c
T
Axel Dörfler 9b0c212a16 Fixed warning, minor cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14596 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-31 14:27:28 +00:00

104 lines
2.3 KiB
C

/*
* Copyright (c) 2001-2005, Haiku.
*
* This software is part of the Haiku distribution and is covered
* by the MIT license.
*
* Author: Daniel Reinhold ([email protected])
*/
/** Description: lists image info for all currently running teams */
#include <OS.h>
#include <image.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
static status_t
list_images_for_team_by_id(team_id id)
{
team_info teamInfo;
image_info imageInfo;
int32 cookie = 0;
status_t status;
status = get_team_info(id, &teamInfo);
if (id != 1 && status < B_OK)
return status;
if (id == 1)
printf("\nKERNEL TEAM:\n");
else
printf("\nTEAM %4ld (%s):\n", id, teamInfo.args);
printf(" ID name text data seq# init#\n");
printf("------------------------------------------------------------------------------------------------------------\n");
while ((status = get_next_image_info(id, &cookie, &imageInfo)) == B_OK) {
printf("%5ld %64s %p %p %4ld %10lu\n",
imageInfo.id,
imageInfo.name,
imageInfo.text,
imageInfo.data,
imageInfo.sequence,
imageInfo.init_order);
}
if (status != B_ENTRY_NOT_FOUND && status != EINVAL) {
printf("get images failed: %s\n", strerror(status));
return status;
}
return B_OK;
}
static void
list_images_for_team(const char *arg)
{
int32 cookie = 0;
team_info info;
if (atoi(arg) > 0) {
if (list_images_for_team_by_id(atoi(arg)) == B_OK)
return;
}
// search for the team by name
while (get_next_team_info(&cookie, &info) >= B_OK) {
if (strstr(info.args, arg)) {
status_t status = list_images_for_team_by_id(info.team);
if (status != B_OK)
printf("\nCould not retrieve information about team %ld: %s\n",
info.team, strerror(status));
}
}
}
int
main(int argc, char **argv)
{
if (argc == 1) {
int32 cookie = 0;
team_info info;
// list for all teams
while (get_next_team_info(&cookie, &info) >= B_OK) {
status_t status = list_images_for_team_by_id(info.team);
if (status != B_OK)
printf("\nCould not retrieve information about team %ld: %s\n",
info.team, strerror(status));
}
} else {
// list for each team_id on the command line
while (--argc)
list_images_for_team(*++argv);
}
return 0;
}