]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - modulemanager
Send ERR_CANTUNLOADMODULE when unloading a module on reload fails.
[user/henk/code/inspircd.git] / modulemanager
index d44ccbeb95df357049570dc61eaf665863af372a..1be9f52f90d3249000f722e6402c95ac059077a2 100755 (executable)
@@ -1,9 +1,10 @@
 #!/usr/bin/env perl
-
 #
 # InspIRCd -- Internet Relay Chat Daemon
 #
-#   Copyright (C) 2012-2017 Peter Powell <petpow@saberuk.com>
+#   Copyright (C) 2012-2014, 2017-2020 Sadie Powell <sadie@witchery.services>
+#   Copyright (C) 2012 Robby <robby@chatbelgie.be>
+#   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
 #   Copyright (C) 2008-2009 Robin Burchell <robin+git@viroteck.net>
 #
 # This file is part of InspIRCd.  InspIRCd is free software: you can
@@ -73,7 +74,7 @@ sub parse_url {
        }
 
        my $mod;
-       for (split /\n+/, $response->decoded_content) {
+       for (split /\n+/, $response->content) {
                s/^\s+//; # ignore whitespace at start
                next if /^#/;
                if (/^module (\S+) (\S+) (\S+)/) {
@@ -97,7 +98,7 @@ sub parse_url {
                        $mod->{description} = $1;
                } elsif (/^mask (.*)/) {
                        $mod->{mask} = $1;
-               } elsif (m#^source (http://\S+)#) {
+               } elsif (/^source (\S+)/) {
                        parse_url $1;
                } else {
                        print "Unknown line in $src: $_\n";
@@ -123,8 +124,8 @@ while (<SRC>) {
 close SRC;
 
 # determine core version
-`./src/version.sh` =~ /InspIRCd-([0-9.]+)/ or die "Cannot determine inspircd version";
-$installed{core} = $1;
+my %version = get_version();
+$installed{core} = "$version{MAJOR}.$version{MINOR}.$version{PATCH}";
 for my $mod (keys %modules) {
        MODVER: for my $mver (keys %{$modules{$mod}}) {
                for my $dep (@{$modules{$mod}{$mver}{depends}}) {
@@ -137,7 +138,7 @@ for my $mod (keys %modules) {
        }
        delete $modules{$mod} unless %{$modules{$mod}};
 }
-$modules{core}{$1} = {
+$modules{core}{$installed{core}} = {
        url => 'NONE',
        depends => [],
        conflicts => [],
@@ -145,7 +146,7 @@ $modules{core}{$1} = {
 };
 
 # set up core module list
-for my $modname (<src/modules/m_*.cpp>) {
+for my $modname (<$RealDir/src/modules/m_*.cpp>) {
        my $mod = basename($modname, '.cpp');
        my $ver = getmodversion($mod) || '0.0';
        $ver =~ s/\$Rev: (.*) \$/$1/; # for storing revision in SVN
@@ -254,7 +255,7 @@ sub resolve_deps {
 }
 
 command 'install', 'Install a third-party module', sub {
-       for my $mod (@ARGV) {
+       for my $mod (@_) {
                my $vers = $mod =~ s/=([-0-9.]+)// ? $1 : undef;
                $mod = lc $mod;
                unless ($modules{$mod}) {
@@ -296,6 +297,7 @@ command 'list', 'List available third-party modules', sub {
                my $vers = join ' ', map { $_ eq $instver ? "\e[1m$_\e[m" : $_ } @vers;
                print "$mod ($vers) - $desc\n";
        }
+       exit 0;
 };
 
 execute_command @ARGV;
@@ -333,7 +335,7 @@ for my $mod (sort keys %todo) {
 
        if ($response->is_success) {
                open(MF, ">src/modules/$mod.cpp") or die "\nFilesystem not writable: $!";
-               print MF $response->decoded_content;
+               print MF $response->content;
                close(MF);
                print " - done\n";
        } else {