diff --git a/1986/1986.tar.bz2 b/1986/1986.tar.bz2
index 26c84f25a..f34ea25d2 100644
Binary files a/1986/1986.tar.bz2 and b/1986/1986.tar.bz2 differ
diff --git a/1986/Makefile b/1986/Makefile
index 81055fe8b..e0371b795 100644
--- a/1986/Makefile
+++ b/1986/Makefile
@@ -1,9 +1,45 @@
#!/usr/bin/env make
#
-# 1986 makefile
+# 1986 Makefile
+
+################################################################################
#
-# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis
-# is licensed under:
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
#
# Creative Commons Attribution-ShareAlike 3.0 Unported License.
#
@@ -15,38 +51,78 @@
################
#
SHELL= /bin/bash
-CP= cp
-CPP= cpp
-GUNZIP= gunzip
-LD= ld
MAKE= make
-RM= rm
-SED= sed
-TAR= tar
-TRUE= true
-
-# ANSI compiler
-#
-# Set CC to the name of your ANSI compiler.
-#
-CC= cc
###############
# IOCCC winners
###############
#
-WINNERS= marshall hague applin bright stein holloway august pawka wall
+WINNERS= applin august bright hague holloway marshall pawka stein wall
+
+YEAR= 1986
###################
# build all entries
###################
#
all:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
@for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && $(MAKE) $@)"; \
(cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+.PHONY: all alt data everything clean clobber install \
+ love haste waste maker easter_egg sandwich \
+ supernova deep_magic magic charon pluto
+
+# alternative executable
+#
+alt:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+# data files
+#
+data:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+# both all and alt
+#
+everything:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
###############
@@ -54,19 +130,189 @@ all:
###############
#
clean:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
@for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && $(MAKE) $@)"; \
(cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
clobber:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
@for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && $(MAKE) $@)"; \
(cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
install:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
@for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
echo "(cd $$i && $(MAKE) $@)"; \
(cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+indent.c:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+haste:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+waste:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+maker:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+easter_egg:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+sandwich:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+
+# The IOCCC resident astronomer states
+#
+supernova:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+deep_magic:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+magic:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+charon:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
+
+pluto:
+ @echo '=-=-= ${YEAR} begin make $@ =-=-='
+ @echo
+ @for i in ${WINNERS} ; do \
+ echo "=-= start ${YEAR}/$$i =-="; \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ echo "=-= end ${YEAR}/$$i =-="; \
+ echo; \
+ done
+ @echo '=-=-= ${YEAR} complete make $@ =-=-='
diff --git a/1986/applin/Makefile b/1986/applin/Makefile
index 00dd75078..275a81352 100644
--- a/1986/applin/Makefile
+++ b/1986/applin/Makefile
@@ -1,25 +1,591 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - applin
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= applin
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-applin: applin.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+#CWARN= -Wall -Wextra ${CSILENCE}
+CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= applin
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/applin/hint.html b/1986/applin/hint.html
deleted file mode 100644
index e7cd86fef..000000000
--- a/1986/applin/hint.html
+++ /dev/null
@@ -1,21 +0,0 @@
-Most adaptable program
-
-Jack Applin
-Hewlett-Packard
-Ft. Collins
-Colorado
-USA
-
-Judges' comments:
-
-Compile and/or execute as directed by the documentation.
-
-The judges were so amused by this little program that we created an
-award just for it. This program is portable to the C and Fortran 77
-compilers as well as executable by the bourne shell!
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/applin/hint.text b/1986/applin/hint.txt
similarity index 95%
rename from 1986/applin/hint.text
rename to 1986/applin/hint.txt
index ff9913ead..e305d1030 100644
--- a/1986/applin/hint.text
+++ b/1986/applin/hint.txt
@@ -6,6 +6,10 @@ Ft. Collins
Colorado
USA
+## To build:
+
+ make all
+
## Judges' comments:
Compile and/or execute as directed by the documentation.
diff --git a/1986/applin/index.html b/1986/applin/index.html
new file mode 100644
index 000000000..9c0a75110
--- /dev/null
+++ b/1986/applin/index.html
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Most adaptable program
+Jack Applin
+Hewlett-Packard
+Ft. Collins
+Colorado
+USA
+To build:
+ make all
+
+Compile and/or execute as directed by the documentation.
+The judges were so amused by this little program that we created an
+award just for it. This program is portable to the C and Fortran 77
+compilers as well as executable by the bourne shell!
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/applin/orig.Makefile b/1986/applin/orig.Makefile
new file mode 100644
index 000000000..00dd75078
--- /dev/null
+++ b/1986/applin/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= applin
+
+all: ${WINNERS}
+
+applin: applin.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/august/Makefile b/1986/august/Makefile
index 31d45683b..15e1673f9 100644
--- a/1986/august/Makefile
+++ b/1986/august/Makefile
@@ -1,25 +1,591 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - august
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= august
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-august: august.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+#CWARN= -Wall -Wextra ${CSILENCE}
+CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-return-type
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= august
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/august/hint.html b/1986/august/hint.html
deleted file mode 100644
index b87cbde13..000000000
--- a/1986/august/hint.html
+++ /dev/null
@@ -1,23 +0,0 @@
-Best complex task done in a complex way
-
-Lennart Augustsson
-Dept. of Comp. Sci.
-Chalmers University of Technology,
-412 96 Gothenburg
-Sweden
-
-Judges' comments:
-
-This program computes a specific mathematical value. Simply compile
-and give it an infinite amount of stack space and cpu time. Otherwise
-just be satisfied with the approximation displayed just before the core
-dump.
-
-This program will pass lint on your system assuming your lint is brave
-enough to try and parse it correctly.
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/august/hint.text b/1986/august/hint.txt
similarity index 96%
rename from 1986/august/hint.text
rename to 1986/august/hint.txt
index d74780046..0089ff1fb 100644
--- a/1986/august/hint.text
+++ b/1986/august/hint.txt
@@ -6,6 +6,10 @@ Chalmers University of Technology,
412 96 Gothenburg
Sweden
+## To build:
+
+ make all
+
## Judges' comments:
This program computes a specific mathematical value. Simply compile
diff --git a/1986/august/index.html b/1986/august/index.html
new file mode 100644
index 000000000..e14786d73
--- /dev/null
+++ b/1986/august/index.html
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Best complex task done
+in a complex way
+Lennart Augustsson
+Dept. of Comp. Sci.
+Chalmers University of Technology,
+412 96 Gothenburg
+Sweden
+To build:
+ make all
+
+This program computes a specific mathematical value. Simply compile
+and give it an infinite amount of stack space and cpu time. Otherwise
+just be satisfied with the approximation displayed just before the core
+dump.
+This program will pass lint on your system assuming your lint is
+brave enough to try and parse it correctly.
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/august/orig.Makefile b/1986/august/orig.Makefile
new file mode 100644
index 000000000..31d45683b
--- /dev/null
+++ b/1986/august/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= august
+
+all: ${WINNERS}
+
+august: august.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/bright/Makefile b/1986/bright/Makefile
index 702b66c73..ae5c3febd 100644
--- a/1986/bright/Makefile
+++ b/1986/bright/Makefile
@@ -1,25 +1,597 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - bright
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= bright
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-bright: bright.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+CWARN= -Wall -Wextra ${CSILENCE}
+#CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-format-security \
+ -Wno-implicit-int -Wno-unknown-escape-sequence -Wno-unused-value \
+ -Wno-sign-compare
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= bright
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ= ${PROG}.orig.o
+ALT_TARGET= ${PROG}.orig
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+${PROG}.orig: ${PROG}.orig.c
+ @echo "NOTE: The original source may not compile using modern compilers."
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/bright/bright.c b/1986/bright/bright.c
index 8c0481856..5673eb280 100644
--- a/1986/bright/bright.c
+++ b/1986/bright/bright.c
@@ -1,7 +1,7 @@
#include
#define O1O printf
#define OlO putchar
-#define O10 exit
+#define O10 aexit
#define Ol0 strlen
#define QLQ fopen
#define OlQ fgetc
@@ -12,6 +12,8 @@ typedef char lOL;
lOL*QI[] = {"Use:\012\011dump file\012","Unable to open file '\x25s'\012",
"\012"," ",""};
+int aexit(int x) { exit(x); return x; }
+
main(I,Il)
lOL*Il[];
{ FILE *L;
diff --git a/1986/bright/bright.orig.c b/1986/bright/bright.orig.c
new file mode 100644
index 000000000..8c0481856
--- /dev/null
+++ b/1986/bright/bright.orig.c
@@ -0,0 +1,47 @@
+#include
+#define O1O printf
+#define OlO putchar
+#define O10 exit
+#define Ol0 strlen
+#define QLQ fopen
+#define OlQ fgetc
+#define O1Q abs
+#define QO0 for
+typedef char lOL;
+
+lOL*QI[] = {"Use:\012\011dump file\012","Unable to open file '\x25s'\012",
+ "\012"," ",""};
+
+main(I,Il)
+lOL*Il[];
+{ FILE *L;
+ unsigned lO;
+ int Q,OL[' '^'0'],llO = EOF,
+
+ O=1,l=0,lll=O+O+O+l,OQ=056;
+ lOL*llL="%2x ";
+ (I != 1<<1&&(O1O(QI[0]),O10(1011-1010))),
+ ((L = QLQ(Il[O],"r"))==0&&(O1O(QI[O],Il[O]),O10(O)));
+ lO = I-(O<=' '&&l<='\~';
+}
diff --git a/1986/bright/hint.html b/1986/bright/hint.html
deleted file mode 100644
index 99f81b119..000000000
--- a/1986/bright/hint.html
+++ /dev/null
@@ -1,22 +0,0 @@
-Most useful obfuscation
-
-Walter Bright
-
-Judges' comments:
-
-Compile this program and give filenames as arguments. For example try:
-
-bright bright.c
-bright bright
-
-
-Mr. Bright exploits the c pre-processor, similar variables and
-excessive shifting to obfuscate an otherwise useful binary display
-program. This gives you a small example of what it is like to
-maintain the Bourne shell! :-}
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/bright/hint.text b/1986/bright/hint.txt
similarity index 82%
rename from 1986/bright/hint.text
rename to 1986/bright/hint.txt
index b387080de..e36b9c870 100644
--- a/1986/bright/hint.text
+++ b/1986/bright/hint.txt
@@ -2,6 +2,12 @@
Walter Bright
+## To build:
+
+ make all
+
+NOTE: The original entry may be built with "make alt".
+
## Judges' comments:
Compile this program and give filenames as arguments. For example try:
@@ -14,6 +20,8 @@ excessive shifting to obfuscate an otherwise useful binary display
program. This gives you a small example of what it is like to
maintain the Bourne shell! :-}
+NOTE: To compile with modern compilers, you make need to: make alt.
+
Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
All Rights Reserved. Permission for personal, educational or non-profit use is
granted provided this this copyright and notice are included in its entirety
diff --git a/1986/bright/index.html b/1986/bright/index.html
new file mode 100644
index 000000000..b6c31af5c
--- /dev/null
+++ b/1986/bright/index.html
@@ -0,0 +1,189 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Most useful obfuscation
+Walter Bright
+To build:
+ make all
+NOTE: The original entry may be built with “make alt”.
+
+Compile this program and give filenames as arguments. For example
+try:
+bright bright.c
+bright bright
+Mr. Bright exploits the c pre-processor, similar variables and
+excessive shifting to obfuscate an otherwise useful binary display
+program. This gives you a small example of what it is like to maintain
+the Bourne shell! :-}
+NOTE: To compile with modern compilers, you make need to: make
+alt.
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/bright/orig.Makefile b/1986/bright/orig.Makefile
new file mode 100644
index 000000000..702b66c73
--- /dev/null
+++ b/1986/bright/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= bright
+
+all: ${WINNERS}
+
+bright: bright.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/hague/Makefile b/1986/hague/Makefile
index b4ff6518f..6e41ac087 100644
--- a/1986/hague/Makefile
+++ b/1986/hague/Makefile
@@ -1,25 +1,592 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - hague
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= hague
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-hague: hague.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+CWARN= -Wall -Wextra ${CSILENCE}
+#CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \
+ -Wno-incompatible-library-redeclaration -Wno-return-type
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= hague
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/hague/hint.html b/1986/hague/hint.html
deleted file mode 100644
index 6b1a7532a..000000000
--- a/1986/hague/hint.html
+++ /dev/null
@@ -1,25 +0,0 @@
-Worst abuse of the C preprocessor
-
-Jim Hague
-https://lunch.org.uk
-mailto:jim.hague@acm.org
-UK
-
-Judges' comments:
-
-Compile this program and feed ascii text into standard input. This
-program is known to pass lint on some systems and abort lint on
-others.
-
-This program was selected for the 1987 t-shirt collection.
-
-Think morse code when you ponder this program. Note how use of
-similar variables can be obfuscating! The author notes that this
-program implements the international morse standard. Now for extra
-credit, what morse message does the program spell out?
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/hague/hint.text b/1986/hague/hint.txt
similarity index 96%
rename from 1986/hague/hint.text
rename to 1986/hague/hint.txt
index 050805d2a..4b55a4898 100644
--- a/1986/hague/hint.text
+++ b/1986/hague/hint.txt
@@ -5,6 +5,10 @@ University of Kent at Canterbury
Canterbury, Kent
UK
+## To build:
+
+ make all
+
## Judges' comments:
Compile this program and feed ascii text into standard input. This
diff --git a/1986/hague/index.html b/1986/hague/index.html
new file mode 100644
index 000000000..e4e8279e5
--- /dev/null
+++ b/1986/hague/index.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Worst abuse of the C
+preprocessor
+Jim Hague
+University of Kent at Canterbury
+Canterbury, Kent
+UK
+To build:
+ make all
+
+Compile this program and feed ascii text into standard input. This
+program is known to pass lint on some systems and abort lint on
+others.
+This program was selected for the 1987 t-shirt collection.
+Think morse code when you ponder this program. Note how use of
+similar variables can be obfuscating! The author notes that this program
+implements the international morse standard. Now for extra credit, what
+morse message does the program spell out?
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/hague/orig.Makefile b/1986/hague/orig.Makefile
new file mode 100644
index 000000000..b4ff6518f
--- /dev/null
+++ b/1986/hague/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= hague
+
+all: ${WINNERS}
+
+hague: hague.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/holloway/Makefile b/1986/holloway/Makefile
index ab6ecf887..8fdb6cadd 100644
--- a/1986/holloway/Makefile
+++ b/1986/holloway/Makefile
@@ -1,25 +1,593 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - holloway
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= holloway
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-holloway: holloway.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+CWARN= -Wall -Wextra ${CSILENCE}
+#CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-format-security -Wno-implicit-int -Wno-int-to-pointer-cast \
+ -Wno-pointer-to-int-cast
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= holloway
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ @echo "NOTE: This entry uses non-standard args to main() that do not work with modern compilers."
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/holloway/hint.html b/1986/holloway/hint.html
deleted file mode 100644
index 1291ac5af..000000000
--- a/1986/holloway/hint.html
+++ /dev/null
@@ -1,19 +0,0 @@
-Best simple task performed in a complex way
-
-Bruce Holloway
-Digital Research, Inc.
-Monterey, CA
-USA
-
-Judges' comments:
-
-Believe it or not, this is the old standard “Hello, world” program
-performed in a very complex way. The judges and the author defy you
-do determine how it does it. It is a good thing that K&R didn’t use
-this version as the first C program!
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/holloway/hint.text b/1986/holloway/hint.txt
similarity index 78%
rename from 1986/holloway/hint.text
rename to 1986/holloway/hint.txt
index 72b5ba013..1195465b4 100644
--- a/1986/holloway/hint.text
+++ b/1986/holloway/hint.txt
@@ -5,6 +5,12 @@ Digital Research, Inc.
Monterey, CA
USA
+## To build:
+
+ make all
+
+NOTE: This entry uses non-standard args to main() that do not work with modern compilers.
+
## Judges' comments:
Believe it or not, this is the old standard "Hello, world" program
@@ -12,6 +18,8 @@ performed in a very complex way. The judges and the author defy you
do determine how it does it. It is a good thing that K&R didn't use
this version as the first C program!
+NOTE: This entry requires a non-standard K&R C compiler to compile.
+
Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
All Rights Reserved. Permission for personal, educational or non-profit use is
granted provided this this copyright and notice are included in its entirety
diff --git a/1986/holloway/index.html b/1986/holloway/index.html
new file mode 100644
index 000000000..0344b2245
--- /dev/null
+++ b/1986/holloway/index.html
@@ -0,0 +1,190 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+
+Bruce Holloway
+Digital Research, Inc.
+Monterey, CA
+USA
+To build:
+ make all
+NOTE: This entry uses non-standard args to main() that do not work
+with modern compilers.
+
+Believe it or not, this is the old standard “Hello, world” program
+performed in a very complex way. The judges and the author defy you do
+determine how it does it. It is a good thing that K&R didn’t use
+this version as the first C program!
+NOTE: This entry requires a non-standard K&R C compiler to
+compile.
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/holloway/orig.Makefile b/1986/holloway/orig.Makefile
new file mode 100644
index 000000000..ab6ecf887
--- /dev/null
+++ b/1986/holloway/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= holloway
+
+all: ${WINNERS}
+
+holloway: holloway.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/index.html b/1986/index.html
new file mode 100644
index 000000000..186143b71
--- /dev/null
+++ b/1986/index.html
@@ -0,0 +1,186 @@
+
+
+
+
+
+
+ README
+
+
+
+
+The 1986 contest was named: “The Third International Obfuscated C
+Code Contest”
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+The rules for 1986 suggested categories due to the success of the
+1985 judging method. The maximum size was increased from 512 to 1024
+bytes. Larry Bassel joined as the second official judge.
+A poll was taken for the worst code for BSD and System V program. The
+Bourne Shell (/bin/sh) won for both systems. The BSD finger program took
+third place.
+Rules and results were posted to net.lang.c and net.unix-wizards.
+Micro/Systems Journal published started regular publishing of the
+winners. The practice of making first announcement of the winners at the
+Summer Usenix BOF started this year. A notice was posted to
+net.announce.
+
+
diff --git a/1986/marshall/Makefile b/1986/marshall/Makefile
index 3b430021f..3e9be22d5 100644
--- a/1986/marshall/Makefile
+++ b/1986/marshall/Makefile
@@ -1,25 +1,594 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - marshall
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= marshall
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-marshall: marshall.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+#CWARN= -Wall -Wextra ${CSILENCE}
+CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \
+ -Wno-int-conversion -Wno-parentheses -Wno-shift-negative-value \
+ -Wno-string-compare -Wno-unsequenced -Wno-unused-value
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= marshall
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ @echo "NOTE: This entry uses non-standard args to main() that do not work with modern compilers."
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/marshall/hint.html b/1986/marshall/hint.html
deleted file mode 100644
index c313efbeb..000000000
--- a/1986/marshall/hint.html
+++ /dev/null
@@ -1,23 +0,0 @@
-Best layout
-
-Eric Marshall
-System Development Corporation, a Burroughs Company
-P.O. Box 517
-Paoli, PA.
-19301
-
-Judges' comments:
-
-This program prints the name of the picture. The layout is somewhat
-pretty through it is not the usual sort of output one would expect
-from printing a program!
-
-This program was selected for the 1987 t-shirt collection.
-
-This program is known to give some C compilers a problems.
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/marshall/hint.text b/1986/marshall/hint.txt
similarity index 79%
rename from 1986/marshall/hint.text
rename to 1986/marshall/hint.txt
index ac079f839..ff9f40c2b 100644
--- a/1986/marshall/hint.text
+++ b/1986/marshall/hint.txt
@@ -6,6 +6,12 @@ P.O. Box 517
Paoli, PA.
19301
+## To build:
+
+ make all
+
+NOTE: This entry uses non-standard args to main() that do not work with modern compilers.
+
# Judges' comments:
This program prints the name of the picture. The layout is somewhat
@@ -16,6 +22,8 @@ This program was selected for the 1987 t-shirt collection.
This program is known to give some C compilers a problems.
+NOTE: This entry requires a non-standard K&R C compiler to compile.
+
Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
All Rights Reserved. Permission for personal, educational or non-profit use is
granted provided this this copyright and notice are included in its entirety
diff --git a/1986/marshall/index.html b/1986/marshall/index.html
new file mode 100644
index 000000000..6cfb75c8b
--- /dev/null
+++ b/1986/marshall/index.html
@@ -0,0 +1,191 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Best layout
+Eric Marshall
+System Development Corporation, a Burroughs Company
+P.O. Box 517
+Paoli, PA.
+19301
+To build:
+ make all
+NOTE: This entry uses non-standard args to main() that do not work
+with modern compilers.
+
+This program prints the name of the picture. The layout is somewhat
+pretty through it is not the usual sort of output one would expect from
+printing a program!
+This program was selected for the 1987 t-shirt collection.
+This program is known to give some C compilers a problems.
+NOTE: This entry requires a non-standard K&R C compiler to
+compile.
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/marshall/orig.Makefile b/1986/marshall/orig.Makefile
new file mode 100644
index 000000000..3b430021f
--- /dev/null
+++ b/1986/marshall/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= marshall
+
+all: ${WINNERS}
+
+marshall: marshall.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/orig.Makefile b/1986/orig.Makefile
new file mode 100644
index 000000000..81055fe8b
--- /dev/null
+++ b/1986/orig.Makefile
@@ -0,0 +1,72 @@
+#!/usr/bin/env make
+#
+# 1986 makefile
+#
+# This work by Landon Curt Noll, Simon Cooper, and Leonid A. Broukhis
+# is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
+
+
+################
+# tool locations
+################
+#
+SHELL= /bin/bash
+CP= cp
+CPP= cpp
+GUNZIP= gunzip
+LD= ld
+MAKE= make
+RM= rm
+SED= sed
+TAR= tar
+TRUE= true
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+CC= cc
+
+
+###############
+# IOCCC winners
+###############
+#
+WINNERS= marshall hague applin bright stein holloway august pawka wall
+
+###################
+# build all entries
+###################
+#
+all:
+ @for i in ${WINNERS} ; do \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ done
+
+
+###############
+# utility rules
+###############
+#
+clean:
+ @for i in ${WINNERS} ; do \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ done
+
+clobber:
+ @for i in ${WINNERS} ; do \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ done
+
+install:
+ @for i in ${WINNERS} ; do \
+ echo "(cd $$i && $(MAKE) $@)"; \
+ (cd $$i && $(MAKE) $@); \
+ done
diff --git a/1986/pawka/Makefile b/1986/pawka/Makefile
index 166227697..f81b3935f 100644
--- a/1986/pawka/Makefile
+++ b/1986/pawka/Makefile
@@ -1,25 +1,591 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - pawka
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= pawka
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-pawka: pawka.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+#CWARN= -Wall -Wextra ${CSILENCE}
+CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-non-literal-null-conversion -Wno-unused-value
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= pawka
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/pawka/hint.html b/1986/pawka/hint.html
deleted file mode 100644
index 5b728de6d..000000000
--- a/1986/pawka/hint.html
+++ /dev/null
@@ -1,18 +0,0 @@
-Most illegible code
-
-Michael H. Pawka
-Naval Ocean Systems Center
-San Diego, Ca
-92152
-
-Judges' comments:
-
-The judges found this entry to be one of hardest to read without the
-aid of /lib/cpp and a good editor. When run, the program asks if it
-is obfuscated, of all things!
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/pawka/hint.text b/1986/pawka/hint.txt
similarity index 95%
rename from 1986/pawka/hint.text
rename to 1986/pawka/hint.txt
index aac527ffa..172c94605 100644
--- a/1986/pawka/hint.text
+++ b/1986/pawka/hint.txt
@@ -5,6 +5,10 @@ Naval Ocean Systems Center
San Diego, Ca
92152
+## To build:
+
+ make all
+
## Judges' comments:
The judges found this entry to be one of hardest to read without the
diff --git a/1986/pawka/index.html b/1986/pawka/index.html
new file mode 100644
index 000000000..72d2e1887
--- /dev/null
+++ b/1986/pawka/index.html
@@ -0,0 +1,184 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Most illegible code
+Michael H. Pawka
+Naval Ocean Systems Center
+San Diego, Ca
+92152
+To build:
+ make all
+
+The judges found this entry to be one of hardest to read without the
+aid of /lib/cpp and a good editor. When run, the program
+asks if it is obfuscated, of all things!
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/pawka/orig.Makefile b/1986/pawka/orig.Makefile
new file mode 100644
index 000000000..166227697
--- /dev/null
+++ b/1986/pawka/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= pawka
+
+all: ${WINNERS}
+
+pawka: pawka.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/rules.html b/1986/rules.html
new file mode 100644
index 000000000..c4cd9c6bb
--- /dev/null
+++ b/1986/rules.html
@@ -0,0 +1,267 @@
+
+
+
+
+
+
+ rules
+
+
+
+
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+WARNING: The rules and mailing address for the contest change from
+year to year. Be sure that you consult the current set of rules before
+submitting entries. ——————————————————————————-
+Subject: Third International Obfuscated C Code Contest Rules
+Newsgroups: net.lang.c Keywords: rules,1986,obfuscate,contest
+GOAL: To write the most Obscure working C program following the rules
+below:
+RULES: 1) The source must be 1024 bytes or less. NO exceptions!
+2) Include in your letter:
+ a) Name (or anonymous), Company/School, City, State and Country.
+ b) Your path from a major network site, if applicable.
+ c) A brief statement of what the program should do.
+ d) The Machine(s)/Operating system(s) on which it runs.
+ e) Enclose your source between the following lines:
+ ---start of program---
+ <place obfuscated source of 1024 bytes or less here>
+ ---end of program---
+
+3) The entry should be written in common C. (K&R + common extensions)
+
+4) The program must be of original work. All programs must be
+ in the public domain. All copyrighted programs will be rejected.
+
+5) Entries must be received between 31-Mar-86 and 30-May-86 0:00 GMT.
+ Email your entries to:
+
+ decwrl!nsc!obfuscate
+
+ Entries sent by UUCP Email will be confirmed starting 1-May-86.
+ People are encouraged to submit entries via Email, however one may
+ mail entries the following address:
+
+ International Obfuscated C Code Contest
+ National Semiconductor
+ Attn: Landon Noll Mail Stop: 7c266
+ 1135 Kern Ave.
+ Sunnyvale, CA 94086
+ U.S.A.
+AWARDS: Winners of each category and the best of Show will be posted
+to net.announce as well as being published in the May 86 issue of the
+“Micro/Systems Journal”. Winners also get to receive international
+fame/flame for their efforts!
+JUDGING: Awards will be given to the best entry in a number of
+categories. The actual category list will vary depending on the types of
+entries we receive. At the moment, we are considering using the
+following:
+ * The most obscure algorithm
+ * The worst abuse of the C preprocessor
+ * The strangest source layout
+ * The best small one line program
+ * The most useful program
+ * <anything else we need to give recognition to a good entry>
+
+Judging will be done by myself, Larry Bassel and other local people
+who are willing to help out.
+
+We will attempt to run each of them on a Vax 785/4.2BSD system.
+Don't let the lack of such a system stop you! Try to avoid operating
+system/machine specific code if you do not have such a system.
+Extra points will be given for programs which:
+
+ a) pass lint without complaint
+ b) do something quasi-interesting
+ c) are portable
+
+A larger program size was selected to allow for a wider range of
+program ideas. However if you don't need 1024 bytes don't use them.
+Given two programs with similar techniques and similar levels of
+obfuscation, we will tend to favor the more concise entry.
+POLL: We want to know what you think is the most poorly coded utility
+released with 4.xBSD and/or Sys V. The top results plus the best flames
+will be posted along with the contest results. To vote, please follow
+the guidelines below:
+1) Include at the top of the letter:
+ a) Name (or anonymous), Company/School, City, State and Country.
+ b) Your path from a major network site, if applicable.
+ c) the name of the poorly coded utility
+ d) the name of the operating system on which it is found
+ e) the line: <<<FLAME ON>>>
+ f) up to 1024 bytes of flames
+ g) the line: <<<FLAME OFF>>>
+
+2) Confine your vote to the standard set of commands. I.e., don't
+ flame about local commands or user contributed software.
+
+3) Submit your votes via Email to:
+
+ for 4.xBSD: decwrl!nsc!bsd_util
+ for Sys V: decwrl!nsc!sysV_util
+
+ or, you may send your votes by letter to the same address used by
+ the contest. Please place your votes on different sheets of paper.
+chongo //
+
+
+
diff --git a/1986/stein/Makefile b/1986/stein/Makefile
index 87b3fdf16..67e98d77c 100644
--- a/1986/stein/Makefile
+++ b/1986/stein/Makefile
@@ -1,27 +1,600 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - stein
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= stein
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-stein: stein.c
- -rm -f a.out
- cc $? -o $@
- -ln $@ a.out
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+CWARN= -Wall -Wextra ${CSILENCE}
+#CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int -Wno-int-conversion
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= stein
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ= ${PROG}.orig.o
+ALT_TARGET= ${PROG}.orig
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ -${RM} -f a.out
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+ -${LN} $@ a.out
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+${PROG}.orig: ${PROG}.orig.c
+ @echo "NOTE: The original source may not compile using modern compilers."
+ -${RM} -f a.out
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+ -${LN} $@ a.out
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ ${RM} -f a.out
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/stein/hint.html b/1986/stein/hint.html
deleted file mode 100644
index 96c048ae3..000000000
--- a/1986/stein/hint.html
+++ /dev/null
@@ -1,25 +0,0 @@
-Best one liner
-
-Jan Stein
-
-Judges' comments:
-
-NOTE: to avoid problems with news and mail, the single line was split
-into 3 lines. Join all lines into a single line to recreate
-the original file.
-
-Compile and link to a filename called ‘a.out’. Try the program with the
-following argument:
-
-a.out ^N^N
-
-
-(^N is ASCII control-N). One some machines, ^ML is needed to get it to
-output cleanly. Your system may require another set of characters.
-In time, you will figure out what it does. :-)
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/stein/hint.text b/1986/stein/hint.txt
similarity index 84%
rename from 1986/stein/hint.text
rename to 1986/stein/hint.txt
index 367b9f068..98a6c31d2 100644
--- a/1986/stein/hint.text
+++ b/1986/stein/hint.txt
@@ -2,6 +2,12 @@
Jan Stein
+## To build:
+
+ make all
+
+NOTE: The original entry may be built with "make alt".
+
Judges' comments:
> NOTE: to avoid problems with news and mail, the single line was split
@@ -17,6 +23,8 @@ following argument:
output cleanly. Your system may require another set of characters.
In time, you will figure out what it does. :-)
+NOTE: This entry requires a non-standard K&R C compiler to compile.
+
Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
All Rights Reserved. Permission for personal, educational or non-profit use is
granted provided this this copyright and notice are included in its entirety
diff --git a/1986/stein/index.html b/1986/stein/index.html
new file mode 100644
index 000000000..afe3baf36
--- /dev/null
+++ b/1986/stein/index.html
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+Best one liner
+Jan Stein
+To build:
+ make all
+NOTE: The original entry may be built with “make alt”.
+Judges’ comments:
+
+NOTE: to avoid problems with news and mail, the single line was split
+into 3 lines. Join all lines into a single line to recreate the original
+file.
+
+Compile and link to a filename called ‘a.out’. Try the program with
+the following argument:
+a.out ^N^N
+(^N is ASCII control-N). One some machines, ML is needed
+to get it to output cleanly. Your system may require another set of
+characters. In time, you will figure out what it does. :-)
+NOTE: This entry requires a non-standard K&R C compiler to
+compile.
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/stein/orig.Makefile b/1986/stein/orig.Makefile
new file mode 100644
index 000000000..87b3fdf16
--- /dev/null
+++ b/1986/stein/orig.Makefile
@@ -0,0 +1,27 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= stein
+
+all: ${WINNERS}
+
+stein: stein.c
+ -rm -f a.out
+ cc $? -o $@
+ -ln $@ a.out
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/1986/stein/stein.c b/1986/stein/stein.c
index cf731c84a..013d96fd9 100644
--- a/1986/stein/stein.c
+++ b/1986/stein/stein.c
@@ -1,3 +1,3 @@
-typedef char*z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_%
+typedef char**z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_%
25))+'0',O/=o,_/=25))&&(b<1||(O=time(&b)%0250600,main(~5,*(z*)Z),write(1,*(z*)Z
,9)));}
diff --git a/1986/stein/stein.orig.c b/1986/stein/stein.orig.c
new file mode 100644
index 000000000..cf731c84a
--- /dev/null
+++ b/1986/stein/stein.orig.c
@@ -0,0 +1,3 @@
+typedef char*z;O;o;_=33303285;main(b,Z)z Z;{b=(b>=0||(main(b+1,Z+1),*Z=O%(o=(_%
+25))+'0',O/=o,_/=25))&&(b<1||(O=time(&b)%0250600,main(~5,*(z*)Z),write(1,*(z*)Z
+,9)));}
diff --git a/1986/wall/Makefile b/1986/wall/Makefile
index 77b894c02..dbcff239b 100644
--- a/1986/wall/Makefile
+++ b/1986/wall/Makefile
@@ -1,25 +1,593 @@
-# %W% %G% %U%
+#!/usr/bin/env make
#
-# 1986 makefile
+# IOCCC 1986 winning entry - wall
+
+################################################################################
#
-# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
-# All Rights Reserved. Permission for personal, educational or non-profit
-# use is granted provided this this copyright and notice are included in its
-# entirety and remains unaltered. All other uses must receive prior permission
-# from Landon Curt Noll and Larry Bassel.
+# An Historical Makefile NOTE:
+#
+# The orig.Makefile, if it exits, is the original Makefile before this IOCCC
+# year directory was reworked so that entries are in separate directories.
+# This also applies to any orig.ansi.mk and orig.common.mk files.
+#
+# Several Makefiles were modified / formed in 2022, and as such it may have
+# elements that are not historically compatible with way entries were built.
+# The orig.Makefile, if it exits, is a copy of the pre-modified Makefile.
+#
+# Regarding individual entries:
+#
+# IOCCC winning entry code may not work on your system. Even with standards,
+# conditions and build environments change, especially when it comes to more
+# extreme code such you might find in an IOCCC winner. Moreover, what was
+# allowed and liked in one IOCCC contest may no longer be liked/allowed in
+# later IOCCC years.
+#
+# Corrections on winning author and fixing typos in remarks are VERY WELCOME.
+#
+# GitHub pull requests are welcome:
+#
+# If you have a patch that might make running an entry work in modern Unix-like
+# environments, please create a GitHub pull request for the IOCCC judgess to
+# consider.
+#
+# Suggestions and corrections regarding Makefiles, winning author information,
+# fixing typos in remarks, and code patches are welcome via opening a GitHub
+# issue or better yet, by creating a GitHub pull request for the IOCCC judges
+# to consider. To form a GitHub issue or GitHub pull, please visit:
+#
+# https://github.com/ioccc-src/winner
+#
+################################################################################
+
+# This work by Landon Curt Noll and Leonid A. Broukhis is licensed under:
+#
+# Creative Commons Attribution-ShareAlike 3.0 Unported License.
+#
+# See: http://creativecommons.org/licenses/by-sa/3.0/
-SHELL= /bin/sh
-WINNERS= wall
+#############################
+# shell used by this Makefile
+#############################
+#
+SHELL= /bin/bash
-all: ${WINNERS}
+#######################
+# common tool locations
+#######################
+#
+A2P= a2p
+AR= ar
+ASA= asa
+AT= at
+ATQ= atq
+ATRM= atrm
+AWK= awk
+BANNER= banner
+BASE64= base64
+BASENAME= basename
+BATCH= batch
+BC= bc
+BINHEX= binhex
+BISON= bison
+BUNZIP2= bunzip2
+BZCAT= bzcat
+BZCMP= bzcmp
+BZDIFF= bzdiff
+BZEGREP= bzegrep
+BZFGREP= bzfgrep
+BZGREP= bzgrep
+BZIP2= bzip2
+BZLESS= bzless
+BZMORE= bzmore
+C2PH= c2ph
+C89= c89
+C99= c99
+CAL= cal
+CALC= calc
+CAT= cat
+CD= cd
+CHFLAGS= chflags
+CHGRP= chgrp
+CHMOD= chmod
+CKSUM= cksum
+CLANG= clang
+CLANG_PLUSPLUS= clang++
+CLEAR= clear
+CMP= cmp
+COL= col
+COLLDEF= colldef
+COLRM= colrm
+COLUMN= column
+COMPRESS= compress
+CP= cp
+CPIO= cpio
+CPP= cpp
+CRC32= crc32
+CSH= csh
+CSPLIT= csplit
+CURL= curl
+CUT= cut
+C_PLUSPLUS= c++
+C_PLUSPLUS_FILT= c++filt
+DATE= date
+DC= dc
+DD= dd
+DF= df
+DIFF3= diff3
+DIFF= diff
+DIG= dig
+DIRNAME= dirname
+ED= ed
+EGREP= egrep
+ENV= env
+EQN= eqn
+ETAGS= etags
+EXPECT= expect
+EXPR= expr
+FALSE= false
+FGREP= fgrep
+FILE= file
+FIND2PERL= find2perl
+FIND= find
+FLEX= flex
+FLEX_PLUSPLUS= flex++
+FMT= fmt
+FOLD= fold
+FS_USAGE= fs_usage
+FUNZIP= funzip
+FUSER= fuser
+GCC= gcc
+GDIFFMK= gdiffmk
+GENCAT= gencat
+GENSTRINGS= genstrings
+GETOPT= getopt
+GETOPTS= getopts
+GNUMAKE= gnumake
+GREP= grep
+GROFF= groff
+GROFFER= groffer
+GROG= grog
+GROPS= grops
+GROTTY= grotty
+GUNZIP= gunzip
+GVIM= gvim
+GZCAT= gzcat
+GZEXE= gzexe
+GZIP_PROG= gzip
+G_PLUSPLUS= g++
+H2PH= h2ph
+H2XS= h2xs
+HASH= hash
+HEAD= head
+HOSTNAME_PROG= hostname
+ICONV= iconv
+ID= id
+INDENT= indent
+INFO= info
+JOT= jot
+KILL= kill
+KSH= ksh
+LAST= last
+LD= ld
+LESSECHO= lessecho
+LEX= len
+LINK= link
+LN= ln
+LS= ls
+M4= m4
+MAKE= make
+MAN= man
+MKDIR= mkdir
+MKFIFo= mkfifo
+MKTEMP= mktemp
+MV= mv
+NANO= nano
+NASM= nasm
+NEQN= neqn
+NICE= nice
+NL= nl
+NM= nm
+NOHUP= nohup
+NROFF= nroff
+NSLOOKUP= nslookup
+OD= od
+OPENSSL= openssl
+PASTE= paste
+PATCH= patch
+PATHCHK= pathchk
+PAX= pax
+PERL= perl
+PICO= pico
+PR= pr
+PRINTENV= printenv
+PS= ps
+PTAR= ptar
+PTARDIFF= ptardiff
+PTARGREP= ptargrep
+PWD= pwd
+PYDOC= pydoc
+PYTHON= python
+PYTHONW= pythonw
+READLINK= readlink
+RENICE= renice
+RESET= reset
+REV= rev
+RI= ri
+RM= rm
+RMDIR= rmdir
+RSYNC= rsync
+RUBY= ruby
+RVIM= rvim
+SAY= say
+SCP= scp
+SCREEN= screen
+SCRIPT= script
+SDIFF= sdiff
+SED= sed
+SEQ= seq
+SFTP= sftp
+SH= sh
+SHA1= sha1
+SHA= sha
+SHAR= shar
+SHASUM5_18= shasum5.18
+SHASUM= shasum
+SIZE= size
+SLEEP= sleep
+SORT= sort
+SSH= ssh
+STAT= stat
+STRIP= strip
+STTY= stty
+SUM= sum
+SYNC= sync
+TABS= tabs
+TAIL= tail
+TAR= tar
+TEE= tee
+TEST= test
+TFTP= tftp
+TIDY= tidy
+TIME= time
+TOP= top
+TOUCH= touch
+TPUT= tout
+TPUT= tput
+TR= tr
+TROFF= troff
+TRUE= true
+TSET= tset
+TSORT= tsort
+UL= ul
+UNAME= uname
+UNCOMPRESS= uncompress
+UNEXPAND= unexpand
+UNIFDEF= unifdef
+UNIFDEFALL= unifdefall
+UNIQ= uniq
+UNITS= units
+UNLINK= unlink
+UNZIP= unzip
+UNZIPSFX= unzipsfx
+UPTIME= uptime
+UUDECODE= uudecode
+UUENCODE= uuencode
+UUIDGEN= uuidgen
+VI= vi
+VIEW= view
+VIM= vim
+VIMDIFF= vimdiff
+W= w
+WAIT4PATH= wait4path
+WAIT= wait
+WC= wc
+WGET= wget
+WHAT= what
+WHATIS= whatis
+WHICH= which
+WHO= who
+WHOAMI= whoami
+WHOIS= whois
+WRTIE= write
+XAR= xar
+XARGS= xargs
+XATTR= xattr
+XXD= xxd
+YACC= yacc
+YES= yes
+ZCAT= zcat
+ZCMP= zcmp
+ZDIFF= zdiff
+ZEGREP= zegrep
+ZFGREP= zfgrep
+ZFORCE= zforce
+ZGREP= zgrep
+ZIP= zip
+ZIPCLOAK= zipcloak
+ZIPGREp= zipgrep
+ZIPINFo= zipinfo
+ZIPNOTE= zipnote
+ZIPSPLIT= zipsplit
+ZLESS= zless
+ZMORE= zmore
+ZNEW= znew
+ZPRINT= zprint
+ZSH= zsh
-wall: wall.c
- cc $? -o $@
+# Set X11_LIBDIR to the directory where the X11 library resides
+#
+#X11_LIBDIR= /usr/X11R6/lib
+#X11_LIBDIR= /usr/X11/lib
+X11_LIBDIR= /opt/X11/lib
+
+# Set X11_INCLUDEDIR to the directory where the X11 include files reside
+#
+#X11_INCDIR= /usr/X11R6/include
+#X11_INCDIR= /usr/X11/include
+X11_INCDIR= /opt/X11/include
+
+# Compiler warnings
+#
+#CWARN=
+#CWARN= -Wall
+#CWARN= -Wall -Wextra
+#CWARN= -Wall -Wextra ${CSILENCE}
+CWARN= -Wall -Wextra -pedantic ${CSILENCE}
+#CWARN= -Wall -Wextra -Weverything
+#CWARN= -Wall -Wextra -Weverything -pedantic
+#CWARN= -Wall -Wextra -Weverything -pedantic ${CSILENCE}
+
+# Silence warnings that ${CWARN} would normally complain about
+#
+CSILENCE= -Wno-error -Wno-implicit-function-declaration -Wno-implicit-int \
+ -Wno-macro-redefined -Wno-parentheses -Wno-c99-extensions
+#CSILENCE= -Wno-implicit-int
+
+# compiler standard
+#
+#CSTD=
+#CSTD= -ansi
+CSTD= -std=gnu89
+
+# compiler bit architecture
+#
+# Some entries require 32-bitness:
+# ARCH= -m32
+#
+# Some entries require 64-bitness:
+# ARCH= -m64
+#
+# By default we assume nothing:
+#
+ARCH=
+
+# defines that are needed to compile
+#
+CDEFINE=
+#CDEFINE= -DIOCCC=26
+
+# include files that are needed to compile
+#
+CINCLUDE=
+#CINCLUDE= -include stdlib.h
+#CINCLUDE= -include stdio.h
+#CINCLUDE= -include stdlib.h -include stdio.h
+#CINCLUDE= -I ${X11_INCDIR}
+#CINCLUDE= -I ${HOMEBREW_PREFIX}/include/SDL2
+
+# optimization
+#
+# Most compiles will safely use -O2. Some can use only -O1 or -O.
+# A few compilers have broken optimizers or this entry make break
+# under those buggy optimizers and thus you may not want anything.
+# Reasonable compilers will allow for -O3.
+#
+#OPT=
+#OPT= -O
+#OPT= -O1
+#OPT= -O2
+OPT= -O3
+
+# default flags for ANSI C compilation
+#
+CFLAGS= ${CSTD} ${CWARN} ${ARCH} ${CDEFINE} ${CINCLUDE} ${OPT}
+
+# Libraries needed to build
+#
+LIBS=
+#LIBS= -lm
+#LIBS= -L ${X11_LIBDIR} -lX11
+#LIBS= -L ${HOMEBREW_PREFIX}/lib -lSDL
+
+# ANSI compiler
+#
+# Set CC to the name of your ANSI compiler.
+#
+# Some entries seem to need gcc. If you have gcc, set
+# both CC and MAY_NEED_GCC to gcc.
+#
+# If you do not have gcc, set CC to the name of your ANSI compiler, and
+# set MAY_NEED_GCC to either ${CC} (and hope for the best) or to just :
+# to disable such programs.
+#
+CC= cc
+#CC=clang
+MAY_NEED_GCC= gcc
+
+
+##############################
+# Special flags for this entry
+##############################
+#
+ENTRY= wall
+PROG= ${ENTRY}
+#
+OBJ= ${PROG}.o
+DATA=
+TARGET= ${PROG}
+#
+ALT_OBJ=
+ALT_TARGET=
+
+
+#################
+# build the entry
+#################
+#
+all: ${DATA} ${TARGET}
+ @${TRUE}
+
+.PHONY: alt data everything clean clobber nuke dist_clean \
+ install build love haste waste make easter_egg \
+ supernova deep_magic magic charon pluto
+
+${PROG}: ${PROG}.c
+ @echo "NOTE: This entry uses non-standard args to main() that do not work with modern compilers."
+ ${CC} ${CFLAGS} $< -o $@ ${LIBS}
+
+# alternative executable
+#
+alt: ${DATA} ${ALT_TARGET}
+ @${TRUE}
+
+# data files
+#
+data: ${DATA}
+ @${TRUE}
+
+
+###############
+# utility rules
+###############
+#
+everything: all alt
clean:
- rm -f core
+ ${RM} -f ${OBJ} ${ALT_OBJ}
+ @-if [ -f indent.c ]; then \
+ ${ECHO} ${RM} -f indent.c; \
+ ${RM} -f indent.c; \
+ fi
+
clobber: clean
- rm -f ${WINNERS} a.out
-install: all
- @echo are you kidding'??'
+ ${RM} -f ${TARGET} ${ALT_TARGET}
+ @-if [ -e sandwich ]; then \
+ ${RM} -f sandwich; \
+ echo 'ate sandwich'; \
+ fi
+
+nuke: clobber
+ @${TRUE}
+
+dist_clean: nuke
+ @${TRUE}
+
+install:
+ @echo "Dr. Spock says that is not logical!"
+ @${TRUE}
+
+# you may be able to misunderstand the source by reading indent.c
+#
+indent.c: ${PROG}.c
+ @if which "${GINDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${GINDENT} < $< > $@"; \
+ ${GINDENT} < $< > $@; \
+ elif which "${INDENT}" >/dev/null 2>&1; then \
+ ${ECHO} ${RM} -f $@; \
+ ${RM} -f $@; \
+ ${ECHO} "${INDENT} < $< > $@"; \
+ ${INDENT} < $< > $@; \
+ else \
+ ${ECHO} "no intent tool found, ident $< yourself, sorry"; \
+ ${ECHO} "exit 1"; \
+ exit 1; \
+ fi
+
+
+##################
+# 133t hacker rulz
+##################
+#
+love:
+ @echo 'not war?'
+ @${TRUE}
+
+haste:
+ $(MAKE) waste
+ @${TRUE}
+
+waste:
+ @echo 'haste'
+ @${TRUE}
+
+make:
+ @echo 'Participate in a maker faire'
+ @${TRUE}
+
+easter_egg:
+ @echo you expected to often misunderstand this $${RANDOM} magic
+ @echo chongo '' "/\\oo/\\"
+ @echo Eggy
+
+fabricate fashion form frame manufacture produce: make
+ @${TRUE}
+
+sandwich:
+ @if [ `id -u` -eq 0 ]; then \
+ echo 'Okay.'; \
+ echo $${RANDOM}`date +%s`$${RANDOM} > $@; \
+ else \
+ echo 'What? Make it yourself.'; \
+ exit 1; \
+ fi
+
+# Understand the history of the Homebrew Computer Club
+# as well as the West Coast Computer Faire and
+# you might be confused different. :-)
+#
+supernova: nuke
+ @-if [ -r .code_anal ]; then \
+ ${RM} -f .code_anal_v6; \
+ else \
+ echo "planet deniers, like some members of the IAU, are so cute when they try to defend their logic"; \
+ fi
+ @echo A $@ helps ${MAKE} the elements that help form planets
+ @${TRUE}
+
+deep_magic:
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --deep_magic 7889066cdbdf09b0408021754586e895be641cc9be29e7eafd3ca65359541f17 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ sleep 2; \
+ echo "Wrong! Do it again!"; \
+ fi
+ @${TRUE}
+
+magic: deep_magic
+ @-if [ -r .code_anal ]; then \
+ ccode_analysis --level 20003 --mode 5717175 --FNV1a_hash_512_bit -v2 "${PROG}" "${PROG}.c"; \
+ else \
+ echo "If you don't eat yer meat, you can't have any pudding!"; \
+ echo "How can you have any pudding if you don't eat yer meat?!"; \
+ fi
+ @${TRUE}
+
+# The IOCCC resident astronomer states
+#
+charon: supernova
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore IAU, $@ is a planet
+
+pluto: supernova
+ ${MAKE} charon
+ @echo $@ is a dwarf planet
+ @echo dwarf is a type of planet
+ @echo therefore, $@ is a planet
+ @echo get used to having lots of planets because a $< can ${MAKE} a lot of them
diff --git a/1986/wall/hint.html b/1986/wall/hint.html
deleted file mode 100644
index d80b57e07..000000000
--- a/1986/wall/hint.html
+++ /dev/null
@@ -1,25 +0,0 @@
-The grand prize in most well-rounded in confusion
-
-Larry Wall
-System Development Corporation
-Santa Monica
-California
-US of A
-
-Judges' comments:
-
-The original version did not have a ‘;’ character in the first line.
-This caused a number of System V C pre-preprocessors to gripe about a
-syntax error.
-
-This program is a masterpiece of obfuscation and humor. Larry Wall
-(the hacker who gave us rn and patch) asks you to compile and consider
-the warning message generated by the C compiler. Then execute the
-program and type charters into its standard input. You will see why
-the compiler documents the program.
-
-Copyright © 1986, Landon Curt Noll & Larry Bassel.
-All Rights Reserved. Permission for personal, educational or non-profit use is
-granted provided this this copyright and notice are included in its entirety
-and remains unaltered. All other uses must receive prior permission in writing
-from both Landon Curt Noll and Larry Bassel.
diff --git a/1986/wall/hint.text b/1986/wall/hint.txt
similarity index 83%
rename from 1986/wall/hint.text
rename to 1986/wall/hint.txt
index ed0eb46f6..d792af59f 100644
--- a/1986/wall/hint.text
+++ b/1986/wall/hint.txt
@@ -6,6 +6,12 @@ Santa Monica
California
US of A
+## To build:
+
+ make all
+
+NOTE: This entry uses non-standard args to main() that do not work with modern compilers.
+
## Judges' comments:
The original version did not have a ';' character in the first line.
@@ -18,6 +24,8 @@ the warning message generated by the C compiler. Then execute the
program and type charters into its standard input. You will see why
the compiler documents the program.
+NOTE: This entry requires a non-standard K&R C compiler to compile.
+
Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
All Rights Reserved. Permission for personal, educational or non-profit use is
granted provided this this copyright and notice are included in its entirety
diff --git a/1986/wall/index.html b/1986/wall/index.html
new file mode 100644
index 000000000..71bdb14e1
--- /dev/null
+++ b/1986/wall/index.html
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+ hint
+
+
+
+
+The grand
+prize in most well-rounded in confusion
+Larry Wall
+System Development Corporation
+Santa Monica
+California
+US of A
+To build:
+ make all
+NOTE: This entry uses non-standard args to main() that do not work
+with modern compilers.
+
+The original version did not have a ‘;’ character in the first line.
+This caused a number of System V C pre-preprocessors to gripe about a
+syntax error.
+This program is a masterpiece of obfuscation and humor. Larry Wall
+(the hacker who gave us rn and patch) asks you to compile and consider
+the warning message generated by the C compiler. Then execute the
+program and type charters into its standard input. You will see why the
+compiler documents the program.
+NOTE: This entry requires a non-standard K&R C compiler to
+compile.
+Copyright (c) 1986, Landon Curt Noll & Larry Bassel. All Rights
+Reserved. Permission for personal, educational or non-profit use is
+granted provided this this copyright and notice are included in its
+entirety and remains unaltered. All other uses must receive prior
+permission in writing from both Landon Curt Noll and Larry Bassel.
+
+
diff --git a/1986/wall/orig.Makefile b/1986/wall/orig.Makefile
new file mode 100644
index 000000000..77b894c02
--- /dev/null
+++ b/1986/wall/orig.Makefile
@@ -0,0 +1,25 @@
+# %W% %G% %U%
+#
+# 1986 makefile
+#
+# Copyright (c) 1986, Landon Curt Noll & Larry Bassel.
+# All Rights Reserved. Permission for personal, educational or non-profit
+# use is granted provided this this copyright and notice are included in its
+# entirety and remains unaltered. All other uses must receive prior permission
+# from Landon Curt Noll and Larry Bassel.
+
+
+SHELL= /bin/sh
+WINNERS= wall
+
+all: ${WINNERS}
+
+wall: wall.c
+ cc $? -o $@
+
+clean:
+ rm -f core
+clobber: clean
+ rm -f ${WINNERS} a.out
+install: all
+ @echo are you kidding'??'
diff --git a/years-spoiler.html b/years-spoiler.html
index 4628c7020..f5c436e75 100644
--- a/years-spoiler.html
+++ b/years-spoiler.html
@@ -3536,91 +3536,104 @@ that works for both traditional K&R and ANSI C preprocessors.
3rd International Obfuscated C Code Contest (1986)
applin - hello world works under cc, /bin/sh, and f77
august - struct-heavy e-computation, memory allocation with sbrk
bright - hex dump, cpp compressed, uses lost of << for constants
hague - morse code filter written with 'DIT DAH _DIT DIT_DAH'
holloway - prints hello world! via a recursive main
marshall - train engine-shaped program prints "choo choo"
pawka - prints 'obfuscated?' big, uses xyyyx idents...
stein - prints HHMMSS in UTC time
wall - dvorak keyboard emulator
2nd International Obfuscated C Code Contest (1985)
diff --git a/years.html b/years.html
index bd8a9b7d1..f05a81de6 100644
--- a/years.html
+++ b/years.html
@@ -3519,91 +3519,104 @@ a summary description of all of the winners.
3rd International Obfuscated C Code Contest (1986)
applin
august
bright
hague
holloway
marshall
pawka
stein
wall
2nd International Obfuscated C Code Contest (1985)