aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rwxr-xr-xponysay80
-rwxr-xr-xponysaylinklist.pl72
3 files changed, 82 insertions, 72 deletions
diff --git a/Makefile b/Makefile
index 269c4e5..4feb3fc 100644
--- a/Makefile
+++ b/Makefile
@@ -54,6 +54,7 @@ install: all
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"
@@ -108,6 +109,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) <<EOF | sed -e 's/ /_/g' > '/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";
+ }
+}
+