+/**
+ * collection4 - graph_ident.c
+ * Copyright (C) 2010 Florian octo Forster
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ *
+ * Authors:
+ * Florian octo Forster <ff at octo.it>
+ **/
+
#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
#include <string.h>
#include <strings.h>
#include <errno.h>
#include <limits.h> /* PATH_MAX */
+#include <sys/types.h>
+#include <sys/stat.h>
#include "graph_ident.h"
#include "common.h"
#include "filesystem.h"
+#include <fcgiapp.h>
+#include <fcgi_stdio.h>
+
/*
* Data types
*/
} /* }}} void ident_destroy */
/* ident_get_* methods {{{ */
-const char *ident_get_host (graph_ident_t *ident) /* {{{ */
+const char *ident_get_host (const graph_ident_t *ident) /* {{{ */
{
if (ident == NULL)
return (NULL);
return (ident->host);
} /* }}} char *ident_get_host */
-const char *ident_get_plugin (graph_ident_t *ident) /* {{{ */
+const char *ident_get_plugin (const graph_ident_t *ident) /* {{{ */
{
if (ident == NULL)
return (NULL);
return (ident->plugin);
} /* }}} char *ident_get_plugin */
-const char *ident_get_plugin_instance (graph_ident_t *ident) /* {{{ */
+const char *ident_get_plugin_instance (const graph_ident_t *ident) /* {{{ */
{
if (ident == NULL)
return (NULL);
return (ident->plugin_instance);
} /* }}} char *ident_get_plugin_instance */
-const char *ident_get_type (graph_ident_t *ident) /* {{{ */
+const char *ident_get_type (const graph_ident_t *ident) /* {{{ */
{
if (ident == NULL)
return (NULL);
return (ident->type);
} /* }}} char *ident_get_type */
-const char *ident_get_type_instance (graph_ident_t *ident) /* {{{ */
+const char *ident_get_type_instance (const graph_ident_t *ident) /* {{{ */
{
if (ident == NULL)
return (NULL);
return (ident->type_instance);
} /* }}} char *ident_get_type_instance */
+
+const char *ident_get_field (const graph_ident_t *ident, /* {{{ */
+ graph_ident_field_t field)
+{
+ if ((ident == NULL) || (field >= _GIF_LAST))
+ return (NULL);
+
+ if (field == GIF_HOST)
+ return (ident->host);
+ else if (field == GIF_PLUGIN)
+ return (ident->plugin);
+ else if (field == GIF_PLUGIN_INSTANCE)
+ return (ident->plugin_instance);
+ else if (field == GIF_TYPE)
+ return (ident->type);
+ else if (field == GIF_TYPE_INSTANCE)
+ return (ident->type_instance);
+ else
+ return (NULL); /* never reached */
+} /* }}} const char *ident_get_field */
/* }}} ident_get_* methods */
/* ident_set_* methods {{{ */
_Bool ident_matches (const graph_ident_t *selector, /* {{{ */
const graph_ident_t *ident)
{
- if ((selector == NULL) && (ident == NULL))
+ if ((selector == NULL) || (ident == NULL))
return (0);
- else if (selector == NULL)
- return (-1);
- else if (ident == NULL)
- return (1);
if (!part_matches (selector->host, ident->host))
return (0);
return (strdup (buffer));
} /* }}} char *ident_to_json */
+time_t ident_get_mtime (const graph_ident_t *ident) /* {{{ */
+{
+ char *file;
+ struct stat statbuf;
+ int status;
+
+ if (ident == NULL)
+ return (0);
+
+ file = ident_to_file (ident);
+ if (file == NULL)
+ return (0);
+
+ memset (&statbuf, 0, sizeof (statbuf));
+ status = stat (file, &statbuf);
+ if (status != 0)
+ {
+ fprintf (stderr, "ident_get_mtime: stat'ing file \"%s\" failed: %s\n",
+ file, strerror (errno));
+ return (0);
+ }
+
+ free (file);
+ return (statbuf.st_mtime);
+} /* }}} time_t ident_get_mtime */
+
/* vim: set sw=2 sts=2 et fdm=marker : */