From 7dced5dd382ecebcde1f84a80f5f734b0fd046c2 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Tue, 24 Jul 2012 14:57:44 +0200 Subject: fix ponysay -L + fix for issue 53 --- Makefile | 2 ++ ponysay | 80 ++++++------------------------------------------------ ponysaylinklist.pl | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 72 deletions(-) create mode 100755 ponysaylinklist.pl diff --git a/Makefile b/Makefile index 490c782..d4c6503 100644 --- a/Makefile +++ b/Makefile @@ -61,6 +61,7 @@ install: mkdir -p "$(DESTDIR)/usr/lib/ponysay/" install -s "ponysaytruncater" "$(DESTDIR)/usr/lib/ponysay/truncater" install "ponysaylist.pl" "$(DESTDIR)/usr/lib/ponysay/list.pl" + install "ponysaylinklist.pl" "$(DESTDIR)/usr/lib/ponysay/linklist.pl" mkdir -p "$(DESTDIR)/usr/share/bash-completion/completions/" install "completion/bash-completion.sh" "$(DESTDIR)/usr/share/bash-completion/completions/ponysay" @@ -116,6 +117,7 @@ uninstall: unlink "$(DESTDIR)/usr/bin/ponysay" unlink "$(DESTDIR)/usr/bin/ponythink" unlink "$(DESTDIR)/usr/lib/ponysay/list.pl" + unlink "$(DESTDIR)/usr/lib/ponysay/linklist.pl" unlink "$(DESTDIR)/usr/lib/ponysay/truncater" unlink "$(DESTDIR)/usr/share/licenses/ponysay/COPYING" unlink "$(DESTDIR)/usr/share/bash-completion/completions/ponysay" diff --git a/ponysay b/ponysay index 1c7ff4e..76bc94f 100755 --- a/ponysay +++ b/ponysay @@ -39,7 +39,11 @@ version() { scrw=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 2` listcmd="${SCRIPTDIR}/../lib/ponysay/list.pl" +linklistcmd="${SCRIPTDIR}/../lib/ponysay/linklist.pl" truncatercmd="${SCRIPTDIR}/../lib/ponysay/truncater" +[[ -f "./ponysaylist.pl" ]] && listcmd="./ponysaylist.pl" +[[ -f "./ponysaylinklist.pl" ]] && linklistcmd="./ponysaylinklist.pl" +[[ -f "./ponysaytruncater" ]] && truncatercmd="./ponysaytruncater" haspq=1 if [[ -f './pq4ps-list' ]]; then @@ -87,75 +91,7 @@ _linklist() { scrw=`(stty size <&2 || echo 0 0) | cut -d ' ' -f 2` - perl '/dev/stdin' $(echo $args) < '/dev/shm/.ponysay~' -#!/usr/bin/perl - -#Author: Mattias Andrée (maandree@kth.se) - -%hash = (); -\$argc = @ARGV; - -\$i = 0; -while (\$i < \$argc) -{ - \$source = \$ARGV[\$i]; - \$i += 1; - \$target = \$ARGV[\$i]; - \$i += 1; - if (\$source eq \$target) - { - \$hash{\$source} = [ () ]; - } -} - -\$i = 0; -while (\$i < \$argc) -{ - \$source = \$ARGV[\$i]; - \$i += 1; - \$target = \$ARGV[\$i]; - \$i += 1; - unless (\$source eq \$target) - { - push @{ \$hash{\$target} }, \$source; - } -} - -\$i = 0; -while (\$i < \$argc) -{ - \$source = \$ARGV[\$i]; - \$i += 1; - \$target = \$ARGV[\$i]; - \$i += 1; - if (\$source eq \$target) - { - @list = @{ \$hash{\$source} }; - \$first = 1; - print \$source; - foreach \$link (@list) - { - if (\$first eq 1) - { - print " (".\$link; - \$first = 0; - } - else - { - print " ".\$link; - } - } - if (\$first eq 0) - { - print ")"; - } - print "\n"; - } -} -EOF - - perl $listcmd $scrw $(cat "/dev/shm/.ponysay~") | sed -e 's/_/ /g' | qlist - rm '/dev/shm/.ponysay~' + perl $listcmd $scrw $(perl $linklistcmd $(echo $args) | sed -e 's/ /_/g') | sed -e 's/_/ /g' | qlist } linklist() { @@ -237,9 +173,9 @@ say() { ccmd=$(for c in $(echo $PATH":" | sed -e 's/:/\/'"$cmd"' /g'); do if [[ -f $c ]]; then echo $c; break; fi done) if [[ ${0} == *ponythink ]]; then - cat <(echo -e $pcmd) $ccmd > "/dev/shm/.ponythink" - perl '/dev/shm/.ponythink' "$@" - rm '/dev/shm/.ponythink' + cat <(echo -e $pcmd) $ccmd > "/tmp/.ponythink" + perl '/tmp/.ponythink' "$@" + rm '/tmp/.ponythink' else perl <(cat <(echo -e $pcmd) $ccmd) "$@" fi diff --git a/ponysaylinklist.pl b/ponysaylinklist.pl new file mode 100755 index 0000000..ec6ff9b --- /dev/null +++ b/ponysaylinklist.pl @@ -0,0 +1,72 @@ +#!/usr/bin/perl + +# ponysaylist +# Prints a list of ponies in columns +# +# Licensed under WTFPL +# See COPYING for details + +# Author: Mattias Andrée, maandree@kth.se + + +%hash = (); +$argc = @ARGV; + +$i = 0; +while ($i < $argc) +{ + $source = $ARGV[$i]; + $i += 1; + $target = $ARGV[$i]; + $i += 1; + if ($source eq $target) + { + $hash{$source} = [ () ]; + } +} + +$i = 0; +while ($i < $argc) +{ + $source = $ARGV[$i]; + $i += 1; + $target = $ARGV[$i]; + $i += 1; + unless ($source eq $target) + { + push @{ $hash{$target} }, $source; + } +} + +$i = 0; +while ($i < $argc) +{ + $source = $ARGV[$i]; + $i += 1; + $target = $ARGV[$i]; + $i += 1; + if ($source eq $target) + { + @list = @{ $hash{$source} }; + $first = 1; + print $source; + foreach $link (@list) + { + if ($first eq 1) + { + print " (".$link; + $first = 0; + } + else + { + print " ".$link; + } + } + if ($first eq 0) + { + print ")"; + } + print "\n"; + } +} + -- cgit