]> git.donarmstrong.com Git - infobot.git/blobdiff - infobot
dunno
[infobot.git] / infobot
diff --git a/infobot b/infobot
index e53ed5b6d1d7c447b30570b1aac599cd096c468d..ffc3911387e33b9bd2554d97e8704b0e9257091d 100755 (executable)
--- a/infobot
+++ b/infobot
@@ -1,32 +1,53 @@
-#!/usr/bin/perl
+#!/usr/bin/perl -w
 
-# infobot -- copyright kevin lenzo (c) 1997-infinity
-# no warrantee expressed or implied. terms as the 
-# license for X11R6 when needed.
+# infobot
+# copyright kevin lenzo (c) 1997-1999
+# copyright david sobon (c) 1999-infinity
+# Copyright (c) 2001-2014 Tim Riker <Tim@Rikers.org>
 
 use strict;
-use vars qw($infobot_base_dir $infobot_src_dir $infobot_misc_dir
-           $infobot_pid $memusage %param
+use vars qw($bot_base_dir $bot_src_dir $bot_misc_dir $bot_state_dir
+  $bot_data_dir $bot_config_dir $bot_log_dir $bot_run_dir
+  $bot_pid $memusage %param
 );
 
+# ancient Perl may not like these, but modern systems should have this
+use open ':utf8';
+use open ':std';
+use Encode qw( decode FB_QUIET );
+
 BEGIN {
-    # set this to the absolute path if you need it; especially
-    # if . is not in your path
+    if ( @ARGV and -f $ARGV[0] ) {
+
+        # source passed config to allow $bot_*_dir to be set.
+        do $ARGV[0];
+    }
+
+    # set any $bot_*_dir var's that aren't already set
+    $bot_base_dir      ||= `pwd`;
+    chomp($bot_base_dir);
+    $bot_config_dir    ||= "$bot_base_dir/files/";
+    $bot_data_dir      ||= "$bot_base_dir/files/";
+    $bot_state_dir     ||= "$bot_base_dir/files/";
+    $bot_run_dir           ||= "$bot_base_dir";
+    $bot_src_dir    ||= "$bot_base_dir/src";
+    $bot_log_dir    ||= "$bot_base_dir/log";
+    $bot_misc_dir      ||= "$bot_base_dir/files";
 
-    $infobot_base_dir  = '.';
-    $infobot_src_dir   = "$infobot_base_dir/src";
-    $infobot_misc_dir  = "$infobot_base_dir/files";
-    $infobot_pid       = $$;
+    $bot_pid = $$;
 
-    require "$infobot_src_dir/logger.pl";
-    require "$infobot_src_dir/core.pl";
-    require "$infobot_src_dir/interface.pl";
-    require "$infobot_src_dir/modules.pl";
+    $bot_base_dir = $bot_state_dir;
+
+       unshift @INC,"$bot_src_dir","$bot_src_dir/Modules";
+
+    require "$bot_src_dir/logger.pl";
+    require "$bot_src_dir/core.pl";
+    require "$bot_src_dir/modules.pl";
 
     # load the configuration (params) file.
     &setupConfig();
 
-    &showProc();       # to get the first value.
+    &showProc();    # to get the first value.
     &status("Initial memory usage: $memusage kB");
     &loadCoreModules();
     &loadDBModules();
@@ -39,51 +60,53 @@ BEGIN {
 # prevent duplicate processes of the same bot
 &duperuncheck();
 
-# initialize everything 
-&startup();    # first time initialization.
+# initialize everything
+&startup();    # first time initialization.
 &setup();
 
-if (!&IsParam("Interface") or $param{'Interface'} =~ /IRC/) {
+if ( !&IsParam("Interface") or $param{'Interface'} =~ /IRC/ ) {
+
     # launch the irc event loop
     &ircloop();
-} else {
+}
+else {
     &cliloop();
 }
 
-exit 0;  # just so you don't look farther down in this file :)
+exit 0;        # just so you don't look farther down in this file :)
 
 # --- support routines
 
-# FIXME.
-#   add arguments, basically '-h' and '--help', heh.
-#
+# FIXME: add arguments, basically '-h' and '--help', heh.
 
 # added by the xk
 sub duperuncheck {
-    my $pid    = $$;
-    my $file   = $file{PID};
-
-    if ( -f $file) {
-       open(PIDFILE,$file) or die "error: cannot open $file.";
-       my $thispid = <PIDFILE> || "NULL\n";
-       close PIDFILE;
-       chop $thispid;
-
-       if ($thispid =~ /^\D$/) {
-           &staus("warning: pidfile is invalid; wiping out.");
-       } else {
-           if ( -d "/proc/$thispid/") {
-               &ERROR("bot is already running from this directory.");
-               &ERROR("if this is incorrect, erase '*.pid'.");
-               &ERROR("verify with 'ps -axu | grep $thispid'.");
-               exit 1;
-           } else {
-               &status("warning: stale $file found; wiping.");
-           }
-       }
+    my $pid  = $$;
+    my $file = $file{PID};
+
+    if ( -f $file ) {
+        open( PIDFILE, $file ) or die "error: cannot open $file.";
+        my $thispid = <PIDFILE> || "NULL\n";
+        close PIDFILE;
+        chop $thispid;
+
+        if ( $thispid =~ /^\D$/ ) {
+            &staus("warning: pidfile is invalid; wiping out.");
+        }
+        else {
+            if ( -d "/proc/$thispid/" ) {
+                &ERROR("bot is already running from this directory.");
+                &ERROR("if this is incorrect, erase '*.pid'.");
+                &ERROR("verify with 'ps -axu | grep $thispid'.");
+                exit 1;
+            }
+            else {
+                &status("warning: stale $file found; wiping.");
+            }
+        }
     }
 
-    open(PIDFILE,">$file") or die "error: cannot write to $file.";
+    open( PIDFILE, ">$file" ) or die "error: cannot write to $file.";
     print PIDFILE "$pid\n";
     close PIDFILE;