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.9 by pajs, Sun May 19 20:54:10 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 128 | Line 153 | char *get_disk_stats(){
153                  sd_ptr->next_disk=sd;
154                  sd=sd_ptr;
155          }
156 +
157 +        if ((fclose(f)) != 0) {
158 +                errf("Failed to close file (%m)");
159 +                return NULL;
160 +        }
161 +
162   #endif
163   #ifdef FREEBSD
164          nummnt=getmntinfo(&mp , MNT_LOCAL);
# Line 168 | Line 199 | char *get_disk_stats(){
199          sd_ptr=sd;
200          xml_disk_stats=strdup("<disk>");
201          
202 <        while(sd_ptr!=NULL){
202 >        for(counter=0;sd_ptr!=NULL;counter++){
203 >                xml_disk_stats_ptr=xml_disk_stats;
204                  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){
205                          errf("strf failed (%m)");
206                          return NULL;
207                  }
208 +                free(xml_disk_stats_ptr);
209                  sd_ptr=sd_ptr->next_disk;
177                counter++;
210          }
211 <
211 >        xml_disk_stats_ptr=xml_disk_stats;
212          xml_disk_stats=strf("%s</disk>",xml_disk_stats);
213 +        free(xml_disk_stats_ptr);      
214 +
215 +        /* Cleaning up */
216 +        sd_ptr=sd;
217 +        while(sd_ptr!=NULL){
218 +                sd=sd_ptr->next_disk;
219 +                free(sd_ptr->disk->device_name);
220 +                free(sd_ptr->disk->mnt_point);
221 +                free(sd_ptr->disk);
222 +                free(sd_ptr);
223 +                sd_ptr=sd;
224 +        }
225  
226          return xml_disk_stats;
227   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines