hrev44774 adds 1 changeset to branch 'master' old head: f5a14b17df1d1d13251f4d86a7ed024b516960ed new head: 662b04ff7d27ad3f07210efd527d9d99bda4b538 ---------------------------------------------------------------------------- 662b04f: listsem didn't actually support the -s option its help listed. Minor cleanups. [ Rene Gollent <anevilyak@xxxxxxxxx> ] ---------------------------------------------------------------------------- Revision: hrev44774 Commit: 662b04ff7d27ad3f07210efd527d9d99bda4b538 URL: http://cgit.haiku-os.org/haiku/commit/?id=662b04f Author: Rene Gollent <anevilyak@xxxxxxxxx> Date: Tue Nov 6 00:03:49 2012 UTC ---------------------------------------------------------------------------- 1 file changed, 52 insertions(+), 21 deletions(-) src/bin/listsem.c | 73 ++++++++++++++++++++++++++++++++++++--------------- ---------------------------------------------------------------------------- diff --git a/src/bin/listsem.c b/src/bin/listsem.c index 6fdb102..8440eb3 100644 --- a/src/bin/listsem.c +++ b/src/bin/listsem.c @@ -1,14 +1,14 @@ /* * listsem.c * - * Lists all semaphores in all Teams. + * Lists all semaphores in all Teams. * by O.Siebenmarck. - * + * * 04-27-2002 - mmu_man * added command line args - * - * Legal stuff follows: - + * + * Legal stuff follows: + Copyright (c) 2002 Oliver Siebenmarck <olli@xxxxxxxxx>, OpenBeOS project Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -33,29 +33,44 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <OS.h> + +static void print_sem_info(sem_info *info) +{ + printf("%7ld%31s%7ld\n", info->sem ,info->name , info->count); +} + + +static void print_header(team_info *tinfo) +{ + if (tinfo != NULL) + printf("TEAM %ld (%s):\n", tinfo->team, tinfo->args ); + + printf(" ID name count\n"); + printf("---------------------------------------------\n"); +} + + static void list_sems(team_info *tinfo) { sem_info info; int32 cookie = 0; - printf("TEAM %ld (%s):\n", tinfo->team, tinfo->args ); - printf(" ID name count\n"); - printf("---------------------------------------------\n"); - + print_header(tinfo); + while (get_next_sem_info(tinfo->team, &cookie, &info) == B_OK) - { - printf("%7ld%31s%7ld\n", info.sem ,info.name , info.count ); - } + print_sem_info(&info); + printf("\n"); } int main(int argc, char **argv) { team_info tinfo; - int32 cook = 0; - int i; + int32 cookie = 0; + int32 i; system_info sysinfo; // show up some stats first... @@ -63,12 +78,12 @@ int main(int argc, char **argv) printf("sem: total: %5li, used: %5li, left: %5li\n\n", sysinfo.max_sems, sysinfo.used_sems, sysinfo.max_sems - sysinfo.used_sems); if (argc == 1) { - while (get_next_team_info( &cook, &tinfo) == B_OK) - { + while (get_next_team_info( &cookie, &tinfo) == B_OK) list_sems(&tinfo); - } + return 0; } + for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) { fprintf(stderr, "Usage: %s [-s semid] [teamid]\n", argv[0]); @@ -78,15 +93,31 @@ int main(int argc, char **argv) fputs(" The -s option displays the sem_info data for a\n", stderr); fputs(" specified semaphore.\n", stderr); return 0; + } else if (!strcmp(argv[i], "-s")) { + if (argc < i + 2) + printf("-s used without associated sem id\n"); + else { + sem_id sem = atoi(argv[i+1]); + + } + int semID = atoi(argv[i+1]); + sem_info info; + if (get_sem_info(semID, &info) == B_OK) { + print_header(NULL); + print_sem_info(&info); + } else + printf("semaphore %ld unknown\n\n", semID); + i++; } else { - int t; - t = atoi(argv[i]); - if (get_team_info(t, &tinfo) == B_OK) + team_id team; + team = atoi(argv[i]); + if (get_team_info(team, &tinfo) == B_OK) list_sems(&tinfo); else - printf("team %i unknown\n\n", t); + printf("team %ld unknown\n\n", team); } } + return 0; }