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

Comparing projects/libstatgrab/src/libstatgrab/disk_stats.c (file contents):
Revision 1.10 by pajs, Tue Mar 4 18:06:16 2003 UTC vs.
Revision 1.11 by pajs, Wed Mar 5 12:41:19 2003 UTC

# Line 260 | Line 260 | diskio_stat_t *get_diskio_stats(int *entries){
260          int major, minor;
261          char dev_letter;
262   #endif
263
263          num_diskio=0;
264  
265   #ifdef SOLARIS
# Line 300 | Line 299 | diskio_stat_t *get_diskio_stats(int *entries){
299   #ifdef LINUX
300          f=fopen("/proc/stat", "r");
301          if(f==NULL){
302 +                *entries=0;
303 +                fclose(f);
304                  return NULL;
305          }
306          if((line_ptr=f_read_line(f, "disk_io:"))==NULL){
307 +                *entries=0;
308 +                fclose(f);
309                  return NULL;
310          }
311          while((line_ptr=strchr(line_ptr, ' '))!=NULL){
312 +                line_ptr++;
313 +                if(*line_ptr=='\0'){
314 +                        break;
315 +                }
316                  if((diskio_stats=diskio_stat_malloc(num_diskio+1, &sizeof_diskio_stats, diskio_stats))==NULL){
317                          fclose(f);
318 +                        *entries=0;
319                          return NULL;
320                  }
321                  diskio_stats_ptr=diskio_stats+num_diskio;
322  
323  
324 <                sscanf(line_ptr, "(%d,%d):(%*d, %lld, %*d, %lld, %*d)", \
324 >                if((sscanf(line_ptr, "(%d,%d):(%*d, %lld, %*d, %lld, %*d)", \
325                          &major, \
326                          &minor, \
327                          &diskio_stats_ptr->read_bytes, \
328 <                        &diskio_stats_ptr->write_bytes);
328 >                        &diskio_stats_ptr->write_bytes))!=4) {
329 >                                continue;
330 >                }
331  
332                  if(diskio_stats_ptr->disk_name!=NULL) free(diskio_stats_ptr->disk_name);
333  
334                  switch(major){
335 +                        case 2:
336 +                                if(minor==0){
337 +                                        diskio_stats_ptr->disk_name=strdup("fd0");
338 +                                }
339 +                                break;
340 +
341                          case 3:
342                                  if(minor==0){
343                                          diskio_stats_ptr->disk_name=strdup("hda");
# Line 336 | Line 352 | diskio_stat_t *get_diskio_stats(int *entries){
352                                  }else{
353                                          diskio_stats_ptr->disk_name=strdup("hdd");
354                                  }
355 +                                break;
356                          case 8:
357                                  dev_letter='a'+(minor/16);
358                                  diskio_stats_ptr->disk_name=malloc(4);
359                                  snprintf(diskio_stats_ptr->disk_name, 4, "sd%c", dev_letter);
360 +                                break;
361                          default:
362                                  /* I have no idea what it is then :) */
363                                  diskio_stats_ptr->disk_name=malloc(16);
364                                  snprintf(diskio_stats_ptr->disk_name, 16, "%d %d", major, minor);
365 +                                break;
366                  }
367  
368                  num_diskio++;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines