X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Futils_mount.c;h=a2e96a65e43dca1aca8272fa7f33c1ab6d42a163;hb=a5377cf935630082f2eac2e5f4a538844cc06c8d;hp=f2b79439adc77e70b495cf7079a38ef18997dfbc;hpb=b1b0aa549005c62b0e4651053198693e33ea84f0;p=collectd.git diff --git a/src/utils_mount.c b/src/utils_mount.c index f2b79439..a2e96a65 100644 --- a/src/utils_mount.c +++ b/src/utils_mount.c @@ -12,27 +12,33 @@ * ranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public Licence for more details. * - * You should have received a copy of the GNU General Public - * Licence along with this program; if not, write to the Free - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, - * USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Author: * Niki W. Waibel **/ -#include "collectd.h" -#include "utils_mount.h" - -#include "common.h" /* sstrncpy() et alii */ -#include "plugin.h" /* ERROR() macro */ +#if HAVE_CONFIG_H +# include "config.h" +#endif #if HAVE_XFS_XQM_H +# define _GNU_SOURCE # include #define XFS_SUPER_MAGIC_STR "XFSB" #define XFS_SUPER_MAGIC2_STR "BSFX" #endif +#include "collectd.h" + +#include "utils_mount.h" + +#include "common.h" /* sstrncpy() et alii */ +#include "plugin.h" /* ERROR() macro */ + + #if HAVE_GETVFSSTAT # if HAVE_SYS_TYPES_H # include @@ -430,16 +436,16 @@ static cu_mount_t *cu_mount_listmntent (void) #elif HAVE_GETVFSSTAT || HAVE_GETFSSTAT static cu_mount_t *cu_mount_getfsstat (void) { -#if HAVE_GETVFSSTAT -# define STRUCT_STATFS struct statvfs -# define CMD_STATFS getvfsstat -# define FLAGS_STATFS ST_NOWAIT -/* #endif HAVE_GETVFSSTAT */ -#elif HAVE_GETFSSTAT +#if HAVE_GETFSSTAT # define STRUCT_STATFS struct statfs # define CMD_STATFS getfsstat # define FLAGS_STATFS MNT_NOWAIT -#endif /* HAVE_GETFSSTAT */ +/* #endif HAVE_GETFSSTAT */ +#elif HAVE_GETVFSSTAT +# define STRUCT_STATFS struct statvfs +# define CMD_STATFS getvfsstat +# define FLAGS_STATFS ST_NOWAIT +#endif /* HAVE_GETVFSSTAT */ int bufsize; STRUCT_STATFS *buf; @@ -462,10 +468,8 @@ static cu_mount_t *cu_mount_getfsstat (void) return (NULL); } - if ((buf = (STRUCT_STATFS *) malloc (bufsize * sizeof (STRUCT_STATFS))) - == NULL) + if ((buf = calloc (bufsize, sizeof (*buf))) == NULL) return (NULL); - memset (buf, '\0', bufsize * sizeof (STRUCT_STATFS)); /* The bufsize needs to be passed in bytes. Really. This is not in the * manpage.. -octo */ @@ -482,10 +486,9 @@ static cu_mount_t *cu_mount_getfsstat (void) for (i = 0; i < num; i++) { - if ((new = malloc (sizeof (cu_mount_t))) == NULL) + if ((new = calloc (1, sizeof (*new))) == NULL) break; - memset (new, '\0', sizeof (cu_mount_t)); - + /* Copy values from `struct mnttab' */ new->dir = sstrdup (buf[i].f_mntonname); new->spec_device = sstrdup (buf[i].f_mntfromname); @@ -536,10 +539,9 @@ static cu_mount_t *cu_mount_gen_getmntent (void) while (getmntent (fp, &mt) == 0) { - if ((new = malloc (sizeof (cu_mount_t))) == NULL) + if ((new = calloc (1, sizeof (*new))) == NULL) break; - memset (new, '\0', sizeof (cu_mount_t)); - + /* Copy values from `struct mnttab' */ new->dir = sstrdup (mt.mnt_mountp); new->spec_device = sstrdup (mt.mnt_special); @@ -594,9 +596,8 @@ static cu_mount_t *cu_mount_getmntent (void) while (getmntent_r (fp, &me, mntbuf, sizeof (mntbuf) )) { - if ((new = malloc (sizeof (cu_mount_t))) == NULL) + if ((new = calloc (1, sizeof (*new))) == NULL) break; - memset (new, '\0', sizeof (cu_mount_t)); /* Copy values from `struct mntent *' */ new->dir = sstrdup (me.mnt_dir); @@ -651,10 +652,9 @@ static cu_mount_t *cu_mount_getmntent (void) while ((me = getmntent (fp)) != NULL) { - if ((new = malloc (sizeof (cu_mount_t))) == NULL) + if ((new = calloc (1, sizeof (*new))) == NULL) break; - memset (new, '\0', sizeof (cu_mount_t)); - + /* Copy values from `struct mntent *' */ new->dir = sstrdup (me->mnt_dir); new->spec_device = sstrdup (me->mnt_fsname); @@ -758,7 +758,7 @@ void cu_mount_freelist (cu_mount_t *list) } /* void cu_mount_freelist(cu_mount_t *list) */ char * -cu_mount_checkoption(char *line, char *keyword, int full) +cu_mount_checkoption(char *line, const char *keyword, int full) { char *line2, *l2, *p1, *p2; int l; @@ -799,7 +799,7 @@ cu_mount_checkoption(char *line, char *keyword, int full) } /* char *cu_mount_checkoption(char *line, char *keyword, int full) */ char * -cu_mount_getoptionvalue(char *line, char *keyword) +cu_mount_getoptionvalue(char *line, const char *keyword) { char *r; @@ -815,13 +815,13 @@ cu_mount_getoptionvalue(char *line, char *keyword) if((p-r) == 1) { return NULL; } - m = (char *)smalloc(p-r+1); + m = smalloc(p-r+1); sstrncpy(m, r, p-r+1); return m; } } return r; -} /* char *cu_mount_getoptionvalue(char *line, char *keyword) */ +} /* char *cu_mount_getoptionvalue(char *line, const char *keyword) */ int cu_mount_type(const char *type)