[haiku-commits] haiku: hrev44774 - src/bin

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Tue, 6 Nov 2012 01:05:11 +0100 (CET)

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;
 }
 


Other related posts: