v17i041: smiley - smiley faces generator, Part01/01

DaviD W. Sanderson dws at cs.wisc.edu
Sat Mar 16 07:48:03 AEST 1991


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

Subject: smiley server, version 1

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 package should compile without alteration on both System V and
BSD systems just by typing "make" (it does for me, anyway).

DaviD W. Sanderson (dws at 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 getopt.c smiley.c
#   mkfaces.c patchlevel.h smiley.h
# Wrapped by dws at margay on Thu Mar 14 22:31:30 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'\" \(1893 characters\)
sed "s/^X//" >'README' <<'END_OF_FILE'
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 at icus.UUCP>
X	Message-ID: <1990Sep11.102411.8537 at diku.dk>
X	Message-ID: <39917 at cci632.UUCP>
X	Message-ID: <1990Sep14.122955.558 at diku.dk>
X	Message-ID: <9366 at uhccux.uhcc.Hawaii.Edu>
X	Message-ID: <2005 at unsvax.NEVADA.EDU>
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
XTERMS
X
XThis package (excluding getopt.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 at cs.wisc.edu)
END_OF_FILE
if test 1893 -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'\" \(875 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
XOTHER	      = README		\
X		Makefile	\
X		other		\
X		faces.in
X
XMANUAL	      = smiley.1
X
XSOURCES	      = getopt.c	\
X		smiley.c	\
X		mkfaces.c
X
XHEADERS	      =	patchlevel.h	\
X		smiley.h
X
XTARGET	      =	smiley
X
XOBJECTS	      =	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
Xfaces.c:	mkfaces faces.in
X		./mkfaces < faces.in > 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 875 -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'\" \(324 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###
END_OF_FILE
if test 324 -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'\" \(12950 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#:o+=	Betty Boop
X$-)	Alex P. Keaton (from "Family Ties")
X$-)	won big at Las Vagas
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(8-)	wears glasses
X(8-o	Mr. Bill
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(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*:*	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-)	Jose Feliciano
X---...---	S.O.S
X-:-(	punk rocker (real punk rockers don't smile)
X-:-)	has mohawk
X-:-)	punk rocker
X-=#:-)	wizard
X.'!	(profile) has grimm
X.'"	(profile) pursing lips
X.'J	(profile) smiling
X.'P	(profile) sticking tounge 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 tounge out
X.'v	(profile) talking
X.'w	(profile) speaking with forked tongue
X.-)	Sammy Davis, Jr.
X.-)	one eye
X.-]	one eye
X.^v	(profile) pointy nose
X._)	suffering from Lorentz contraction (they're coming every ten minutes now)
X._)	suffering from Lorentz contractions
X/:-|	Mr. Spock
X0-)	Cyclops
X0-)	arc-welder
X0-)	scuba diver
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:-)	Fred Flintstone
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-|	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:-) ---	John Holmes
X:-) ... :-( ... :-) ... :-( ...	manic depressive
X:-)!!!	Sam Kinnison
X:-)'	drooling
X:-))	double chin
X:-)))	William Conrad
X:-)))	very overweight
X:-)--	98-pound weakling
X:-)-8	big girl
X:-)-{8	big girl
X:-)-}8	big girl
X:-)8	man with bowtie
X:-)8	well dressed
X:-)==	Arnold Schwarznegger
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(	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:-M	speaking no evil
X:-O	Mr. Bill
X:-O	birth
X:-O	ohh, big mouth, Mick Jagger
X:-O	uh oh
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:-i	semi-smiley
X:-j	left smiling
X:-k	beats me, looks like something, tho
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	surpise
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	"my lips are sealed" smiley
X:-x	kiss kiss
X:-x	not telling any secrets
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:/7)	Cyrano de Bergerac
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:<=	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: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:_)	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<:-(	disappointed
X<:-(	dunce
X<:-)	Vietnamese peasant
X<:-)	dumb questions
X<:-)<<|	in a space rocket
X<:-I	dunce
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=:-(	(real punk rockers don't smile)
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>:^(	headhunter (Amazon style)
X>;->	Winky and devil combined. A very lewd remark was just made.
X>>-O->	General Custer
X>|->	Chinese
X?-(	has black eye
X@%&$%&$\&*@%$#@	you know what that means...
X at -)	Cyclops
X at .'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
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
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 beenie
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
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]:-)	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>8<|=	messages about interesting women
Xoo	somebody's head-lights are on
Xoo-	puzzled, confused
Xpp#	cow
Xpq`#'	bull
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|~(	"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 12950 -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'\" \(2157 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.br
X	$	\(->	\e\|$
X.br
X	\e	\(->	\e\|\e
X.br
X.IP
XNote that a \0!\0
Xmust be doubled and 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	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\s+8\v'+2p'\fB\(co\fR\v'-2p'\s0
X\s+2Copyright 1991 by DaviD W. Sanderson\s0
END_OF_FILE
if test 2157 -ne `wc -c <'smiley.1'`; then
    echo shar: \"'smiley.1'\" unpacked with wrong size!
fi
# end of 'smiley.1'
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'\" \(4013 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();
X
X/*
X * definitions
X */
X
Xstatic char     ENVAR[] = "SMILEY";
Xstatic char     tab[] = "\t";
Xstatic char     newline[] = "\n";
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 * No sense in wasting coding time to do this in some more efficient
X * way; the database is so small that a linear search is quite fast
X * enough.
X */
Xstatic void
Xexplain(s)
X	char           *s;
X{
X	int             i;
X
X	for (i = 0; i < nfaces; i++)
X	{
X		extern int      strcmp();
X
X		if (strcmp(s, faces[i].face) == 0)
X		{
X			PUTFACE(FD, i);
X		}
X	}
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
X		char           *str;
X
X		if ((str = getenv(ENVAR)) != (char *)0)
X		{
X			explain(str);
X		}
X		else
X		{
X			static char     notset[] = " not set\n";
X
X			lwrite(FD, ENVAR);
X			lwrite(FD, notset);
X		}
X		return 0;
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	if (optind < ac)
X	{
X		for (; optind < ac; optind++)
X		{
X			char           *s = av[optind];
X
X			explain(s);
X		}
X		return 0;
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			explain(f);
X		}
X	}
X	return 0;
X}
END_OF_FILE
if test 4013 -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'\" \(1857 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#include <string.h>
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 1857 -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'\" \(239 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
Xstatic char version[] = " version 1 patchlevel 0\n";
END_OF_FILE
if test 239 -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 at 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 at uunet.uu.net.



More information about the Comp.sources.misc mailing list