Merge pull request #3074 from mfournier/ci-setup
[collectd.git] / contrib / collection3 / bin / graph.cgi
index 40408fd..ba189de 100755 (executable)
@@ -30,8 +30,8 @@ BEGIN
   {
     if ($ENV{'SCRIPT_FILENAME'} =~ m{^(/.+)/bin/[^/]+$})
     {
-      $BASE_DIR = $1;
-      unshift (@INC, "$BASE_DIR/lib");
+      $::BASE_DIR = $1;
+      unshift (@::INC, "$::BASE_DIR/lib");
     }
   }
 }
@@ -48,20 +48,66 @@ use Collectd::Graph::Common (qw(sanitize_type get_selected_files
       epoch_to_rfc1123 flush_files));
 use Collectd::Graph::Type ();
 
-$::MODPERL = 1;
-
-my $have_init = 0;
-sub init
+sub base_dir
 {
-  if ($have_init)
+  if (defined $::BASE_DIR)
+  {
+    return ($::BASE_DIR);
+  }
+
+  if (!defined ($ENV{'SCRIPT_FILENAME'}))
   {
     return;
   }
 
-  #gc_read_config ("$RealBin/../etc/collection.conf");
-  gc_read_config ("$BASE_DIR/etc/collection.conf");
+  if ($ENV{'SCRIPT_FILENAME'} =~ m{^(/.+)/bin/[^/]+$})
+  {
+    $::BASE_DIR = $1;
+    return ($::BASE_DIR);
+  }
 
-  $have_init = 1;
+  return;
+}
+
+sub lib_dir
+{
+  my $base = base_dir ();
+
+  if ($base)
+  {
+    return "$base/lib";
+  }
+  else
+  {
+    return "../lib";
+  }
+}
+
+sub sysconf_dir
+{
+  my $base = base_dir ();
+
+  if ($base)
+  {
+    return "$base/etc";
+  }
+  else
+  {
+    return "../etc";
+  }
+}
+
+sub init
+{
+  my $lib_dir = lib_dir ();
+  my $sysconf_dir = sysconf_dir ();
+
+  if (!grep { $lib_dir eq $_ } (@::INC))
+  {
+    unshift (@::INC, $lib_dir);
+  }
+
+  gc_read_config ("$sysconf_dir/collection.conf");
 }
 
 sub main
@@ -74,6 +120,8 @@ sub main
   my $OutputFormat = 'PNG';
   my $ContentType = 'image/png';
 
+  init ();
+
   if (param ('format'))
   {
     my $temp = param ('format') || '';
@@ -92,14 +140,12 @@ sub main
   if (param ('debug'))
   {
     print <<HTTP;
-Content-Type: text/plain
+Content-Type: text/plain; charset=utf-8
 
 HTTP
-    $ContentType = 'text/plain';
+    $ContentType = 'text/plain; charset=utf-8';
   }
 
-  init ();
-
   if ($GraphWidth)
   {
     $GraphWidth =~ s/\D//g;