summaryrefslogtreecommitdiffstats
path: root/scripts/config.pl
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-09-08 19:55:42 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-09-08 19:55:42 +0000
commit6db7ad74f61eeaae0c8ecb08d483599d9d80c53f (patch)
tree30cacdb892969714d2a079f391ba6786b7c36489 /scripts/config.pl
parentac8f9434660b88d0f9686bed3e0bfd5b0adf1788 (diff)
major target cleanup. it is now possible to have subtargets that can override many target settings, including arch - merge adm5120, adm5120eb. target profiles still need to be adapted for subtargets
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8694 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'scripts/config.pl')
-rwxr-xr-xscripts/config.pl148
1 files changed, 0 insertions, 148 deletions
diff --git a/scripts/config.pl b/scripts/config.pl
deleted file mode 100755
index 53b8f1102..000000000
--- a/scripts/config.pl
+++ /dev/null
@@ -1,148 +0,0 @@
-#!/usr/bin/env perl
-#
-# Copyright (C) 2006 Felix Fietkau <nbd@openwrt.org>
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-use warnings;
-use strict;
-
-my @arg = @ARGV;
-
-sub load_config($) {
- my $file = shift;
- my %config;
-
- open FILE, "$file" or die "can't open file";
- while (<FILE>) {
- chomp;
- /^CONFIG_(.+?)=(.+)/ and do {
- $config{$1} = $2;
- next;
- };
- /^# CONFIG_(.+?) is not set/ and do {
- $config{$1} = "#undef";
- next;
- };
- /^#/ and next;
- /^(.+)$/ and print "WARNING: can't parse line: $1\n";
- }
- return \%config;
-}
-
-
-sub config_and($$) {
- my $cfg1 = shift;
- my $cfg2 = shift;
- my %config;
-
- foreach my $config (keys %$cfg1) {
- my $val1 = $cfg1->{$config};
- my $val2 = $cfg2->{$config};
- $val2 and ($val1 eq $val2) and do {
- $config{$config} = $val1;
- };
- }
- return \%config;
-}
-
-
-sub config_add($$$) {
- my $cfg1 = shift;
- my $cfg2 = shift;
- my $mod_plus = shift;
- my %config;
-
- for ($cfg1, $cfg2) {
- my %cfg = %$_;
-
- foreach my $config (keys %cfg) {
- next if $mod_plus and $config{$config} and $config{$config} eq "y";
- $config{$config} = $cfg{$config};
- }
- }
- return \%config;
-}
-
-sub config_diff($$) {
- my $cfg1 = shift;
- my $cfg2 = shift;
- my %config;
-
- foreach my $config (keys %$cfg2) {
- if (!$cfg1->{$config} or $cfg1->{$config} ne $cfg2->{$config}) {
- $config{$config} = $cfg2->{$config};
- }
- }
- return \%config
-}
-
-sub config_sub($$) {
- my $cfg1 = shift;
- my $cfg2 = shift;
- my %config = %{$cfg1};
-
- foreach my $config (keys %$cfg2) {
- delete $config{$config};
- }
- return \%config;
-}
-
-sub print_cfgline($$) {
- my $name = shift;
- my $val = shift;
- if ($val eq '#undef') {
- print "# CONFIG_$name is not set\n";
- } else {
- print "CONFIG_$name=$val\n";
- }
-}
-
-
-sub dump_config($) {
- my $cfg = shift;
- die "argument error in dump_config" unless ($cfg);
- my %config = %$cfg;
- foreach my $config (sort keys %config) {
- print_cfgline($config, $config{$config});
- }
-}
-
-sub parse_expr($);
-
-sub parse_expr($) {
- my $pos = shift;
- my $arg = $arg[$$pos++];
-
- die "Parse error" if (!$arg);
-
- if ($arg eq '&') {
- my $arg1 = parse_expr($pos);
- my $arg2 = parse_expr($pos);
- return config_and($arg1, $arg2);
- } elsif ($arg =~ /^\+/) {
- my $arg1 = parse_expr($pos);
- my $arg2 = parse_expr($pos);
- return config_add($arg1, $arg2, 0);
- } elsif ($arg =~ /^m\+/) {
- my $arg1 = parse_expr($pos);
- my $arg2 = parse_expr($pos);
- return config_add($arg1, $arg2, 1);
- } elsif ($arg eq '>') {
- my $arg1 = parse_expr($pos);
- my $arg2 = parse_expr($pos);
- return config_diff($arg1, $arg2);
- } elsif ($arg eq '-') {
- my $arg1 = parse_expr($pos);
- my $arg2 = parse_expr($pos);
- return config_sub($arg1, $arg2);
- } else {
- return load_config($arg);
- }
-}
-
-my $pos = 0;
-dump_config(parse_expr(\$pos));
-die "Parse error" if ($arg[$pos]);