#!perl
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
#
# Create a Configuration.lint with every Module except for the modules
# specified in the 'isbad' subroutine.

sub isbad
{
    local($module) = @_;
    return 1 if $module =~ /mod_dld/;
    return 1 if $module =~ /mod_dld/;
    return 1 if $module =~ /mod_auth_msql/;
    return 1 if $module =~ /mod_example/;

    return 0;
}

open(TMPL, "Configuration.tmpl") || die "can't open Configuration.tmpl: $!";
open(LINT, ">Configuration.lint") || die "can't write Configuration.link: $!";

while(<TMPL>)
{
    next if /^$/;
    print LINT if /^[^#]/;
    if(/^# AddModule\s+(.*)$/)
    {
	   $module = $1;
	   print LINT "AddModule $module\n" if ! &isbad($module);
    }
}
close(TMPL);
close(LINT);
