ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/libstatgrab/src/statgrab/statgrab.c
(Generate patch)

Comparing projects/libstatgrab/src/statgrab/statgrab.c (file contents):
Revision 1.9 by ats, Sun Aug 31 13:23:19 2003 UTC vs.
Revision 1.17 by tdb, Mon Jan 19 16:49:23 2004 UTC

# Line 1 | Line 1
1   /*
2   * i-scream central monitoring system
3   * http://www.i-scream.org
4 < * Copyright (C) 2000-2003 i-scream
4 > * Copyright (C) 2000-2004 i-scream
5   *
6   * This program is free software; you can redistribute it and/or
7   * modify it under the terms of the GNU General Public License
# Line 16 | Line 16
16   * You should have received a copy of the GNU General Public License
17   * along with this program; if not, write to the Free Software
18   * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19 + *
20 + * $Id$
21   */
22  
23   #ifdef HAVE_CONFIG_H
# Line 268 | Line 270 | void populate_fs() {
270          if (disk != NULL) {
271                  for (i = 0; i < n; i++) {
272                          /* FIXME it'd be nicer if libstatgrab did this */
273 <                        const char *name = disk[i].device_name,
274 <                                   *p = strrchr(name, '/');
275 <                        if (p != NULL)
276 <                                name = p + 1;
277 <                        if (*name == '\0')
278 <                                name = "root";
279 <        
273 >                        char *buf, *name, *p;
274 >                        const char *device = disk[i].device_name;
275 >
276 >                        if (strcmp(device, "/") == 0)
277 >                                device = "root";
278 >
279 >                        buf = strdup(device);
280 >                        if (buf == NULL)
281 >                                die("out of memory");
282 >
283 >                        name = buf;
284 >                        if (strlen(name) == 2 && name[1] == ':')
285 >                                name[1] = '\0';
286 >                        if (strncmp(name, "/dev/", 5) == 0)
287 >                                name += 5;
288 >                        while ((p = strchr(name, '/')) != NULL)
289 >                                *p = '_';
290 >
291                          add_stat(STRING, &disk[i].device_name,
292                                   "fs", name, "device_name", NULL);
293                          add_stat(STRING, &disk[i].fs_type,
# Line 293 | Line 306 | void populate_fs() {
306                                   "fs", name, "used_inodes", NULL);
307                          add_stat(LONG_LONG, &disk[i].free_inodes,
308                                   "fs", name, "free_inodes", NULL);
309 +
310 +                        free(buf);
311                  }
312          }
313   }
# Line 358 | Line 373 | void populate_page() {
373          if (page != NULL) {
374                  add_stat(LONG_LONG, &page->pages_pagein, "page", "in", NULL);
375                  add_stat(LONG_LONG, &page->pages_pageout, "page", "out", NULL);
376 <                add_stat(LONG_LONG, &page->systime, "page", "systime", NULL);
376 >                add_stat(TIME_T, &page->systime, "page", "systime", NULL);
377          }
378   }
379  
# Line 591 | Line 606 | int main(int argc, char **argv) {
606                  use_diffs = 1;
607  
608          select_interesting(argc - optind, &argv[optind]);
609 +
610 +        /* We don't care if statgrab_init fails, because we can just display
611 +           the statistics that can be read as non-root. */
612 +        statgrab_init();
613 +        if (statgrab_drop_privileges() != 0)
614 +                die("Failed to drop setuid/setgid privileges");
615  
616          switch (repeat_mode) {
617          case REPEAT_NONE:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines