X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=.inspircd.inc;h=03be874c69c669059990fbe85f0c63158fd8dfd5;hb=90639721625b5da867effc7dd4adec003c1bd3b4;hp=b7696026a379450eaf6d536f4b0cba0e75a1b78a;hpb=345ef802952ccb181d9df76533201ac7f840b267;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/.inspircd.inc b/.inspircd.inc index b7696026a..03be874c6 100644 --- a/.inspircd.inc +++ b/.inspircd.inc @@ -15,16 +15,15 @@ # I HATE PERL.. kthxbye # --------------------------------------------------- -my $conffile = "@CONFIG_DIR@/inspircd.conf"; +my $confpath = "@CONFIG_DIR@/"; my $binpath = "@BINARY_DIR@"; my $libpath = "@LIBRARY_DIR@"; my $executable = "@EXECUTABLE@"; - -$ENV{"LD_LIBRARY_PATH"} = $ENV{"LD_LIBRARY_PATH"} . ":/usr/local/lib/mysql:/usr/lib/mysql:$libpath"; +my @filesparsed; # Lets see what they want to do.. Set the variable (Cause i'm a lazy coder) my $arg = $ARGV[0]; -getpidfile(); +getpidfile($confpath."inspircd.conf"); if ($arg eq "start") { start(); exit(); } if ($arg eq "debug") { debug(); exit(); } @@ -85,21 +84,14 @@ sub start { if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } # If we are still alive here.. Try starting the IRCd.. system("$binpath/$executable"); - sleep 1; - if (getstatus() == 0) { - print "InspIRCd Seemingly not started, Log follows:\n"; - system("tail $binpath/ircd.log"); - } else { - # We're good! - return 1; - } + return 1; } sub debug { # Check to see its not 'running' already. if (getstatus() == 1) { print "InspIRCd is already running.\n"; return 0; } # If we are still alive here.. Try starting the IRCd.. - system("gdb --args $binpath/$executable -nofork -debug"); + system("gdb --command=.gdbargs --args $binpath/$executable -nofork -debug -nolog"); } @@ -109,7 +101,6 @@ sub stop { my $pid = getprocessid(); print "Stopping InspIRCd...\n"; system("kill -TERM $pid >/dev/null 2>&1"); - sleep 2; if (getstatus() == 1) { print "InspIRCd not dying Quietly -- Forcing Kill\n"; @@ -118,21 +109,72 @@ sub stop { print "InspIRCd Stopped.\n"; } +# GetPidfile Version 2 - Now With Include Support.. +# I beg for months for include support in insp, then.. +# when it is added, it comes around and BITES ME IN THE ASS, +# because i then have to code support into this script.. Evil. sub getpidfile { - open INFILE, "< $conffile" or die "Couldn't open $conffile\n"; - my(@lines) = ; - close INFILE; - chomp(@lines); - - foreach $i (@lines) { - $i =~ s/[^=]+=\s(.*)/\1/; - } - - my $tmp = join("",@lines); - $tmp =~ //i; - - $pidfile = $1; + my ($file) = @_; + # Before we start, do we have a PID already? (Should never occur) + if ($pid ne "") { + return; + } + # Are We using a relative path? + if ($file !~ /^\//) { + # Convert it to a full path.. + $file = $confpath . $file; + } + + # Have we checked this file before? + for (my $i = 0; $i < $filesparsed; $i++) { + if ($filesparsed[$i] eq $file) { + # Already Parsed, Possible recursive loop.. + return; + } + } + + # If we get here, Mark as 'Read' + $filesparsed[$filesparsed] = $file; + + # Open the File.. + open INFILE, "< $file" or die "Unable to Open file $file\n"; + # Grab entire file contents.. + my(@lines) = ; + # Close the file + close INFILE; + + # Clean up the file, no newlines etc.. + chomp(@lines); + foreach $i (@lines) { + $i =~ s/[^=]+=\s(.*)/\1/; + } + my $tmp = join("",@lines); + + # Does this file have a pid? + if ($tmp =~ //i) { + # Set the PID file and return. + $pidfile = $1; + return; + } + + # If we get here, NO PID FILE! -- Check for includes (Seeing as we will eventually return, + # The while (1) is safe.) + while (1) { + if ($tmp =~ s/\//i) + { + # Decend into that file, and check for PIDs.. (that sounds like an STD ;/) + getpidfile($1); + # Was a PID found? + if ($pidfile ne "") { + # Yes, Return. + return; + } + } else { + # End of includes / No includes found. + return; + } + } } sub getstatus {