--- toast 2004/07/10 21:08:02 1.332 +++ toast 2004/07/12 04:07:33 1.333 @@ -302,16 +302,24 @@ isopt($name) || error("no such option: $name"); } + sub dotfile() + { + my(@list); + push(@list, path($ENV{HOME}, qw[.toast conf])) + if exists($ENV{HOME}) && length($ENV{HOME}); + push(@list, qw[/toast/conf /etc/toast.conf /usr/local/etc/toast.conf]); + -e && return $_ for(@list); + return undef; + } + sub loadopt($) { my($name) = @_; error unless isopt($name); return $optloaded{$name} if %optloaded; $optloaded{1} = 1; - return unless $ENV{HOME}; - my($dotfile) = "$ENV{HOME}/.$myname/conf"; - $dotfile = "/etc/toast.conf" unless -e($dotfile); - return unless -e($dotfile); + my($dotfile) = dotfile; + return unless defined($dotfile); whilefile { s/^\s+//; @@ -383,15 +391,15 @@ ############################################################################## -sub explain(@) +BEGIN { - print("# @_\n") unless quiet; + my($verbosified) = false; + sub verbosify() { $verbosified = true } + sub say(@) { print(@_) if $verbosified || !quiet } } -sub announce(@) -{ - print("@_\n") unless quiet; -} +sub explain(@) { say("# @_\n"); } +sub announce(@) { say("@_\n"); } ############################################################################## @@ -3346,7 +3354,7 @@ my(@times) = gettimes; open(STDERR, ">&STDOUT") || error("dup stdout: $!"); - setopt("quiet", false); + verbosify; nice(10); dropprivs; showprebuildinfo($name, $version, $build); @@ -3377,7 +3385,7 @@ { print LOG $_; chomp; - print(" $_\n") unless quiet; + say(" $_\n"); } my($success) = close(CHILD); @@ -4812,7 +4820,7 @@ sub selfconfigure(@) { - setopt("quiet", false); + verbosify; my($prefix) = "/usr"; my($arg); @@ -6140,19 +6148,21 @@ =item 3. -The configuration file. If option I<NAME> has not been assigned -a value through any of the above methods, its value will be taken -from a line of the form I<NAME>B<=>I<VALUE>, if such a line exists, in -C<I<$HOME>/.toast/conf>, if that file exists. (C<I<$HOME>> specifically -represents the value of the C<HOME> environment variable.) I<NAME> -is case-insensitive in this context. Any whitespace before or after -I<NAME> or I<VALUE> will be ignored, as will any blank line, any -line containing only whitespace, and any line with B<#> as its first -non-whitespace character. If the file exists but cannot be read or has -invalid syntax, an invalid I<NAME>, or an illegal I<VALUE> for a boolean -option (an explicit value must be given; see item 1 for allowed forms), -B<toast> will normally give an error message at startup and refuse to -execute any commands. +The configuration file. If option I<NAME> has not been assigned a value +through any of the above methods, its value will be taken from a line of +the form I<NAME>B<=>I<VALUE> in the configuration file, if such a line +exists. I<NAME> is case-insensitive in this context. Any whitespace +before or after I<NAME> or I<VALUE> will be ignored, as will any blank +line, any line containing only whitespace, and any line with B<#> as its +first non-whitespace character. B<toast> looks for its configuration +file in C<I<$HOME>/.toast/conf>, C</toast/conf>, C</etc/toast.conf>, +and C</usr/local/etc/toast.conf>; if any of those files exist, only the +first is used. (Here, C<I<$HOME>> specifically represents the value of +the C<HOME> environment variable.) If a configuration file exists but +cannot be read or has invalid syntax, an invalid I<NAME>, or an illegal +I<VALUE> for a boolean option (an explicit value must be given; see item +1 for allowed forms), B<toast> will normally give an error message at +startup and refuse to execute any commands. =item 4.