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

Comparing projects/cms/source/ihost/libstatgrab/disk_stat.c (file contents):
Revision 1.4 by pajs, Mon May 13 12:47:15 2002 UTC vs.
Revision 1.7 by tdb, Sat May 18 18:15:56 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * Copyright (C) 2000-2002 i-scream
4 + *
5 + * This program is free software; you can redistribute it and/or
6 + * modify it under the terms of the GNU General Public License
7 + * as published by the Free Software Foundation; either version 2
8 + * of the License, or (at your option) any later version.
9 + *
10 + * This program is distributed in the hope that it will be useful,
11 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 + * GNU General Public License for more details.
14 + *
15 + * You should have received a copy of the GNU General Public License
16 + * along with this program; if not, write to the Free Software
17 + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 + */
19 +
20   #include <stdlib.h>
21   #include <stdio.h>
22   #include "ukcprog.h"
# Line 37 | Line 56 | char *get_disk_stats(){
56          system_disks_t *sd_ptr=sd;
57          int counter=0;
58          char *xml_disk_stats;
59 +        char *xml_disk_stats_ptr;
60   #ifdef SOLARIS
61          struct mnttab mp;
62          struct statvfs df;
# Line 90 | Line 110 | char *get_disk_stats(){
110  
111          }
112  
113 +        if((fclose(f))!=0){
114 +                errf("Failed to close mnttab");
115 +                return NULL;
116 +        }
117 +
118   #endif
119   #ifdef linux
120          if ((f=fopen("/etc/mtab", "r" ))==NULL){
# Line 169 | Line 194 | char *get_disk_stats(){
194          xml_disk_stats=strdup("<disk>");
195          
196          while(sd_ptr!=NULL){
197 +                xml_disk_stats_ptr=xml_disk_stats;
198                  if((xml_disk_stats=strf("%s<p%d name=\"%s\" mount=\"%s\" kbytes=\"%ld\" used=\"%ld\" avail=\"%ld\" totalinodes=\"%ld\" freeinodes=\"%ld\"></p%d>", xml_disk_stats, counter, sd_ptr->disk->device_name, sd_ptr->disk->mnt_point, sd_ptr->disk->size, sd_ptr->disk->used, sd_ptr->disk->avail, sd_ptr->disk->t_inodes, sd_ptr->disk->f_inodes, counter)) == NULL){
199                          errf("strf failed (%m)");
200                          return NULL;
201                  }
202 +                free(xml_disk_stats_ptr);
203                  sd_ptr=sd_ptr->next_disk;
204                  counter++;
205          }
206 <
206 >        xml_disk_stats_ptr=xml_disk_stats;
207          xml_disk_stats=strf("%s</disk>",xml_disk_stats);
208 +        free(xml_disk_stats_ptr);      
209 +
210 +        /* Cleaning up */
211 +        sd_ptr=sd;
212 +        while(sd_ptr!=NULL){
213 +                sd=sd_ptr->next_disk;
214 +                free(sd_ptr->disk->device_name);
215 +                free(sd_ptr->disk->mnt_point);
216 +                free(sd_ptr->disk);
217 +                free(sd_ptr);
218 +                sd_ptr=sd;
219 +        }
220  
221          return xml_disk_stats;
222   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines