Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / Psh / Builtins / Option.pm
CommitLineData
86530b38
AT
1package Psh::Builtins::Option;
2
3require Psh;
4require Psh::Options;
5
6=item * C<option[s]>
7
8Lists the current configuration options
9
10=item * C<option +NAME>
11
12Activates an option
13
14=item * C<option -NAME>
15
16Deactivates an option
17
18=item * C<option NAME=VALUE>
19
20Sets an options
21
22=item * C<option NAME>
23
24Prints the value of an option
25
26=cut
27
28
29sub bi_option {
30 my $line= shift;
31 my @words= @{shift()};
32 if (!@words) {
33 my @opts= Psh::Options::list_options();
34 @opts= sort @opts;
35 foreach my $opt (@opts) {
36 my $val= Psh::Options::get_printable_option($opt);
37 Psh::Util::print_out("$opt=$val\n");
38 }
39 } else {
40 while (my $tmp= shift @words) {
41 if (substr($tmp,0,1) eq '-') {
42 Psh::Options::del_option(substr($tmp,1));
43 } elsif (substr($tmp,0,1) eq '+') {
44 Psh::Options::set_option(substr($tmp,1),1);
45 } elsif ($tmp=~/=/) {
46 my ($key,$val)= $tmp=~ /^(.*?)=(.*)$/;
47
48 if (!$val or $val eq 'sub') {
49 $val||='';
50 $val.= shift @words;
51 if ($val eq 'sub') {
52 $val.= shift @words;
53 }
54 }
55 my $char= substr($val,0,1);
56 if ($char eq '(') {
57 $val=qq:[$val]:;
58 } elsif ($char ne "'" and $char ne '"' and
59 $char ne '[' and $char ne '{' and $char ne "\\" and
60 $char ne '%' and $char ne '$' and $char ne '%' and
61 $val !~ /^sub\s*\{/) {
62 $val=qq['$val'];
63 }
64 $val=~ s/\033/\\033/g;
65 my @tmp= Psh::PerlEval::protected_eval($val,'eval');
66 $val= $tmp[0];
67 if (@tmp>1) {
68 $val= \@tmp;
69 }
70 Psh::Options::set_option($key, $val);
71 } else {
72 my $val= Psh::Options::get_printable_option($tmp,1);
73 Psh::Util::print_out("$val\n");
74 }
75 }
76 }
77
78 return (1,undef);
79}
80
81
821;