[tpwd] Fix segfault when exactly one argument given
[tinyapps.git] / xcolor2rgb
blob43d8f0e8a6783f5fa2fb61fded9d1793c96d0eeb
1 #!/usr/bin/perl -l
2 ##
3 ## Prints RGB value of colors given in stdin.
4 ## Copyright (c) 2005 by Stanislaw Klekot (dozzie/AT/irc.pl)
5 ##
6 ## This program is free software; you can redistribute it and/or modify
7 ## it under the terms of the GNU General Public License as published by
8 ## the Free Software Foundation; either version 3 of the License, or
9 ## (at your option) any later version.
11 ## This program is distributed in the hope that it will be useful,
12 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 ## GNU General Public License for more details.
16 ## You should have received a copy of the GNU General Public License
17 ## along with this program; if not, see <http://www.gnu.org/licenses/>.
19 ## This is part of Tiny Applications Collection
20 ## -> http://tinyapps.sourceforge.net/
23 open RGB, "/usr/X11R6/lib/X11/rgb.txt";
25 my %colors = map {
26 s/^\s+//; s/\s+$//; $_ = lc $_;
27 split /\s+/, $_, 4;
28 ($_[3], sprintf "rgb:%02x/%02x/%02x", @_[0 .. 2]);
29 } grep { !/^\s*!/ } <RGB>;
31 close RGB;
33 sub printcolor($) {
34 my $color = lc shift;
35 if (exists $colors{$color}) {
36 print "$color => $colors{$color}";
37 } else {
38 print "No such color: $color";
42 if (@ARGV) {
43 printcolor shift while @ARGV;
44 exit;
47 chomp, printcolor $_ while <STDIN>;