ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.278 by root, Mon Jun 11 21:38:14 2007 UTC vs.
Revision 1.279 by root, Mon Jun 11 22:16:53 2007 UTC

967 path => $path, 967 path => $path,
968 base => $base, 968 base => $base,
969 pkg => $pkg, 969 pkg => $pkg,
970 ); 970 );
971 971
972 $ext{meta} = { map { split /=/, $_, 2 } split /\s+/, $1 } 972 $ext{meta} = { map { (split /=/, $_, 2)[0, 1] } split /\s+/, $1 }
973 if $source =~ /^#!.*?perl.*?#\s*(.*)$/; 973 if $source =~ /\A#!.*?perl.*?#\s*(.*)$/m;
974 974
975 $ext{source} = 975 $ext{source} =
976 "package $pkg; use strict; use utf8;\n" 976 "package $pkg; use strict; use utf8;\n"
977 . "#line 1 \"$path\"\n{\n" 977 . "#line 1 \"$path\"\n{\n"
978 . $source 978 . $source
984 my %done; 984 my %done;
985 while (%todo) { 985 while (%todo) {
986 my $progress; 986 my $progress;
987 987
988 while (my ($k, $v) = each %todo) { 988 while (my ($k, $v) = each %todo) {
989 for (split /,\s*/, $ext{meta}{depends}) { 989 for (split /,\s*/, $v->{meta}{depends}) {
990 goto skip 990 goto skip
991 unless exists $done{$_}; 991 unless exists $done{$_};
992 } 992 }
993 993
994 warn "... loading '$k' into '$v->{pkg}'\n"; 994 warn "... loading '$k' into '$v->{pkg}'\n";
995 995
996 unless (eval $v->{source}) { 996 unless (eval $v->{source}) {
997 my $msg = $@ ? "$v->{path}: $@\n" 997 my $msg = $@ ? "$v->{path}: $@\n"
998 : "extension disabled.\n"; 998 : "$v->{base}: extension inactive.\n";
999 999
1000 if (exists $v->{meta}{mandatory}) { 1000 if (exists $v->{meta}{mandatory}) {
1001 warn $msg; 1001 warn $msg;
1002 warn "mandatory extension failed to load, exiting.\n"; 1002 warn "mandatory extension failed to load, exiting.\n";
1003 exit 1; 1003 exit 1;
1004 } 1004 }
1005 1005
1006 die $msg; 1006 warn $msg;
1007 } 1007 }
1008 1008
1009 $done{$k} = delete $todo{$k}; 1009 $done{$k} = delete $todo{$k};
1010 push @EXTS, $v->{pkg}; 1010 push @EXTS, $v->{pkg};
1011 $progress = 1;
1011 } 1012 }
1012 1013
1013 skip: 1014 skip:
1014 die "cannot load " . (join ", ", keys %todo) . ": unable to resolve dependencies\n" 1015 die "cannot load " . (join ", ", keys %todo) . ": unable to resolve dependencies\n"
1015 unless $progress; 1016 unless $progress;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines