diff options
author | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-10-28 13:51:13 +0000 |
---|---|---|
committer | osmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082> | 2005-10-28 13:51:13 +0000 |
commit | 1b9e77ce99c6a790d62ba6a04ef905a566d2d838 (patch) | |
tree | 86b43673f9aec9d34e5397bae0f81c6b845fba5c /src/libs/zbxsysinfo/linux/diskspace.c | |
parent | dcdbd43b90679168d6be06673e314ce90b87e444 (diff) | |
download | zabbix-1b9e77ce99c6a790d62ba6a04ef905a566d2d838.tar.gz zabbix-1b9e77ce99c6a790d62ba6a04ef905a566d2d838.tar.xz zabbix-1b9e77ce99c6a790d62ba6a04ef905a566d2d838.zip |
- grouped commands in to the new command with parameters. [only in linux] (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@2231 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxsysinfo/linux/diskspace.c')
-rw-r--r-- | src/libs/zbxsysinfo/linux/diskspace.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/libs/zbxsysinfo/linux/diskspace.c b/src/libs/zbxsysinfo/linux/diskspace.c index 09846515..9db5895a 100644 --- a/src/libs/zbxsysinfo/linux/diskspace.c +++ b/src/libs/zbxsysinfo/linux/diskspace.c @@ -22,6 +22,65 @@ #include "common.h" #include "sysinfo.h" +int VFS_FS_SIZE(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) +{ + +#define FS_FNCLIST struct fs_fnclist_s +FS_FNCLIST +{ + char *mode; + int (*function)(); +}; + + FS_FNCLIST fl[] = + { + {"free" , VFS_FS_FREE}, + {"total" , VFS_FS_TOTAL}, + {"used", VFS_FS_USED}, + {"pfree" , VFS_FS_PFREE}, + {"pused" , VFS_FS_PUSED}, + {0, 0} + }; + + char fsname[MAX_STRING_LEN]; + char mode[MAX_STRING_LEN]; + int i; + + assert(result); + + memset(result, 0, sizeof(AGENT_RESULT)); + + if(num_param(param) > 2) + { + return SYSINFO_RET_FAIL; + } + + if(get_param(param, 1, fsname, MAX_STRING_LEN) != 0) + { + return SYSINFO_RET_FAIL; + } + + if(get_param(param, 2, mode, MAX_STRING_LEN) != 0) + { + mode[0] = '\0'; + } + if(mode[0] == '\0') + { + /* default parameter */ + sprintf(mode, "total"); + } + + for(i=0; fl[i].mode!=0; i++) + { + if(strncmp(mode, fl[i].mode, MAX_STRING_LEN)==0) + { + return (fl[i].function)(cmd, fsname, flags, result); + } + } + + return SYSINFO_RET_FAIL; +} + int VFS_FS_FREE(const char *cmd, const char *param, unsigned flags, AGENT_RESULT *result) { #ifdef HAVE_SYS_STATVFS_H |