[comp.sources.misc] v18i082: smiley - smiley faces generator, Part01/01

dws@cs.wisc.edu (DaviD W. Sanderson) (04/27/91)

Submitted-by: DaviD W. Sanderson <dws@cs.wisc.edu>
Posting-number: Volume 18, Issue 082
Archive-name: smiley/part01
Supersedes: smiley: Volume 17, Issue 41

smiley(1) is a "smiley server" I wrote for my own pleasure.
Its list of smileys is more comprehensive than any other I have seen;
it subsumes all the smiley lists I have ever seen posted to the net.

This version has more smileys, faster smiley lookup, and some other
minor tweaks.  Keep those smileys coming!

DaviD W. Sanderson (dws@cs.wisc.edu)
-------
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  README Makefile other faces.in smiley.1 bsearch.c getopt.c
#   smiley.c mkfaces.c patchlevel.h smiley.h
# Wrapped by dws@margay on Tue Apr 23 21:10:48 1991
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'README' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'README'\"
else
echo shar: Extracting \"'README'\" \(2279 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
Xsmiley server, version 2
X
XThis version has more smileys, faster smiley lookup, and some other
Xminor tweaks.
X
XDESCRIPTION
X
Xsmiley(1) is a "smiley server" I wrote for my own pleasure.  It can
Xexplain any smiley it knows, or print one it knows at random.  I use
Xit to generate a random prompt when there is a status line available
Xto hold the information I would otherwise put into my prompt.  Hence
Xsmiley(1) does not contain the invisible smiley or any multi-line
Xsmileys.
X
XThe list of smileys in faces.in is more comprehensive than I have seen
Xanywhere else, largely because it is a superset of all the smiley lists
XI have ever seen posted on the net.  I have lost some of the original
Xattributions; the articles whose headers I have retained are these:
X
X	Message-ID: <76@icus.UUCP>
X	Message-ID: <1990Sep11.102411.8537@diku.dk>
X	Message-ID: <39917@cci632.UUCP>
X	Message-ID: <1990Sep14.122955.558@diku.dk>
X	Message-ID: <9366@uhccux.uhcc.Hawaii.Edu>
X	Message-ID: <2005@unsvax.NEVADA.EDU>
X	Message-ID: <1991Mar18.212208.27911@odin.corp.sgi.com>
X
X	From: csh068@uk.ac.cov.cck (Smiley)
X	Message-ID: <$V5&&|$@cck.cov.ac.uk>
X	Date: 17 Apr 91 08:45:26 GMT
X
XIn the interest of completeness and to the best of my knowledge (I
Xstarted this collection several years ago) I have not "censored" the
Xsmileys, so there may be smileys you find offensive.  I certainly find
Xsome of them offensive!
X
XThe smileys are processed by mkfaces and deliberately embedded in the
Xexecutable - it does not have to locate and parse an external data
Xfile.  In order to minimize the size of the executable, smiley.c does
Xnot use standard I/O.  Complaints about this will be ignored; I do not
Xanticipate ever using this on a non-UNIX system.
X
XI happened to take the included getopt.c from the rkive sources; it was
Xoriginally posted to comp.sources.unix in volume3.  It is preferable to
Xthe getopt() provided on some systems as it does not use standard I/O.
X
XThe bsearch.c is from emx.utexas.edu:pub/mnt/src/lib/libposix, obtained
XTue Mar 19 14:18:28 CST 1991
X
XTERMS
X
XThis package (excluding getopt.c and bsearch.c) is
X
X(C) Copyright 1991 by DaviD W. Sanderson.
X
XYou may copy it and use it for your own enjoyment.
XYou may not represent it as your own work or sell it.
X
XAUTHOR
X
XDaviD W. Sanderson (dws@cs.wisc.edu)
END_OF_FILE
if test 2279 -ne `wc -c <'README'`; then
    echo shar: \"'README'\" unpacked with wrong size!
fi
# end of 'README'
fi
if test -f 'Makefile' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'Makefile'\"
else
echo shar: Extracting \"'Makefile'\" \(1098 characters\)
sed "s/^X//" >'Makefile' <<'END_OF_FILE'
X#-------
X# M a k e f i l e
X#
X# DaviD W. Sanderson
X#-------
X
X# some versions of make(1) care about this
XSHELL	      = /bin/sh
X
XOTHER	      = README		\
X		Makefile	\
X		other		\
X		faces.in
X
XMANUAL	      = smiley.1
X
XSOURCES	      = bsearch.c	\
X		getopt.c	\
X		smiley.c	\
X		mkfaces.c
X
XHEADERS	      =	patchlevel.h	\
X		smiley.h
X
XTARGET	      =	smiley
X
XOBJECTS	      =	bsearch.o faces.o getopt.o smiley.o
X
XCFLAGS	      = -O
X
XLDFLAGS       = -s
X
Xall:		$(TARGET)
X
X$(TARGET):	$(OBJECTS)
X		$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
X
Xsmiley.o:	smiley.c smiley.h patchlevel.h
X		$(CC) $(CFLAGS) -c smiley.c
X
Xfaces.o:	faces.c smiley.h
X		$(CC) $(CFLAGS) -c faces.c
X
X#OLD		./mkfaces < faces.in > faces.c
X#		play it safe and make sure the list is sorted,
X#		since it is searched by bsearch(3):
Xfaces.c:	mkfaces faces.in
X		< faces.in sort | ./mkfaces > faces.c
X
Xmkfaces:	mkfaces.c
X		$(CC) $(CFLAGS) -o mkfaces mkfaces.c
X
Xclean:
X		rm -f $(OBJECTS) mkfaces faces.c smiley.shar
X
Xclobber:	clean
X		rm -f $(TARGET)
X
Xsmiley.shar:	$(OTHER) $(MANUAL) $(SOURCES) $(HEADERS)
X		shar $(OTHER) $(MANUAL) $(SOURCES) $(HEADERS) > $@
END_OF_FILE
if test 1098 -ne `wc -c <'Makefile'`; then
    echo shar: \"'Makefile'\" unpacked with wrong size!
fi
# end of 'Makefile'
fi
if test -f 'other' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'other'\"
else
echo shar: Extracting \"'other'\" \(1561 characters\)
sed "s/^X//" >'other' <<'END_OF_FILE'
X#-------
X# These are smileys that I do not consider suitable for use as a prompt.
X# Either they don't show up or are multiline pictures - stretching
X# the boundaries of smileys.
X#
X# DaviD W. Sanderson
X#-------
X
X			smiley invisible man
X
X<\\			cat
X: *>
X<//
X
X###			Bon Jovi
X#:-)
X###
X
X#			Ed Koch
X:-)
X#
X
X###			Bozo the Clown
X:o)
X###
X
X  ___
X /   \
X| RIP |
X|_____|			recently deceased
X
X=|;()***<=====|		<---laughing monocled man in tux and cummerbund
X			sideways -- this is the basic figure
X
X=};()****<=====|	laughing monocled man in tux and cummerbund,
X     F			holding a gun
X
X=};()****<====|		laughing monocled man in tux and cummerbund,
X    =]			carrying bedtray w/ glass of milk
X
X=};()****<^===|		lauging monocled man in tux and cummerbund,
X			w/ erection
X
X=};()****<====|		laughing monocled man in tux and cummerbund,
X      P			carrying klaxon or posthorn
X
X       /_
X     /
X=}8()****<=====|	laughing monocled man in tux and cummerbund,
X     \  _		and opera cape and mask
X       \
X
X=};()****<=====|	laughing monocled man in tux and cummerbund,
X    o0			carrying a large puffin
X    v
X
X=};()****<=====|	laughing monocled man in tux and cummerbund,
X    <)___)= oooo	and Jetson jet-pack
X
X=};()****<=====|	laughing monocled man in tux and cummerbund,
X      -- - - O		dropping a bowling ball or pumpkin
X
X=};()****<=====|	laughing monocled man in tux and cummerbund,
X              =o	and pet rabbit, noticeably fatigued
X	       G
X
X  v
X  |
X=};()****<=====|	laughing monocled man in tux and cummerbund,
X  |			and unusually long Steve Martin
X  V			arrow-through-head trick
END_OF_FILE
if test 1561 -ne `wc -c <'other'`; then
    echo shar: \"'other'\" unpacked with wrong size!
fi
# end of 'other'
fi
if test -f 'faces.in' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'faces.in'\"
else
echo shar: Extracting \"'faces.in'\" \(14380 characters\)
sed "s/^X//" >'faces.in' <<'END_OF_FILE'
X    :-)	Willie Shoemaker
X!-(	black eye
X!.'v	(profile) flat top
X#-)	partied all night
X#:-)	smiley done by someone with matted hair
X#:-o	smiley done by someone with matted hair
X#:o+=	Betty Boop
X$-)	Alex P. Keaton (from "Family Ties")
X$-)	won big at Las Vegas
X$-)	won the lottery
X$-)	yuppie
X%')	after drinking a fifth for lunch
X%*@:-(	hung over
X%-(I)	laughing out loud
X%-)	Elephant man
X%-)	after staring at the terminal for 36 hours
X%-)	broken glasses
X%-)	cross-eyed
X%-)	long bangs
X%-6	braindead
X%-<I>	drunk with laughter
X%-|	been working all night
X%-~	Picasso
X%\v	Picasso
X&-|	tearful
X&.(..	crying
X&:-)	curly hair
X'-)	one eyed man
X'-)	only has a left eye, which is closed
X'-)	wink
X':-)	one eyebrow
X'~;E	unspecified 4-legged critter
X(-)	needs a haircut
X(-:	Australian
X(-:	Don Ellis from Tektronix
X(-:	left-handed
X(-::-)	Siamese twins
X(-_-)	secret smile
X(-o-)	Imperial Tie Fighter ("Star Wars")
X(8-)	wears glasses
X(8-o	Mr. Bill
X(8-{)}	glasses, moustache and a beard
X(:  (=|	wearing a ghost costume
X(:)-)	scuba diving
X(:+)	big nose
X(:-#	said something he shouldn't have
X(:-$	ill
X(:-&	angry
X(:-(	frowning
X(:-(	unsmiley frowning
X(:-)	big-face
X(:-)	no hair
X(:-)	surprised
X(:-)	wearing bicycle helmet
X(:-*	kissing
X(:-...	heart-broken
X(:-D	blabber mouth
X(:-I	egghead
X(:-\	VERY sad
X(:-{~	bearded
X(:-|K-	formally attired
X(:<)	blabber mouth
X(:=)	TWO noses (?)
X(:>-<	thief: hands up!
X(:I	egghead
X(:^(	broken nose
X(@ @)	You're kidding!
X(O--<	fishy
X(V)=|	pacman champion
X)	Cheshire cat
X)8-)	scuba smiley big-face
X):-(	unsmiley big-face
X):-)	smiley big-face
X*!#*!^*&:-)	a schizophrenic
X*-(	Cyclops got poked in the eye
X*-)	shot dead
X*8-)	Beaker (the Muppet lab assistant) (from James Cameron)
X*:*	fuzzy
X*:**	fuzzy with a fuzzy mustache
X*:o)	Bozo the Clown
X*<.'v	(profile) wearing snow cap
X*<:-)	Santa Claus
X*<|:-)	Santa Claus (Ho Ho Ho)
X*<|:-))	Santa Claus
X+-(:-)	Religious leader
X+-(:-)	the Pope
X+-:-)	priest
X+:-)	priest
X+<.'v	(profile) knight
X+<:-|	monk/nun
X+<||-)	knight
X+O:-)	the Pope
X,-)	User only has one eye...but he's winking
X,-)	other eyed man
X,-}	wry and winking
X,.'v	(profile) has short hair
X,:-)	User shaved his left eyebrow off this morning
X-	Helen Keller
X-  @=	messages about nuclear war
X- -:-(	punk rocker (real punk rockers don't smile) (alternate version)
X- -:-)	punk rocker (alternate version)
X-)	Jose Feliciano
X---...	S.O.S. (variant)
X---...---	SOS (really OSO, but retained anyway)
X-:-(	punk rocker (real punk rockers don't smile)
X-:-)	has mohawk
X-:-)	punk rocker
X-=	a doused candle (to end a flame)
X-=#:-)	wizard
X.'!	(profile) grim
X.'"	(profile) pursing lips
X.'J	(profile) smiling
X.'P	(profile) sticking tongue out
X.'T	(profile) keeping a straight face
X.'U	(profile) yawning
X.'V	(profile) shouting
X.'Y	(profile) whistling
X.'\	(profile) frowning
X.'r	(profile) sticking tongue out
X.'v	(profile) talking
X.'w	(profile) speaking with forked tongue
X.-)	Sammy Davis, Jr.
X.-)	one eye
X.-]	one eye
X...---...	SOS
X.^v	(profile) pointy nose
X._)	suffering from Lorentz contraction (they're coming every ten minutes now)
X._)	suffering from Lorentz contractions
X/8^{~	hair line, glasses, moustache, and goatee (from James Revell)
X/:-|	Mr. Spock
X0-(	scuba diver with a broken mask
X0-)	Cyclops
X0-)	arc-welder
X0-)	scuba diver
X2B|^2B	message about Shakespeare
X3:*>	Rudolph the reindeer
X3:-o	cow
X3:[	mean pet smiley
X3:]	pet smiley
X3:o[	net.pets
X4:-)	George Washington
X5:-)	Elvis Presley
X6\/)	elephant
X7:)	Ronald Reagan
X7:-)	Fred Flintstone
X7:^]	Ronald Reagan
X8	infinity
X8 :-)	wizard
X8 :-I	net.unix-wizards
X8(:-)	Mousketeer
X8(:-)	Walt Disney
X8)	frog
X8-#	death
X8-)	excited
X8-)	glasses
X8-)	sunglasses
X8-)	swimmer
X8-O	"Omigod!!" (done after "rm -rf *" ?)
X8-O	took too many nodoz to work on thesis
X8-]	"wow, maaan"
X8-o	Mr. Bill
X8-|	eyes wide with surprise
X8-|	suspense
X8:-)	glasses on forehead
X8:-)	little girl
X8:]	gorilla
X8=:-)	Galloping Gourmet
X8=:-)	chef
X8===>	dickhead
X8P	bullfrog in mating season
X8b	bullfrog in mating season
X: )	leper
X:###)	Jimmy Durante
X:$)	Donald Trump
X:%)	an accountant
X:%)%	has acne
X:'-(	crying
X:'-)	crying with happiness
X:(	sad
X:)	cheshire cat smile
X:)	happy
X:)	midget smiley
X:)	salamander
X:*	kisses
X:*)	Ed McMahon
X:*)	Everyman
X:*)	drunk
X:+(	punched nose, hurt
X:+)	Carl Friedrich Gauss 
X:,(	crying
X:-	male
X:-!	bland face
X:-"	heavy smoker
X:-"	pursing lips
X:-#	braces
X:-#	my lips are sealed
X:-#	punched in the mouth
X:-#|	bushy mustache
X:-#|	smiley face with bushy mustache
X:-$	mouth wired shut
X:-%	banker
X:-%	bearded
X:-%	talking out of both sides of mouth
X:-&	tongue-tied
X:-'	smoker
X:-'|	has a cold
X:-(	Drama
X:-(	frowning
X:-(	mad
X:-(	sad
X:-(	un-smiley
X:-(  )	You backed your car over my toe
X:-( )	You stepped on my toe
X:-()	I stubbed my toe
X:-(*)	sick of netnews articles, about to vomit
X:-(0)	yelling
X:-(=)	big teeth
X:-(O)	yelling
X:-)	Comedy
X:-)	Your basic smiley. This smiley is used to inflect a sarcastic or joking statement since we can't hear voice inflection over Unix.
X:-)	happy
X:-)	humorous
X:-)	smiley standard
X:-)	smiling
X:-)   ,	outie belly button
X:-)   .	innie belly button
X:-)   8	Dolly Parton
X:-)   <	slut
X:-)   <  ...  :-)   <  ...  :-)   <  ...	nymphomaniac
X:-)   >	celibate
X:-) )-:	masking theatrical comments
X:-) ---	John Holmes
X:-) ... :-( ... :-) ... :-( ...	manic depressive
X:-) :-) :-)	loud guffaw
X:-)!!!	Sam Kinnison
X:-)'	drooling
X:-))	double chin
X:-)))	William Conrad
X:-)))	very overweight
X:-)--	98-pound weakling
X:-)-8	big girl
X:-)-O	smiling doctor with stethoscope
X:-)-{8	big girl
X:-)-}8	big girl
X:-)8	man with bowtie
X:-)8	well dressed
X:-)==	Arnold Schwarzenegger
X:-)X	wearing a bowtie
X:-)}	has goatee/beard
X:-)~	drooling
X:-*	after eating something bitter or sour
X:-*	oops!
X:-,	"Hmmmm."
X:-,	smirking
X:--)	Jamie Farr (Klinger from M*A*S*H)
X:-/	lefty undecided smiley
X:-/	skeptical
X:-0	No Yelling! (Quiet Lab)
X:-0	orator
X:-1	bland face
X:-6	after eating something sour
X:-7	smokes a pipe
X:-7	talking out of side of mouth
X:-7	wry face
X:-8	talking out both sides of your mouth
X:-8(	condescending stare
X:-9	licking its lips
X:-:	mutant
X:-:	toothless
X:-<	frowning
X:-<	moustache
X:-<	real sad
X:-=)	Adolph Hitler
X:-=)	older smiley with mustache
X:->	biting sarcastic face
X:->	deformed lips
X:->	happy
X:-?	smoking a pipe
X:-@	"I swear"
X:-@	beard has permanent wave *or* was drawn by Picasso.
X:-@	extremely angry
X:-@	screaming
X:-B	drooling
X:-C	just totally unbelieving
X:-C	really bummed out
X:-D	Said with a smile
X:-D	User is laughing (at you!)
X:-D	big smile
X:-D	talking too much
X:-E	bucktoothed vampire
X:-E	has major dental problems
X:-F	bucktoothed vampire with one tooth missing
X:-G-	smoking cigarettes
X:-I	hmm
X:-I	indifferent
X:-I	thinking
X:-J	tongue-in-cheek comments
X:-M	speaking no evil
X:-O	Mr. Bill
X:-O	birth
X:-O	ohh, big mouth, Mick Jagger
X:-O	uh oh
X:-O>-o	smiley American tourist (note big mouth and camera)
X:-P	Nyahhhh!
X:-P	has a secret to tell you
X:-P	nyah nyah
X:-P	sticking out tongue
X:-P	telling secrets
X:-P	tongue hanging out in anticipation
X:-Q	smoker
X:-Q~	smoking
X:-R	has the flu
X:-S	User just made an incoherent statement
X:-T	keeping a straight face
X:-V	shouting
X:-W	speak with forked tongue
X:-X	A big wet kiss!
X:-X	bow tie
X:-X	my lips are sealed
X:-Y	a quiet aside
X:-[	biting criticism
X:-[	blockhead
X:-[	pouting
X:-[	sarcastic
X:-[	un-smiley blockhead
X:-[	vampire
X:-\	Popeye
X:-\	undecided smiley
X:-]	biting sarcasm
X:-]	blockhead
X:-]	sarcastic
X:-`	spitting out chewing tobacco
X:-a	lefty smilely touching tongue to nose
X:-b	left-pointing tongue
X:-b	left-pointing tongue smiley
X:-c	bummed out
X:-c	real unhappy
X:-d	lefty smiley razzing you
X:-d~	smokes heavily
X:-e	disappointed
X:-f	sticking tongue out
X:-i	semi-smiley
X:-j	left smiling
X:-k	beats me, looks like something, though
X:-l	y.a.s.
X:-l	yet another smiley
X:-o	Mr. Bill
X:-o	Uh oh!
X:-o	Wow!
X:-o	shocked
X:-o	singing national anthem
X:-o	surprise
X:-o	yawn
X:-p	smiley sticking its tongue out (at you!)
X:-p~	smokes heavily
X:-q	trying to touch tongue to nose
X:-r	sticking tongue out
X:-s	after a BIZARRE comment
X:-t	cross smiley
X:-v	speaking
X:-w	speak with forked tongue
X:-x	"my lips are sealed"
X:-x	kiss kiss
X:-x	not telling any secrets
X:-y	said with a smile
X:-z	y.a.s.
X:-z	yet another cross smiley
X:-{	mustache
X:-{#}	messages teasing people about their braces
X:-{)	moustache
X:-{}	heavy lipstick
X:-{~	has read too many of the toilet paper articles previous to lunch
X:-|	"have an ordinary day"
X:-|	grim
X:-|	no expression
X:-||	angry
X:-}	"Thish wine tashted pretty good"
X:-}	beard
X:-}	lipstick
X:-}	pretty lips
X:-~)	has a cold
X:/)	not funny
X:/7)	Cyrano de Bergerac
X:/i	no smoking
X:3-<	dog
X:8)	pig
X::-)	wears glasses
X:<	midget unsmiley
X:<	what pretences!
X:<()	African tribesman
X:<)	from an Ivy League School
X:<)=	for those with beards too
X:<=	walrus
X:<|	attends an Ivy League school
X:= |	baboon
X:=)	has two noses
X:=8)	baboon
X:>	hmm, let me think...
X:>	midget smiley
X:>)	big nose
X:?)	philosopher
X:@	what?
X:@)	pig
X:C	what?
X:D	laughter
X:I	Hmmm, not funny!
X:O	yelling
X:Q	what?
X:Q)	John Q. Public
X:Ui	smoking
X:Uj	smoking (and smiling)
X:V	woodpecker
X:V)	woodpecker
X:X)	hearing no evil
X:[	real downer
X:]	Gleep...a friendly midget smiley who will gladly be your friend
X:^)	broken nose
X:^)	smiley with pointy nose (righty)
X:^D	"Great! I like it!"
X:^{	for those with moustaches
X:^{)>	moustache and beard
X:_)	User's nose is sliding off of his face
X:n)	funny-looking right nose
X:u)	funny-looking left nose
X:v)	left-pointing broken nose
X:v)	left-pointing nose
X:{	oh boy, the headmaster!...
X:}	What should we call these? (what?)
X:~(	nose put out of joint
X:~)	Peter Ubberoth
X:~)	needs a nosejob
X:~)	pointy nose (righty)
X:~)	ugly nose
X;(	crying
X;-(	beaten up
X;-(	crying
X;-)	beaten up
X;-)	crying with happiness
X;-)	getting fresh
X;-)	sardonic incredulity
X;-)	winking
X;-\	Popeye beaten up
X;-|	beaten up but silent
X;^?	punched out
X<&&>	message concerning rubber chickens
X<:-(	disappointed
X<:-(	dunce
X<:-)	Vietnamese peasant
X<:-)	dumb questions
X<:-)<<|	in a space rocket
X<:-I	dunce
X<:-O	Eeek!
X<:>==	a turkey emoticon
X<:I	dunce
X<<<<(:-)	hat salesman
X<I==I)	on four wheels
X<{:-)}	in a bottle
X<|-(	Chinese and doesn't like these kind of jokes
X<|-(=	Chinese and unhappy
X<|-)	Chinese
X<|-)=	Chinese
X=)	Variation on a theme...
X=):-)	Uncle Sam
X=.'v	(profile) has mohawk
X=0==	Mexican on a railroad!
X=:-#}	punk rocker with a mustache
X=:-(	punk rocker (real punk rockers don't smile)
X=:-)	hosehead
X=:-)	punk rocker
X=:-H	football player
X===:[OO']>:===	has been railroaded
X=====:}	snake
X=t==	Mexican run over by train
X=|:-)	Abe Lincoln
X=|:-)=	Abe Lincoln
X>-	female
X>-<	absolutely livid!!
X>->	china man
X>-^);>	fish
X>:)	a little devil
X>:*)	Bozo the Clown
X>:-(	mad, annoyed
X>:-(	sick and tired of reading this nonsense
X>:-<	mad
X>:->	devilish
X>:-I	net.startrek
X>:-b	left-pointing tongue smiley
X>:^(	headhunter (Amazon style)
X>;->	Winky and devil combined. A very lewd remark was just made.
X>< ><	about/to someone wearing argyle socks
X>>-O->	General Custer
X>|->	Chinese
X?-(	about people with a black eye
X?-(	has black eye
X@%&$%&	You know what that means...
X@%&$%&$\&*@%$#@	you know what that means...
X@-)	Cyclops
X@.'v	(profile) has curly hair
X@:-)	Indian (East)
X@:-)	User is wearing a turban
X@:-)	wavy hair
X@:I	turban
X@=	User is pro-nuclear war
X@>--->----	a rose
XB)	frog wearing sunglasses
XB-(8	Sir Robin Day (a British BBC TV presenter, famed for his grumpy countenance, and who wears glasses and a bow tie)
XB-)	Batman
XB-)	glasses
XB-)	horn-rimmed glasses
XB-)	sunglasses
XB-)-[<	sunglasses and swimming trunk
XB-D	"Serves you right, dummy!!"
XB-|	cheap sunglasses
XB:-)	sunglasses on head
XB^)	hornrimmed glasses
XC:#	football player
XC:-)	large brain capacity
XC=:-)	Galloping Gourmet
XC=:-)	chef
XC=}>;*{))	Mega-Smiley... A drunk, devilish chef with a toupee in an updraft, a mustache, and a double chin
XC=}>;*{O)	Mega-Smiley... A drunk, devilish chef with a toupee in an updraft, a mustache, and a double chin
XC|:-=	Charlie Chaplin
XE-:-)	User is a Ham radio operator
XE-:-I	net.ham-radio
XK:P	User is a little kid with a propeller beanie
XL:-)	just graduated
XM-)	sees no evil
XM-),:X),:-M	sees no evil, hears no evil, speaks no evil
XM:-)	saluting
XO :-)	User is an angel (at heart, at least)
XO |-)	net.religion
XO-&-<	doing nothing
XO-(==<	chastised and/or chagrined, or is merely asleep.
XO-)	Megaton Man On Patrol! (or else, user is a scuba diver)
XO-)	cyclops
XO-G-<	pointing to self
XO-S-<	in a hurry
XO-Z-<	in a big hurry
XO:-)	acting very innocent (halo)
XO:-)	with halo
XO>-<|=	of interest to women
XOO	headlights on msg
XP-)	Colonel Klink (Hogan's Heroes)
XP-)	getting fresh
XQ:-)	new graduate
XR-)	broken glasses
XX-(	User just died
XX-(	net.suicide
X[:-)	User is wearing a walkman
X[:-)	listening to walkman
X[:-)	wearing a walkman
X[:-]	square head
X[:]	User is a robot
X[:|]	robot (or other AI project)
X[]	Hugs
X\/\/\/\,8-O	really should fix frayed line cord on terminal
X\:-)	french hat
X\:^)	gumby smiley
X]:-)	The Devil
X_:^)	American Indian
X__.	properly chastised and/or chagrined, or is merely asleep
X__/~`-'~\_/	line of thought isn't quite a line
X__Q~`__	cat
X`:-)	User shaved his right eyebrow off this morning
Xd.'v	(profile) wearing hard hat
Xd8=	Your pet beaver is wearing goggles and a hard hat
Xg-)	smiley with pince-nez glasses
Xg-)	wearing ponce-nez glasses
Xi-=<*** __.	CAUTION: has flame thrower and uses it!
Xi-=<****** o-(==<	CAUTION: has flame thrower and uses it!
Xi-=<***i	CAUTION: has flame thrower
Xo-)	Cyclops
Xo=	a burning candle (for flames)
Xo>8<|=	messages about interesting women
Xoo	somebody's head-lights are on
Xoo-	puzzled, confused
Xpp#	cow
Xpq`#'	bull
X{	Alfred Hitchcock
X{(:-)	wearing toupee
X{0-)	Cyclops
X{:-)	hair parted in the middle
X{:-)	new hair style
X{:-)	wearing a toupee
X{:-{)}	new hair style, mustache and beard
X{:^=(	Hitler
X{{-}}}	refugee from the '60's
X{}	'no comment'
X|)	salamander
X|-(	late at night
X|-)	Chinese
X|-)	asleep (boredom)
X|-)	hee hee
X|-D	ho ho
X|-I	sleeping
X|-O	birth
X|-O	bored
X|-O	yawning/snoring
X|-P	yuk
X|-{	"Good Grief!"  (Charlie Brown?)
X|:-)	heavy eyebrows
X|:-|	excessively rigid
X|:['	Groucho Marx
X|I	asleep
X|^o	snoring
X||*(	handshake offered
X||*)	handshake accepted
X|~(	"Someone just busted my nose".
X}(:-(	wearing toupee in wind
X}:-(	bull headed
X}:-(	toupee in an updraft
X}:-)	hair parted in the middle in an updraft
X}:-<	cat
X}:^#})	mega-smiley:  updrafted bushy-mustached pointy nosed smiley with a double-chin
X}:~#})	mega-smiley:  updrafted bushy-mustached pointy nosed smiley with a double-chin
X~ :-(	particularly angry
X~'v	(profile) has long bangs
X~M`'~	camel
X~~:-(	net.flame
X~~~\8-O	zapped by frayed cord on terminal
X~~~~~8}	snake
END_OF_FILE
if test 14380 -ne `wc -c <'faces.in'`; then
    echo shar: \"'faces.in'\" unpacked with wrong size!
fi
# end of 'faces.in'
fi
if test -f 'smiley.1' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'smiley.1'\"
else
echo shar: Extracting \"'smiley.1'\" \(2262 characters\)
sed "s/^X//" >'smiley.1' <<'END_OF_FILE'
X.\"-------
X.\" s m i l e y . 1
X.\"
X.\" DaviD W. Sanderson
X.\"-------
X.hy 0
X.TH SMILEY 1 "April 1, 1991"
X.SH NAME
Xsmiley \- print or explain smileys
X.SH SYNOPSIS
X.B smiley
X.RB [ \-V ]
X.RB [ \-e ]
X.RB [ \-l ]
X.RB [ \-f ]
X.RI [ smiley... ]
X.br
X.SH DESCRIPTION
X.I Smiley
Xis a program for smiley junkies
Xwho like to have all the smileys at their fingertips.
X.PP
XThe options have the following meaning:
X.TP 
X.B \-V
XPrint the version of the program.
X.TP 
X.B \-e
XExplain the face found in the environment variable
X.BR SMILEY .
X.TP
X.B \-l
XPrint a listing of all the known smileys, with explanations.
X.TP
X.B \-f
XPrint a random smiley, face only.
X.TP
X.I smiley
XExplain the given smiley.
X.PP
XWhen invoked with no arguments,
X.I smiley
Xprints a random smiley with an explanation.
X.SH EXAMPLE
XHere are some
X.IR ksh (1)
Xfunctions that put a smiley into your prompt.
X.TP
X.BR ps1sed (\|)
XTransform the standard input so that it will display properly
Xwhen it is made part of
X.B PS1
Xin
X.IR ksh .
X(That is, quote \0!\0$\0\e\0 if they appear.)
XThese are the transformations:
X.sp
X.\"	!	\(->	\e\|!\|\e\|!
X	!	\(->	!\|!
X.br
X	$	\(->	\e\|$
X.br
X	\e	\(->	\e\|\e
X.br
X.IP
XNote that a \0!\0
Xmust be doubled instead of quoted with \0\e\0
Xin order to display.
X.RS
X.nf
X.ta .5i +\w'sed \''u
X.sp
X.ne 5
Xps1sed\|(\|)
X{
X.\"	sed 's/!/&&/g
X.\"#		s/\\/&&/g
X.\"#		s/[!$]/\\&/g'
X.\"		s/[!$\\]/\\&/g'
X.\"
X.\"	sed \'s/\^!/&&/g
X.\"		s/[!$\|\e\|\e\|]/\|\e\|\e\|&/g\'
X.\"
X	sed \'s/\^!/&&/g
X		s/[$\|\e\|\e\|]/\|\e\|\e\|&/g\'
X}
X.sp
X.DT
X.fi
X.RE
X.TP
X.BR ps1 (\|)
XPut a new smiley into
X.BR PS1 .
XUse
X.I ps1sed
Xto make sure
Xany characters in the smiley
Xthat are special to the shell
Xare quoted appropriately.
X.RS
X.nf
X.sp
X.ne 5
Xps1\|(\|)
X{
X.\"	export SMILEY="`smiley -f`"
X.\"	PS1=`print -r - "$SMILEY" | ps1sed`" "
X	export SMILEY="`smiley \-f\|`"
X	PS1=`print \-r \- "$SMILEY" | ps1sed\|`" "
X}
X.fi
X.RE
X.SH CAVEATS
XThe list of smileys is the personal collection of the author,
Xso there are bound to be some missing.
X.PP
XMultiline smileys and the ``invisible smiley'' are absent from
X.I smiley
Xbecause the author does not want a multiline or invisible prompt.
X.SH AUTHOR
XDaviD W. Sanderson	(dws\|@cs.wisc.edu)
X.SH COPYRIGHT
X\&
X.br
X.if n (C)
X.if t \s+8\v'+2p'\fB\(co\fR\v'-2p'\s0
X\s+2Copyright 1991 by DaviD W. Sanderson\s0
END_OF_FILE
if test 2262 -ne `wc -c <'smiley.1'`; then
    echo shar: \"'smiley.1'\" unpacked with wrong size!
fi
# end of 'smiley.1'
fi
if test -f 'bsearch.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bsearch.c'\"
else
echo shar: Extracting \"'bsearch.c'\" \(897 characters\)
sed "s/^X//" >'bsearch.c' <<'END_OF_FILE'
X/*
X * A binary search generalized from Knuth (6.2.1) Algorithm B just
X * like the AT&T man page says...
X *
X * Written by reading the System V Interface Definition, not the code.
X *
X * Totally public domain.
X */
X/*LINTLIBRARY*/
X
Xchar *bsearch(key, base, nel, width, compar)
Xchar	*key;			/* Key to be located */
Xchar	*base;			/* Beginning of table */
Xunsigned nel;			/* Number of elements in the table */
Xunsigned width;			/* Width of an element (bytes) */
Xint	(*compar)();		/* Comparison function */
X{
X    int doublewidth = width + width;
X
X    char *last = base + width * (nel - 1);
X
X    while (last >= base)
X    {
X	register char *p = base + width * ((last - base)/doublewidth);
X	register int cmp = (*compar)(key, p);
X
X	if (cmp == 0)
X	    return (p);			/* aha, we found it! */
X	if (cmp < 0)
X	    last = p - width;
X	else
X	    base = p + width;
X    }
X    return ((char *) 0);		/* didn't find it */
X}
END_OF_FILE
if test 897 -ne `wc -c <'bsearch.c'`; then
    echo shar: \"'bsearch.c'\" unpacked with wrong size!
fi
# end of 'bsearch.c'
fi
if test -f 'getopt.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'getopt.c'\"
else
echo shar: Extracting \"'getopt.c'\" \(1799 characters\)
sed "s/^X//" >'getopt.c' <<'END_OF_FILE'
X#define ERR(s, c)       if(opterr){\
X        extern int strlen(), write();\
X        char errbuf[2];\
X        errbuf[0] = c; errbuf[1] = '\n';\
X        (void) write(2, argv[0], (unsigned)strlen(argv[0]));\
X        (void) write(2, s, (unsigned)strlen(s));\
X        (void) write(2, errbuf, 2);}
X
Xextern int strcmp();
Xextern char *strchr();
X
Xint     opterr = 1;
Xint     optind = 1;
Xint     optopt;
Xchar    *optarg;
X 
Xint
Xgetopt(argc, argv, opts)
Xint     argc;
Xchar    **argv, *opts;
X{
X        static int sp = 1;
X        register int c;
X        register char *cp;
X 
X        if(sp == 1)
X                if(optind >= argc ||
X                   argv[optind][0] != '-' || argv[optind][1] == '\0')
X                        return(-1);
X                else if(strcmp(argv[optind], "--") == 0) {
X                        optind++;
X                        return(-1);
X                }
X        optopt = c = argv[optind][sp];
X        if(c == ':' || (cp=strchr(opts, c)) == 0) {
X                ERR(": illegal option -- ", c);
X                if(argv[optind][++sp] == '\0') {
X                        optind++;
X                        sp = 1;
X                }
X                return('?');
X        }
X        if(*++cp == ':') {
X                if(argv[optind][sp+1] != '\0')
X                        optarg = &argv[optind++][sp+1];
X                else if(++optind >= argc) {
X                        ERR(": option requires an argument -- ", c);
X                        sp = 1;
X                        return('?');
X                } else
X                        optarg = argv[optind++];
X                sp = 1;
X        } else {
X                if(argv[optind][++sp] == '\0') {
X                        sp = 1;
X                        optind++;
X                }
X                optarg = 0;
X        }
X        return(c);
X}
END_OF_FILE
if test 1799 -ne `wc -c <'getopt.c'`; then
    echo shar: \"'getopt.c'\" unpacked with wrong size!
fi
# end of 'getopt.c'
fi
if test -f 'smiley.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'smiley.c'\"
else
echo shar: Extracting \"'smiley.c'\" \(4920 characters\)
sed "s/^X//" >'smiley.c' <<'END_OF_FILE'
X/*
X * s m i l e y . c
X * 
X * DaviD W. Sanderson is to blame for this.
X */
X
X#include "smiley.h"
X#include "patchlevel.h"
X
X/*
X * macros
X */
X
X/*
X * swrite() - write() a "string variable" (char *)
X */
X
X#define	swrite(fd, s)	(void) write((fd), (s), strlen(s))
X
X/*
X * lwrite() - write() a "string literal" (char [])
X */
X
X#define	lwrite(fd, lit)	(void) write((fd), (lit), sizeof(lit)-1)
X
X/*
X * PUTFACE() - write() a smiley and its description
X */
X
X#define	PUTFACE(fd, i)	swrite((fd), faces[i].face);	\
X			lwrite((fd), tab);		\
X			swrite((fd), faces[i].desc);	\
X			lwrite((fd), newline)
X
X/*
X * FD - file descriptor to which to write the output
X */
X
X#define FD	1
X
X/*
X * declarations
X */
X
Xextern int      write();
Xextern int      strlen();
Xextern char    *bsearch();
X
X/*
X * definitions
X */
X
Xstatic char     ENVAR[] = "SMILEY";
Xstatic char     tab[] = "\t";
Xstatic char     newline[] = "\n";
X
X/*
X * facecmp() - comparison routine for using bsearch()
X */
Xint
Xfacecmp(f1, f2)
X	struct smiley  *f1;
X	struct smiley  *f2;
X{
X	return strcmp(f1->face, f2->face);
X}
X
X/*
X * fsearch() - return index of face, or -1 on failure
X * 
X * Note that this assumes that there will be at most one entry in
X * faces[] for a particular smiley.  It also assumes that faces[] is
X * sorted in ascending order.
X */
Xint
Xfsearch(s)
X	char           *s;
X{
X	struct smiley   f;
X	struct smiley  *ans;
X
X	f.face = s;
X	ans = (struct smiley *) bsearch(
X		(char *) &f,
X		(char *) faces, (unsigned) nfaces, sizeof faces[0],
X		facecmp);
X
X	if (ans)
X		return ans - faces;
X	else
X		return -1;
X}
X
X/*
X * explain() - look through the list of smileys for the given face.
X * 
X * If it is found, then print out the description.
X * 
X * The return value is zero if the face is not found, nonzero otherwise.
X */
Xstatic int
Xexplain(s)
X	char           *s;
X{
X	int             i;
X
X	if((i = fsearch(s)) == -1)
X		return 0;
X
X	PUTFACE(FD, i);
X	return 1;
X#if 0
X	int		found = 0;
X
X	for (i = 0; i < nfaces; i++)
X	{
X		extern int      strcmp();
X
X		if (strcmp(s, faces[i].face) == 0)
X		{
X			found = 1;
X			PUTFACE(FD, i);
X		}
X	}
X	return found;
X#endif
X}
X
X/*
X * main() - main program
X */
X
Xmain(ac, av)
X	int             ac;
X	char          **av;
X{
X	extern char    *optarg;
X	extern int      optind;
X	extern int      opterr;
X
X	char           *args = "Velf";
X	int             Vflag = 0;
X	int             eflag = 0;
X	int             lflag = 0;
X	int             fflag = 0;
X	int             errflag = 0;
X	int             c;
X
X	/*
X	 * process command-line options
X	 */
X	while ((c = getopt(ac, av, args)) != -1)
X	{
X		switch (c)
X		{
X		case 'V':	/* version */
X			Vflag = 1;
X			break;
X		case 'e':	/* environment */
X			eflag = 1;
X			break;
X		case 'l':	/* list */
X			lflag = 1;
X			break;
X		case 'f':	/* face only */
X			fflag = 1;
X			break;
X		case '?':
X			errflag = 1;
X			break;
X		}
X	}
X	if (errflag)
X	{
X		static char     msg0[] = "usage: ";
X		static char    *msg1[] =
X		{
X			" [-V] [-e] [-l] [-f] [smiley ...]\n",
X			"where:\t-V\tprint program version\n",
X			"\t-e\texplain the face in $",
X			(char *) 0
X		};
X		static char    *msg2[] =
X		{
X			"\n",
X			"\t-l\tlist all the smileys\n",
X			"\t-f\tprint a random smiley, face only\n",
X			"\tsmiley\texplain the given smileys\n",
X			"(no args)\tprint a random smiley\n",
X			(char *) 0
X		};
X
X		char           **p;
X
X		lwrite(FD, msg0);
X		swrite(FD, av[0]);
X
X		for (p = msg1; *p; p++)
X			swrite(FD, *p);
X
X		lwrite(FD, ENVAR);
X
X		for (p = msg2; *p; p++)
X			swrite(FD, *p);
X
X		return 1;
X	}
X
X	/*
X	 * perform command-line options
X	 */
X
X	/*
X	 * Vflag - print version information
X	 */
X	if (Vflag)
X	{
X		swrite(FD, av[0]);
X		lwrite(FD, version);
X		return 0;
X	}
X
X	/*
X	 * eflag - explain $SMILEY
X	 */
X	if (eflag)
X	{
X		extern char    *getenv();
X		int	        unknown = 1;
X		char           *str;
X
X		if ((str = getenv(ENVAR)) != (char *)0)
X		{
X			if(explain(str) != 0)
X				unknown = 0;
X		}
X		else
X		{
X			static char     notset[] = " not set\n";
X
X			lwrite(FD, ENVAR);
X			lwrite(FD, notset);
X		}
X		return unknown;
X	}
X
X	/*
X	 * lflag - list smileys
X	 */
X	if (lflag)
X	{
X		int             i;
X
X		for (i = 0; i < nfaces; i++)
X		{
X			PUTFACE(FD, i);
X		}
X		return 0;
X	}
X
X	/*
X	 * literal smileys - try to explain them
X	 *
X	 * In this case the exit status is the number of smileys
X	 * that were not found.
X	 */
X	if (optind < ac)
X	{
X		int	unknown = 0;
X
X		for (; optind < ac; optind++)
X		{
X			if(!explain(av[optind]))
X				unknown++;
X		}
X
X		return unknown;
X	}
X
X	/*
X	 * otherwise - generate a random smiley
X	 */
X	{
X		extern int      rand();
X		extern void     srand();
X		extern long     time();
X		extern int      getpid();
X
X		char           *f;
X
X		/*
X		 * seed with the current time + the pid. (The pid
X		 * prevents smileys started at identical times from
X		 * getting the same random seed)
X		 */
X		srand((unsigned) time((long *)0) + (unsigned) getpid());
X		f = faces[rand() % nfaces].face;
X
X		if (fflag)
X		{
X			swrite(FD, f);
X			lwrite(FD, newline);
X		}
X		else
X		{
X			(void) explain(f);
X		}
X	}
X	return 0;
X}
END_OF_FILE
if test 4920 -ne `wc -c <'smiley.c'`; then
    echo shar: \"'smiley.c'\" unpacked with wrong size!
fi
# end of 'smiley.c'
fi
if test -f 'mkfaces.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mkfaces.c'\"
else
echo shar: Extracting \"'mkfaces.c'\" \(1945 characters\)
sed "s/^X//" >'mkfaces.c' <<'END_OF_FILE'
X/*
X * m k f a c e s . c
X *
X * This program reads the file with the list of smileys and writes
X * out an initialized data structure containing the smileys.
X * 
X * It assumes the smileys are each on one line, followed by a tab,
X * followed by some description.
X *
X * DaviD W. Sanderson
X */
X
X#include <stdio.h>
X
X/* avoid the possible <string.h> vs <strings.h> dilemma */
X
Xextern int
X	strcmp();
Xextern char *
X	strcpy();
X
X/* turn string into C string initialization */
X
Xstatic char    *
Xenquote(s)
X	char           *s;
X{
X	static char     ar[1024];
X	char           *t = ar;
X
X	for (; *s; s++)
X	{
X		switch (*s)
X		{
X		case '\\':
X		case '\"':
X			*t++ = '\\';
X		}
X		*t++ = *s;
X	}
X	*t = '\0';
X	return ar;
X}
X
Xint
Xmain()
X{
X	char            prev[1024];	/* previous face */
X	char            face[1024];	/* current face */
X	char            desc[1024];	/* current description */
X	int             lineno = 0;	/* number of current line */
X
X	/* prologue */
X
X	(void) printf("#include \"smiley.h\"\n");
X	(void) printf("struct smiley faces[] = {\n");
X
X	/* process each smiley line */
X
X	prev[0] = 0;		/* initialize prev to null string */
X
X	while (scanf("%[^\t]\t%[^\n]\n", face, desc) == 2)
X	{
X		if (strcmp(prev, face))
X		{
X
X			/*
X			 * Since this face differs from the last one,
X			 * prepare to start a new entry.
X			 * 
X			 * Complete the previous entry if there was one.
X			 */
X			if (lineno > 0)
X			{
X				(void) fputs("\"},\n", stdout);
X			}
X
X			(void) printf("{\"%s\",\"", enquote(face));
X		}
X		else
X		{
X
X			/*
X			 * Since this face is the same as the last
X			 * one, simply continue the description.
X			 */
X			(void) fputs("\\n\\t", stdout);
X		}
X
X		/* write the current description line */
X		(void) fputs(enquote(desc), stdout);
X
X		lineno++;
X		(void) strcpy(prev, face);
X	}
X
X	(void) fputs("\"}\n", stdout);	/* complete the last entry */
X
X	/* epilogue */
X
X	(void) printf("};\n");
X	(void) printf("int nfaces = sizeof(faces)/sizeof(struct smiley);\n");
X
X	return 0;
X}
END_OF_FILE
if test 1945 -ne `wc -c <'mkfaces.c'`; then
    echo shar: \"'mkfaces.c'\" unpacked with wrong size!
fi
# end of 'mkfaces.c'
fi
if test -f 'patchlevel.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'patchlevel.h'\"
else
echo shar: Extracting \"'patchlevel.h'\" \(1861 characters\)
sed "s/^X//" >'patchlevel.h' <<'END_OF_FILE'
X/*
X * p a t c h l e v e l . h
X *
X * This header is included in only one place, so it causes no problems
X * to allocate storage for the version string here.
X *
X * DaviD W. Sanderson
X *
X * 23 Apr 91	version 2@0 sent to comp.sources.misc
X *
X * 23 Apr 91	Added about thirty (!) new smileys to faces.in from
X *		a new smiley list I found in rec.humor.d.
X *
X * 05 Apr 91	Used archie to locate ftp-able smiley lists;
X *		found these:
X *
X *		tolsun.oulu.fi
X *			/pub/misc/smiley.lzh	(unable to access)
X *		mrcnext.cso.uiuc.edu
X *			/ux1/doc/misc/smiley
X *		lut.fi
X *			/misc/smileys
X *		ux1.cso.uiuc.edu
X *			/doc/misc/smiley
X *		fionavar.mit.edu
X *			/pub/jokes/smiley_face
X *		sachiko.acc.stolaf.edu
X *			/home/sachiko/cdr/Doc/Fun/ai-humor/smiley_face.Z
X *		vax.ftp.com
X *			/hobbit/flamage/silly/smiley.faces
X *		mc.lcs.mit.edu
X *			/its/ai/humor/smiley.face.Z
X *
X *		There was a lot of redundancy (as I expected) but there
X *		were two new smileys for faces.in.
X *		Corrected some spelling errors in faces.in.
X *
X * 19 Mar 91	Eliminated a couple of duplicate smileys from faces.in.
X *		Updated faces.in and "others" with smileys from a recent
X *		posting to rec.humor.d.
X *		Modified smiley.c to exit with nonzero status if the
X *		search for a smiley fails.
X *		Obtained bsearch.c and modified smiley.c to use
X *		bsearch() to look for a smiley in the smiley table.
X *		Modified Makefile to sort faces.in when feeding it to
X *		mkfaces.  I keep faces.in sorted anyway, but it does not
X *		hurt to play it safe.
X *
X * 16 Mar 91	Fixed example of ps1sed() in smiley.1 not to \-quote
X *		the doubled !.  The extra quoting hurts nothing, but it
X *		is superfluous.
X *
X * 15 Mar 91	Eliminated #include of <string.h> in mkfaces.c for
X *		greater portability.
X *
X * 14 Mar 91	version 1@0 sent to comp.sources.misc
X */
X
Xstatic char version[] = " version 2 patchlevel 0\n";
END_OF_FILE
if test 1861 -ne `wc -c <'patchlevel.h'`; then
    echo shar: \"'patchlevel.h'\" unpacked with wrong size!
fi
# end of 'patchlevel.h'
fi
if test -f 'smiley.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'smiley.h'\"
else
echo shar: Extracting \"'smiley.h'\" \(359 characters\)
sed "s/^X//" >'smiley.h' <<'END_OF_FILE'
X/*
X * s m i l e y . h
X *
X * DaviD W. Sanderson
X */
X
X/*
X * Each smiley has a face and a description.
X */
X
Xstruct smiley
X{
X	char *face;
X	char *desc;
X};
X
X/*
X * faces[] is the array of smileys, nfaces is the number of elements
X * in faces.
X *
X * Definitions for these are generated by mkfaces from faces.in.
X */
X
Xextern struct smiley	faces[];
Xextern int		nfaces;
END_OF_FILE
if test 359 -ne `wc -c <'smiley.h'`; then
    echo shar: \"'smiley.h'\" unpacked with wrong size!
fi
# end of 'smiley.h'
fi
echo shar: End of shell archive.
exit 0

exit 0 # Just in case...
-- 
Kent Landfield                   INTERNET: kent@sparky.IMD.Sterling.COM
Sterling Software, IMD           UUCP:     uunet!sparky!kent
Phone:    (402) 291-8300         FAX:      (402) 291-4362
Please send comp.sources.misc-related mail to kent@uunet.uu.net.