Code

Merge branch 'collectd-4.2' into collectd-4.3
authorFlorian Forster <octo@huhu.verplant.org>
Wed, 30 Apr 2008 08:26:28 +0000 (10:26 +0200)
committerFlorian Forster <octo@huhu.verplant.org>
Wed, 30 Apr 2008 08:26:28 +0000 (10:26 +0200)
1  2 
src/collectd.c

diff --combined src/collectd.c
index 984ff757f3911fdc156717261bbb9c195907930a,ab9c89d2e29819d000242dd0d3d0060da3c165c6..4e521f9f6b40835ab34d16896717ffc347e99e2c
  #include "collectd.h"
  #include "common.h"
  
 +#include <sys/types.h>
 +#include <sys/socket.h>
 +#include <netdb.h>
 +
  #include "plugin.h"
  #include "configfile.h"
 -#include "types_list.h"
  
+ #if HAVE_STATGRAB_H
+ # include <statgrab.h>
+ #endif
  /*
   * Global variables
   */
@@@ -51,67 -52,25 +55,67 @@@ static void sigTermHandler (int signal
        loop++;
  }
  
 -static int init_global_variables (void)
 +static int init_hostname (void)
  {
        const char *str;
  
 +      struct addrinfo  ai_hints;
 +      struct addrinfo *ai_list;
 +      struct addrinfo *ai_ptr;
 +      int status;
 +
        str = global_option_get ("Hostname");
        if (str != NULL)
        {
                strncpy (hostname_g, str, sizeof (hostname_g));
 +              hostname_g[sizeof (hostname_g) - 1] = '\0';
 +              return (0);
        }
 -      else
 +
 +      if (gethostname (hostname_g, sizeof (hostname_g)) != 0)
        {
 -              if (gethostname (hostname_g, sizeof (hostname_g)) != 0)
 -              {
 -                      fprintf (stderr, "`gethostname' failed and no "
 -                                      "hostname was configured.\n");
 -                      return (-1);
 -              }
 +              fprintf (stderr, "`gethostname' failed and no "
 +                              "hostname was configured.\n");
 +              return (-1);
        }
 -      DEBUG ("hostname_g = %s;", hostname_g);
 +
 +      str = global_option_get ("FQDNLookup");
 +      if ((strcasecmp ("false", str) == 0)
 +                      || (strcasecmp ("no", str) == 0)
 +                      || (strcasecmp ("off", str) == 0))
 +              return (0);
 +
 +      memset (&ai_hints, '\0', sizeof (ai_hints));
 +      ai_hints.ai_flags = AI_CANONNAME;
 +
 +      status = getaddrinfo (hostname_g, NULL, &ai_hints, &ai_list);
 +      if (status != 0)
 +      {
 +              ERROR ("Looking up \"%s\" failed. You have set the "
 +                              "\"FQDNLookup\" option, but I cannot resolve "
 +                              "my hostname to a fully qualified domain "
 +                              "name. Please fix you network "
 +                              "configuration.", hostname_g);
 +              return (-1);
 +      }
 +
 +      for (ai_ptr = ai_list; ai_ptr != NULL; ai_ptr = ai_ptr->ai_next)
 +      {
 +              if (ai_ptr->ai_canonname == NULL)
 +                      continue;
 +
 +              strncpy (hostname_g, ai_ptr->ai_canonname, sizeof (hostname_g));
 +              hostname_g[sizeof (hostname_g) - 1] = '\0';
 +              break;
 +      }
 +
 +      freeaddrinfo (ai_list);
 +      return (0);
 +} /* int init_hostname */
 +
 +static int init_global_variables (void)
 +{
 +      const char *str;
  
        str = global_option_get ("Interval");
        if (str == NULL)
        }
        DEBUG ("interval_g = %i;", interval_g);
  
 +      if (init_hostname () != 0)
 +              return (-1);
 +      DEBUG ("hostname_g = %s;", hostname_g);
 +
        return (0);
  } /* int init_global_variables */
  
@@@ -219,7 -174,7 +223,7 @@@ static void update_kstat (void
  /* TODO
   * Remove all settings but `-f' and `-C'
   */
 -static void exit_usage (char *name)
 +static void exit_usage (void)
  {
        printf ("Usage: "PACKAGE" [OPTIONS]\n\n"
                        
@@@ -263,6 -218,7 +267,6 @@@ static int do_init (void
        }
  #endif
  
 -      read_types_list ();
        plugin_init_all ();
  
        return (0);
@@@ -292,7 -248,7 +296,7 @@@ static int do_loop (void
  #endif
  
                /* Issue all plugins */
 -              plugin_read_all (&loop);
 +              plugin_read_all ();
  
                if (gettimeofday (&tv_now, NULL) < 0)
                {
@@@ -408,7 -364,7 +412,7 @@@ int main (int argc, char **argv
  #endif /* COLLECT_DAEMON */
                        case 'h':
                        default:
 -                              exit_usage (argv[0]);
 +                              exit_usage ();
                } /* switch (c) */
        } /* while (1) */