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.12 by pajs, Wed May 22 08:54:53 2002 UTC

# Line 1 | Line 1
1 + /*
2 + * i-scream central monitoring system
3 + * http://www.i-scream.org.uk
4 + * Copyright (C) 2000-2002 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
8 + * as published by the Free Software Foundation; either version 2
9 + * of the License, or (at your option) any later version.
10 + *
11 + * This program is distributed in the hope that it will be useful,
12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 + * GNU General Public License for more details.
15 + *
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 +
21   #include <stdlib.h>
22   #include <stdio.h>
23   #include "ukcprog.h"
# Line 37 | Line 57 | char *get_disk_stats(){
57          system_disks_t *sd_ptr=sd;
58          int counter=0;
59          char *xml_disk_stats;
60 +        char *xml_disk_stats_ptr;
61   #ifdef SOLARIS
62          struct mnttab mp;
63          struct statvfs df;
# Line 90 | Line 111 | char *get_disk_stats(){
111  
112          }
113  
114 +        if((fclose(f))!=0){
115 +                errf("Failed to close mnttab");
116 +                return NULL;
117 +        }
118 +
119   #endif
120 < #ifdef linux
121 <        if ((f=fopen("/etc/mtab", "r" ))==NULL){
120 > #ifdef LINUX
121 >        if ((f=setmntent("/etc/mtab", "r" ))==NULL){
122                  errf("Failed to open mounts (%m)");
123                  return NULL;
124          }
# Line 128 | Line 154 | char *get_disk_stats(){
154                  sd_ptr->next_disk=sd;
155                  sd=sd_ptr;
156          }
157 +
158 +        endmntent(f);
159 +
160   #endif
161   #ifdef FREEBSD
162          nummnt=getmntinfo(&mp , MNT_LOCAL);
# Line 168 | Line 197 | char *get_disk_stats(){
197          sd_ptr=sd;
198          xml_disk_stats=strdup("<disk>");
199          
200 <        while(sd_ptr!=NULL){
200 >        for(counter=0;sd_ptr!=NULL;counter++){
201 >                xml_disk_stats_ptr=xml_disk_stats;
202                  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){
203                          errf("strf failed (%m)");
204                          return NULL;
205                  }
206 +                free(xml_disk_stats_ptr);
207                  sd_ptr=sd_ptr->next_disk;
177                counter++;
208          }
209 <
209 >        xml_disk_stats_ptr=xml_disk_stats;
210          xml_disk_stats=strf("%s</disk>",xml_disk_stats);
211 +        free(xml_disk_stats_ptr);      
212 +
213 +        /* Cleaning up */
214 +        sd_ptr=sd;
215 +        while(sd_ptr!=NULL){
216 +                sd=sd_ptr->next_disk;
217 +                free(sd_ptr->disk->device_name);
218 +                free(sd_ptr->disk->mnt_point);
219 +                free(sd_ptr->disk);
220 +                free(sd_ptr);
221 +                sd_ptr=sd;
222 +        }
223  
224          return xml_disk_stats;
225   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines