v15i109: International Obfuscated C Code Contest, Part05/07
Rich Salz
rsalz at uunet.uu.net
Wed Aug 3 06:40:06 AEST 1988
Submitted-by: Landon Curt Noll <chongo at uts.amdahl.com>
Posting-number: Volume 15, Issue 109
Archive-name: ioccc/part05
# This is a shell archive. Remove anything before this line, then
# unpack it by saving it in a file and typing "sh file". (Files
# unpacked will be owned by you and have default permissions.)
#
# This archive contains:
#
# ./1986/Makefile ./1986/README ./1986/applin.c ./1986/applin.hint
# ./1986/august.c ./1986/august.hint ./1986/bright.c ./1986/bright.hint
# ./1986/hague.c ./1986/hague.hint ./1986/holloway.c ./1986/holloway.hint
# ./1986/marshall.c ./1986/marshall.hint ./1986/pawka.c ./1986/pawka.hint
# ./1986/rules ./1986/stein.c ./1986/stein.hint ./1986/wall.c
# ./1986/wall.hint
echo x - ./1986/Makefile
sed -e 's/^X//' > "./1986/Makefile" << '//E*O*F ./1986/Makefile//'
X# %W% %G% %U%
X#
X# 1986 makefile
X
XSHELL=/bin/sh
XWINNERS=marshall hague applin bright stein holloway august pawka wall
X
Xall: ${WINNERS}
X
Xmarshall: marshall.c
X cc $? -o $@
Xhague: hague.c
X cc $? -o $@
Xapplin: applin.c
X cc $? -o $@
Xbright: bright.c
X cc $? -o $@
Xstein: stein.c
X -rm -f a.out
X cc $? -o $@
X -ln $@ a.out
Xholloway: holloway.c
X cc $? -o $@
Xaugust: august.c
X cc $? -o $@
Xpawka: pawka.c
X cc $? -o $@
Xwall: wall.c
X cc $? -o $@
X
Xclean:
X rm -f core
Xclobber: clean
X rm -f ${WINNERS} a.out
Xinstall: all
X @echo are you kidding'??'
//E*O*F ./1986/Makefile//
echo x - ./1986/README
sed -e 's/^X//' > "./1986/README" << '//E*O*F ./1986/README//'
XThe 1986 contest was named: "The Third International Obfuscated C Code Contest"
X
XThe rules for 1986 suggested categories due to the success of the 1985
Xjudging method. The maximum size was increased from 512 to 1024 bytes.
XLarry Bassel joined as the second official judge.
X
XA poll was taken for the worst code for BSD and System V program.
XThe Bourne Shell (/bin/sh) won for both systems. The BSD finger
Xprogram took third place.
X
XRules and results were posted to net.lang.c and net.unix-wizards.
XMicro/Systems Journal published started regular publishing of the winners.
XThe practice of making first announcement of the winners at the Summer
XUsenix BOF started this year. A notice was posted to net.announce.
X
//E*O*F ./1986/README//
echo x - ./1986/applin.c
sed -e 's/^X//' > "./1986/applin.c" << '//E*O*F ./1986/applin.c//'
Xcat =13 /*/ >/dev/null 2>&1; echo "Hello, world!"; exit
X*
X* This program works under cc, f77, and /bin/sh.
X*
X*/; main() {
X write(
Xcat-~-cat
X /*,'(
X*/
X ,"Hello, world!"
X ,
Xcat); putchar(~-~-~-cat); } /*
X ,)')
X end
X*/
//E*O*F ./1986/applin.c//
echo x - ./1986/applin.hint
sed -e 's/^X//' > "./1986/applin.hint" << '//E*O*F ./1986/applin.hint//'
XMost adaptable program: <hpfcdc!jack> Jack Applin
X
X Jack Applin
X Hewlett-Packard
X Ft. Collins
X Colorado
X USA
X
XCompile and/or execute as directed by the documentation.
X
XThe judges were so amused by this little program that we created an
Xaward just for it. This program is portable to the C and Fortran 77
Xcompilers as well as executable by the bourne shell!
//E*O*F ./1986/applin.hint//
echo x - ./1986/august.c
sed -e 's/^X//' > "./1986/august.c" << '//E*O*F ./1986/august.c//'
Xtypedef struct n{int a:3,
Xb:29;struct n*c;}t;t*
Xf();r(){}m(u)t*u;{t*w,*z;
Xz=u->c,q(z),u->b=z->b*10,
Xw=u->c=f(),w->a=1,w->c=z->
Xc;}t*k;g(u)t*u;{t*z,*v,*p,
X*x;z=u->c,q(z),u->b=z->b,v
X=z->c,z->a=2,x=z->c=f(),x
X->a=3,x->b=2,p=x->c=f(),p
X->c=f(),p->c->a=1,p->c->c=
Xv;}int i;h(u)t*u;{t*z,*v,*
Xw;int c,e;z=u->c,v=z->c,q(
Xv),c=u->b,e=v->b,u->b=z->b
X,z->a=3,z->b=c+1,e+9>=c&&(
Xq(z),e=z->b,u->b+=e/c,w=f(
X),w->b=e%c,w->c=z->c,u->c=
Xw);}int(*y[4])()={r,m,g,h};
Xchar *sbrk();main(){t*e,*p,*o;
Xo=f(),o->c=o,o->b=1,e=f(),
Xe->a=2,p=e->c=f(),p->b=2,
Xp->c=o,q(e),e=e->c,(void)write
X(1,"2.",2);for(;;e=e->c){q(e),
Xe->b=write(1,&e->b["0123456789"],
X1);}}t*f(){return i||(i=1000,
Xk=(t*)sbrk(i*sizeof(t))),k+--i;
X}q(p)t*p;{(*y[p->a])(p);}
//E*O*F ./1986/august.c//
echo x - ./1986/august.hint
sed -e 's/^X//' > "./1986/august.hint" << '//E*O*F ./1986/august.hint//'
XBest complex task done in a complex way: <augustss at chalmers> Lennart Augustsson
X
X Lennart Augustsson
X Dept. of Comp. Sci.
X Chalmers University of Technology,
X 412 96 Gothenburg
X Sweden
X
XThis program computes a specific mathematical value. Simply compile
Xand give it an infinite amount of stack space and cpu time. Otherwise
Xjust be satisfied with the approximation displayed just before the core
Xdump.
X
XThis program will pass lint on your system assuming your lint is brave
Xenough to try and parse it correctly.
//E*O*F ./1986/august.hint//
echo x - ./1986/bright.c
sed -e 's/^X//' > "./1986/bright.c" << '//E*O*F ./1986/bright.c//'
X#include <stdio.h>
X#define O1O printf
X#define OlO putchar
X#define O10 exit
X#define Ol0 strlen
X#define QLQ fopen
X#define OlQ fgetc
X#define O1Q abs
X#define QO0 for
Xtypedef char lOL;
X
XlOL*QI[] = {"Use:\012\011dump file\012","Unable to open file '\x25s'\012",
X "\012"," ",""};
X
Xmain(I,Il)
XlOL*Il[];
X{ FILE *L;
X unsigned lO;
X int Q,OL[' '^'0'],llO = EOF,
X
X O=1,l=0,lll=O+O+O+l,OQ=056;
X lOL*llL="%2x ";
X (I != 1<<1&&(O1O(QI[0]),O10(1011-1010))),
X ((L = QLQ(Il[O],"r"))==0&&(O1O(QI[O],Il[O]),O10(O)));
X lO = I-(O<<l<<O);
X while (L-l,1)
X { QO0(Q = 0L;((Q &~(0x10-O))== l);
X OL[Q++] = OlQ(L));
X if (OL[0]==llO) break;
X O1O("\0454x: ",lO);
X if (I == (1<<1))
X { QO0(Q=Ol0(QI[O<<O<<1]);Q<Ol0(QI[0]);
X Q++)O1O((OL[Q]!=llO)?llL:QI[lll],OL[Q]);/*"
X O10(QI[1O])*/
X O1O(QI[lll]);{}
X }
X QO0 (Q=0L;Q<1<<1<<1<<1<<1;Q+=Q<0100)
X { (OL[Q]!=llO)? /* 0010 10lOQ 000LQL */
X ((D(OL[Q])==0&&(*(OL+O1Q(Q-l))=OQ)),
X OlO(OL[Q])):
X OlO(1<<(1<<1<<1)<<1);
X }
X O1O(QI[01^10^9]);
X lO+=Q+0+l;}
X }
X D(l) { return l>=' '&&l<='\~';
X}
//E*O*F ./1986/bright.c//
echo x - ./1986/bright.hint
sed -e 's/^X//' > "./1986/bright.hint" << '//E*O*F ./1986/bright.hint//'
XMost useful obfuscation: <dataio!bright> Walter Bright
X
XCompile this program and give filenames as arguments. For example try:
X
X bright bright.c
X bright bright
X
XMr. Bright exploits the c pre-processor, similar variables and
Xexcessive shifting to obfuscate an otherwise useful binary display
Xprogram. This gives you a small example of what it is like to
Xmaintain the Bourne shell! :-}
//E*O*F ./1986/bright.hint//
echo x - ./1986/hague.c
sed -e 's/^X//' > "./1986/hague.c" << '//E*O*F ./1986/hague.c//'
X#define DIT (
X#define DAH )
X#define __DAH ++
X#define DITDAH *
X#define DAHDIT for
X#define DIT_DAH malloc
X#define DAH_DIT gets
X#define _DAHDIT char
X_DAHDIT _DAH_[]="ETIANMSURWDKGOHVFaLaPJBXCYZQb54a3d2f16g7c8a90l?e'b.s;i,d:"
X;main DIT DAH{_DAHDIT
XDITDAH _DIT,DITDAH DAH_,DITDAH DIT_,
XDITDAH _DIT_,DITDAH DIT_DAH DIT
XDAH,DITDAH DAH_DIT DIT DAH;DAHDIT
XDIT _DIT=DIT_DAH DIT 81 DAH,DIT_=_DIT
X__DAH;_DIT==DAH_DIT DIT _DIT DAH;__DIT
XDIT'\n'DAH DAH DAHDIT DIT DAH_=_DIT;DITDAH
XDAH_;__DIT DIT DITDAH
X_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
XDIT' 'DAH,DAH_ __DAH DAH DAHDIT DIT
XDITDAH DIT_=2,_DIT_=_DAH_; DITDAH _DIT_&&DIT
XDITDAH _DIT_!=DIT DITDAH DAH_>='a'? DITDAH
XDAH_&223:DITDAH DAH_ DAH DAH; DIT
XDITDAH DIT_ DAH __DAH,_DIT_ __DAH DAH
XDITDAH DIT_+= DIT DITDAH _DIT_>='a'? DITDAH _DIT_-'a':0
XDAH;}_DAH DIT DIT_ DAH{ __DIT DIT
XDIT_>3?_DAH DIT DIT_>>1 DAH:'\0'DAH;return
XDIT_&1?'-':'.';}__DIT DIT DIT_ DAH _DAHDIT
XDIT_;{DIT void DAH write DIT 1,&DIT_,1 DAH;}
//E*O*F ./1986/hague.c//
echo x - ./1986/hague.hint
sed -e 's/^X//' > "./1986/hague.hint" << '//E*O*F ./1986/hague.hint//'
XWorst abuse of the C preprocessor: <ukc!jmh> Jim Hague
X
X Jim Hague
X University of Kent at Canterbury
X Canterbury, Kent
X UK
X
XCompile this program and feed ascii text into standard input. This
Xprogram is known to pass lint on some systems and abort lint on
Xothers.
X
XThis program was selected for the 1987 t-shirt collection.
X
XThink morse code when you ponder this program. Note how use of
Xsimilar variables can be obfuscating! The author notes that this
Xprogram implements the international morse standard. Now for extra
Xcredit, what morse message does the program spell out?
//E*O*F ./1986/hague.hint//
echo x - ./1986/holloway.c
sed -e 's/^X//' > "./1986/holloway.c" << '//E*O*F ./1986/holloway.c//'
X#include "stdio.h"
X#define e 3
X#define g (e/e)
X#define h ((g+e)/2)
X#define f (e-g-h)
X#define j (e*e-g)
X#define k (j-h)
X#define l(x) tab2[x]/h
X#define m(n,a) ((n&(a))==(a))
X
Xlong tab1[]={ 989L,5L,26L,0L,88319L,123L,0L,9367L };
Xint tab2[]={ 4,6,10,14,22,26,34,38,46,58,62,74,82,86 };
X
Xmain(m1,s) char *s; {
X int a,b,c,d,o[k],n=(int)s;
X if(m1==1){ char b[2*j+f-g]; main(l(h+e)+h+e,b); printf(b); }
X else switch(m1-=h){
X case f:
X a=(b=(c=(d=g)<<g)<<g)<<g;
X return(m(n,a|c)|m(n,b)|m(n,a|d)|m(n,c|d));
X case h:
X for(a=f;a<j;++a)if(tab1[a]&&!(tab1[a]%((long)l(n))))return(a);
X case g:
X if(n<h)return(g);
X if(n<j){n-=g;c='D';o[f]=h;o[g]=f;}
X else{c='\r'-'\b';n-=j-g;o[f]=o[g]=g;}
X if((b=n)>=e)for(b=g<<g;b<n;++b)o[b]=o[b-h]+o[b-g]+c;
X return(o[b-g]%n+k-h);
X default:
X if(m1-=e) main(m1-g+e+h,s+g); else *(s+g)=f;
X for(*s=a=f;a<e;) *s=(*s<<e)|main(h+a++,(char *)m1);
X }
X}
//E*O*F ./1986/holloway.c//
echo x - ./1986/holloway.hint
sed -e 's/^X//' > "./1986/holloway.hint" << '//E*O*F ./1986/holloway.hint//'
XBest simple task performed in a complex way: <drivax!holloway> Bruce Holloway
X
X Bruce Holloway
X Digital Research, Inc.
X Monterey, CA
X USA
X
XBelieve it or not, this is the old standard "Hello, world" program
Xperformed in a very complex way. The judges and the author defy you
Xdo determine how it does it. It is a good thing that K&R didn't use
Xthis version as the first C program!
//E*O*F ./1986/holloway.hint//
echo x - ./1986/marshall.c
sed -e 's/^X//' > "./1986/marshall.c" << '//E*O*F ./1986/marshall.c//'
X extern int
X errno
X ;char
X grrr
X ;main( r,
X argv, argc ) int argc ,
X r ; char *argv[];{int P( );
X#define x int i, j,cc[4];printf(" choo choo\n" ) ;
Xx ;if (P( ! i ) | cc[ ! j ]
X& P(j )>2 ? j : i ){* argv[i++ +!-i]
X; for (i= 0;; i++ );
X_exit(argv[argc- 2 / cc[1*argc]|-1<<4 ] ) ;printf("%d",P(""));}}
X P ( a ) char a ; { a ; while( a > " B "
X /* - by E ricM arsh all- */); }
//E*O*F ./1986/marshall.c//
echo x - ./1986/marshall.hint
sed -e 's/^X//' > "./1986/marshall.hint" << '//E*O*F ./1986/marshall.hint//'
XBest layout: <burdvax!eric> Eric Marshall
X
X Eric Marshall
X System Development Corporation, a Burroughs Company
X P.O. Box 517
X Paoli, PA.
X 19301
X
XThis program prints the name of the picture. The layout is somewhat
Xpretty through it is not the usual sort of output one would expect
Xfrom printing a program!
X
XThis program was slected for the 1987 t-shirt collection.
X
XThis program is known to give some C compilers a problems.
//E*O*F ./1986/marshall.hint//
echo x - ./1986/pawka.c
sed -e 's/^X//' > "./1986/pawka.c" << '//E*O*F ./1986/pawka.c//'
X#include "stdio.h"
X#define xyxx char
X#define xyyxx putchar
X#define xyyyxx while
X#define xxyyyx int
X#define xxxyyx main
X#define xyxyxy if
X#define xyyxyy '\n'
Xxyxx *xyx [] = {
X"]I^x[I]k\\I^o[IZ~\\IZ~[I^|[I^l[I^j[I^}[I^n[I]m\\I]h",
X"]IZx\\IZx[IZk\\IZk[IZo_IZ~\\IZ~[IZ|_IZl_IZj\\IZj]IZ}]IZn_IZm\\IZm_IZh",
X"]IZx\\IZx[I^k[I\\o]IZ~\\IZ~\\I]|[IZl_I^j]IZ}]I^n[IZm\\IZm_IZh",
X"]IZx\\IZx[IZk\\IZk[IZo_IZ~\\IZ~_IZ|[IZl_IZj\\IZj]IZ}]IZn_IZm\\IZm]IZh",
X"]I^x[I]k\\IZo_I^~[I^|[I^l[IZj\\IZj]IZ}]I^n[I]m^IZh",'\0'};/*xyyxyxyxxxyxxxyy*/
Xxyxx *xyyx; xxyyyx xyyyx,xyyyyx,xyyyyyx=0x59,xyyyyyyx=0x29,/*yxxyxyyyxxyyyxyy*/
Xxxyx=0x68;xxxyyx(){xyyyyx=0;xyyyxx(xyx[xyyyyx]){xyyx=xyx[xyyyyx++];/*xyyyxxyx*/
Xxyyyxx(*xyyx){xyyyx= *xyyx++-xyyyyyx;xyyyxx(xyyyx--)xyyxx(*xyyx-xyyyyyyx);/*x*/
Xxyxyxy(*xyyx==xxyx)xyyxx(xyyxyy);*xyyx++;}}}/*xyxyxyyyyxxyxxxyyyxyyyxyxxyyy*/
//E*O*F ./1986/pawka.c//
echo x - ./1986/pawka.hint
sed -e 's/^X//' > "./1986/pawka.hint" << '//E*O*F ./1986/pawka.hint//'
XMost illegible code: <PAWKA at NOSC-TECR.ARPA> Michael H. Pawka
X
X Michael H. Pawka
X Naval Ocean Systems Center
X San Diego, Ca
X 92152
X
XThe judges found this entry to be one of hardest to read without the
Xaid of /lib/cpp and a good editor. When run, the program asks if it
Xis obfuscated, of all things!
//E*O*F ./1986/pawka.hint//
echo x - ./1986/rules
sed -e 's/^X//' > "./1986/rules" << '//E*O*F ./1986/rules//'
XWARNING: The rules and mailing address for the contest change from year
X to year. Be sure that you consult the current set of rules
X before submitting entries.
X-------------------------------------------------------------------------------
X
XSubject: Third International Obfuscated C Code Contest Rules
XNewsgroups: net.lang.c
XKeywords: rules,1986,obfuscate,contest
X
XGOAL: To write the most Obscure working C program following the rules below:
X
XRULES: 1) The source must be 1024 bytes or less. NO exceptions!
X
X 2) Include in your letter:
X a) Name (or anonymous), Company/School, City, State and Country.
X b) Your path from a major network site, if applicable.
X c) A brief statement of what the program should do.
X d) The Machine(s)/Operating system(s) on which it runs.
X e) Enclose your source between the following lines:
X ---start of program---
X <place obfuscated source of 1024 bytes or less here>
X ---end of program---
X
X 3) The entry should be written in common C. (K&R + common extensions)
X
X 4) The program must be of original work. All programs must be
X in the public domain. All copyrighted programs will be rejected.
X
X 5) Entries must be received between 31-Mar-86 and 30-May-86 0:00 GMT.
X Email your entries to:
X
X decwrl!nsc!obfuscate
X
X Entries sent by UUCP Email will be confirmed starting 1-May-86.
X People are encouraged to submit entries via Email, however one may
X mail entries the following address:
X
X International Obfuscated C Code Contest
X National Semiconductor
X Attn: Landon Noll Mail Stop: 7c266
X 1135 Kern Ave.
X Sunnyvale, CA 94086
X U.S.A.
X
XAWARDS: Winners of each category and the best of Show will be posted to
X net.announce as well as being published in the May 86 issue of the
X "Micro/Systems Journal". Winners also get to receive international
X fame/flame for their efforts!
X
XJUDGING: Awards will be given to the best entry in a number of categories.
X The actual category list will vary depending on the types of entries
X we receive. At the moment, we are considering using the following:
X
X * The most obscure algorithm
X * The worst abuse of the C preprocessor
X * The strangest source layout
X * The best small one line program
X * The most useful program
X * <anything else we need to give recognition to a good entry>
X
X Judging will be done by myself, Larry Bassel and other local people
X who are willing to help out.
X
X We will attempt to run each of them on a Vax 785/4.2BSD system.
X Don't let the lack of such a system stop you! Try to avoid operating
X system/machine specific code if you do not have such a system.
X Extra points will be given for programs which:
X
X a) pass lint without complaint
X b) do something quasi-interesting
X c) are portable
X
X A larger program size was selected to allow for a wider range of
X program ideas. However if you don't need 1024 bytes don't use them.
X Given two programs with similar techniques and similar levels of
X obfuscation, we will tend to favor the more concise entry.
X
XPOLL: We want to know what you think is the most poorly coded utility
X released with 4.xBSD and/or Sys V. The top results plus the
X best flames will be posted along with the contest results.
X To vote, please follow the guidelines below:
X
X 1) Include at the top of the letter:
X a) Name (or anonymous), Company/School, City, State and Country.
X b) Your path from a major network site, if applicable.
X c) the name of the poorly coded utility
X d) the name of the operating system on which it is found
X e) the line: <<<FLAME ON>>>
X f) up to 1024 bytes of flames
X g) the line: <<<FLAME OFF>>>
X
X 2) Confine your vote to the standard set of commands. I.e., don't
X flame about local commands or user contributed software.
X
X 3) Submit your votes via Email to:
X
X for 4.xBSD: decwrl!nsc!bsd_util
X for Sys V: decwrl!nsc!sysV_util
X
X or, you may send your votes by letter to the same address used by
X the contest. Please place your votes on different sheets of paper.
X
Xchongo <C> /\cc/\
//E*O*F ./1986/rules//
echo x - ./1986/stein.c
sed -e 's/^X//' > "./1986/stein.c" << '//E*O*F ./1986/stein.c//'
Xtypedef char*z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_%
X25))+'0',O/=o,_/=25))&&(b<1||(O=time(&b)%0250600,main(~5,*(z*)Z),write(1,*(z*)Z
X,9)));}
//E*O*F ./1986/stein.c//
echo x - ./1986/stein.hint
sed -e 's/^X//' > "./1986/stein.hint" << '//E*O*F ./1986/stein.hint//'
XBest one liner: <gustaf!cd-jan> Jan Stein
X
XNOTE: to avoid problems with news and mail, the single line was split
X into 3 lines. Join all lines into a single line to recreate
X the original file.
X
XCompile and link to a filename called 'a.out'. Try the program with the
Xfollowing argument:
X
X a.out ^N^N
X
X(^N is ASCII control-N). One some machines, ^M^L is needed to get it to
Xoutput cleanly. Your system may require another set of characters.
XIn time, you will figure out what it does. :-)
//E*O*F ./1986/stein.hint//
echo x - ./1986/wall.c
sed -e 's/^X//' > "./1986/wall.c" << '//E*O*F ./1986/wall.c//'
X#define _c(C)_ (C)&('|'+3):c_()(C)>>('\n'-3) __; /**/
X#define C char*
X#define keyboard ",,B3-u;.(&*5., /(b*(1\036!a%\031m,,,,,\r\n"
X#define main(o,oo)oo(o){
X#define _ ;case
XC
X#define c_(cc)c cc=
X#define C_(sand)_O(sand)witch
Xo=keyboard;
X#define __ ;break;
XC
Xccc(
Xcc)
XC
Xcc;
X{
XC
Xcccc=
Xcc;int
X#ifndef lint
X#define keyboard "dijs QH.soav Vdtnsaoh DmfpaksoQz;kkt oa, -dijs"
X#endif
Xc;
Xmain(;c_(=(*cc);*cc++)c,for);
X#define _O(s)s
Xmain(0xb+(c>>5),C_(s))
X_'\v'
X:__ _'\f':
Xmain(c,C_(s));
X_c(8098)_c(6055)_c(14779)_c(10682)
X#define O_(O)_O(O)stem(ccc(
X_c(15276)_c(11196)_c(15150)
X#define _C ;return
X_c(11070)_c(15663)_c(11583)
X}
X__
Xdefault
X:c_(+)o[c&__LINE__-007];
Xmain(c_(-)'-'-1,C_(s))_
X0214
X:_
X0216
X:c_(+)025 _
X0207
X:c_(-)4 _
X0233
X:c_(+)' '-1;
X}}c_(&)'z'+5;
X}_C cccc;
X}main(,cc)
XC
X#define O write(1,
Xc="O";
XO_(sy) keyboard));
Xmain(;;,for);
Xread(0,
Xc,1);*
Xc_(&)'~'+1
X;O ccc(
Xc),
X'\0');
Xmain(*c,
XC_(s));_
X4
X:O_(sy)";kkt -oa, dijszdijs QQ"))_C
X_
X13
X:O o+' ',
X3
X)
X#undef main
X__ _ 127:O"\b \b",3)__
Xdefault
X:O
Xc,1)
X__}}}main(){
Xcc();
X}
//E*O*F ./1986/wall.c//
echo x - ./1986/wall.hint
sed -e 's/^X//' > "./1986/wall.hint" << '//E*O*F ./1986/wall.hint//'
XThe grand prize in most well-rounded in confusion: <sdcrdcf!lwall> Larry Wall
X
X Larry Wall
X System Development Corporation
X Santa Monica
X California
X US of A
X
XThe original version did not have a `;' character in the first line.
XThis caused a number of System V C pre-preprocessors to gripe about a
Xsyntax error.
X
XThis program is a masterpiece of obfuscation and humor. Larry Wall
X(the hacker who gave us rn and patch) asks you to compile and consider
Xthe warning message generated by the C compiler. Then execute the
Xprogram and type charters into its standard input. You will see why
Xthe compiler documents the program.
//E*O*F ./1986/wall.hint//
echo Possible errors detected by \'wc\' [hopefully none]:
temp=/tmp/shar$$
trap "rm -f $temp; exit" 0 1 2 3 15
cat > $temp <<\!!!
36 96 530 Makefile
15 115 715 README
15 37 243 applin.c
13 57 358 applin.hint
26 34 718 august.c
15 79 514 august.hint
47 111 1020 bright.c
11 57 386 bright.hint
28 118 991 hague.c
17 93 578 hague.hint
33 72 912 holloway.c
11 66 381 holloway.hint
14 87 938 marshall.c
15 68 425 marshall.hint
18 41 838 pawka.c
10 51 300 pawka.hint
103 634 4048 rules
3 5 168 stein.c
14 85 501 stein.hint
78 125 1025 wall.c
17 103 625 wall.hint
539 2134 16214 total
!!!
wc ./1986/Makefile ./1986/README ./1986/applin.c ./1986/applin.hint ./1986/august.c ./1986/august.hint ./1986/bright.c ./1986/bright.hint ./1986/hague.c ./1986/hague.hint ./1986/holloway.c ./1986/holloway.hint ./1986/marshall.c ./1986/marshall.hint ./1986/pawka.c ./1986/pawka.hint ./1986/rules ./1986/stein.c ./1986/stein.hint ./1986/wall.c ./1986/wall.hint | sed 's=[^ ]*/==' | diff -b $temp -
exit 0
--
Please send comp.sources.unix-related mail to rsalz at uunet.uu.net.
More information about the Comp.lang.c
mailing list