cowsay-3.03+dfsg1/0000755000175000017500000000000011432042322014127 5ustar francoisfrancoiscowsay-3.03+dfsg1/cows/0000755000175000017500000000000011432042477015115 5ustar francoisfrancoiscowsay-3.03+dfsg1/cows/moofasa.cow0000644000175000017500000000036206755214045017261 0ustar francoisfrancois## ## MOOfasa. ## $the_cow = < ---___ XXX__/ XXXXXX \\__ / \\- --__/ ___/\\ XXXXXX / ___--/= \\-\\ ___/ XXXXXX '--- XXXXXX \\-\\/XXX\\ XXXXXX /XXXXX \\XXXXXXXXX \\ /XXXXX/ \\XXXXXX > _/XXXXX/ \\XXXXX--__/ __-- XXXX/ -XXXXXXXX--------------- XXXXXX- \\XXXXXXXXXXXXXXXXXXXXXXXXXX/ ""VXXXXXXXXXXXXXXXXXXV"" EOC cowsay-3.03+dfsg1/cows/flaming-sheep.cow0000644000175000017500000000075206755214044020355 0ustar francoisfrancois## ## The flaming sheep, contributed by Geordan Rosario (geordan@csua.berkeley.edu) ## $the_cow = < \\ _ -~ `. ^-` ^-_ ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ /.-~ EOC cowsay-3.03+dfsg1/cows/three-eyes.cow0000644000175000017500000000044506755214043017706 0ustar francoisfrancois## ## A cow with three eyes, brought to you by dpetrou@csua.berkeley.edu ## $extra = chop($eyes); $eyes .= ($extra x 2); $the_cow = <____) >___ ^\\_\\_\\_\\_\\_\\_\\) ^^^//\\\\_^^//\\\\_^ ^(\\_\\_\\_\\) ^^^ ^^ ^^^ ^ EOC cowsay-3.03+dfsg1/cows/dragon-and-cow.cow0000644000175000017500000000240407010102600020405 0ustar francoisfrancois## ## A dragon smiting a cow, possible credit to kube@csua.berkeley.edu ## $the_cow = < < > .---. $thoughts | \\ \\ - ~ ~ - / / | _____ ..-~ ~-..-~ | | \\~~~\\.' `./~~~/ --------- \\__/ \\__/ .' O \\ / / \\ " (_____, `._.' | } \\/~~~/ `----. / } | / \\__/ `-. | / | / `. ,~~| ~-.__| /_ - ~ ^| /- _ `..-' | / | / ~-. `-. _ _ _ |_____| |_____| ~ - . _ _ _ _ _> EOC cowsay-3.03+dfsg1/cows/stimpy.cow0000644000175000017500000000055406755214046017165 0ustar francoisfrancois## ## Stimpy! ## $the_cow = <> 5.4 ## $the_cow = < EOC cowsay-3.03+dfsg1/cows/mech-and-cow0000644000175000017500000000136406755214045017312 0ustar francoisfrancois ,-----. | | ,--| |-. __,----| | | | ,;:: | `_____' | `._______| i^i | `----| |---'| . ,-------._| |== ||// | |_|P`. /'/ `-------' 'Y Y/'/' .==\ /_\ ^__^ / /'| `i (oo)\_______ /' / | | (__)\ )\/\ /' / | `i ||----w | ___,;`----'.___L_,-'`\__ || || i_____;----\.____i""\____\ cowsay-3.03+dfsg1/cows/head-in.cow0000644000175000017500000000040106755214045017133 0ustar francoisfrancois## ## Go stick yer head in a cow. ## $the_cow = </dev/null 2>&1; then echo Found a good perl in $perl goodperls="$goodperls $perl" fi done echo The following perl executables will run cowsay: echo $goodperls echo I recommend the latest stable perl you can find. set $goodperls if [ -z "$1" ]; then echo Ack! You do not have Perl 5 installed correctly! echo Get thee to CPAN! exit 1 fi usethisperl=$1 echo I will be using $1 because I know it will work. echo Now I need an installation prefix. I will use /usr/local unless printf "you give me a better idea here: " if [ -n "$backdoor" ]; then prefix=$backdoor printf "%s (specified on command line)\n" $prefix else read prefix fi PREFIX=${prefix:-/usr/local} echo Okay, time to install this puppy. echo s,%BANGPERL%,!$usethisperl,\; > install.pl echo s,%PREFIX%,$PREFIX,\; >> install.pl set -x mkdir -p $PREFIX/bin || (mkdir $PREFIX; mkdir $PREFIX/bin) $usethisperl -p install.pl cowsay > $PREFIX/bin/cowsay chmod a+x $PREFIX/bin/cowsay ln -s cowsay $PREFIX/bin/cowthink mkdir -p $PREFIX/man/man1 || ($mkdir $PREFIX; mkdir $PREFIX/man; mkdir $PREFIX/man/man1) $usethisperl -p install.pl cowsay.1 > $PREFIX/man/man1/cowsay.1 chmod a+r $PREFIX/man/man1/cowsay.1 ln -s cowsay.1 $PREFIX/man/man1/cowthink.1 mkdir -p $PREFIX/share/cows || (mkdir $PREFIX; mkdir $PREFIX/share; mkdir $PREFIX/share/cows) tar -cf - $filelist | (cd $PREFIX/share && tar -xvf -) set +x echo Okay, let us see if the install actually worked. if [ ! -f $PREFIX/share/cows/default.cow ]; then echo The default cow file did not make it across! echo Ooops, it failed...sorry! exit 1 fi echo Installation complete! Enjoy the cows! cowsay-3.03+dfsg1/cowsay.10000644000175000017500000001112207010361620015515 0ustar francoisfrancois.\" .\" cowsay.1 .\" .\" $Id: cowsay.1,v 1.4 1999/11/04 19:50:40 tony Exp $ .\" .\" This file is part of cowsay. (c) 1999 Tony Monroe. .\" .ds Nm Cowsay .ds nm cowsay .ds Vn 3.02 .TH \*(nm 1 "$Date: 1999/11/04 19:50:40 $" .SH NAME \*(nm/cowthink \- configurable speaking/thinking cow (and a bit more) .SH SYNOPSIS cowsay .RB [ \-e .IR eye_string ] .RB [ \-f .IR cowfile ] .RB [ \-h ] .RB [ \-l ] .RB [ \-n ] .RB [ \-T .IR tongue_string ] .RB [ \-W .IR column ] .RB [ \-bdgpstwy ] .SH DESCRIPTION .I Cowsay generates an ASCII picture of a cow saying something provided by the user. If run with no arguments, it accepts standard input, word-wraps the message given at about 40 columns, and prints the cow saying the given message on standard output. .PP To aid in the use of arbitrary messages with arbitrary whitespace, use the .B \-n option. If it is specified, the given message will not be word-wrapped. This is possibly useful if you want to make the cow think or speak in figlet(6). If .B \-n is specified, there must not be any command-line arguments left after all the switches have been processed. .PP The .B \-W specifies roughly (where the message should be wrapped. The default is equivalent to .B \-W 40 i.e. wrap words at or before the 40th column. .PP If any command-line arguments are left over after all switches have been processed, they become the cow's message. The program will not accept standard input for a message in this case. .PP There are several provided modes which change the appearance of the cow depending on its particular emotional/physical state. The .B \-b option initiates Borg mode; .B \-d causes the cow to appear dead; .B \-g invokes greedy mode; .B \-p causes a state of paranoia to come over the cow; .B \-s makes the cow appear thoroughly stoned; .B \-t yields a tired cow; .B \-w is somewhat the opposite of .BR \-t , and initiates wired mode; .B \-y brings on the cow's youthful appearance. .PP The user may specify the .B \-e option to select the appearance of the cow's eyes, in which case the first two characters of the argument string .I eye_string will be used. The default eyes are 'oo'. The tongue is similarly configurable through .B \-T and .IR tongue_string ; it must be two characters and does not appear by default. However, it does appear in the 'dead' and 'stoned' modes. Any configuration done by .B \-e and .B \-T will be lost if one of the provided modes is used. .PP The .B \-f option specifies a particular cow picture file (``cowfile'') to use. If the cowfile spec contains '/' then it will be interpreted as a path relative to the current directory. Otherwise, cowsay will search the path specified in the .B COWPATH environment variable. To list all cowfiles on the current .BR COWPATH , invoke .B \*(nm with the .B \-l switch. .PP If the program is invoked as .B cowthink then the cow will think its message instead of saying it. .PP .SH COWFILE FORMAT A cowfile is made up of a simple block of .BR perl (1) code, which assigns a picture of a cow to the variable .BR $the_cow . Should you wish to customize the eyes or the tongue of the cow, then the variables .B $eyes and .B $tongue may be used. The trail leading up to the cow's message balloon is composed of the character(s) in the .B $thoughts variable. Any backslashes must be reduplicated to prevent interpolation. The name of a cowfile should end with .BR .cow , otherwise it is assumed not to be a cowfile. Also, at-signs (``@'') must be backslashed because that is what Perl 5 expects. .PP .SH COMPATIBILITY WITH OLDER VERSIONS .PP What older versions? :-) .PP Version 3.x is fully backward-compatible with 2.x versions. If you're still using a 1.x version, consider upgrading. And tell me where you got the older versions, since I didn't exactly put them up for world-wide access. .PP Oh, just so you know, this manual page documents version \*(Vn of cowsay. .SH ENVIRONMENT The COWPATH environment variable, if present, will be used to search for cowfiles. It contains a colon-separated list of directories, much like .B PATH or .BR MANPATH . It should always contain the .B /usr/local/share/cows directory, or at least a directory with a file called .B default.cow in it. .SH FILES .B %PREFIX%/share/cows holds a sample set of cowfiles. If your .B COWPATH is not explicitly set, it automatically contains this directory. .SH BUGS If there are any, please notify the author at the address below. .SH AUTHOR Tony Monroe (tony@nog.net), with suggestions from Shannon Appel (appel@CSUA.Berkeley.EDU) and contributions from Anthony Polito (aspolito@CSUA.Berkeley.EDU). .SH SEE ALSO perl(1), wall(1), nwrite(1), figlet(6) cowsay-3.03+dfsg1/ChangeLog0000644000175000017500000000164307114527414015721 0ustar francoisfrancois3.03 28 May 1999 - Added cows/tux.cow, as suggested by xmanoel@i.am - Compatibility with 5.6.0, due to a change in qw(). - Renamed devil.cow to daemon.cow, since I know better. :-) 3.02 04 November 1999 - Fixed boneheaded code placement so that cowsay -l actually works. 3.01 01 November 1999 - Fixed compatibility issues between the Text::Wrap module that changed between 5.005_02 and 5.005_03. - Fixed tab expansion issues with Text::Tabs. 3.0 13 April 1999, released 14 August 1999 - Rewritten into Perl 5 and presented to the world. -- Not present in CVS from here on down -- 2.x Date? - Arbitrary messages. - Figlet support (-n). - Line wrap length (-w). - Multiple pre-set expressions. - Better arg parsing loop. - Message from stdin or command line. 1.0 Date? - SUBJECT is VERB OBJECT $Id: ChangeLog,v 1.4 2000/05/29 17:55:24 tony Exp $ This file is part of cowsay. (c) 1999-2000 Tony Monroe. cowsay-3.03+dfsg1/INSTALL0000644000175000017500000000060106755221305015171 0ustar francoisfrancois================= Installing cowsay ================= If you really want to get things installed a nice and pretty way, sh install.sh It will ask approximately one question. If you can't answer it, you need serious help. If the install goes well, you can start cowing immediately! Just be sure to read the manual page first... $Id: INSTALL,v 1.1 1999/08/14 08:03:17 tony Exp $ cowsay-3.03+dfsg1/Wrap.pm.diff0000644000175000017500000000155707013052770016325 0ustar francoisfrancois*** Wrap.pm.in Thu May 22 00:21:42 1997 --- Wrap.pm Fri Nov 12 10:00:15 1999 *************** *** 3,9 **** require Exporter; @ISA = (Exporter); ! @EXPORT = qw(wrap); @EXPORT_OK = qw($columns); $VERSION = 97.011701; --- 3,9 ---- require Exporter; @ISA = (Exporter); ! @EXPORT = qw(wrap fill); @EXPORT_OK = qw($columns); $VERSION = 97.011701; *************** *** 66,71 **** --- 66,90 ---- print "-----------$r---------\n" if $debug;; return $r; + } + + ## Copied up from below. + sub fill + { + my ($ip, $xp, @raw) = @_; + my @para; + my $pp; + + for $pp (split(/\n\s+/, join("\n",@raw))) { + $pp =~ s/\s+/ /g; + my $x = wrap($ip, $xp, $pp); + push(@para, $x); + } + + # if paragraph_indent is the same as line_indent, + # separate paragraphs with blank lines + + return join ($ip eq $xp ? "\n\n" : "\n", @para); } 1; cowsay-3.03+dfsg1/cowsay0000755000175000017500000001004107111365215015366 0ustar francoisfrancois#%BANGPERL% ## ## Cowsay 3.03 ## ## This file is part of cowsay. (c) 1999-2000 Tony Monroe. ## use Text::Tabs qw(expand); use Text::Wrap qw(wrap fill $columns); use File::Basename; use Getopt::Std; use Cwd; $version = "3.03"; $progname = basename($0); $eyes = "oo"; $tongue = " "; $cowpath = $ENV{'COWPATH'} || '%PREFIX%/share/cows'; @message = (); $thoughts = ""; ## Yeah, this is rude, I know. But hopefully it gets around a nasty ## little version dependency. $Text::Wrap::initial_tab = 8; $Text::Wrap::subsequent_tab = 8; $Text::Wrap::tabstop = 8; ## One of these days, we'll get it ported to Windows. Yeah, right. if (($^O eq "MSWin32") or ($^O eq "Windows_NT")) { ## Many perls, eek! $pathsep = ';'; } else { $pathsep = ':'; } %opts = ( 'e' => 'oo', 'f' => 'default.cow', 'n' => 0, 'T' => ' ', 'W' => 40, ); getopts('bde:f:ghlLnNpstT:wW:y', \%opts); &display_usage if $opts{'h'}; &list_cowfiles if $opts{'l'}; $borg = $opts{'b'}; $dead = $opts{'d'}; $greedy = $opts{'g'}; $paranoid = $opts{'p'}; $stoned = $opts{'s'}; $tired = $opts{'t'}; $wired = $opts{'w'}; $young = $opts{'y'}; $eyes = substr($opts{'e'}, 0, 2); $tongue = substr($opts{'T'}, 0, 2); $the_cow = ""; &slurp_input; $Text::Wrap::columns = $opts{'W'}; @message = ($opts{'n'} ? expand(@message) : split("\n", fill("", "", @message))); &construct_balloon; &construct_face; &get_cow; print @balloon_lines; print $the_cow; sub list_cowfiles { my $basedir; my @dirfiles; chop($basedir = cwd); for my $d (split(/$pathsep/, $cowpath)) { print "Cow files in $d:\n"; opendir(COWDIR, $d) || die "$0: Cannot open $d\n"; for my $file (readdir COWDIR) { if ($file =~ s/\.cow$//) { push(@dirfiles, $file); } } closedir(COWDIR); print wrap("", "", sort @dirfiles), "\n"; @dirfiles = (); chdir($basedir); } exit(0); } sub slurp_input { unless ($ARGV[0]) { chomp(@message = ); } else { &display_usage if $opts{'n'}; @message = join(' ', @ARGV); } } sub maxlength { my ($l, $m); $m = -1; for my $i (@_) { $l = length $i; $m = $l if ($l > $m); } return $m; } sub construct_balloon { my $max = &maxlength(@message); my $max2 = $max + 2; ## border space fudge. my $format = "%s %-${max}s %s\n"; my @border; ## up-left, up-right, down-left, down-right, left, right if ($0 =~ /think/i) { $thoughts = 'o'; @border = qw[ ( ) ( ) ( ) ]; } elsif (@message < 2) { $thoughts = '\\'; @border = qw[ < > ]; } else { $thoughts = '\\'; if ($V and $V gt v5.6.0) { # Thanks, perldelta. @border = qw[ / \\ \\ / | | ]; } else { @border = qw[ / \ \ / | | ]; } } push(@balloon_lines, " " . ("_" x $max2) . " \n" , sprintf($format, $border[0], $message[0], $border[1]), (@message < 2 ? "" : map { sprintf($format, $border[4], $_, $border[5]) } @message[1 .. $#message - 1]), (@message < 2 ? "" : sprintf($format, $border[2], $message[$#message], $border[3])), " " . ("-" x $max2) . " \n" ); } sub construct_face { if ($borg) { $eyes = "=="; } if ($dead) { $eyes = "xx"; $tongue = "U "; } if ($greedy) { $eyes = "\$\$"; } if ($paranoid) { $eyes = "@@"; } if ($stoned) { $eyes = "**"; $tongue = "U "; } if ($tired) { $eyes = "--"; } if ($wired) { $eyes = "OO"; } if ($young) { $eyes = ".."; } } sub get_cow { ## ## Get a cow from the specified cowfile; otherwise use the default cow ## which was defined above in $the_cow. ## my $f = $opts{'f'}; my $full = ""; if ($opts{'f'} =~ m,/,) { $full = $opts{'f'}; } else { for my $d (split(/:/, $cowpath)) { if (-f "$d/$f") { $full = "$d/$f"; last; } elsif (-f "$d/$f.cow") { $full = "$d/$f.cow"; last; } } if ($full eq "") { die "$progname: Could not find $f cowfile!\n"; } } do $full; die "$progname: $@\n" if $@; } sub display_usage { die <