* Niki W. Waibel <niki.waibel@gmx.net>
**/
-
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
#include "common.h"
#if HAVE_XFS_XQM_H
* (This is useful, if the cdrom on /dev/hdc must not
* be accessed.)
*/
- snprintf(device, sizeof(device), "%s/%s",
+ ssnprintf(device, sizeof(device), "%s/%s",
DEVLABELDIR, ptname);
if(!get_label_uuid(device, &label, uuid)) {
uuidcache_addentry(sstrdup(device),
return get_spec_by_x(UUID, uuid);
bad_uuid:
- DEBUG("Found an invalid UUID: %s", s);
+ DEBUG("utils_mount: Found an invalid UUID: %s", s);
return NULL;
}
}
else if (strncmp (optstr, "UUID=", 5) == 0)
{
- DEBUG ("TODO: check UUID= code!");
+ DEBUG ("utils_mount: TODO: check UUID= code!");
rc = get_spec_by_uuid (optstr + 5);
}
else if (strncmp (optstr, "LABEL=", 6) == 0)
{
- DEBUG ("TODO: check LABEL= code!");
+ DEBUG ("utils_mount: TODO: check LABEL= code!");
rc = get_spec_by_volume_label (optstr + 6);
}
else
if(!rc)
{
- DEBUG ("Error checking device name: optstr = %s", optstr);
+ DEBUG ("utils_mount: Error checking device name: optstr = %s", optstr);
}
return rc;
}
struct tabmntent *mntlist;
if(listmntent(&mntlist, COLLECTD_MNTTAB, NULL, NULL) < 0) {
+#if COLLECT_DEBUG
char errbuf[1024];
- DEBUG("calling listmntent() failed: %s",
+ DEBUG("utils_mount: calling listmntent() failed: %s",
sstrerror (errno, errbuf, sizeof (errbuf)));
+#endif /* COLLECT_DEBUG */
}
for(p = mntlist; p; p = p->next) {
if(loop == NULL) { /* no loop= mount */
device = get_device_name(mnt->mnt_fsname);
if(device == NULL) {
- DEBUG("can't get devicename for fs (%s) %s (%s)"
+ DEBUG("utils_mount: can't get devicename for fs (%s) %s (%s)"
": ignored", mnt->mnt_type,
mnt->mnt_dir, mnt->mnt_fsname);
continue;
/* Get the number of mounted file systems */
if ((bufsize = CMD_STATFS (NULL, 0, FLAGS_STATFS)) < 1)
{
+#if COLLECT_DEBUG
char errbuf[1024];
- DEBUG ("getv?fsstat failed: %s",
+ DEBUG ("utils_mount: getv?fsstat failed: %s",
sstrerror (errno, errbuf, sizeof (errbuf)));
+#endif /* COLLECT_DEBUG */
return (NULL);
}
* manpage.. -octo */
if ((num = CMD_STATFS (buf, bufsize * sizeof (STRUCT_STATFS), FLAGS_STATFS)) < 1)
{
+#if COLLECT_DEBUG
char errbuf[1024];
- DEBUG ("getv?fsstat failed: %s",
+ DEBUG ("utils_mount: getv?fsstat failed: %s",
sstrerror (errno, errbuf, sizeof (errbuf)));
+#endif /* COLLECT_DEBUG */
free (buf);
return (NULL);
}
cu_mount_t *last = NULL;
cu_mount_t *new = NULL;
- DEBUG ("(void); COLLECTD_MNTTAB = %s", COLLECTD_MNTTAB);
+ DEBUG ("utils_mount: (void); COLLECTD_MNTTAB = %s", COLLECTD_MNTTAB);
if ((fp = fopen (COLLECTD_MNTTAB, "r")) == NULL)
{
#warn "This version of `getmntent' hat not yet been implemented!"
/* #endif HAVE_SEQ_GETMNTENT */
+#elif HAVE_GETMNTENT_R
+static cu_mount_t *cu_mount_getmntent (void)
+{
+ FILE *fp;
+ struct mntent me;
+ char mntbuf[1024];
+
+ cu_mount_t *first = NULL;
+ cu_mount_t *last = NULL;
+ cu_mount_t *new = NULL;
+
+ DEBUG ("utils_mount: (void); COLLECTD_MNTTAB = %s", COLLECTD_MNTTAB);
+
+ if ((fp = setmntent (COLLECTD_MNTTAB, "r")) == NULL)
+ {
+ char errbuf[1024];
+ ERROR ("setmntent (%s): %s", COLLECTD_MNTTAB,
+ sstrerror (errno, errbuf, sizeof (errbuf)));
+ return (NULL);
+ }
+
+ while (getmntent_r (fp, &me, mntbuf, sizeof (mntbuf) ))
+ {
+ if ((new = malloc (sizeof (cu_mount_t))) == 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);
+ new->type = sstrdup (me.mnt_type);
+ new->options = sstrdup (me.mnt_opts);
+ new->device = get_device_name (new->options);
+ new->next = NULL;
+
+ DEBUG ("utils_mount: new = {dir = %s, spec_device = %s, type = %s, options = %s, device = %s}",
+ new->dir, new->spec_device, new->type, new->options, new->device);
+
+ /* Append to list */
+ if (first == NULL)
+ {
+ first = new;
+ last = new;
+ }
+ else
+ {
+ last->next = new;
+ last = new;
+ }
+ }
+
+ endmntent (fp);
+
+ DEBUG ("utils_mount: return (0x%p)", (void *) first);
+
+ return (first);
+} /* HAVE_GETMNTENT_R */
+
#elif HAVE_ONE_GETMNTENT
static cu_mount_t *cu_mount_getmntent (void)
{
cu_mount_t *last = NULL;
cu_mount_t *new = NULL;
- DEBUG ("(void); COLLECTD_MNTTAB = %s", COLLECTD_MNTTAB);
+ DEBUG ("utils_mount: (void); COLLECTD_MNTTAB = %s", COLLECTD_MNTTAB);
if ((fp = setmntent (COLLECTD_MNTTAB, "r")) == NULL)
{
new->device = get_device_name (new->options);
new->next = NULL;
- DEBUG ("new = {dir = %s, spec_device = %s, type = %s, options = %s, device = %s}",
+ DEBUG ("utils_mount: new = {dir = %s, spec_device = %s, type = %s, options = %s, device = %s}",
new->dir, new->spec_device, new->type, new->options, new->device);
/* Append to list */
endmntent (fp);
- DEBUG ("return (0x%p)", (void *) first);
+ DEBUG ("utils_mount: return (0x%p)", (void *) first);
return (first);
}
#elif HAVE_TWO_GETMNTENT || HAVE_GEN_GETMNTENT || HAVE_SUN_GETMNTENT
new = cu_mount_gen_getmntent ();
#elif HAVE_SEQ_GETMNTENT
-# warn "This version of `getmntent' hat not yet been implemented!"
+# error "This version of `getmntent' hat not yet been implemented!"
#elif HAVE_ONE_GETMNTENT
new = cu_mount_getmntent ();
#else
- new = NULL;
+# error "Could not determine how to find mountpoints."
#endif
if (first != NULL)
cu_mount_t *this;
cu_mount_t *next;
- DEBUG ("(list = 0x%p)", (void *) list);
-
for (this = list; this != NULL; this = next)
{
next = this->next;
char *
cu_mount_checkoption(char *line, char *keyword, int full)
{
- char *line2, *l2;
- int l = strlen(keyword);
- char *p1, *p2;
+ char *line2, *l2, *p1, *p2;
+ int l;
if(line == NULL || keyword == NULL) {
return NULL;
}
+
if(full != 0) {
full = 1;
}
l2++;
}
+ l = strlen(keyword);
p1 = line - 1;
p2 = strchr(line, ',');
do {
r += strlen(keyword);
p = strchr(r, ',');
if(p == NULL) {
- if(strlen(r) == 0) {
- return NULL;
- }
return sstrdup(r);
} else {
char *m;
return r;
} /* char *cu_mount_getoptionvalue(char *line, char *keyword) */
-
-
int
cu_mount_type(const char *type)
{
return CUMT_UNKNOWN;
} /* int cu_mount_type(const char *type) */
-
-