diff --git a/1992/buzzard.2/README.md b/1992/buzzard.2/README.md index a4f2d027a..7818aa602 100644 --- a/1992/buzzard.2/README.md +++ b/1992/buzzard.2/README.md @@ -157,7 +157,7 @@ tackle this project. on smaller machines; `m[]` needs to be at least 2000 long, though. I say `first` is portable mainly because it uses native types. Unlike -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language), which +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)), which traditionally allows byte and multi-byte operations, all operations are performed on C `int`s. That means `first` code is only as portable as the same code would be in C. As in C, the result of dividing `-1` by `2` is machine (or @@ -205,7 +205,7 @@ represents a step backwards, in more ways than one.) ### What exactly is `first`, then? `first` is a tiny interpreter which implements a sufficient pseudo-subset of -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) to allow it +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) to allow it to bootstrap a relatively complete version of FORTH (based loosely on forth79), which I call THIRD. Complete relative to what, I'm not sure. @@ -217,11 +217,11 @@ the design file, design, I give a justification for why each primitive in THIRD is sorta slow, because `first` has so few primitives that many things that are primitives in -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) (like swap) +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) (like swap) take a significant amount of time in THIRD. When you get the `Ok.` message from `third`, try out some sample -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) code +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) code (`first` has no way of knowing if keyboard input is waiting, so it can't actually prompt you in a normal way. It only prints `'Ok.'` after you define a word). @@ -266,7 +266,7 @@ If you compile the basic THIRD system without the help word (strings take up one 1000 `int`s (plus the return stack). Thus THIRD gives you a relatively complete -[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) system in +[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language)) system in less than 700 chars of C source + about 1000 `int`s of memory--and it's portable too (you could copy over the THIRD memory dump to another machine, in theory). If the above numbers seem to you to be mixing apples and oranges (C source and diff --git a/1992/buzzard.2/index.html b/1992/buzzard.2/index.html index 2dcfbb2a8..285390ac4 100644 --- a/1992/buzzard.2/index.html +++ b/1992/buzzard.2/index.html @@ -484,7 +484,7 @@ tackle this project.
first is reasonably portable. You may need to adjust the size of the buffers
on smaller machines; m[] needs to be at least 2000 long, though.
I say first is portable mainly because it uses native types. Unlike
-[FORTH](https://en.wikipedia.org/wiki/Forth_(programming_language), which
+FORTH, which
traditionally allows byte and multi-byte operations, all operations are
performed on C ints. That means first code is only as portable as the same
code would be in C. As in C, the result of dividing -1 by 2 is machine (or
diff --git a/1993/leo/README.md b/1993/leo/README.md
index 35f32fd93..5d8778a44 100644
--- a/1993/leo/README.md
+++ b/1993/leo/README.md
@@ -37,7 +37,7 @@ International Internet community.
## Author's remarks:
This program plays
-[Mastermind](https://en.wikipedia.org/wiki/Mastermind_(board_game), if you call
+[Mastermind](https://en.wikipedia.org/wiki/Mastermind_(board_game)), if you call
it by a name ending by 'd', otherwise it _solves_ Mastermind. Call it without
parameters to use 6 digits (colors), or indicate the number of possible digits
(you cannot change the number of positions so easily).
diff --git a/1993/leo/index.html b/1993/leo/index.html
index 665b3b874..925951376 100644
--- a/1993/leo/index.html
+++ b/1993/leo/index.html
@@ -414,7 +414,7 @@ for instructions of how to play.
This program plays -[Mastermind](https://en.wikipedia.org/wiki/Mastermind_(board_game), if you call +Mastermind, if you call it by a name ending by ‘d’, otherwise it solves Mastermind. Call it without parameters to use 6 digits (colors), or indicate the number of possible digits (you cannot change the number of positions so easily).
diff --git a/1993/rince/README.md b/1993/rince/README.md index aa4d70c54..7ad9415ce 100644 --- a/1993/rince/README.md +++ b/1993/rince/README.md @@ -74,7 +74,7 @@ Use `rince.alt` or `rince.alt2` as you would `rince` above. The author has provided several CABBAGE files for your amusement: - [rince.data1](%%REPO_URL%%/1993/rince/rince.data1) plays -[Breakout](https://en.wikipedia.org/wiki/Breakout_(video_game). Keys are `,` +[Breakout](https://en.wikipedia.org/wiki/Breakout_(video_game)). Keys are `,` for left, `/` for right, and `.` for 'fire the ball'. - [rince.data2](%%REPO_URL%%/1993/rince/rince.data2) plays the old [James Bonfield](../../authors.html#James_Bonfield)'s diff --git a/1993/rince/index.html b/1993/rince/index.html index 447087166..fae0b16f5 100644 --- a/1993/rince/index.html +++ b/1993/rince/index.html @@ -430,7 +430,7 @@ changed).The author has provided several CABBAGE files for your amusement:
rince.data1 plays
-[Breakout](https://en.wikipedia.org/wiki/Breakout_(video_game). Keys are ,
+Breakout. Keys are ,
for left, / for right, and . for ‘fire the ball’.
rince.data2 plays the old James Bonfield’s (1991/rince game from IOCCC 1991.
We believe you will be impressed with this year’s winning entries The Best of Show is a fine example of obfuscation. But don’t ignore the other entries! There are games, programs that speak, ones that compile code -and one that might run binaries you already have.
+and one that might run binaries you already have.The Best/Worst Abuse of the Rules is technically allowed by the rules. This year we awarded it again, but don’t assume you can get away with using the same technique next time … :-)
diff --git a/2011/eastman/README.md b/2011/eastman/README.md index e0c8478bb..c2269beb9 100644 --- a/2011/eastman/README.md +++ b/2011/eastman/README.md @@ -48,7 +48,7 @@ aren't familiar with it. Back in its day, this demo inspired lust and awe in geeks around the world. The graphics are -[raytraced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics), with +[raytraced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics)), with procedural textures on the ball and the back wall. I did cheat a little to simplify the calculations: it uses a parallel projection, but textures the back wall to look as if there were a floor being viewed in perspective. The shadow diff --git a/2011/eastman/index.html b/2011/eastman/index.html index 9099943fc..35baa4caa 100644 --- a/2011/eastman/index.html +++ b/2011/eastman/index.html @@ -421,7 +421,7 @@ the Commodore Amiga. SeeThe graphics are -[raytraced](https://en.wikipedia.org/wiki/Ray_tracing_(graphics), with +raytraced, with procedural textures on the ball and the back wall. I did cheat a little to simplify the calculations: it uses a parallel projection, but textures the back wall to look as if there were a floor being viewed in perspective. The shadow diff --git a/2012/endoh1/README.md b/2012/endoh1/README.md index c42d8337c..0eb5f3b3e 100644 --- a/2012/endoh1/README.md +++ b/2012/endoh1/README.md @@ -292,7 +292,7 @@ casting) it to an integer-type variable. [pour-out.txt](%%REPO_URL%%/2012/endoh1/pour-out.txt) pours you a cup of tea. [tanada.txt](%%REPO_URL%%/2012/endoh1/tanada.txt) simulates "Terrace farming". ("Tanada" means a -"[terraced rice](https://en.wikipedia.org/wiki/Terrace_(earthworks) fields)" in Japanese.) +"[terraced rice](https://en.wikipedia.org/wiki/Terrace_(earthworks) fields)" in Japanese.) [clock.txt](%%REPO_URL%%/2012/endoh1/clock.txt) is a "water" clock created by HAMANO Tsukasa. diff --git a/2012/hou/README.md b/2012/hou/README.md index dc5e8ff11..0a70559f2 100644 --- a/2012/hou/README.md +++ b/2012/hou/README.md @@ -132,7 +132,7 @@ As an extra tweak, the text message actually does something useful. Remove the [^1]: [Russ Cox, Regular Expression Matching: the Virtual Machine Approach](http://swtch.com/~rsc/regexp/regexp2.html) -[^2]: [Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...](http://swtch.com/~rsc/regexp/regexp1.html) +[^2]: [Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby, ...)](http://swtch.com/~rsc/regexp/regexp1.html) + bin/find-missing-links.sh -v 1 +``` + +If no missing links are found, this tool exits 0 with no output +(debug messages not withstanding), otherwise this tool will exit non-zero. + +NOTE: If the markdown link is malformed, this tool +might generate an error about a file that does exist. +If this tool claims that a file is missing that does exist, +look for a malformed markdown line and/or use of markdown +that is **NOT** an IOCCC markdown best practice. + +See [IOCCC markdown best practices](markdown.html) for more info. + + ### [gen-authors.sh](%%DOCROOT_SLASH%%bin/gen-authors.sh) Generate the top level `/authors.html` page. diff --git a/bin/find-missing-links.sh b/bin/find-missing-links.sh new file mode 100755 index 000000000..1912c443b --- /dev/null +++ b/bin/find-missing-links.sh @@ -0,0 +1,532 @@ +#!/usr/bin/env bash +# +# find-missing-links.sh - find markdown links to missing local files +# +# Find all markdown links to local files that do not exist. +# +# This tool does **NOT** check of a remote URL exists. +# This tool only checks on links to local files. +# +# This tool does **NOT** check links into a given place in a file. +# This tool only checks that local files linked by markdown exist. +# +# This tool does **NOT** check HTML file links. +# This tool only checks markdown based links. +# +# NOTE: If the markdown link is malformed, this tool +# might generate an error about a file that does exist. +# If this tool claims that a file is missing that does exist, +# look for a malformed markdown line and/or use of markdown +# that is **NOT** an IOCCC markdown best practice. +# +# See the IOCCC markdown best practices file, markdown.html, for more info. +# +# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved. +# +# Permission to use, copy, modify, and distribute this software and +# its documentation for any purpose and without fee is hereby granted, +# provided that the above copyright, this permission notice and text +# this comment, and the disclaimer below appear in all of the following: +# +# supporting documentation +# source copies +# source works derived from this source +# binaries derived from this source or from derived source +# +# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, +# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR +# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF +# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. +# +# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\ +# +# Share and enjoy! :-) + +# firewall - run only with a bash that is version 5.1.8 or later +# +# The "/usr/bin/env bash" command must result in using a bash that +# is version 5.1.8 or later. +# +# We could relax this version and insist on version 4.2 or later. Versions +# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require +# bash version 5.1.8 or later. +# +# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we +# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we +# use often use is "version 5.1.8(1)-release" or later. These versions are what +# we initially tested. We recommend you either upgrade bash or install a newer +# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash +# that is version 5.1.8 or later. +# +# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like +# bash "version 3.2.57(1)-release". That macOS shipped version of bash +# will NOT work. For users of macOS we recommend you install Homebrew, +# (see https://brew.sh), and then run "brew install bash" which will +# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH +# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the +# Homebrew bash is). +# +# NOTE: And while MacPorts might work, we noticed a number of subtle differences +# with some of their ported tools to suggest you might be better off +# with installing Homebrew (see https://brew.sh). No disrespect is intended +# to the MacPorts team as they do a commendable job. Nevertheless we ran +# into enough differences with MacPorts environments to suggest you +# might find a better experience with this tool under Homebrew instead. +# +if [[ -z ${BASH_VERSINFO[0]} || + ${BASH_VERSINFO[0]} -lt 5 || + ${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 || + ${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then + echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2 + echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2 + echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \ + ""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \ + "finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2 + exit 4 +fi + + +# setup bash file matching +# +# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables. +# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions. +# +shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded +shopt -u failglob # disable error message if no matches are found +shopt -u dotglob # disable matching files starting with . +shopt -u nocaseglob # disable strict case matching +shopt -u extglob # enable extended globbing patterns +shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories + +# set variables referenced in the usage message +# +export VERSION="1.0 2024-04-28" +NAME=$(basename "$0") +export NAME +export V_FLAG=0 +GIT_TOOL=$(type -P git) +export GIT_TOOL +if [[ -z "$GIT_TOOL" ]]; then + echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2 + exit 5 +fi +"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1 +status="$?" +if [[ $status -eq 0 ]]; then + TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel) +fi +export TOPDIR + + +# usage +# +export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir] + + -h print help message and exit + -v level set verbosity level (def level: 0) + -V print version string and exit + + -d topdir set topdir (def: $TOPDIR) + +Exit codes: + 0 all OK + 1 missing links found + 2 -h and help string printed or -V and version string printed + 3 command line error + 4 bash version is too old + 6 problems found with or in the topdir or topdir/YYYY directory + 7 problems found with or in the entry topdir/YYYY/dir directory + >= 10 internal error + +$NAME version: $VERSION" + + +# fast_dirname - perform dirname(1) without calling a command +# +# This is very similar with dirname(1) except it is much faster. +# +# usage: +# fast_dirname path_name +# +# path to obtain the directory from +# +function fast_dirname +{ + local PATH_NAME; # path_name argument to be modified + + # parse args + # + if [[ $# -ne 1 ]]; then + echo "$0: ERROR: in fast_dirname: debug_parameters requires 1 arg, found: $#" 1>&2 + exit 10 + fi + PATH_NAME="$1" + + # firewall - reject empty paths + # + if [[ -z $PATH_NAME ]]; then + echo "$0: ERROR: in fast_dirname: pathname arg is empty" 1>&2 + exit 11 + fi + + # reduce multiple consecutive /'s to just / + # + while :; do + case "$PATH_NAME" in + *//*) PATH_NAME="${PATH_NAME//\/\//\/}" ;; + *) break ;; + esac + done + + # trim any trailing / + # + PATH_NAME=${PATH_NAME%%/} + + # case: if we only had /'s return / + # + if [[ -z "$PATH_NAME" ]]; then + echo '/' + return; + fi + + # case: PATH_NAME is an absolute path starting with / + # + case "$PATH_NAME" in + /*) echo "${PATH_NAME%/*}"; return ;; + */*) echo "${PATH_NAME%/*}"; return ;; + *) echo '.'; return ;; + esac +} + + +# parse command line +# +while getopts :hv:Vd:nN flag; do + case "$flag" in + h) echo "$USAGE" 1>&2 + exit 2 + ;; + v) V_FLAG="$OPTARG" + ;; + V) echo "$VERSION" + exit 2 + ;; + d) TOPDIR="$OPTARG" + ;; + \?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2 + echo 1>&2 + print_usage 1>&2 + exit 3 + ;; + :) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2 + echo 1>&2 + echo "$USAGE" 1>&2 + exit 3 + ;; + *) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2 + echo 1>&2 + echo "$USAGE" 1>&2 + exit 3 + ;; + esac +done + +# remove the options +# +shift $(( OPTIND - 1 )); +# +if [[ $V_FLAG -ge 5 ]]; then + echo "$0: debug[5]: file argument count: $#" 1>&2 +fi +# +# verify arg count and parse args +# +export TOOL +case "$#" in +0) ;; +*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2 + echo "$USAGE" 1>&2 + exit 3 + ;; +esac +# +if [[ $V_FLAG -ge 1 ]]; then + echo "$0: debug[1]: start scan for missing links" 1>&2 +fi + +# print running info if verbose +# +# If -v 3 or higher, print exported variables in order that they were exported. +# +if [[ $V_FLAG -ge 3 ]]; then + echo "$0: debug[3]: VERSION=$VERSION" 1>&2 + echo "$0: debug[3]: NAME=$NAME" 1>&2 + echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2 + echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2 + echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2 +fi + + +# cd to topdir +# +if [[ ! -e $TOPDIR ]]; then + echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2 + exit 6 +fi +if [[ ! -d $TOPDIR ]]; then + echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2 + exit 6 +fi +export CD_FAILED +if [[ $V_FLAG -ge 5 ]]; then + echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2 +fi +cd "$TOPDIR" || CD_FAILED="true" +if [[ -n $CD_FAILED ]]; then + echo "$0: ERROR: cd $TOPDIR failed" 1>&2 + exit 6 +fi +if [[ $V_FLAG -ge 3 ]]; then + echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2 +fi + + +# create a temporary missing link error message file +# +export TMP_MISSING_LINK=".$NAME.$$.missing_link.md" +if [[ $V_FLAG -ge 3 ]]; then + echo "$0: debug[3]: temporary missing link error message file: $TMP_MISSING_LINK" 1>&2 +fi +if [[ -z $NOOP ]]; then + trap 'rm -f $TMP_MISSING_LINK; exit' 0 1 2 3 15 + rm -f "$TMP_MISSING_LINK" + if [[ -e $TMP_MISSING_LINK ]]; then + echo "$0: ERROR: cannot remove temporary missing link error message file: $TMP_MISSING_LINK" 1>&2 + exit 12 + fi + :> "$TMP_MISSING_LINK" + if [[ ! -e $TMP_MISSING_LINK ]]; then + echo "$0: ERROR: cannot create temporary missing link error message file: $TMP_MISSING_LINK" 1>&2 + exit 13 + fi +elif [[ $V_FLAG -ge 3 ]]; then + echo "$0: debug[3]: because of -n, temporary missing link error message file is not used: $TMP_MISSING_LINK" 1>&2 +fi + + +# collect markdown links +# +# Here be extended regular expression magic dragons! :-) +# +# We will try to explain, as best as we can, these complex regular expressions. +# +# After grep of markdown files (files in sorted dictionary order) for markdown line lines, we sed: +# +# # remove any "[some string]" that is not immediately followed by "(" +# +# -e 's/\[[^]]*\]([^(])/\1/' \ +# +# # remove any trialing "[followed by text without a closing bracket" +# +# -e 's/\[[^]]*$//' \ +# +# Then processing the second file (after the filename field) we sed: +# +# # remove any leading "..non-[-stuff..[" +# +# -e 's/^[^[]()+\[/[/' \ +# +# # replace "beginning text stuff](" with "[text stuff](" +# # because the previous line might have ended with "[beginning" +# +# -e 's/^([^][]*\]\()/[\1/g' \ +# +# # remove any "[..non-]-stuff..][..more-non-]-stuff..]" +# +# -e 's/(\[[^][]*\])+([^(])/\2/g' \ +# +# # remove any non-link before the first "[some string](path)" +# +# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \ +# +# # remove any final "[..non-]-stuff..$" +# +# -e 's/\[[^]]*$//' \ +# +# # remove any final "(..non-)-stuff..)..non-[-stuff.." +# +# -e 's/(\([^)]*\))[^[]*$/\1/' \ +# +# # remove any trailing non-[-text after the final "[some string](path)" +# +# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \ +# +# # replace ")..non-open-bracket-stuff.[" with ") [" +# +# -e 's/\)[^[]*\[/) [/g' \ +# +# # replace "[some string](apath) [other string](bpath)" with two lines: +# # +# # "[some string](apath)" +# # "[other string](bpath)" +# +# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \ +# +# # remove blank and empty lines +# +# -e '/^\s*$/d' \ +# +# Then pipe the lines into another sed: +# +# # replace multiple space with a single space +# +# -e 's/ +/ /g' \ +# +# # remove the leading "[pseudo title](" +# +# -e 's/\[[^]]*\]\(//' \ +# +# # remove trailing ")": +# +# -e 's/\)$//' \ +# +# # remove and trailing #name +# +# -e 's/#.*$//' \ +# +# # remove any leading whitespace +# +# -e 's/^ //' \ +# +# # remove blank and empty lines +# +# -e '/^\s*$/d' \ +# +# # delete all http: and https: URLs +# +# -e '/^https?:/d' \ +# +# # delete all mailto: URLs +# +# -e '/^mailto:/d' \ +# +# +# -e 's;%%DOCROOT_SLASH%%/*;/;' \ +# +# # add current directory in front of absolute paths +# +# -e "s;^/;$PWD;" \ +# +# # add current directory followed by / in front of relative paths +# +# -e "s;^([^/]);$PWD/\1;" \ +# +# # convert "%%REPO_URL%%/" into TOPDIR +# +# -e "s;%%REPO_URL%%/*;$TOPDIR/;" \ +# +# # convert "%%DOCROOT_SLASH%%" into TOPDIR +# +# -e "s;%%DOCROOT_SLASH%%/*;$TOPDIR/;" \ +# +# # relative paths have the directory of the markdown file added to them +# +# -e "s;^([^/]);$TOPDIR/$MD_DIR/\1;" \ +# +# # delete all lines containing "%%TOKEN%%" as this is a just a test/example token +# +# -e '/%%TOKEN%%/d' \ +# +# At this point in the pipe, we have absolute /-based paths to markdown linked local files. +# We test if those file exist, and if not report a problem in the form: +# +# # Missing file linked in: markdown_file_name.md +# # Markdown line: ..the markdown line containing the line.. +# /missing/filename +# +find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print | + LANG=C sort -d | + xargs grep '\]([^)][^)]*)' /dev/null | + sed -E \ + -e 's;^\.\/;;' \ + -e 's/^([^:]+):\s*/\1 /' \ + | + while read -r MD_PATH MD_LINE; do + + # note directory containing the markdown file + # + MD_DIR=$(fast_dirname "$MD_PATH") + export MD_DIR + + # extract markdown parts from the given markdown file + # + echo "$MD_LINE" | + sed -E \ + -e 's/^[^[]()+\[/[/' \ + -e 's/^([^][]*\]\()/[\1/g' \ + -e 's/(\[[^][]*\])+([^(])/\2/g' \ + -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \ + -e 's/\[[^]]*$//' \ + -e 's/(\([^)]*\))[^[]*$/\1/' \ + -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \ + -e 's/\)[^[]*\[/) [/g' \ + -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \ + -e '/^\s*$/d' \ + | + sed -E \ + -e 's/ +/ /g' \ + -e 's/\[[^]]*\]\(//' \ + -e 's/\)$//' \ + -e 's/#.*$//' \ + -e 's/^ //' \ + -e '/^\s*$/d' \ + -e '/^https?:/d' \ + -e '/^mailto:/d' \ + -e "s;%%REPO_URL%%/*;$TOPDIR/;" \ + -e "s;%%DOCROOT_SLASH%%/*;$TOPDIR/;" \ + -e "s;^([^/]);$TOPDIR/$MD_DIR/\1;" \ + -e '/%%TOKEN%%/d' \ + | + + # write to stderr, missing file messages + # + # The absolute path is written to stderr, while + # info about the possible cause is written to stderr with lines starting with # + # + # We output exact 4 lines per missing link. + # + while read -r ABS_LOCAL_FILE_PATH; do + if [[ ! -e $ABS_LOCAL_FILE_PATH ]]; then + echo "# Missing file linked in: $MD_PATH" + echo "# Markdown line: $MD_LINE" + echo "$ABS_LOCAL_FILE_PATH" + echo + fi + done + done > "$TMP_MISSING_LINK" + +# count the missing links +# +MISSING_LINK_COUNT=$(wc -l < "$TMP_MISSING_LINK" | tr -d ' ') +export MISSING_LINK_COUNT +((MISSING_LINK_COUNT=MISSING_LINK_COUNT/4)) + +# report on any missing links +# +if [[ -s $TMP_MISSING_LINK ]]; then + cat "$TMP_MISSING_LINK" 1>&2 +fi + +# All Done!!! -- Jessica Noll, Age 2 +# +if [[ -s $TMP_MISSING_LINK ]]; then + echo "$0: ERROR: $MISSING_LINK_COUNT missing link(s) found" 1>&2 + exit 1 +fi +if [[ $V_FLAG -ge 1 ]]; then + echo "$0: debug[1]: $MISSING_LINK_COUNT missing link(s) found" 1>&2 +fi +exit 0 diff --git a/bin/index.html b/bin/index.html index 888969da6..148a5f532 100644 --- a/bin/index.html +++ b/bin/index.html @@ -409,6 +409,24 @@ repo
.Generate the list of files in the entry’s manifest, .entry.json.
For example:
awk -f bin/filelist.entry.json.awk 2020/ferguson1/.entry.json
+Find all markdown links to local files that do not exist.
+This tool does NOT check of a remote URL exists. +This tool only checks on links to local files.
+This tool does NOT check links into a given place in a file. +This tool only checks that local files linked by markdown exist.
+This tool does NOT check HTML file links. +This tool only checks markdown based links.
+Usage:
+ bin/find-missing-links.sh -v 1
+If no missing links are found, this tool exits 0 with no output +(debug messages not withstanding), otherwise this tool will exit non-zero.
+NOTE: If the markdown link is malformed, this tool +might generate an error about a file that does exist. +If this tool claims that a file is missing that does exist, +look for a malformed markdown line and/or use of markdown +that is NOT an IOCCC markdown best practice.
+See IOCCC markdown best practices for more info.
Generate the top level /authors.html page.
Usage:
diff --git a/bugs.html b/bugs.html index 92de37da0..9d0a190f7 100644 --- a/bugs.html +++ b/bugs.html @@ -421,7 +421,7 @@ Sometimes it is okay: some entries are known to not work but they can still have improvements (rarer situation but it’s happened). Some might have slightly different output but which is not a problem for instance a newline after output in Cody Boone Ferguson’s changing it to -1994/ldb usefgets() from gets().
+1994/ldb use fgets() from gets().
Make ABSOLUTE CERTAIN that you read the index.html file BEFORE your changes as it’s important to see that the code is doing what it is supposed to. In the case that it’s not obvious (some index.html files do not even have commands to @@ -442,7 +442,7 @@ one that’s more than fine (and it has been done numerous times).
Entries below have one or more of the following STATUS values. Please see the text below for more information. If an entry has more than one status it means that either they all apply or they compliment each other. For instance -2004/gavin crashes but it also doesn’t even compile with +2004/gavin crashes but it also doesn’t even compile with some platforms/architectures.
int * to a
+segfault in macOS of 1989/paul: changing the int * to a
long * was required and it works just as well with linux.
But even if they are fixable (which will likely be hard to do) it’s almost certain that such code would be just as non-portable (importable ? :-) ).
In rare cases they are valid. For instance Cody noticed in linux the following -warning in 1985/applin with gcc:
+warning in 1985/applin with gcc: applin.c:1:78: warning: incompatible implicit declaration of built-in function 'execlp' [-Wbuiltin-declaration-mismatch]
1 | main(v,c)char**c;{for(v[c++]=strdup("Hello, world!\n");(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c]+!!c,!c));**c=!c)write(!!*c,*c,!!**c);}
| ^~~~~~
and this reminded him of his fix to
-1984/anonymous. In the case of 1984/anonymous it
+1984/anonymous. In the case of 1984/anonymous it
was a bit more involved but with 1985/applin one need only add to the Makefile
-include unistd.h. So there are some cases where fixing warnings can fix a
problem but in general they should be ignored even if they’re annoying.
Please provide alternative code or fix for more compilers!
Some entries do not work with some compilers. A good example is -1992/lush which uses error messages from the compiler to +1992/lush which uses error messages from the compiler to generate its output.
If you can provide code that works for multiple compilers without too much tampering this is okay though it’s probably not possible with the above @@ -537,7 +537,7 @@ here as best you can manage.
Please help us fix the main() function!
NOTE: it appears that most if not all of these have been fixed except perhaps -for 1989/westley but this has probably been fixed as +for 1989/westley but this has probably been fixed as much as possible given the nature of how it generates code: the entry itself compiles but two versions of code it generates does not work with clang.
However some still might have problems of some kind or another and some might @@ -560,9 +560,10 @@ the same issue.
clang despite the fact it might appear to be gcc: no symlink and both gcc and clang exist but the gcc is clang which you’ll see if you rungcc --version.
A tip and some fix methods from Cody: in the older days args to main() not given
-a type were implicit ints but when they’re required to be char ** this can cause a problem. In some cases Cody was able to use achar *insidemain()`
-(see 1989/tromp/tromp.c and
-1986/holloway/holloway.c for two examples though done slightly
+a type were implicit ints but when they’re required to be char ** this can
+cause a problem. In some cases Cody was able to use a char * inside main()
+(see 1989/tromp/tromp.c and
+1986/holloway/holloway.c for two examples though done slightly
differently). In other cases he was able to dereference the pointers to be used
like an int and other times a cast was necessary. He used other various
techniques to get them to compile. In some cases this introduced a problem but
@@ -597,7 +598,7 @@ warnings during at least one of compiling, linking and execution. In macOS it’
most annoying as it happens during execution (also compilation) with the warning
being interspersed with the output of the program, often causing confusing
output with the entry. A good example that was fixed is
-1990/tbr.
Cody provided some important notes on this status with respect to fixing / changing entries:
1984/mullender (see below and the FAQ +
1984/mullender (see below and the FAQ for a version that works in modern systems) is very system specific and was before system specific winning entries were discouraged. This is an all time personal favourite of Landon Curt Noll. Run the alternate code to understand why this might be (along with how strange the source code is :-) ).
-An example where a crash is not a bug: 2019/endoh is +
An example where a crash is not a bug: 2019/endoh is supposed to crash. There are others that are also supposed to crash or that are known to segfault but are considered features.
An important note is that if the index.html of the entry has a bug status that @@ -672,7 +673,7 @@ figure it out you’re invited to look at the git diffs, where there are some (some were fixed earlier on but rolled back as both Cody and Landon individually felt that the fix was tampering with the entry).
NOTE: in the case of gets() we’ve fixed some to avoid the warning of the
-compiler, linker or even during runtime, depending on the system. In some cases
+compiler, linker or even during runtime, depending on the system. In some cases
like 1990/tbr the fix actually prevents confusing output (though that
was not the only fix made in that entry).
The purpose of this program is to print out a string of rubbish. In particular you should see something like:
@@ -701,14 +702,14 @@ you should see something like:Although there is an alt version and supplementary program added by Cody that will work in modern systems, if you do not have a VAX-11 or PDP-11 to run the original entry on it will not work. See the index.html for details on the alternate versions.
-Cody added and fixed the gentab.c which is from the +
Cody added and fixed the gentab.c which is from the author’s (or one of them, Mullender) remarks found by Cody. Cody fixed this to compile and work (as best as he can determine: he has no VAX-11 or PDP-11 or emulator to test it) but running the code on the binary itself produces a @@ -728,7 +729,7 @@ emulator to test it) but running the code on the binary itself produces a
This entry is known to segfault after printing its output. It was documented by the judges and shouldn’t be fixed.
@@ -747,7 +748,7 @@ the judges and shouldn’t be fixed.In linux it might happen that despite no error message or message about doing so, the program drops a core file into the directory even though the entry works @@ -761,7 +762,7 @@ and does not crash.
If you use either fubar or ouroboros.c (it’s executable, see index.html for
details) with a number < 0 or larger than, say 20, it’s very likely that the
@@ -772,7 +773,7 @@ errors.
This program will very likely crash or break into tiny bits :-) if you feed it numbers with non-binary digits.
@@ -782,7 +783,7 @@ operators like/. To see what operators are supported check the sou
With version 2 it sometimes segfaults even with the same input where other times it does not. We don’t believe this is because of the fix that lets some versions @@ -872,7 +873,7 @@ Enjoy! :-)
A point worth considering is that as the number passed into the program gets bigger the number of lines of output gets substantially larger and it takes much @@ -937,7 +938,7 @@ more time and resources to run as well. For instance:
Cody Boone Ferguson fixed some issues in this program and Yusuke @@ -961,7 +962,7 @@ sentence.
oops
which seems to be an error message (one of the fixes was to make it not use
perror(3) - this fixed something else though it’s no longer known what).
The script shark.sh has some issues too in that due to +
The script shark.sh has some issues too in that due to
path not having . (this and maybe some other things were fixed) and tar not
wanting to accept reading from stdin (this in particular) even with the right
options used, seemingly, it has to write to disk the tarball which seems to
@@ -970,7 +971,7 @@ defeat the purpose. This would ideally be fixed.
The authors provided a list of features in the BUGS section in their remarks.
@@ -978,7 +979,7 @@ defeat the purpose. This would ideally be fixed.Cody Boone Ferguson fixed many bugs that prevented this from working properly (including segfaults) but one thing to note @@ -994,7 +995,7 @@ where this occurred was fixed but this one should not be fixed. Thank you.
If the maze file cannot be opened, either because the path specified does not exist or because the default (whatever the source file was at compilation time) @@ -1004,7 +1005,7 @@ file does not exist in the directory, this program will very likely crash.
There is a very simple way to always win. The program doesn’t catch you and as someone called Cody’s late grandmother said to him: ‘it’s not cheating unless @@ -1021,7 +1022,7 @@ when you’re cheating it ends up winning! Can you figure that out as well?
The author stated that if the file cannot be opened then it will print a system
error but this is not the case unless it’s showing a fault. However this was
@@ -1044,7 +1045,7 @@ have to remove the outer () pair.
Leo Broukhis, before he was an IOCCC judge, sent the IOCCC judges an email:
From: leo _at_ zycad -dot- com (Leo Broukhis)
@@ -1087,7 +1088,7 @@ entry itself. Can you fix the actual entry? You are welcome to try and do so.1992/gson
STATUS: uses gets() - change to fgets() if possible
-Source code: 1992/gson/gson.c
+Source code: 1992/gson/gson.c
Information: [1992/gson/index.html])(1992/gson/index.html)
Cody changed it so that the buffer size is ARG_MAX+1 to try and get past the
problem of gets() being used in a more complex way.
@@ -1107,7 +1108,7 @@ to be read (in case the gets(3) was not used in a loop).
1992/kivinen
STATUS: known bug - please help us fix
-Source code: 1992/kivinen/kivinen.c
+Source code: 1992/kivinen/kivinen.c
Information: 1992/kivinen/index.html
When you start the program everything starts to move over to the right side and
then ends. Yusuke Endoh pointed out that if you
@@ -1117,7 +1118,7 @@ click the mouse it takes it back towards the centre.
1992/lush
STATUS: doesn’t work with some compilers - please provide alternative code or fix for more compilers
-Source code: 1992/lush/lush.c
+Source code: 1992/lush/lush.c
Information: 1992/lush/index.html
We used a patch from Yusuke Endoh to get this to
work but it only works with gcc. Cody removed the warnings of gets() and
@@ -1182,7 +1183,7 @@ than that. For instance this is what it looks like with clang:
1992/vern
STATUS: INABIAF - please DO NOT fix
-Source code: 1992/vern/vern.c
+Source code: 1992/vern/vern.c
Information: 1992/vern/index.html
When your own checkmate is imminent it prints "Har har" but does not exit so
it can ‘rub your nose in defeat’, as the author puts it. You will have to exit
@@ -1191,7 +1192,7 @@ it yourself through ctrl-c or killing it in some other fashion.
1992/westley
STATUS: INABIAF - please DO NOT fix
-Source code: 1992/westley/westley.c
+Source code: 1992/westley/westley.c
Information: 1992/westley/index.html
Cody improved the usability of this program by making it so that as long as the
terminal columns is >= 80 it will display properly, rather than having to wrap
@@ -1217,7 +1218,7 @@ not a misunderstanding).
STATUS: INABIAF - please DO NOT fix
-Source code: 1993/ant/ant.c
+Source code: 1993/ant/ant.c
Information: 1993/ant/index.html
The author stated that:
The expression `(a*)*` compiles but loops forever.
@@ -1231,7 +1232,7 @@ not a misunderstanding).
there is a version of the code that is not obfuscated. This file, agag.c does
not exist in the archive. Do you have it? Please provide it!
STATUS: known bug - please help us fix
-Source code: 1993/cmills/cmills.c
+Source code: 1993/cmills/cmills.c
Information: 1993/cmills/index.html
In multiple platforms, both macOS and also linux (in particular a RHEL 9.3
system), this entry just shows a blank screen.
@@ -1240,7 +1241,7 @@ system), this entry just shows a blank screen.
1993/lmfjyh
STATUS: INABIAF - please DO NOT fix
-Source code: 1993/lmfjyh/lmfjyh.c
+Source code: 1993/lmfjyh/lmfjyh.c
Information: 1993/lmfjyh/index.html
This entry relied on a bug in gcc that was fixed with gcc version 2.3.3. This
cannot be fixed for modern systems as the bug is long gone.
@@ -1250,7 +1251,7 @@ the index.html file for details.
1993/rince
STATUS: INABIAF - please DO NOT fix
-Source code: 1993/rince/rince.c
+Source code: 1993/rince/rince.c
Information: 1993/rince/index.html
Although the code checks if the file can be opened or not, badly formatted files
will cause problems. No other checks are performed either.
@@ -1260,7 +1261,7 @@ through ctrl-c or such.
1993/schnitzi
STATUS: INABIAF - please DO NOT fix
-Source code: 1993/schnitzi/schnitzi.c
+Source code: 1993/schnitzi/schnitzi.c
Information: 1993/schnitzi/index.html
If the file cannot be opened it will very likely segfault. This should not be
fixed except for an exercise to yourself, should you wish to try.
@@ -1286,7 +1287,7 @@ question you might cause an error. For instance don’t do this:
What is 'foo'?
it will work fine.
STATUS: INABIAF - please DO NOT fix
-Source code: 1993/vanb/vanb.c
+Source code: 1993/vanb/vanb.c
Information: 1993/vanb/index.html
No spaces are allowed in the expression.
The program does no error checking so erroneous expressions will produce
@@ -1302,7 +1303,7 @@ not d-46.
1994/dodsond2
STATUS: INABIAF - please DO NOT fix
-Source code: 1994/dodsond2/dodsond2.c
+Source code: 1994/dodsond2/dodsond2.c
Information: 1994/dodsond2/index.html
When you initiate shooting via the s command you immediately lose an arrow
before you choose where to shoot.
@@ -1312,7 +1313,7 @@ pit room you will end up dying even though you didn’t explicitly move there.
1994/ldb
STATUS: INABIAF - please DO NOT fix
-Source code: 1994/ldb/ldb.c
+Source code: 1994/ldb/ldb.c
Information: 1994/ldb/index.html
Cody Boone Ferguson fixed this to compile
with modern systems (see the thanks file for
@@ -1329,7 +1330,7 @@ one liner it’s already quite long.
1994/schnitzi
STATUS: uses gets() - change to fgets() if possible
-Source code: 1994/schnitzi/schnitzi.c
+Source code: 1994/schnitzi/schnitzi.c
Information: 1994/schnitzi/index.html
NOTE: the generated code of all versions, when fed its own source, will differ
even when it works. See the author’s remarks in the index.html for details.
@@ -1359,7 +1360,7 @@ alone using fgets()) when fed itself (to reiterate, just changing t
fgets(3) retains the newline whereas gets(3) does not). Nevertheless looking
at these commands will be of help to understand how it works.
For the alternate versions the other functionality is unaffected.
-The magic of 1994/schnitzi and how it flips text
+The magic of 1994/schnitzi and how it flips text
The problem is getting the generated code to use fgets() (once it even
compiles which was easy to do) and also have the updated buffer size be the
same (which was easy to do too at least in the original version). The generated
@@ -1415,7 +1416,7 @@ compiled!
1994/shapiro
STATUS: INABIAF - please DO NOT fix
-Source code: 1994/shapiro/shapiro.c
+Source code: 1994/shapiro/shapiro.c
Information: 1994/shapiro/index.html
This program will likely crash if the source code file (by the name of the file
that’s compiled) cannot be opened in the directory it is run from.
@@ -1445,7 +1446,7 @@ if it checked for != EOF.
1994/tvr
STATUS: known bug - please help us fix
-Source code: 1994/tvr/tvr.c
+Source code: 1994/tvr/tvr.c
Information: 1994/tvr/index.html
The judges said the following in their remarks:
The fractally minded may be able to detect that mode 0 does not calculate
@@ -1462,7 +1463,7 @@ doesn’t break something else.
1995/cdua
STATUS: INABIAF - please DO NOT fix
-Source code: 1995/cdua/cdua.c
+Source code: 1995/cdua/cdua.c
Information: 1995/cdua/index.html
This did not originally compile under macOS and after it did compile under
macOS, it crashed. Cody Boone Ferguson
@@ -1476,7 +1477,7 @@ it calls getchar() via the pointer m. So this is a fea
1995/leo
STATUS: known bug - please help us fix
-Source code: 1995/leo/leo.c
+Source code: 1995/leo/leo.c
Information: 1995/leo/index.html
The judges suggested that the following commands should result in output:
./leo 1 | cat - /dev/tty | gs -
@@ -1494,7 +1495,7 @@ it would be good if it was fixed.
1995/savastio
STATUS: INABIAF - please DO NOT fix
-Source code: 1995/savastio/savastio.c
+Source code: 1995/savastio/savastio.c
Information: 1995/savastio/index.html
This program expects a POSITIVE number. If you specify a negative number it will
not show any output, stuck in a loop.
@@ -1502,7 +1503,7 @@ not show any output, stuck in a loop.
1995/vanschnitz
STATUS: missing file - please provide it
-Source code: 1995/vanschnitz/vanschnitz.c
+Source code: 1995/vanschnitz/vanschnitz.c
Information: 1995/vanschnitz/index.html
The authors stated that they included a version that allows people with just K&R
compilers to use the program but this file is missing. Can you provide it?
@@ -1516,7 +1517,7 @@ compilers to use the program but this file is missing. Can you provide it?
1996/gandalf
STATUS: missing or dead link - please provide them
-Source code: 1996/gandalf/gandalf.c
+Source code: 1996/gandalf/gandalf.c
Information: 1996/gandalf/index.html
The link was http://www.tc3.co.uk/~gandalf/G.HTML but this no longer exists as
it was instead requiring a login / password.
@@ -1525,11 +1526,11 @@ it was instead requiring a login / password.
1996/huffman
STATUS: uses gets() - change to fgets() if possible
-Source code: 1996/huffman/huffman.c
+Source code: 1996/huffman/huffman.c
Information: 1996/huffman/index.html
The changing to using fgets(3) in this entry is a bit more complicated. It can
almost be done except that some of the output of the
-try.sh is wrong, especially the last one.
+try.sh is wrong, especially the last one.
This diff almost does it but not quite:
diff --git i/1996/huffman/huffman.c w/1996/huffman/huffman.c
index a5745bc7f4fa28b834c004f4cf19633e40ad9165..5e5e5334f33f9dbd95c70eddece3189d9bcff5e9 100644
@@ -1559,7 +1560,7 @@ almost be done except that some of the output of the
1996/jonth
STATUS: INABIAF - please DO NOT fix
-Source code: 1996/jonth/jonth.c
+Source code: 1996/jonth/jonth.c
Information: 1996/jonth/index.html
If X is not running this program will very likely crash or do something funny.
This should NOT be fixed.
@@ -1584,7 +1585,7 @@ We greatly appreciate your help here!
1998/dlowe
STATUS: missing or dead link - please provide them
-Source code: 1998/dlowe/dlowe.c
+Source code: 1998/dlowe/dlowe.c
Information: 1998/dlowe/index.html
The domain http://pootpoot.com no longer exists as it once did. The judges have
given a script that can be used to make a similar page (warning: not checked
@@ -1595,14 +1596,14 @@ to the page as well! You’ll have IOCCC fame for reviving a pootifier! :-)
1998/dloweneil
STATUS: missing or dead link - please provide them
-Source code: 1998/dloweneil/dloweneil.c
+Source code: 1998/dloweneil/dloweneil.c
Information: 1998/dloweneil/index.html
-See above entry 1998/dlowe.
+See above entry 1998/dlowe.
STATUS: INABIAF - please DO NOT fix
-Source code: 1998/schnitzi/schnitzi.c
+Source code: 1998/schnitzi/schnitzi.c
Information: 1998/schnitzi/index.html
A point worth considering is that as the number passed into the program gets
bigger the number of lines of output gets substantially larger. For instance:
@@ -1629,7 +1630,7 @@ is in the index.html file as something to try and ponder.
2000/dlowe
STATUS: known bug - please help us fix
-Source code: 2000/dlowe/dlowe.c
+Source code: 2000/dlowe/dlowe.c
Information: 2000/dlowe/index.html
The author gives an example command:
echo "7 P 6 d P P 8 p" | ./dlowe | tr 876 tpo
@@ -1801,7 +1802,7 @@ of 92 warnings! Nonetheless neither works okay and both crash.
2000/primenum
STATUS: INABIAF - please DO NOT fix
-Source code: 2000/primenum/primenum.c
+Source code: 2000/primenum/primenum.c
Information: 2000/primenum/index.html
This program does not do what you might think it does! Running it like:
./primenum 13
@@ -1819,7 +1820,7 @@ make a pull request.
2000/rince
STATUS: INABIAF - please DO NOT fix
-Source code: 2000/rince/rince.c
+Source code: 2000/rince/rince.c
Information: 2000/rince/index.html
If DISPLAY is not set the program will very likely crash, do something strange
(or if you’re very unlucky your computer might halt and catch
@@ -1833,20 +1834,20 @@ fire! :-) ).
2001/anonymous
STATUS: INABIAF - please DO NOT fix
-Source code: 2001/anonymous/anonymous.c
+Source code: 2001/anonymous/anonymous.c
Information: 2001/anonymous/index.html
Cody Boone Ferguson fixed this so that it
doesn’t segfault and then also fixed the functionality of it (but see below).
-Cody also fixed the anonymous.ten.c program
+
Cody also fixed the anonymous.ten.c program
(it also segfaulted) but notes that it MUST be compiled as a 32-bit ELF
binary so it will NOT work in macOS (for example); if you cannot use -m32 or
even if you can but it cannot compile as an ELF binary (not elf binary :-) )
(but see below) then the anonymous program itself will very likely crash if
-you run it on the compiled anonymous.ten.c but
+you run it on the compiled anonymous.ten.c but
if nothing else it will not modify the target executable (this part of the fix
at least should be correct).
The file 2001/anonymous/anonymous.ten.32 is a pre-compiled
-2001/anonymous.ten.c as a 32-bit ELF binary in case you
+2001/anonymous.ten.c as a 32-bit ELF binary in case you
can run ELF binaries but cannot compile 32-bit binaries.
Other BSD Unices were not tested.
Note also that if you don’t specify a file or you specify a non-32-bit ELF file
@@ -1857,7 +1858,7 @@ elves of Imladris :-(
STATUS: INABIAF - please DO NOT fix
STATUS: doesn’t work with some platforms - please help us fix
-Source code: 2001/bellard/bellard.c
+Source code: 2001/bellard/bellard.c
Information: 2001/bellard/index.html
The two statuses might seem contradictory but that is a complicated question.
The author stated that it only works with i386 linux so on the one hand the fact
@@ -1866,7 +1867,7 @@ the other hand it would be nice if there was an alternate version which worked
for modern systems. This does seem quite unlikely but some fixes, described
next, were made.
Cody Boone Ferguson fixed an initial
-segfault (trying to open the file) and he also fixed the supplementary program
+segfault (trying to open the file) and he also fixed the supplementary program
bellard.otccex.c but this still crashes in
systems not i386 linux which is what the author stated.
On the other hand if you do have a fix for 64-bit systems you’re welcome to
@@ -1882,7 +1883,7 @@ emulator.
On the author’s web page for this program it is
explicitly stated that it requires i386 linux.
There I found what should be a more portable version which is included as
-otccelf.c (after adding some #includes and the
+otccelf.c (after adding some #includes and the
modification by Yusuke noted in the thanks
file) but it appears this also requires i386 linux; indeed looking at the code
it hard codes paths that are i386 specific to linux.
@@ -1907,14 +1908,14 @@ before the fixes there.
2001/dgbeards
STATUS: INABIAF - please DO NOT fix
-Source code: 2001/dgbeards/dgbeards.c
+Source code: 2001/dgbeards/dgbeards.c
Information: 2001/dgbeards/index.html
This program deliberately crashes if it loses (which is what it aims to do).
STATUS: missing files - please provide them
-Source code: 2001/herrmann1/herrmann1.c
+Source code: 2001/herrmann1/herrmann1.c
Information: 2001/herrmann1/index.html
The author referred to the file herrmann1.turing but it does not exist not even
in the archive. Do you have a copy? Please provide it!
@@ -1928,7 +1929,7 @@ appreciate your help!
2001/kev
STATUS: INABIAF - please DO NOT fix
-Source code: 2001/kev/kev.c
+Source code: 2001/kev/kev.c
Information: 2001/kev/index.html
Sometimes when one player presses q it will result in broken pipe on the other
end.
@@ -1946,7 +1947,7 @@ set. In other words both have to be ASCII or EBCDIC - not one of each.
2001/rosten
STATUS: missing files - please provide them
-Source code: 2001/rosten/rosten.c
+Source code: 2001/rosten/rosten.c
Information: 2001/rosten/index.html
The author stated that there is a cat man page for this program in case one
wanted to install it as a tool but this is missing.
@@ -1954,7 +1955,7 @@ wanted to install it as a tool but this is missing.
2001/schweikh
STATUS: INABIAF - please DO NOT fix
-Source code: 2001/schweikh/schweikh.c
+Source code: 2001/schweikh/schweikh.c
Information: 2001/schweikh/index.html
The glob pattern must match the whole string. See the author’s comments for
details and a workaround.
@@ -1963,7 +1964,7 @@ details and a workaround.
2001/westley
STATUS: uses gets() - change to fgets() if possible
-Source code: 2001/westley/westley.c
+Source code: 2001/westley/westley.c
Information: 2001/westley/index.html
This function uses gets(3) but it would be ideal if it used fgets(3). This
one is rather complicated and will be looked at later (some progress was made by
@@ -1987,7 +1988,7 @@ it? Please provide it!
2001/williams
STATUS: known bug - please help us fix
-Source code: 2001/williams/williams.c
+Source code: 2001/williams/williams.c
Information: 2001/williams/index.html
There seem to be a couple bugs at least in this entry. The first one is that
when it does reach a certain point it crashes. This is in the function J() (or
@@ -2036,11 +2037,11 @@ sleeping.
STATUS: compiled executable crashes - please help us fix
STATUS: doesn’t work with some platforms - please help us fix
-Source code: 2004/gavin/gavin.c
+Source code: 2004/gavin/gavin.c
Information: 2004/gavin//index.html
Segmentation fault will occur in some systems. For instance on macOS with the
arm64 chip:
@@ -2119,7 +2120,7 @@ compile under clang. The following patch was applied:
${RM} -f gavin fs.tar
gavin_files: boot.b lilo.conf prim gavin_install.txt
-The current (Makefile was modified to try and
+
The current (Makefile was modified to try and
fit into the current IOCCC build environment.
STATUS: INABIAF - please DO NOT fix
See known features in the index.html for
@@ -2128,7 +2129,7 @@ things that are not bugs but documented (mis)features.
2004/jdalbec
STATUS: INABIAF - please DO NOT fix
-Source code: 2004/jdalbec/jdalbec.c
+Source code: 2004/jdalbec/jdalbec.c
Information: 2004/jdalbec/index.html
The author stated that:
Arguments matching `/[^2]22$/` cause the program to segfault
@@ -2153,7 +2154,7 @@ things that are not bugs but documented (mis)features.
2004/sds
STATUS: INABIAF - please DO NOT fix
-Source code: 2004/sds/sds.c
+Source code: 2004/sds/sds.c
Information: 2004/sds/index.html
The generated code will very likely segfault or do something not intended if not
given the right args. See the index.html file for the correct syntax.
@@ -2166,7 +2167,7 @@ given the right args. See the index.html file for the correct syntax.
2005/anon
STATUS: INABIAF - please DO NOT fix
-Source code: 2005/anon/anon.c
+Source code: 2005/anon/anon.c
Information: 2005/anon/index.html
This program sometimes will create unsolvable puzzles :-) just to hook you.
As a protection against this - and to prevent you from spending too much time on
@@ -2180,7 +2181,7 @@ dimensions. Try 100 100 100 for instance and see what happens!
2005/giljade
STATUS: INABIAF - please DO NOT fix
-Source code: 2005/giljade/giljade.c
+Source code: 2005/giljade/giljade.c
Information: 2005/giljade/index.html
This entry will very likely segfault or do something strange if the source code
does not exist.
@@ -2189,7 +2190,7 @@ does not exist.
2005/mikeash
STATUS: INABIAF - please DO NOT fix
-Source code: 2005/mikeash/mikeash.c
+Source code: 2005/mikeash/mikeash.c
Information: 2005/mikeash/index.html
The author states:
@@ -2223,7 +2224,7 @@ for running itself.
2005/mynx
STATUS: INABIAF - please DO NOT fix
-Source code: 2005/mynx/mynx.c
+Source code: 2005/mynx/mynx.c
Information: 2005/mynx/index.html
Cody Boone Ferguson notes that, though
probably obvious, this entry will not work with https. He added an alt version
@@ -2237,7 +2238,7 @@ website itself.
2005/sykes
STATUS: INABIAF - please DO NOT fix
-Source code: 2005/sykes/sykes.c
+Source code: 2005/sykes/sykes.c
Information: 2005/sykes/index.html
The author stated the below points of interest.
The machine emulated is an older 40 column one so 80 column programs will not
@@ -2266,7 +2267,7 @@ used decimal mode, or any of the “undocumented” instructions.
2006/birken
STATUS: uses gets() - change to fgets() if possible
-Source code: 2006/birken/birken.c
+Source code: 2006/birken/birken.c
Information: 2006/birken/index.html
This entry uses gets(3) which is unsafe and provides annoying warnings, most
obnoxious in macOS as it shows it at runtime (redirecting stderr to
@@ -2278,7 +2279,7 @@ with at least computer.tofu input file:
2006/borsanyi
STATUS: INABIAF - please DO NOT fix
-Source code: 2006/borsanyi/borsanyi.c
+Source code: 2006/borsanyi/borsanyi.c
Information: 2006/borsanyi/index.html
The string specified must be <= 42 characters and may only consist of the
characters in the regex a-z_A-Z0-9@.-. Breaking these constraints will end up
@@ -2287,7 +2288,7 @@ with possibly corrupt GIF files.
2006/monge
STATUS: doesn’t work with some platforms - please help us fix
-Source code: 2006/monge/monge.c
+Source code: 2006/monge/monge.c
Information: 2006/monge/index.html
This program requires x86 (with an x87 FPU) or x86_64 machine and it requires
the SDL1 library.
@@ -2304,7 +2305,7 @@ welcome to try and fix it if you wish to!
2006/sykes1
STATUS: INABIAF - please DO NOT fix
-Source code: 2006/sykes1/sykes1.c
+Source code: 2006/sykes1/sykes1.c
Information: 2006/sykes1/index.html
The author stated:
If you pick a number higher than 19186, the program will return a
@@ -2321,7 +2322,7 @@ welcome to try and fix it if you wish to!
2006/toledo2
STATUS: INABIAF - please DO NOT fix
-Source code: 2006/toledo2/toledo2.c
+Source code: 2006/toledo2/toledo2.c
Information: 2006/toledo2/index.html
Cody Boone Ferguson fixed this program to
not crash in macOS (it appeared to work fine in fedora linux on an x86_64
@@ -2368,7 +2369,7 @@ case-sensitive.
2011/borsanyi
STATUS: INABIAF - please DO NOT fix
-Source code: 2011/borsanyi/borsanyi.c
+Source code: 2011/borsanyi/borsanyi.c
Information: 2011/borsanyi/index.html
For a great amount of data points the program will crash, depending on your
available stack space.
@@ -2384,7 +2385,7 @@ bins at the edges.
2011/dlowe
STATUS: missing or dead link - please provide them
-Source code: 2011/dlowe/dlowe.c
+Source code: 2011/dlowe/dlowe.c
Information: 2011/dlowe/index.html
The author’s website, http://www.pootpoot.net, no longer exists as it once did,
instead being something else entirely. The Internet Wayback Machine, although it
@@ -2404,7 +2405,7 @@ tends to result in empty output.
2011/fredriksson
STATUS: INABIAF - please DO NOT fix
-Source code: 2011/fredriksson/fredriksson.c
+Source code: 2011/fredriksson/fredriksson.c
Information: 2011/fredriksson/index.html
The author stated that there are a number of features and limitations. As the
list is rather long see other
@@ -2414,7 +2415,7 @@ remarks instead.
2011/richards
STATUS: doesn’t work with some platforms - please help us fix
-Source code: 2011/richards/richards.c
+Source code: 2011/richards/richards.c
Information: 2011/richards/index.html
This does not appear to work with macOS, resulting in a segfault (and sometimes
a bus error).
@@ -2427,7 +2428,7 @@ workarounds but at this time he could not get it to work. He offers some earlier
debugging sessions below as well as a resource from the author as well as some
resources on Apple’s website should anyone wish to take a crack at it. He might
address it later but a starting point might be in
-richards.alt.c.
+richards.alt.c.
Debugging
At first glance it appeared to be that it might be the function pointers or the
fact it is trying to execute code in memory (as noted above). The function
@@ -2554,7 +2555,7 @@ linux.
This can be fixed easily enough however but it doesn’t appear to matter in this
case.
Testing fixes
-It might be helpful to use the try.alt.sh script to
+
It might be helpful to use the try.alt.sh script to
test that it does not crash and functions properly.
Resources
More from the author
@@ -2576,7 +2577,7 @@ defined.
2011/vik
STATUS: INABIAF - please DO NOT fix
-Source code: 2011/vik/vik.c
+Source code: 2011/vik/vik.c
Information: 2011/vik/index.html
The author stated that the program will crash if no argument is passed to the
program though we note that your computer might also halt and catch
@@ -2590,7 +2591,7 @@ fire :-)
2012/blakely
STATUS: INABIAF - please DO NOT fix
-Source code: 2012/blakely/blakely.c
+Source code: 2012/blakely/blakely.c
Information: 2012/blakely/index.html
The author stated:
If there is a division by zero, square-root of a negative number, or similar
@@ -2599,7 +2600,7 @@ fire :-)
2012/deckmyn
STATUS: INABIAF - please DO NOT fix
-Source code: 2012/deckmyn/deckmyn.c
+Source code: 2012/deckmyn/deckmyn.c
Information: 2012/deckmyn/index.html
The author stated:
The memory locations of `argv` are used for various purposes. Therefore, the
@@ -2632,7 +2633,7 @@ fire :-)
2012/dlowe
STATUS: INABIAF - please DO NOT fix
-Source code: 2012/dlowe/dlowe.c
+Source code: 2012/dlowe/dlowe.c
Information: 2012/dlowe/index.html
The author stated:
@@ -2646,7 +2647,7 @@ doesn’t make it possible to lock drawing to the display refresh rate.)
2012/tromp
STATUS: INABIAF - please DO NOT fix
-Source code: 2012/tromp/tromp.c
+Source code: 2012/tromp/tromp.c
Information: 2012/tromp/index.html
The author stated:
If the input doesn't start with a valid program, that is,
@@ -2667,7 +2668,7 @@ doesn’t make it possible to lock drawing to the display refresh rate.)
2012/vik
STATUS: INABIAF - please DO NOT fix
-Source code: 2012/vik/vik.c
+Source code: 2012/vik/vik.c
Information: 2012/vik/index.html
The author stated that the program will crash if no argument is passed to the
program or if invalid arguments (e.g. file does not exist) or images of
@@ -2683,7 +2684,7 @@ fire :-)
2013/cable2
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/cable2/cable2.c
+Source code: 2013/cable2/cable2.c
Information: 2013/cable2/index.html
The author stated:
@@ -2703,7 +2704,7 @@ and endianness conversion would make the source too large for IOCCC rule 2).2013/dlowe
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/dlowe/dlowe.c
+Source code: 2013/dlowe/dlowe.c
Information: 2013/dlowe/index.html
This program will possibly crash or draw something strange with 0 args. Then
again it might not. :-) This is easy to fix but would add bytes and since the
@@ -2722,7 +2723,7 @@ used.
2013/endoh1
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/endoh1/endoh1.c
+Source code: 2013/endoh1/endoh1.c
Information: 2013/endoh1/index.html
From the author:
–
@@ -2738,7 +2739,7 @@ section.
2013/endoh3
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/endoh3/endoh3.c
+Source code: 2013/endoh3/endoh3.c
Information: 2013/endoh3/index.html
From the author:
–
@@ -2751,14 +2752,14 @@ such as C2E2.
2013/endoh4
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/endoh4/endoh4.c
+Source code: 2013/endoh4/endoh4.c
Information: 2013/endoh4/index.html
Invalid input files will very likely crash the program.
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/hou/hou.c
+Source code: 2013/hou/hou.c
Information: 2013/hou/index.html
This program will not terminate on its own; you must kill hou (but not Qiming
Hou :-) ) yourself. This should not be fixed.
@@ -2766,7 +2767,7 @@ Hou :-) ) yourself. This should not be fixed.
2013/mills
STATUS: INABIAF - please DO NOT fix
-Source code: 2013/mills/mills.c
+Source code: 2013/mills/mills.c
Information: 2013/mills/index.html
The author reminds us that if you kill the program you will have to wait a short
bit of time before you can start it again if you want it to be able to bind to
@@ -2783,7 +2784,7 @@ it out as a known limitation it is not a bug but a feature.
2014/maffiodo1
STATUS: INABIAF - please DO NOT fix
-Source code: 2014/maffiodo1/prog.c
+Source code: 2014/maffiodo1/prog.c
Information: 2014/maffiodo1/index.html
The author noted that in macOS the colours might be wrong. They gave a solution.
However Cody didn’t see any problem with it and he beat the series many times.
@@ -2807,18 +2808,18 @@ player become bigger, stay away from blocks!
2014/maffiodo2
STATUS: INABIAF - please DO NOT fix
-Source code: 2014/maffiodo2/prog.c
+Source code: 2014/maffiodo2/prog.c
Information: 2014/maffiodo2/index.html
This program will very likely crash if no arg is given.
STATUS: known bug - please help us fix
-Source code: 2014/vik/prog.c
+Source code: 2014/vik/prog.c
Information: 2014/vik/index.html
Cody Boone Ferguson discovered a bug to do
with translating sound to text that shows itself in some cases (it works in
-others) when working on his winning 2020 Enigma machine
+others) when working on his winning 2020 Enigma machine
(‘Most enigmatic’) entry. See his index.html for
details (search for vik in the file). This one might be more of a limitation
but this is not known.
@@ -2848,7 +2849,7 @@ rely on the entry as the below shows. One should be able to do:
2015/hou
STATUS: INABIAF - please DO NOT fix
-Source code: 2015/hou/prog.c
+Source code: 2015/hou/prog.c
Information: 2015/hou/index.html
The author stated:
–
@@ -2873,7 +2874,7 @@ result. Error messages become garbled, though.
2015/mills2
STATUS: INABIAF - please DO NOT fix
-Source code: 2015/mills2/prog.c
+Source code: 2015/mills2/prog.c
Information: 2015/mills2/index.html
The program doesn’t look at the header of files so if it’s passed something hat
is not compressed data it’s likely to crash.
@@ -2882,7 +2883,7 @@ is not compressed data it’s likely to crash.
2015/schweikhardt
STATUS: INABIAF - please DO NOT fix
-Source code: 2015/schweikhardt/prog.c
+Source code: 2015/schweikhardt/prog.c
Information: 2015/schweikhardt/index.html
The program assumes that EOF is -1. This can be fixed but at this time it is
uncertain if it should be.
@@ -2915,7 +2916,7 @@ use 8 * sizeof(typ) bits per place. It does not work when CHA
2018/algmyr
STATUS: INABIAF - please DO NOT fix
-Source code: 2018/algmyr/algmyr.c
+Source code: 2018/algmyr/algmyr.c
Information: 2018/algmyr/index.html
The author wrote:
@@ -2934,7 +2935,7 @@ loop printing whitespace.
2018/hou
STATUS: INABIAF - please DO NOT fix
-Source code: 2018/hou/prog.c
+Source code: 2018/hou/prog.c
Information: 2018/hou/index.html
When you run it on a JSON file you will see something like:
$ ./prog < ioccc.json > ioccc.html
@@ -2949,7 +2950,7 @@ fixing the syntax error in the generated ioccc.json file.
2018/mills
STATUS: known bug - please help us fix
-Source code: 2018/mills/prog.c
+Source code: 2018/mills/prog.c
Information: 2018/mills/index.html
After exiting the program (with ctrl-e) if you try running it again you will
likely see:
@@ -2974,7 +2975,7 @@ in the case of compiled code it won’t be executable).
2018/vokes
STATUS: INABIAF - please DO NOT fix
-Source code: 2018/vokes/vokes.c
+Source code: 2018/vokes/vokes.c
Information: 2018/vokes/index.html
The author wrote the following:
@@ -3024,15 +3025,15 @@ this program has nothing to do with a hand.
2019/adamovsky
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/adamovsky/prog.c
+Source code: 2019/adamovsky/prog.c
Information: 2019/adamovsky/index.html
Certain input can crash this program. The file
-crash.unl is an example file.
+crash.unl is an example file.
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/burton/prog.c
+Source code: 2019/burton/prog.c
Information: 2019/burton/index.html
The author pointed out that some implementations of wc(1) show different
values but his implementation matches that of macOS and FreeBSD.
@@ -3040,7 +3041,7 @@ values but his implementation matches that of macOS and FreeBSD.
2019/ciura
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/ciura/prog.c
+Source code: 2019/ciura/prog.c
Information: 2019/ciura/index.html
Cody Boone Ferguson fixed the scripts so
that they can work but it might end up that the scripts don’t show any output
@@ -3064,7 +3065,7 @@ in the de.sh/de.alt.sh scripts:
2019/dogon
STATUS: uses gets() - change to fgets() if possible
-Source code: 2019/dogon/prog.c
+Source code: 2019/dogon/prog.c
Information: 2019/dogon/index.html
The author does not it uses gets() and one will get warnings but it would be
ideal if this was not the case.
@@ -3072,7 +3073,7 @@ ideal if this was not the case.
2019/duble
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/duble/prog.c
+Source code: 2019/duble/prog.c
Information: 2019/duble/index.html
There are two things to be aware of with this entry.
If the file being used (to draw) is deleted it might lock any session still in
@@ -3101,7 +3102,7 @@ in the directory:
2019/endoh
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/endoh/prog.c
+Source code: 2019/endoh/prog.c
Information: 2019/endoh/index.html
As a backtrace quine this entry is SUPPOSED to segfault so this should not be
touched either.
@@ -3109,7 +3110,7 @@ touched either.
2019/karns
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/karns/prog.c
+Source code: 2019/karns/prog.c
Information: 2019/karns/index.html
The author stated the following:
- The program must be ran in a terminal that supports ANSI
@@ -3139,7 +3140,7 @@ touched either.
2019/lynn
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/lynn/prog.c
+Source code: 2019/lynn/prog.c
Information: 2019/lynn/index.html
The author wrote that there are a number of differences from what one might
expect. Rather than duplicate the information we refer you to the author’s
@@ -3149,7 +3150,7 @@ remarks in the sections Syntax and
2019/mills
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/mills/prog.c
+Source code: 2019/mills/prog.c
Information: 2019/mills/index.html
The author wrote that if you decide to change networks or use a different input
file you should delete all the checkpoint files because the format depends on
@@ -3169,16 +3170,16 @@ a crash.
2019/poikola
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/poikola/prog.c
+Source code: 2019/poikola/prog.c
Information: 2019/poikola/index.html
This program will not validate input so it might fail or get stuck if invoked
erroneously.
Also, the maximum file size is 1GB.
STATUS: INABIAF - please DO NOT fix
-Source code: 2019/yang/prog.c
+Source code: 2019/yang/prog.c
Information: 2019/yang/index.html
The author noted that if the program runs out of memory it is likely to crash.
The author also stated that ‘if input contains CR-LF end of line sequences,
@@ -3193,7 +3194,7 @@ ignored except line feeds (preserved) and tabs (expanded to 8 spaces).’
2020/burton
STATUS: INABIAF - please DO NOT fix
-Source code: 2020/burton/prog.c
+Source code: 2020/burton/prog.c
Information: 2020/burton/index.html
This entry is known to crash if no arg is specified. Although easy to fix it is
documented and should not be fixed (of course you may fix it to see if you can
@@ -3204,7 +3205,7 @@ either. But can you figure out why this happens?
2020/carlini
STATUS: INABIAF - please DO NOT fix
-Source code: 2020/carlini/prog.c
+Source code: 2020/carlini/prog.c
Information: 2020/carlini/index.html
The author stated that bad things happen if the entered move is outside of the
range [1..9]. We observed a crash but we also observed a tie and other things
@@ -3218,7 +3219,7 @@ move.
2020/ferguson1
STATUS: INABIAF - please DO NOT fix
-Source code: 2020/ferguson1/prog.c
+Source code: 2020/ferguson1/prog.c
Information: 2020/ferguson1/index.html
There are some things that might appear to be bugs but are actually features or
things that are misinterpreted as bugs. See the
@@ -3228,7 +3229,7 @@ things that are misinterpreted as bugs. See the
2020/giles
STATUS: INABIAF - please DO NOT fix
-Source code: 2020/giles/prog.c
+Source code: 2020/giles/prog.c
Information: 2020/giles/index.html
The author noted that the program only supports WAV files that have
exactly 16 bits per sample, but it allows any sample rate and any number of
@@ -3237,7 +3238,7 @@ audio channels.
2020/otterness
STATUS: INABIAF - please DO NOT fix
-Source code: 2020/otterness/prog.c
+Source code: 2020/otterness/prog.c
Information: 2020/otterness/index.html
The author listed the following limitations:
diff --git a/bugs.md b/bugs.md
index 8fe58bed7..1f2b8400a 100644
--- a/bugs.md
+++ b/bugs.md
@@ -55,7 +55,7 @@ Sometimes it is okay: some entries are known to not work but they can still have
improvements (rarer situation but it's happened). Some might have slightly
different output but which is not a problem for instance a newline after output
in [Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson)'s changing it to
-[1994/ldb](1994/ldb/ldb.c) use `fgets()` from `gets()`.
+[1994/ldb](%%REPO_URL%%/1994/ldb/ldb.c) use `fgets()` from `gets()`.
Make **ABSOLUTE CERTAIN** that you read the index.html file _BEFORE_ your changes
as it's important to see that the code is doing what it is supposed to. In the
@@ -87,7 +87,7 @@ Again, THANK YOU!
Entries below have one or more of the following _**STATUS**_ values. Please see
the text below for more information. If an entry has more than one status it
means that either they all apply or they compliment each other. For instance
-[2004/gavin](2004/gavin/gavin.c) crashes but it also doesn't even compile with
+[2004/gavin](%%REPO_URL%%/2004/gavin/gavin.c) crashes but it also doesn't even compile with
some platforms/architectures.
@@ -111,14 +111,14 @@ sizes on different platforms. These tend to be required at the risk that
sometimes the entry will not work for certain platforms, some of which might or
might not be fixable; a good example where it was required to change and is okay
is when [Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed the
-segfault in macOS of [1989/paul](1994/paul/paul.c): changing the `int *` to a
+segfault in macOS of [1989/paul](%%REPO_URL%%/1994/paul/paul.c): changing the `int *` to a
`long *` was required and it works just as well with linux.
But even if they are fixable (which will likely be hard to do) it's almost
certain that such code would be just as non-portable (importable ? :-) ).
In rare cases they are valid. For instance Cody noticed in linux the following
-warning in [1985/applin](1985/applin/applin.c) with gcc:
+warning in [1985/applin](%%REPO_URL%%/1985/applin/applin.c) with gcc:
```
applin.c:1:78: warning: incompatible implicit declaration of built-in function 'execlp' [-Wbuiltin-declaration-mismatch]
@@ -127,7 +127,7 @@ warning in [1985/applin](1985/applin/applin.c) with gcc:
```
and this reminded him of his fix to
-[1984/anonymous](1984/anonymous/anonymous.c). In the case of `1984/anonymous` it
+[1984/anonymous](%%REPO_URL%%/1984/anonymous/anonymous.c). In the case of `1984/anonymous` it
was a bit more involved but with `1985/applin` one need only add to the Makefile
`-include unistd.h`. So there are some cases where fixing warnings can fix a
problem but in general they should be ignored even if they're annoying.
@@ -225,7 +225,7 @@ something else?). Please help us to fix it!
**Please provide alternative code or fix for more compilers**!
Some entries do not work with some compilers. A good example is
-[1992/lush](1992/lush/lush.c) which uses error messages from the compiler to
+[1992/lush](%%REPO_URL%%/1992/lush/lush.c) which uses error messages from the compiler to
generate its output.
If you can provide code that works for multiple compilers without too much
@@ -241,7 +241,7 @@ here as best you can manage.
**Please help us fix the main() function**!
NOTE: it appears that most if not all of these have been fixed except perhaps
-for [1989/westley](1989/westley/westley.c) but this has probably been fixed as
+for [1989/westley](%%REPO_URL%%/1989/westley/westley.c) but this has probably been fixed as
much as possible given the nature of how it generates code: the entry itself
compiles but two versions of code it generates does not work with clang.
@@ -270,10 +270,10 @@ clang** despite the fact it might appear to be gcc: no symlink and both gcc and
clang exist but the gcc is clang which you'll see if you run `gcc --version`.
A tip and some fix methods from Cody: in the older days args to main() not given
-a type were implicit ints but when they're required to be `char ** this can
+a type were implicit ints but when they're required to be `char **` this can
cause a problem. In some cases Cody was able to use a `char *` inside `main()`
-(see [1989/tromp/tromp.c](1989/tromp/tromp.c) and
-[1986/holloway/holloway.c](1986/holloway) for two examples though done slightly
+(see [1989/tromp/tromp.c](%%REPO_URL%%/1989/tromp/tromp.c) and
+[1986/holloway/holloway.c](1986/holloway/index.html) for two examples though done slightly
differently). In other cases he was able to dereference the pointers to be used
like an int and other times a cast was necessary. He used other various
techniques to get them to compile. In some cases this introduced a problem but
@@ -323,7 +323,7 @@ warnings during at least one of compiling, linking and execution. In macOS it's
most annoying as it happens during execution (also compilation) with the warning
being interspersed with the output of the program, often causing confusing
output with the entry. A good example that was fixed is
-[1990/tbr](1990/tbr/tbr.c).
+[1990/tbr](%%REPO_URL%%/1990/tbr/tbr.c).
Cody provided some important notes on this status with respect to fixing /
changing entries:
@@ -401,13 +401,13 @@ something was noted by the author, the judges, a consequence of earlier
requirements for winning entries or the purpose was to do something that might
appear to be buggy. An example of system specific entries:
-[1984/mullender](1984/mullender/mullender.c) (see below and the [FAQ](faq.html)
+[1984/mullender](%%REPO_URL%%/1984/mullender/mullender.c) (see below and the [FAQ](faq.html)
for a version that works in modern systems) is very system specific and was
before system specific winning entries were discouraged. This is an all time
personal favourite of Landon Curt Noll. Run the alternate code to understand why
this might be (along with how strange the source code is :-) ).
-An example where a crash is not a bug: [2019/endoh](2019/endoh/endoh.c) is
+An example where a crash is not a bug: [2019/endoh](%%REPO_URL%%/2019/endoh/endoh.c) is
supposed to crash. There are others that are also supposed to crash or that are
known to segfault but are considered features.
@@ -423,7 +423,7 @@ felt that the fix was tampering with the entry).
NOTE: in the case of `gets()` we've fixed some to avoid the warning of the
compiler, linker or even during runtime, depending on the system. In [some cases
-like 1990/tbr](1990/tbr/tbr.c) the fix actually prevents confusing output (though that
+like 1990/tbr](%%REPO_URL%%/1990/tbr/tbr.c) the fix actually prevents confusing output (though that
was not the only fix made in that entry).
@@ -451,7 +451,7 @@ own fix or suggest that they're fixed!
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1984/decot/dedot.c](1984/decot/decot.c)
+### Source code: [1984/decot/dedot.c](%%REPO_URL%%/1984/decot/decot.c)
### Information: [1984/decot/index.html](1984/decot/index.html)
The purpose of this program is to print out a string of rubbish. In particular
@@ -471,7 +471,7 @@ without a newline after the `\`. This is not a bug.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1984/mullender/mullender.c](1984/mullender/mullender.c)
+### Source code: [1984/mullender/mullender.c](%%REPO_URL%%/1984/mullender/mullender.c)
### Information: [1984/mullender/index.html](1984/mullender/index.html)
Although there is an alt version and supplementary program added by Cody that
@@ -480,7 +480,7 @@ will work in modern systems, if you do not have a
[PDP-11](https://en.wikipedia.org/wiki/PDP-11) to run the original entry on it
will not work. See the index.html for details on the alternate versions.
-Cody added and fixed the [gentab.c](1984/mullender/gentab.c) which is from the
+Cody added and fixed the [gentab.c](%%REPO_URL%%/1984/mullender/gentab.c) which is from the
author's (or one of them, Mullender) remarks found by Cody. Cody fixed this to
compile and work (as best as he can determine: he has no VAX-11 or PDP-11 or
emulator to test it) but running the code on the binary itself produces a
@@ -508,7 +508,7 @@ There are no known bugs and (Mis)features for entries in 1985.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1986/august/august.c](1986/august/august.c)
+### Source code: [1986/august/august.c](%%REPO_URL%%/1986/august/august.c)
### Information: [1986/august/index.html](1986/august/index.html)
@@ -537,7 +537,7 @@ There are no known bugs and (Mis)features for entries in 1987.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1988/dale/dale.c](1988/dale/dale.c)
+### Source code: [1988/dale/dale.c](%%REPO_URL%%/1988/dale/dale.c)
### Information: [1988/dale/index.html](1988/dale/index.html)
In linux it might happen that despite no error message or message about doing
@@ -557,7 +557,7 @@ and does not crash.
### STATUS: known bug - please help us fix
-### Source code: [1989/fubar/fubar.c](1989/fubar/fubar.c)
+### Source code: [1989/fubar/fubar.c](%%REPO_URL%%/1989/fubar/fubar.c)
### Information: [1989/fubar/index.html](1989/fubar/index.html)
If you use either `fubar` or `ouroboros.c` (it's executable, see index.html for
@@ -573,7 +573,7 @@ If you want to try and fix this (mis)feature, you are welcome to try.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1989/robison/robison.c](1989/robison/robison.c)
+### Source code: [1989/robison/robison.c](%%REPO_URL%%/1989/robison/robison.c)
### Information: [1989/robison/index.html](1989/robison/index.html)
This program will very likely crash or break into tiny bits :-) if you feed it
@@ -588,7 +588,7 @@ operators like `/`. To see what operators are supported check the source code.
### STATUS: known bug - please help us fix
-### Source code: [1989/westley/westley.c](1989/westley/westley.c)
+### Source code: [1989/westley/westley.c](%%REPO_URL%%/1989/westley/westley.c)
### Information: [1989/westley/index.html](1989/westley/index.html)
With version 2 it sometimes segfaults even with the same input where other times
@@ -720,7 +720,7 @@ Enjoy! :-)
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1990/baruch/baruch.c](1990/baruch/baruch.c)
+### Source code: [1990/baruch/baruch.c](%%REPO_URL%%/1990/baruch/baruch.c)
### Information: [1990/baruch/index.html](1990/baruch/index.html)
A point worth considering is that as the number passed into the program gets
@@ -793,7 +793,7 @@ This is not considered a bug, however.
### STATUS: known bug - please help us fix
-### Source code: [1990/jaw/jaw.c](1990/jaw/jaw.c)
+### Source code: [1990/jaw/jaw.c](%%REPO_URL%%/1990/jaw/jaw.c)
### Information: [1990/jaw/index.html](1990/jaw/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson)
@@ -837,7 +837,7 @@ they will get just
which seems to be an error message (one of the fixes was to make it not use
`perror(3)` - this fixed something else though it's no longer known what).
-The script [shark.sh](1990/jaw/shark.sh) has some issues too in that due to
+The script [shark.sh](%%REPO_URL%%/1990/jaw/shark.sh) has some issues too in that due to
path not having `.` (this and maybe some other things were fixed) and `tar` not
wanting to accept reading from `stdin` (this in particular) even with the right
options used, seemingly, it has to write to disk the tarball which seems to
@@ -849,7 +849,7 @@ defeat the purpose. This would ideally be fixed.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1990/tbr/tbr.c](1990/tbr/tbr.c)
+### Source code: [1990/tbr/tbr.c](%%REPO_URL%%/1990/tbr/tbr.c)
### Information: [1990/tbr/index.html](1990/tbr/index.html)
The authors provided a list of features in the
@@ -861,7 +861,7 @@ The authors provided a list of features in the
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1990/theorem/theorem.c](1990/theorem/theorem.c)
+### Source code: [1990/theorem/theorem.c](%%REPO_URL%%/1990/theorem/theorem.c)
### Information: [1990/theorem/index.html](1990/theorem/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed many bugs that
@@ -883,7 +883,7 @@ where this occurred was fixed but this one should not be fixed. Thank you.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1991/buzzard/buzzard.c](1991/buzzard/buzzard.c)
+### Source code: [1991/buzzard/buzzard.c](%%REPO_URL%%/1991/buzzard/buzzard.c)
### Information: [1991/buzzard/index.html](1991/buzzard/index.html)
If the maze file cannot be opened, either because the path specified does not
@@ -898,7 +898,7 @@ This is a feature, not a bug.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1991/westley/westley.c](1991/westley/westley.c)
+### Source code: [1991/westley/westley.c](%%REPO_URL%%/1991/westley/westley.c)
### Information: [1991/westley/index.html](1991/westley/index.html)
There is a very simple way to always win. The program doesn't catch you and as
@@ -923,7 +923,7 @@ when you're cheating it ends up winning! Can you figure that out as well?
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1992/adrian/adrian.c](1992/adrian/adrian.c)
+### Source code: [1992/adrian/adrian.c](%%REPO_URL%%/1992/adrian/adrian.c)
### Information: [1992/adrian/index.html](1992/adrian/index.html)
The author stated that if the file cannot be opened then it will print a system
@@ -957,7 +957,7 @@ have to remove the outer `()` pair.
### STATUS: known bug - please help us fix
-### Source code: [1992/albert/albert.c](1992/albert/albert.c)
+### Source code: [1992/albert/albert.c](%%REPO_URL%%/1992/albert/albert.c)
### Information: [1992/albert/index.html](1992/albert/index.html)
Leo Broukhis, before he was an IOCCC judge, sent the IOCCC judges an email:
@@ -1023,7 +1023,7 @@ entry itself. Can you fix the actual entry? You are welcome to try and do so.
### STATUS: uses gets() - change to fgets() if possible
-### Source code: [1992/gson/gson.c](1992/gson/gson.c)
+### Source code: [1992/gson/gson.c](%%REPO_URL%%/1992/gson/gson.c)
### Information: [1992/gson/index.html])(1992/gson/index.html)
Cody changed it so that the buffer size is `ARG_MAX+1` to try and get past the
@@ -1050,7 +1050,7 @@ to be read (in case the `gets(3)` was not used in a loop).
### STATUS: known bug - please help us fix
-### Source code: [1992/kivinen/kivinen.c](1992/kivinen/kivinen.c)
+### Source code: [1992/kivinen/kivinen.c](%%REPO_URL%%/1992/kivinen/kivinen.c)
### Information: [1992/kivinen/index.html](1992/kivinen/index.html)
When you start the program everything starts to move over to the right side and
@@ -1065,7 +1065,7 @@ If you want to try and fix this (mis)feature, you are welcome to try.
### STATUS: doesn't work with some compilers - please provide alternative code or fix for more compilers
-### Source code: [1992/lush/lush.c](1992/lush/lush.c)
+### Source code: [1992/lush/lush.c](%%REPO_URL%%/1992/lush/lush.c)
### Information: [1992/lush/index.html](1992/lush/index.html)
We used a patch from [Yusuke Endoh](authors.html#Yusuke_Endoh) to get this to
@@ -1150,7 +1150,7 @@ Can you help us?
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1992/vern/vern.c](1992/vern/vern.c)
+### Source code: [1992/vern/vern.c](%%REPO_URL%%/1992/vern/vern.c)
### Information: [1992/vern/index.html](1992/vern/index.html)
When your own checkmate is imminent it prints `"Har har"` but does not exit so
@@ -1163,7 +1163,7 @@ it yourself through ctrl-c or killing it in some other fashion.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1992/westley/westley.c](1992/westley/westley.c)
+### Source code: [1992/westley/westley.c](%%REPO_URL%%/1992/westley/westley.c)
### Information: [1992/westley/index.html](1992/westley/index.html)
Cody improved the usability of this program by making it so that as long as the
@@ -1205,7 +1205,7 @@ not a misunderstanding).
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1993/ant/ant.c](1993/ant/ant.c)
+### Source code: [1993/ant/ant.c](%%REPO_URL%%/1993/ant/ant.c)
### Information: [1993/ant/index.html](1993/ant/index.html)
The author stated that:
@@ -1228,7 +1228,7 @@ not exist in the archive. Do you have it? Please provide it!
### STATUS: known bug - please help us fix
-### Source code: [1993/cmills/cmills.c](1993/cmills/cmills.c)
+### Source code: [1993/cmills/cmills.c](%%REPO_URL%%/1993/cmills/cmills.c)
### Information: [1993/cmills/index.html](1993/cmills/index.html)
In multiple platforms, both macOS and also linux (in particular a RHEL 9.3
@@ -1242,7 +1242,7 @@ Can you fix it? We welcome your help.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1993/lmfjyh/lmfjyh.c](1993/lmfjyh/lmfjyh.c)
+### Source code: [1993/lmfjyh/lmfjyh.c](%%REPO_URL%%/1993/lmfjyh/lmfjyh.c)
### Information: [1993/lmfjyh/index.html](1993/lmfjyh/index.html)
This entry relied on a bug in gcc that was fixed with gcc version 2.3.3. This
@@ -1257,7 +1257,7 @@ the index.html file for details.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1993/rince/rince.c](1993/rince/rince.c)
+### Source code: [1993/rince/rince.c](%%REPO_URL%%/1993/rince/rince.c)
### Information: [1993/rince/index.html](1993/rince/index.html)
Although the code checks if the file can be opened or not, badly formatted files
@@ -1272,7 +1272,7 @@ through ctrl-c or such.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1993/schnitzi/schnitzi.c](1993/schnitzi/schnitzi.c)
+### Source code: [1993/schnitzi/schnitzi.c](%%REPO_URL%%/1993/schnitzi/schnitzi.c)
### Information: [1993/schnitzi/index.html](1993/schnitzi/index.html)
If the file cannot be opened it will very likely segfault. This should not be
@@ -1315,7 +1315,7 @@ it will work fine.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1993/vanb/vanb.c](1993/vanb/vanb.c)
+### Source code: [1993/vanb/vanb.c](%%REPO_URL%%/1993/vanb/vanb.c)
### Information: [1993/vanb/index.html](1993/vanb/index.html)
No spaces are allowed in the expression.
@@ -1339,7 +1339,7 @@ not `d-46`.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1994/dodsond2/dodsond2.c](1994/dodsond2/dodsond2.c)
+### Source code: [1994/dodsond2/dodsond2.c](%%REPO_URL%%/1994/dodsond2/dodsond2.c)
### Information: [1994/dodsond2/index.html](1994/dodsond2/index.html)
When you initiate shooting via the `s` command you immediately lose an arrow
@@ -1354,7 +1354,7 @@ pit room you will end up dying even though you didn't explicitly move there.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1994/ldb/ldb.c](1994/ldb/ldb.c)
+### Source code: [1994/ldb/ldb.c](%%REPO_URL%%/1994/ldb/ldb.c)
### Information: [1994/ldb/index.html](1994/ldb/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed this to compile
@@ -1376,7 +1376,7 @@ one liner it's already quite long.
### STATUS: uses gets() - change to fgets() if possible
-### Source code: [1994/schnitzi/schnitzi.c](1994/schnitzi/schnitzi.c)
+### Source code: [1994/schnitzi/schnitzi.c](%%REPO_URL%%/1994/schnitzi/schnitzi.c)
### Information: [1994/schnitzi/index.html](1994/schnitzi/index.html)
NOTE: the generated code of all versions, when fed its own source, will differ
@@ -1423,7 +1423,7 @@ at these commands will be of help to understand how it works.
For the alternate versions the other functionality is unaffected.
-### The magic of [1994/schnitzi](1994/schnitzi/schnitzi.c) and how it flips text
+### The magic of [1994/schnitzi](%%REPO_URL%%/1994/schnitzi/schnitzi.c) and how it flips text
The problem is getting the generated code to use `fgets()` (once it even
compiles which was easy to do) and also have the updated buffer size be the
@@ -1503,7 +1503,7 @@ compiled!
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1994/shapiro/shapiro.c](1994/shapiro/shapiro.c)
+### Source code: [1994/shapiro/shapiro.c](%%REPO_URL%%/1994/shapiro/shapiro.c)
### Information: [1994/shapiro/index.html](1994/shapiro/index.html)
This program will likely crash if the source code file (by the name of the file
@@ -1548,7 +1548,7 @@ Since it works there is no need to fix this except for a challenge to yourself.
### STATUS: known bug - please help us fix
-### Source code: [1994/tvr/tvr.c](1994/tvr/tvr.c)
+### Source code: [1994/tvr/tvr.c](%%REPO_URL%%/1994/tvr/tvr.c)
### Information: [1994/tvr/index.html](1994/tvr/index.html)
@@ -1577,7 +1577,7 @@ doesn't break something else.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1995/cdua/cdua.c](1995/cdua/cdua.c)
+### Source code: [1995/cdua/cdua.c](%%REPO_URL%%/1995/cdua/cdua.c)
### Information: [1995/cdua/index.html](1995/cdua/index.html)
This did not originally compile under macOS and after it did compile under
@@ -1596,7 +1596,7 @@ it calls `getchar()` via the pointer `m`. So this is a feature not a bug.
### STATUS: known bug - please help us fix
-### Source code: [1995/leo/leo.c](1995/leo/leo.c)
+### Source code: [1995/leo/leo.c](%%REPO_URL%%/1995/leo/leo.c)
### Information: [1995/leo/index.html](1995/leo/index.html)
The judges suggested that the following commands should result in output:
@@ -1628,7 +1628,7 @@ it would be good if it was fixed.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1995/savastio/savastio.c](1995/savastio/savastio.c)
+### Source code: [1995/savastio/savastio.c](%%REPO_URL%%/1995/savastio/savastio.c)
### Information: [1995/savastio/index.html](1995/savastio/index.html)
This program expects a POSITIVE number. If you specify a negative number it will
@@ -1640,7 +1640,7 @@ not show any output, stuck in a loop.
### STATUS: missing file - please provide it
-### Source code: [1995/vanschnitz/vanschnitz.c](1995/vanschnitz/vanschnitz.c)
+### Source code: [1995/vanschnitz/vanschnitz.c](%%REPO_URL%%/1995/vanschnitz/vanschnitz.c)
### Information: [1995/vanschnitz/index.html](1995/vanschnitz/index.html)
The authors stated that they included a version that allows people with just K&R
@@ -1661,7 +1661,7 @@ We would appreciate anyone who has it or even just knows the name! Thank you.
### STATUS: missing or dead link - please provide them
-### Source code: [1996/gandalf/gandalf.c](1996/gandalf/gandalf.c)
+### Source code: [1996/gandalf/gandalf.c](%%REPO_URL%%/1996/gandalf/gandalf.c)
### Information: [1996/gandalf/index.html](1996/gandalf/index.html)
The link was http://www.tc3.co.uk/~gandalf/G.HTML but this no longer exists as
@@ -1675,12 +1675,12 @@ Do you have an updated link? We welcome your help!
### STATUS: uses gets() - change to fgets() if possible
-### Source code: [1996/huffman/huffman.c](1996/huffman/huffman.c)
+### Source code: [1996/huffman/huffman.c](%%REPO_URL%%/1996/huffman/huffman.c)
### Information: [1996/huffman/index.html](1996/huffman/index.html)
The changing to using `fgets(3)` in this entry is a bit more complicated. It can
almost be done except that some of the output of the
-[try.sh](1996/huffman/try.sh) is wrong, especially the last one.
+[try.sh](%%REPO_URL%%/1996/huffman/try.sh) is wrong, especially the last one.
This diff almost does it but not quite:
@@ -1718,7 +1718,7 @@ But since it does not for the time being it is advisable to just redirect
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1996/jonth/jonth.c](1996/jonth/jonth.c)
+### Source code: [1996/jonth/jonth.c](%%REPO_URL%%/1996/jonth/jonth.c)
### Information: [1996/jonth/index.html](1996/jonth/index.html)
If X is not running this program will very likely crash or do something funny.
@@ -1756,7 +1756,7 @@ There was no IOCCC in 1997.
### STATUS: missing or dead link - please provide them
-### Source code: [1998/dlowe/dlowe.c](1998/dlowe/dlowe.c)
+### Source code: [1998/dlowe/dlowe.c](%%REPO_URL%%/1998/dlowe/dlowe.c)
### Information: [1998/dlowe/index.html](1998/dlowe/index.html)
The domain http://pootpoot.com no longer exists as it once did. The judges have
@@ -1771,10 +1771,10 @@ to the page as well! You'll have IOCCC fame for reviving a pootifier! :-)
### STATUS: missing or dead link - please provide them
-### Source code: [1998/dloweneil/dloweneil.c](1998/dloweneil/dloweneil.c)
+### Source code: [1998/dloweneil/dloweneil.c](%%REPO_URL%%/1998/dloweneil/dloweneil.c)
### Information: [1998/dloweneil/index.html](1998/dloweneil/index.html)
-See above entry [1998/dlowe](1998/dlowe/dlowe.c).
+See above entry [1998/dlowe](%%REPO_URL%%/1998/dlowe/dlowe.c).
@@ -1782,7 +1782,7 @@ See above entry [1998/dlowe](1998/dlowe/dlowe.c).
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [1998/schnitzi/schnitzi.c](1998/schnitzi/schnitzi.c)
+### Source code: [1998/schnitzi/schnitzi.c](%%REPO_URL%%/1998/schnitzi/schnitzi.c)
### Information: [1998/schnitzi/index.html](1998/schnitzi/index.html)
A point worth considering is that as the number passed into the program gets
@@ -1824,7 +1824,7 @@ There was no IOCCC in 1999.
### STATUS: known bug - please help us fix
-### Source code: [2000/dlowe/dlowe.c](2000/dlowe/dlowe.c)
+### Source code: [2000/dlowe/dlowe.c](%%REPO_URL%%/2000/dlowe/dlowe.c)
### Information: [2000/dlowe/index.html](2000/dlowe/index.html)
The author gives an example command:
@@ -2091,7 +2091,7 @@ of 92 warnings! Nonetheless neither works okay and both crash.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2000/primenum/primenum.c](2000/primenum/primenum.c)
+### Source code: [2000/primenum/primenum.c](%%REPO_URL%%/2000/primenum/primenum.c)
### Information: [2000/primenum/index.html](2000/primenum/index.html)
This program does not do what you might think it does! Running it like:
@@ -2119,7 +2119,7 @@ make a pull request.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2000/rince/rince.c](2000/rince/rince.c)
+### Source code: [2000/rince/rince.c](%%REPO_URL%%/2000/rince/rince.c)
### Information: [2000/rince/index.html](2000/rince/index.html)
If `DISPLAY` is not set the program will very likely crash, do something strange
@@ -2139,23 +2139,23 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing))!
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2001/anonymous/anonymous.c](2001/anonymous/anonymous.c)
+### Source code: [2001/anonymous/anonymous.c](%%REPO_URL%%/2001/anonymous/anonymous.c)
### Information: [2001/anonymous/index.html](2001/anonymous/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed this so that it
doesn't segfault and then also fixed the functionality of it (but see below).
-Cody also fixed the [anonymous.ten.c](2001/anonymous/anonymous.ten.c) program
+Cody also fixed the [anonymous.ten.c](%%REPO_URL%%/2001/anonymous/anonymous.ten.c) program
(it also segfaulted) but notes that it **MUST** be compiled as a **32-bit ELF
binary** so it will NOT work in macOS (for example); if you cannot use `-m32` or
even if you can but it cannot compile as an ELF binary (not elf binary :-) )
(but see below) then the `anonymous` program itself will very likely crash if
-you run it on the compiled [anonymous.ten.c](2001/anonymous/anonymous.ten.c) but
+you run it on the compiled [anonymous.ten.c](%%REPO_URL%%/2001/anonymous/anonymous.ten.c) but
if nothing else it will not modify the target executable (this part of the fix
at least should be correct).
The file `2001/anonymous/anonymous.ten.32` is a pre-compiled
-[2001/anonymous.ten.c](2001/anonymous.ten.c) as a 32-bit ELF binary in case you
+[2001/anonymous.ten.c](%%REPO_URL%%/2001/anonymous.ten.c) as a 32-bit ELF binary in case you
can run ELF binaries but cannot compile 32-bit binaries.
Other BSD Unices were not tested.
@@ -2171,7 +2171,7 @@ elves of Imladris :-(
### STATUS: INABIAF - please **DO NOT** fix
### STATUS: doesn't work with some platforms - please help us fix
-### Source code: [2001/bellard/bellard.c](2001/bellard/bellard.c)
+### Source code: [2001/bellard/bellard.c](%%REPO_URL%%/2001/bellard/bellard.c)
### Information: [2001/bellard/index.html](2001/bellard/index.html)
The two statuses might seem contradictory but that is a complicated question.
@@ -2183,7 +2183,7 @@ next, were made.
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed an initial
segfault (trying to open the file) and he also fixed the [supplementary program
-bellard.otccex.c](2001/bellard/bellard.otccex.c) but this still crashes in
+bellard.otccex.c](%%REPO_URL%%/2001/bellard/bellard.otccex.c) but this still crashes in
systems not i386 linux which is what the author stated.
On the other hand if you do have a fix for 64-bit systems you're welcome to
@@ -2203,7 +2203,7 @@ On the author's [web page for this program](https://bellard.org/otcc/) it is
explicitly stated that it requires i386 linux.
There I found what should be a more portable version which is included as
-[otccelf.c](2001/bellard/otccelf.c) (after adding some `#include`s and the
+[otccelf.c](%%REPO_URL%%/2001/bellard/otccelf.c) (after adding some `#include`s and the
modification by Yusuke noted in the [thanks](thanks-for-help.html)
file) but it appears this *also* requires i386 linux; indeed looking at the code
it hard codes paths that are i386 specific to linux.
@@ -2236,7 +2236,7 @@ before the fixes there.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2001/dgbeards/dgbeards.c](2001/dgbeards/dgbeards.c)
+### Source code: [2001/dgbeards/dgbeards.c](%%REPO_URL%%/2001/dgbeards/dgbeards.c)
### Information: [2001/dgbeards/index.html](2001/dgbeards/index.html)
This program deliberately crashes if it loses (which is what it aims to do).
@@ -2247,7 +2247,7 @@ This program deliberately crashes if it loses (which is what it aims to do).
### STATUS: missing files - please provide them
-### Source code: [2001/herrmann1/herrmann1.c](2001/herrmann1/herrmann1.c)
+### Source code: [2001/herrmann1/herrmann1.c](%%REPO_URL%%/2001/herrmann1/herrmann1.c)
### Information: [2001/herrmann1/index.html](2001/herrmann1/index.html)
The author referred to the file `herrmann1.turing` but it does not exist not even
@@ -2269,7 +2269,7 @@ If you want to try and fix this (mis)feature, you are welcome to try.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2001/kev/kev.c](2001/kev/kev.c)
+### Source code: [2001/kev/kev.c](%%REPO_URL%%/2001/kev/kev.c)
### Information: [2001/kev/index.html](2001/kev/index.html)
Sometimes when one player presses `q` it will result in broken pipe on the other
@@ -2297,7 +2297,7 @@ set. In other words both have to be ASCII or EBCDIC - not one of each.
### STATUS: missing files - please provide them
-### Source code: [2001/rosten/rosten.c](2001/rosten/rosten.c)
+### Source code: [2001/rosten/rosten.c](%%REPO_URL%%/2001/rosten/rosten.c)
### Information: [2001/rosten/index.html](2001/rosten/index.html)
The author stated that there is a cat man page for this program in case one
@@ -2310,7 +2310,7 @@ wanted to install it as a tool but this is missing.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2001/schweikh/schweikh.c](2001/schweikh/schweikh.c)
+### Source code: [2001/schweikh/schweikh.c](%%REPO_URL%%/2001/schweikh/schweikh.c)
### Information: [2001/schweikh/index.html](2001/schweikh/index.html)
The glob pattern must match the whole string. See the author's comments for
@@ -2325,7 +2325,7 @@ There's also no way to escape meta characters.
### STATUS: uses gets() - change to fgets() if possible
-### Source code: [2001/westley/westley.c](2001/westley/westley.c)
+### Source code: [2001/westley/westley.c](%%REPO_URL%%/2001/westley/westley.c)
### Information: [2001/westley/index.html](2001/westley/index.html)
This function uses `gets(3)` but it would be ideal if it used `fgets(3)`. This
@@ -2360,7 +2360,7 @@ it? Please provide it!
### STATUS: known bug - please help us fix
-### Source code: [2001/williams/williams.c](2001/williams/williams.c)
+### Source code: [2001/williams/williams.c](%%REPO_URL%%/2001/williams/williams.c)
### Information: [2001/williams/index.html](2001/williams/index.html)
There seem to be a couple bugs at least in this entry. The first one is that
@@ -2445,12 +2445,12 @@ There was no IOCCC in 2003.
-## [2004/gavin](2004/gavin/index.html)
+## [2004/gavin](%%REPO_URL%%/2004/gavin/index.html)
### STATUS: compiled executable crashes - please help us fix
### STATUS: doesn't work with some platforms - please help us fix
-### Source code: [2004/gavin/gavin.c](2004/gavin/gavin.c)
+### Source code: [2004/gavin/gavin.c](%%REPO_URL%%/2004/gavin/gavin.c)
### Information: [2004/gavin//index.html](2004/gavin//index.html)
Segmentation fault will occur in some systems. For instance on macOS with the
@@ -2548,7 +2548,7 @@ The original Makefile from 2004 had the following to say about this entry:
gavin_files: boot.b lilo.conf prim gavin_install.txt
```
-The current ([Makefile](2004/gavin/Makefile) was modified to try and
+The current ([Makefile](%%REPO_URL%%/2004/gavin/Makefile) was modified to try and
fit into the current IOCCC build environment.
@@ -2563,7 +2563,7 @@ things that are not bugs but documented (mis)features.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2004/jdalbec/jdalbec.c](2004/jdalbec/jdalbec.c)
+### Source code: [2004/jdalbec/jdalbec.c](%%REPO_URL%%/2004/jdalbec/jdalbec.c)
### Information: [2004/jdalbec/index.html](2004/jdalbec/index.html)
The author stated that:
@@ -2595,7 +2595,7 @@ The author stated that:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2004/sds/sds.c](2004/sds/sds.c)
+### Source code: [2004/sds/sds.c](%%REPO_URL%%/2004/sds/sds.c)
### Information: [2004/sds/index.html](2004/sds/index.html)
The generated code will very likely segfault or do something not intended if not
@@ -2614,7 +2614,7 @@ given the right args. See the index.html file for the correct syntax.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2005/anon/anon.c](2005/anon/anon.c)
+### Source code: [2005/anon/anon.c](%%REPO_URL%%/2005/anon/anon.c)
### Information: [2005/anon/index.html](2005/anon/index.html)
This program sometimes will create unsolvable puzzles :-) just to hook you.
@@ -2633,7 +2633,7 @@ dimensions. Try `100 100 100` for instance and see what happens!
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2005/giljade/giljade.c](2005/giljade/giljade.c)
+### Source code: [2005/giljade/giljade.c](%%REPO_URL%%/2005/giljade/giljade.c)
### Information: [2005/giljade/index.html](2005/giljade/index.html)
This entry will very likely segfault or do something strange if the source code
@@ -2647,7 +2647,7 @@ This entry requires that `sed` and `make` are in the path.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2005/mikeash/mikeash.c](2005/mikeash/mikeash.c)
+### Source code: [2005/mikeash/mikeash.c](%%REPO_URL%%/2005/mikeash/mikeash.c)
### Information: [2005/mikeash/index.html](2005/mikeash/index.html)
The author states:
@@ -2694,7 +2694,7 @@ for running itself.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2005/mynx/mynx.c](2005/mynx/mynx.c)
+### Source code: [2005/mynx/mynx.c](%%REPO_URL%%/2005/mynx/mynx.c)
### Information: [2005/mynx/index.html](2005/mynx/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) notes that, though
@@ -2712,7 +2712,7 @@ website](https://www.ioccc.org) itself.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2005/sykes/sykes.c](2005/sykes/sykes.c)
+### Source code: [2005/sykes/sykes.c](%%REPO_URL%%/2005/sykes/sykes.c)
### Information: [2005/sykes/index.html](2005/sykes/index.html)
The author stated the below points of interest.
@@ -2753,7 +2753,7 @@ used decimal mode, or any of the "undocumented" instructions.
### STATUS: uses gets() - change to fgets() if possible
-### Source code: [2006/birken/birken.c](2006/birken/birken.c)
+### Source code: [2006/birken/birken.c](%%REPO_URL%%/2006/birken/birken.c)
### Information: [2006/birken/index.html](2006/birken/index.html)
This entry uses `gets(3)` which is unsafe and provides annoying warnings, most
@@ -2772,7 +2772,7 @@ with at least `computer.tofu` input file:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2006/borsanyi/borsanyi.c](2006/borsanyi/borsanyi.c)
+### Source code: [2006/borsanyi/borsanyi.c](%%REPO_URL%%/2006/borsanyi/borsanyi.c)
### Information: [2006/borsanyi/index.html](2006/borsanyi/index.html)
The string specified must be <= 42 characters and may only consist of the
@@ -2785,7 +2785,7 @@ with possibly corrupt GIF files.
### STATUS: doesn't work with some platforms - please help us fix
-### Source code: [2006/monge/monge.c](2006/monge/monge.c)
+### Source code: [2006/monge/monge.c](%%REPO_URL%%/2006/monge/monge.c)
### Information: [2006/monge/index.html](2006/monge/index.html)
This program requires x86 (with an x87 FPU) or x86_64 machine and it requires
@@ -2813,7 +2813,7 @@ Incorrect formulas will ungracefully crash the program.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2006/sykes1/sykes1.c](2006/sykes1/sykes1.c)
+### Source code: [2006/sykes1/sykes1.c](%%REPO_URL%%/2006/sykes1/sykes1.c)
### Information: [2006/sykes1/index.html](2006/sykes1/index.html)
The author stated:
@@ -2838,7 +2838,7 @@ The author stated:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2006/toledo2/toledo2.c](2006/toledo2/toledo2.c)
+### Source code: [2006/toledo2/toledo2.c](%%REPO_URL%%/2006/toledo2/toledo2.c)
### Information: [2006/toledo2/index.html](2006/toledo2/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed this program to
@@ -2905,7 +2905,7 @@ There was no IOCCC in 2010.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2011/borsanyi/borsanyi.c](2011/borsanyi/borsanyi.c)
+### Source code: [2011/borsanyi/borsanyi.c](%%REPO_URL%%/2011/borsanyi/borsanyi.c)
### Information: [2011/borsanyi/index.html](2011/borsanyi/index.html)
For a great amount of data points the program will crash, depending on your
@@ -2932,7 +2932,7 @@ bins at the edges.
### STATUS: missing or dead link - please provide them
-### Source code: [2011/dlowe/dlowe.c](2011/dlowe/dlowe.c)
+### Source code: [2011/dlowe/dlowe.c](%%REPO_URL%%/2011/dlowe/dlowe.c)
### Information: [2011/dlowe/index.html](2011/dlowe/index.html)
The author's website, http://www.pootpoot.net, no longer exists as it once did,
@@ -2962,7 +2962,7 @@ If you want to try and fix this (mis)feature, you are welcome to try.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2011/fredriksson/fredriksson.c](2011/fredriksson/fredriksson.c)
+### Source code: [2011/fredriksson/fredriksson.c](%%REPO_URL%%/2011/fredriksson/fredriksson.c)
### Information: [2011/fredriksson/index.html](2011/fredriksson/index.html)
The author stated that there are a number of features and limitations. As the
@@ -2976,7 +2976,7 @@ remarks](2011/fredriksson/index.html#limitations-and-remarks) instead.
### STATUS: doesn't work with some platforms - please help us fix
-### Source code: [2011/richards/richards.c](2011/richards/richards.c)
+### Source code: [2011/richards/richards.c](%%REPO_URL%%/2011/richards/richards.c)
### Information: [2011/richards/index.html](2011/richards/index.html)
This does not appear to work with macOS, resulting in a segfault (and sometimes
@@ -2992,7 +2992,7 @@ workarounds but at this time he could not get it to work. He offers some earlier
debugging sessions below as well as a resource from the author as well as some
resources on Apple's website should anyone wish to take a crack at it. He might
address it later but a starting point might be in
-[richards.alt.c](2011/richards/richards.alt.c).
+[richards.alt.c](%%REPO_URL%%/2011/richards/richards.alt.c).
### Debugging
@@ -3162,7 +3162,7 @@ case.
### Testing fixes
-It might be helpful to use the [try.alt.sh](2011/richards/try.alt.sh) script to
+It might be helpful to use the [try.alt.sh](%%REPO_URL%%/2011/richards/try.alt.sh) script to
test that it does not crash and functions properly.
@@ -3197,7 +3197,7 @@ Do you have a fix? We welcome it!
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2011/vik/vik.c](2011/vik/vik.c)
+### Source code: [2011/vik/vik.c](%%REPO_URL%%/2011/vik/vik.c)
### Information: [2011/vik/index.html](2011/vik/index.html)
The author stated that the program will crash if no argument is passed to the
@@ -3217,7 +3217,7 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2012/blakely/blakely.c](2012/blakely/blakely.c)
+### Source code: [2012/blakely/blakely.c](%%REPO_URL%%/2012/blakely/blakely.c)
### Information: [2012/blakely/index.html](2012/blakely/index.html)
The author stated:
@@ -3233,7 +3233,7 @@ The author stated:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2012/deckmyn/deckmyn.c](2012/deckmyn/deckmyn.c)
+### Source code: [2012/deckmyn/deckmyn.c](%%REPO_URL%%/2012/deckmyn/deckmyn.c)
### Information: [2012/deckmyn/index.html](2012/deckmyn/index.html)
The author stated:
@@ -3276,7 +3276,7 @@ The manual referred to is [here](2012/deckmyn/deckmyn.html).
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2012/dlowe/dlowe.c](2012/dlowe/dlowe.c)
+### Source code: [2012/dlowe/dlowe.c](%%REPO_URL%%/2012/dlowe/dlowe.c)
### Information: [2012/dlowe/index.html](2012/dlowe/index.html)
The author stated:
@@ -3293,7 +3293,7 @@ The author stated:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2012/tromp/tromp.c](2012/tromp/tromp.c)
+### Source code: [2012/tromp/tromp.c](%%REPO_URL%%/2012/tromp/tromp.c)
### Information: [2012/tromp/index.html](2012/tromp/index.html)
The author stated:
@@ -3321,7 +3321,7 @@ The author stated:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2012/vik/vik.c](2012/vik/vik.c)
+### Source code: [2012/vik/vik.c](%%REPO_URL%%/2012/vik/vik.c)
### Information: [2012/vik/index.html](2012/vik/index.html)
The author stated that the program will crash if no argument is passed to the
@@ -3342,7 +3342,7 @@ fire](https://en.wikipedia.org/wiki/Halt_and_Catch_Fire_(computing)) :
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/cable2/cable2.c](2013/cable2/cable2.c)
+### Source code: [2013/cable2/cable2.c](%%REPO_URL%%/2013/cable2/cable2.c)
### Information: [2013/cable2/index.html](2013/cable2/index.html)
The author stated:
@@ -3365,7 +3365,7 @@ and endianness conversion would make the source too large for IOCCC rule 2).
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/dlowe/dlowe.c](2013/dlowe/dlowe.c)
+### Source code: [2013/dlowe/dlowe.c](%%REPO_URL%%/2013/dlowe/dlowe.c)
### Information: [2013/dlowe/index.html](2013/dlowe/index.html)
This program will possibly crash or draw something strange with 0 args. Then
@@ -3389,7 +3389,7 @@ The author also stated:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/endoh1/endoh1.c](2013/endoh1/endoh1.c)
+### Source code: [2013/endoh1/endoh1.c](%%REPO_URL%%/2013/endoh1/endoh1.c)
### Information: [2013/endoh1/index.html](2013/endoh1/index.html)
From the author:
@@ -3415,7 +3415,7 @@ section](2013/endoh1/index.html#spoiler).
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/endoh3/endoh3.c](2013/endoh3/endoh3.c)
+### Source code: [2013/endoh3/endoh3.c](%%REPO_URL%%/2013/endoh3/endoh3.c)
### Information: [2013/endoh3/index.html](2013/endoh3/index.html)
From the author:
@@ -3437,7 +3437,7 @@ A workaround is inserting a whitespace: `C2 E2`.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/endoh4/endoh4.c](2013/endoh4/endoh4.c)
+### Source code: [2013/endoh4/endoh4.c](%%REPO_URL%%/2013/endoh4/endoh4.c)
### Information: [2013/endoh4/index.html](2013/endoh4/index.html)
Invalid input files will very likely crash the program.
@@ -3449,7 +3449,7 @@ Invalid input files will very likely crash the program.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/hou/hou.c](2013/hou/hou.c)
+### Source code: [2013/hou/hou.c](%%REPO_URL%%/2013/hou/hou.c)
### Information: [2013/hou/index.html](2013/hou/index.html)
This program will not terminate on its own; you must kill `hou` (but not Qiming
@@ -3461,7 +3461,7 @@ Hou :-) ) yourself. This should not be fixed.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2013/mills/mills.c](2013/mills/mills.c)
+### Source code: [2013/mills/mills.c](%%REPO_URL%%/2013/mills/mills.c)
### Information: [2013/mills/index.html](2013/mills/index.html)
The author reminds us that if you kill the program you will have to wait a short
@@ -3484,7 +3484,7 @@ it out as a known limitation it is not a bug but a feature.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2014/maffiodo1/prog.c](2014/maffiodo1/prog.c)
+### Source code: [2014/maffiodo1/prog.c](%%REPO_URL%%/2014/maffiodo1/prog.c)
### Information: [2014/maffiodo1/index.html](2014/maffiodo1/index.html)
The author noted that in macOS the colours might be wrong. They gave a solution.
@@ -3519,7 +3519,7 @@ but since it's documented it's considered a feature, not a bug to fix.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2014/maffiodo2/prog.c](2014/maffiodo2/prog.c)
+### Source code: [2014/maffiodo2/prog.c](%%REPO_URL%%/2014/maffiodo2/prog.c)
### Information: [2014/maffiodo2/index.html](2014/maffiodo2/index.html)
This program will very likely crash if no arg is given.
@@ -3530,12 +3530,12 @@ This program will very likely crash if no arg is given.
### STATUS: known bug - please help us fix
-### Source code: [2014/vik/prog.c](2014/vik/prog.c)
+### Source code: [2014/vik/prog.c](%%REPO_URL%%/2014/vik/prog.c)
### Information: [2014/vik/index.html](2014/vik/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) discovered a bug to do
with translating sound to text that shows itself in some cases (it works in
-others) when working on his winning [2020 Enigma machine](2020/ferguson2/prog.c)
+others) when working on his winning [2020 Enigma machine](%%REPO_URL%%/2020/ferguson2/prog.c)
('Most enigmatic') entry. See his [index.html](2020/ferguson2/index.html) for
details (search for `vik` in the file). This one might be more of a limitation
but this is not known.
@@ -3591,7 +3591,7 @@ they will properly get:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2015/hou/prog.c](2015/hou/prog.c)
+### Source code: [2015/hou/prog.c](%%REPO_URL%%/2015/hou/prog.c)
### Information: [2015/hou/index.html](2015/hou/index.html)
The author stated:
@@ -3624,7 +3624,7 @@ result. Error messages become garbled, though.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2015/mills2/prog.c](2015/mills2/prog.c)
+### Source code: [2015/mills2/prog.c](%%REPO_URL%%/2015/mills2/prog.c)
### Information: [2015/mills2/index.html](2015/mills2/index.html)
The program doesn't look at the header of files so if it's passed something hat
@@ -3638,7 +3638,7 @@ The program depends on little endian systems.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2015/schweikhardt/prog.c](2015/schweikhardt/prog.c)
+### Source code: [2015/schweikhardt/prog.c](%%REPO_URL%%/2015/schweikhardt/prog.c)
### Information: [2015/schweikhardt/index.html](2015/schweikhardt/index.html)
The program assumes that `EOF` is `-1`. This can be fixed but at this time it is
@@ -3687,7 +3687,7 @@ There was no IOCCC in 2017.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2018/algmyr/algmyr.c](2018/algmyr/algmyr.c)
+### Source code: [2018/algmyr/algmyr.c](%%REPO_URL%%/2018/algmyr/algmyr.c)
### Information: [2018/algmyr/index.html](2018/algmyr/index.html)
The author wrote:
@@ -3710,7 +3710,7 @@ loop printing whitespace.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2018/hou/prog.c](2018/hou/prog.c)
+### Source code: [2018/hou/prog.c](%%REPO_URL%%/2018/hou/prog.c)
### Information: [2018/hou/index.html](2018/hou/index.html)
When you run it on a JSON file you will see something like:
@@ -3734,7 +3734,7 @@ fixing the syntax error in the generated `ioccc.json` file.
### STATUS: known bug - please help us fix
-### Source code: [2018/mills/prog.c](2018/mills/prog.c)
+### Source code: [2018/mills/prog.c](%%REPO_URL%%/2018/mills/prog.c)
### Information: [2018/mills/index.html](2018/mills/index.html)
After exiting the program (with ctrl-e) if you try running it again you will
@@ -3773,7 +3773,7 @@ in the case of compiled code it won't be executable).
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2018/vokes/vokes.c](2018/vokes/vokes.c)
+### Source code: [2018/vokes/vokes.c](%%REPO_URL%%/2018/vokes/vokes.c)
### Information: [2018/vokes/index.html](2018/vokes/index.html)
The author wrote the following:
@@ -3835,11 +3835,11 @@ The author wrote the following:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/adamovsky/prog.c](2019/adamovsky/prog.c)
+### Source code: [2019/adamovsky/prog.c](%%REPO_URL%%/2019/adamovsky/prog.c)
### Information: [2019/adamovsky/index.html](2019/adamovsky/index.html)
Certain input can crash this program. The file
-[crash.unl](2019/adamovsky/crash.unl) is an example file.
+[crash.unl](%%REPO_URL%%/2019/adamovsky/crash.unl) is an example file.
@@ -3847,7 +3847,7 @@ Certain input can crash this program. The file
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/burton/prog.c](2019/burton/prog.c)
+### Source code: [2019/burton/prog.c](%%REPO_URL%%/2019/burton/prog.c)
### Information: [2019/burton/index.html](2019/burton/index.html)
The author pointed out that some implementations of `wc(1)` show different
@@ -3859,7 +3859,7 @@ values but his implementation matches that of macOS and FreeBSD.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/ciura/prog.c](2019/ciura/prog.c)
+### Source code: [2019/ciura/prog.c](%%REPO_URL%%/2019/ciura/prog.c)
### Information: [2019/ciura/index.html](2019/ciura/index.html)
[Cody Boone Ferguson](authors.html#Cody_Boone_Ferguson) fixed the scripts so
@@ -3897,7 +3897,7 @@ in the de.sh/de.alt.sh scripts:
### STATUS: uses gets() - change to fgets() if possible
-### Source code: [2019/dogon/prog.c](2019/dogon/prog.c)
+### Source code: [2019/dogon/prog.c](%%REPO_URL%%/2019/dogon/prog.c)
### Information: [2019/dogon/index.html](2019/dogon/index.html)
The author does not it uses `gets()` and one will get warnings but it would be
@@ -3909,7 +3909,7 @@ ideal if this was not the case.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/duble/prog.c](2019/duble/prog.c)
+### Source code: [2019/duble/prog.c](%%REPO_URL%%/2019/duble/prog.c)
### Information: [2019/duble/index.html](2019/duble/index.html)
There are two things to be aware of with this entry.
@@ -3957,7 +3957,7 @@ though one might want to check that the program is not currently running. :-)
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/endoh/prog.c](2019/endoh/prog.c)
+### Source code: [2019/endoh/prog.c](%%REPO_URL%%/2019/endoh/prog.c)
### Information: [2019/endoh/index.html](2019/endoh/index.html)
As a backtrace quine this entry is **SUPPOSED to segfault** so this should not be
@@ -3969,7 +3969,7 @@ touched either.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/karns/prog.c](2019/karns/prog.c)
+### Source code: [2019/karns/prog.c](%%REPO_URL%%/2019/karns/prog.c)
### Information: [2019/karns/index.html](2019/karns/index.html)
The author stated the following:
@@ -4006,7 +4006,7 @@ The author stated the following:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/lynn/prog.c](2019/lynn/prog.c)
+### Source code: [2019/lynn/prog.c](%%REPO_URL%%/2019/lynn/prog.c)
### Information: [2019/lynn/index.html](2019/lynn/index.html)
The author wrote that there are a number of differences from what one might
@@ -4020,7 +4020,7 @@ remarks in the sections [Syntax](2019/lynn/index.html#syntax) and
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/mills/prog.c](2019/mills/prog.c)
+### Source code: [2019/mills/prog.c](%%REPO_URL%%/2019/mills/prog.c)
### Information: [2019/mills/index.html](2019/mills/index.html)
The author wrote that if you decide to change networks or use a different input
@@ -4047,7 +4047,7 @@ The author also wrote:
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/poikola/prog.c](2019/poikola/prog.c)
+### Source code: [2019/poikola/prog.c](%%REPO_URL%%/2019/poikola/prog.c)
### Information: [2019/poikola/index.html](2019/poikola/index.html)
This program will not validate input so it might fail or get stuck if invoked
@@ -4056,11 +4056,11 @@ erroneously.
Also, the maximum file size is 1GB.
-## [2019/yang](2019/yang/index.html)
+## [2019/yang](%%REPO_URL%%/2019/yang/index.html)
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2019/yang/prog.c](2019/yang/prog.c)
+### Source code: [2019/yang/prog.c](%%REPO_URL%%/2019/yang/prog.c)
### Information: [2019/yang/index.html](2019/yang/index.html)
The author noted that if the program runs out of memory it is likely to crash.
@@ -4084,7 +4084,7 @@ ignored except line feeds (preserved) and tabs (expanded to 8 spaces).'
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2020/burton/prog.c](2020/burton/prog.c)
+### Source code: [2020/burton/prog.c](%%REPO_URL%%/2020/burton/prog.c)
### Information: [2020/burton/index.html](2020/burton/index.html)
This entry is known to crash if no arg is specified. Although easy to fix it is
@@ -4100,7 +4100,7 @@ either. But can you figure out why this happens?
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2020/carlini/prog.c](2020/carlini/prog.c)
+### Source code: [2020/carlini/prog.c](%%REPO_URL%%/2020/carlini/prog.c)
### Information: [2020/carlini/index.html](2020/carlini/index.html)
The author stated that bad things happen if the entered move is outside of the
@@ -4121,7 +4121,7 @@ If you have audible bells enabled the program will beep at every turn.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2020/ferguson1/prog.c](2020/ferguson1/prog.c)
+### Source code: [2020/ferguson1/prog.c](%%REPO_URL%%/2020/ferguson1/prog.c)
### Information: [2020/ferguson1/index.html](2020/ferguson1/index.html)
There are some things that might appear to be bugs but are actually features or
@@ -4135,7 +4135,7 @@ things that are misinterpreted as bugs. See the
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2020/giles/prog.c](2020/giles/prog.c)
+### Source code: [2020/giles/prog.c](%%REPO_URL%%/2020/giles/prog.c)
### Information: [2020/giles/index.html](2020/giles/index.html)
The author noted that the program only supports WAV files that have
@@ -4148,7 +4148,7 @@ audio channels.
### STATUS: INABIAF - please **DO NOT** fix
-### Source code: [2020/otterness/prog.c](2020/otterness/prog.c)
+### Source code: [2020/otterness/prog.c](%%REPO_URL%%/2020/otterness/prog.c)
### Information: [2020/otterness/index.html](2020/otterness/index.html)
The author listed the following limitations:
diff --git a/faq.html b/faq.html
index 5f37f9c42..9e5d00da8 100644
--- a/faq.html
+++ b/faq.html
@@ -1981,7 +1981,7 @@ remarks and always the author’s or authors’ remarks, you look at the origina
code. When the entry source code is called prog.c the original code is in
prog.orig.c; otherwise it is dirname.orig.c. For instance one of Landon’s all
time favourite entries is 1984/mullender and the
-original code is in mullender.orig.c. In
+original code is in mullender.orig.c. In
some cases, such as 1984/mullender, the original code is the same as the code
as no changes were made (there is an alt version for systems that are not
VAX-11/PDP-11, however).
@@ -2219,7 +2219,7 @@ longer fit within the year’s size restrictions. Invariably the length of colum
and/or number of rows have also changed.
The winner.orig.c file contains the original source code that was
subjected to rule 2 of the given IOCCC. You may also wish to see
-the /archive directory where you can find all the
+the archive directory where you can find all the
original winning entries as compressed tar files for a given year.
In some cases the entry may have abused rule 2 and declared an
“abuse of the rules” (although now blatant abuse of the rules to
@@ -2314,7 +2314,7 @@ author.
The latter form is in case there are more than one anonymous author in a given
year.
NOTE: even if the directory name is not anonymous the above rules apply as in
-in the case of 2005/anon.
+in the case of 2005/anon.
Anonymous author_handle’s match this regexp:
Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
See FAQ 5.5 for information about how to update
@@ -2619,7 +2619,7 @@ of IOCCC years.
of the IOCCC entry directories for a given year. For example, see the 1984/.year file.
Under each IOCCC entry directory, you will find a .path file.
These files contain the directory path from the top directory.
-For example see 1984/anonymous/.path.
+For example see 1984/anonymous/.path.
The .top, .year and .path files are generated from the top level Makefile, by:
make genpath
@@ -2735,7 +2735,7 @@ it will be that. For instance using the above example you might do:
Making changes, fixes etc.
Here you must use your wits, knowledge, creativity and whatever else you have.
Let’s say that Cody wants to update his file
-/2020/ferguson1/play.sh script. He would open it in
+2020/ferguson1/play.sh script. He would open it in
his editor of choice (in his case vim) and make the changes. He would then make
sure (as there is a last updated date) to update the last updated date. For
instance he might add the following:
@@ -2767,7 +2767,7 @@ with your ssh key. To do this you need to do:
Now you’d be ready to make your commits.
Before doing anything else, however, a new branch needs to be created.
Continuing the example above for
-2020/ferguson1/play.sh, it might be that:
+2020/ferguson1/play.sh, it might be that:
git checkout -B human-snakes
This would change the branch to the newly created branch human-snakes branch.
Now Cody could commit the changes:
diff --git a/faq.md b/faq.md
index c73058d31..39c51964f 100644
--- a/faq.md
+++ b/faq.md
@@ -2344,7 +2344,7 @@ remarks and always the author's or authors' remarks, you look at the original
code. When the entry source code is called `prog.c` the original code is in
`prog.orig.c`; otherwise it is `dirname.orig.c`. For instance one of Landon's all
time favourite entries is [1984/mullender](1984/mullender/index.html) and the
-original code is in [mullender.orig.c](1984/mullender/mullender.orig.c). In
+original code is in [mullender.orig.c](%%REPO_URL%%/1984/mullender/mullender.orig.c). In
some cases, such as `1984/mullender`, the original code is the same as the code
as no changes were made (there is an alt version for systems that are not
VAX-11/PDP-11, however).
@@ -2675,7 +2675,7 @@ and/or number of rows have also changed.
The `winner.orig.c` file contains the original source code that was
subjected to rule 2 of the given IOCCC. You may also wish to see
-the [/archive](archive) directory where you can find all the
+the [archive](archive) directory where you can find all the
original winning entries as compressed tar files for a given year.
In some cases the entry may have abused rule 2 and declared an
@@ -2817,7 +2817,7 @@ The latter form is in case there are more than one anonymous author in a given
year.
NOTE: even if the directory name is not `anonymous` the above rules apply as in
-in the case of [2005/anon](2005/anon/anon.c).
+in the case of [2005/anon](%%REPO_URL%%/2005/anon/anon.c).
Anonymous `author_handle`'s match this regexp:
@@ -3352,7 +3352,7 @@ of the IOCCC entry directories for a given year. For example, see the [1984/.ye
Under each IOCCC entry directory, you will find a `.path` file.
These files contain the directory path from the top directory.
-For example see [1984/anonymous/.path](1984/anonymous/.path).
+For example see [1984/anonymous/.path](%%REPO_URL%%/1984/anonymous/.path).
The .top, .year and .path files are generated from the top level Makefile, by:
@@ -3513,7 +3513,7 @@ You're ready to make your changes now!
Here you must use your wits, knowledge, creativity and whatever else you have.
Let's say that Cody wants to update his file
-[/2020/ferguson1/play.sh](2020/ferguson1/play.sh) script. He would open it in
+[2020/ferguson1/play.sh](%%REPO_URL%%/2020/ferguson1/play.sh) script. He would open it in
his editor of choice (in his case vim) and make the changes. He would then make
sure (as there is a last updated date) to update the last updated date. For
instance he might add the following:
@@ -3563,7 +3563,7 @@ Now you'd be ready to make your commits.
Before doing anything else, however, a new branch needs to be created.
Continuing the example above for
-[2020/ferguson1/play.sh](2020/ferguson1/play.sh), it might be that:
+[2020/ferguson1/play.sh](%%REPO_URL%%/2020/ferguson1/play.sh), it might be that:
```
diff --git a/markdown.html b/markdown.html
index 539825231..5c170dc58 100644
--- a/markdown.html
+++ b/markdown.html
@@ -473,11 +473,24 @@ unquoted attribute values.
<del>...</del>
Do not use tt HTML elements
Please do not use the tt HTML elements:
- <tt>The HTML 5 obsolete tt element is obsolete</tt>
+ <tt>The HTML 5 obsolete tt element is obsolete</tt> <=== no thank you
Instead use either a monospaced span:
<span style="font-family: monospace;">Use of monospaced font is one option</span>
Or better and easier still, use an inline markdown code block:
`inline markdown code block is easier and much better`
+Do not use un-indented code clocks
+Please do not start code blocks at the left-hand edge.
+```
+This code block <=== no thank you
+is not indendted
+```
+```
+
+We request that you indent the code block by 4 spaces:
+
+ This code block
+ is intented 4 spaces
+````
Do not add trailing slash on void HTML elements
Please do not use trailing slash on void HTML
elements.
@@ -506,18 +519,24 @@ tags.
Markdown links that end in “))” complicate parsing and sometimes lead
to incorrect URLs or file paths.
Instead of:
-[some text](https://example.com/foo_(bar)) <=== no thank you
+ [some text](https://example.com/foo_(bar)) <=== no thank you
Use:
-[some text](https://example.com/foo_(bar))
+ [some text](https://example.com/foo_(bar))
Instead of:
-This thing ([some text](some/path)) is not ideal. <=== no thank you
-``
-
-Use:
-
-This thing, some text, is better.
-```
-
+ This thing ([some text](some/path)) is not ideal. <=== no thank you
+Use:
+ This thing, [some text](some/path), is better.
+Do not put (‘s or )’ markdown link titles
+Please do not use parenthesis inside the markdown link titles.
+Instead of:
+ [some (text)](https://example.com/cyrds) <=== no thank you
+Use:
+ [some (text)](https://example.com/cyrds)
+Instead of:
+ [ls(1)](https://example.com/ls-man-page.1) <=== no thank you
+Use:
+ [ls(1)](https://example.com/ls-man-page.1)
+
diff --git a/markdown.md b/markdown.md
index b156df736..adb39ba5c 100644
--- a/markdown.md
+++ b/markdown.md
@@ -183,7 +183,7 @@ Use instead:
Please do not use the tt HTML elements:
```html
- The HTML 5 obsolete tt element is obsolete
+ The HTML 5 obsolete tt element is obsolete <=== no thank you
```
Instead use either a monospaced span:
@@ -199,6 +199,27 @@ Or better and easier still, use an inline markdown code block:
```
+## Do not use un-indented code clocks
+
+Please do not start code blocks at the left-hand edge.
+
+````
+```
+This code block <=== no thank you
+is not indendted
+```
+```
+
+We request that you indent the code block by 4 spaces:
+
+````
+```
+ This code block
+ is intented 4 spaces
+```
+````
+
+
## Do not add trailing slash on void HTML elements
Please do not use trailing slash on [void HTML
@@ -251,6 +272,7 @@ Instead use just:
etc.
+
## Do not end markdown links in ))
Please do not end a markdown links with a double closed parenthesis "))".
@@ -261,23 +283,52 @@ to incorrect URLs or file paths.
Instead of:
```
-[some text](https://example.com/foo_(bar)) <=== no thank you
+ [some text](https://example.com/foo_(bar)) <=== no thank you
```
Use:
```
-[some text](https://example.com/foo_(bar))
+ [some text](https://example.com/foo_(bar))
```
Instead of:
```
-This thing ([some text](some/path)) is not ideal. <=== no thank you
-``
+ This thing ([some text](some/path)) is not ideal. <=== no thank you
+```
Use:
```
-This thing, [some text](some/path), is better.
+ This thing, [some text](some/path), is better.
+```
+
+
+## Do not put ('s or )' markdown link titles
+
+Please do not use parenthesis inside the markdown link titles.
+
+Instead of:
+
+```
+ [some (text)](https://example.com/cyrds) <=== no thank you
+```
+
+Use:
+
+```
+ [some (text)](https://example.com/cyrds)
+```
+
+Instead of:
+
+```
+ [ls(1)](https://example.com/ls-man-page.1) <=== no thank you
+```
+
+Use:
+
+```
+ [ls(1)](https://example.com/ls-man-page.1)
```
diff --git a/news.md b/news.md
index 3f1eaa6e6..3fb82cfea 100644
--- a/news.md
+++ b/news.md
@@ -15,7 +15,7 @@ Nearly all of the [temp-test-ioccc web site](https://ioccc-src.github.io/temp-te
web site has undergone editorial review. Nearly all [IOCCC winning entries](years.html)
compile on modern systems and many have `try.sh` scripts to help you run them.
For those that cannot compile and/or do not work, we have made a
-[Bugs and (Mis)features](bugs.html) page.
+[Bugs and (Mis)features](bugs.html) page.
We have made nearly 4823 changes to date!
diff --git a/status.html b/status.html
index 7ea2a149f..757768909 100644
--- a/status.html
+++ b/status.html
@@ -387,7 +387,7 @@
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"IOCCC_status_version" : "1.0 2024-03-09",
"contest_status" : "closed",
- "news_update" : "2024-04-21T22:08:12+00:00",
+ "news_update" : "2024-04-28T06:28:19+00:00",
"status_update" : "2024-03-31T05:02:06+00:00"
}
diff --git a/status.json b/status.json
index ce6e04640..2962760a5 100644
--- a/status.json
+++ b/status.json
@@ -2,6 +2,6 @@
"no_comment" : "mandatory comment: because comments were removed from the original JSON spec",
"IOCCC_status_version" : "1.0 2024-03-09",
"contest_status" : "closed",
- "news_update" : "2024-04-21T22:08:12+00:00",
+ "news_update" : "2024-04-28T06:28:19+00:00",
"status_update" : "2024-03-31T05:02:06+00:00"
}
diff --git a/thanks-for-help.html b/thanks-for-help.html
index 86f3548fb..72a0d6c1f 100644
--- a/thanks-for-help.html
+++ b/thanks-for-help.html
@@ -556,8 +556,8 @@ changed the #o lines to #define. Also unistd.h
that Cody added. See the index.html for details.
Cody also provided the try.alt.sh script.
Cody added the alt code which allows one to resize the maze and he also added
the try.alt.sh script that randomly selects sizes
@@ -658,7 +658,7 @@ rule).
1986
Cody made the C file executable so one does not have to do sh ./applin.c or ./applin; they can do either ./applin.c or ./applin.
@@ -668,7 +668,7 @@ rule).
Cody made this use fgets().
@@ -2022,7 +2022,7 @@ check the bugs.html file.
Cody added the try scripts, four total, colour and black and white
pairs for the original entry and the alt code. These scripts are
-try.color.sh, try.bw.sh,
+try.color.sh, try.bw.sh,
try.alt.color.sh and
try.alt.bw.sh, respectively. The scripts go through
each mode allowed with two sizes, 128 and 256, allowing one to quit or skip each
@@ -2060,7 +2060,7 @@ the play along the lines of the 1995
Cody fixed this so that it would work with macOS. Once it could compile it
@@ -2076,18 +2076,18 @@ It actually appears to allow 1 but if you specify 4 it says 0, 2 or 3 and it is
an error but it’s entirely possible that they will eventually make the defect
function as the error message claims.
Cody added the try.sh script that uses the text file he
provided which is input we suggested one try with the entry.
Cody fixed the alt code so that it will compile with modern compilers. The
@@ -2102,12 +2102,12 @@ alt version is not as important as alt code in other entries. In order to get
the paging to work right for the garry.data file leading blank lines had to be
added.
@@ -2122,12 +2122,12 @@ which only allows main() to have 0, 2 or 3 args. This is done by a
function (pain() as it’s annoying that clang is this way :-) ) that main()
calls which has the four args.
@@ -2145,7 +2145,7 @@ entry decrypts the text or something like that.
1996
Cody fixed a segfault in this program that prevented it from working right and
@@ -2159,7 +2159,7 @@ problem existed in macOS.
commands that were given by the judges in the try section, with the fix above
applied.
Cody proposed a fix for this to compile with clang and Landon implemented it
@@ -2176,8 +2176,8 @@ numbers on the same line. This was not put in an alternate version but perhaps
it should be.
Cody also added the try.sh script.
Cody provided an alternate version which uses
usleep() in between writing the output to make it easier to see what is going
@@ -2186,7 +2186,7 @@ flashing by rapidly (it affects him too but he also thinks it moves too fast
nowadays anyway). We recommend that you try the alternate version first due to
these reasons.
Cody fixed this to compile and work with modern systems. As he loved the
@@ -2198,12 +2198,12 @@ either different output or the same output that we briefly pointed out.
BTW: it is perilous to try the patience of
Gandalf. Go ahead, try it! :-)
Cody fixed this to not segfault under macOS. The problem was that the function
@@ -2216,7 +2216,7 @@ the function in the pointer assignment.
@@ -2228,7 +2228,7 @@ on other systems (the other file is
gcc-lib/sparc-sun-solaris2.5/2.7.2/include/errno.h). Thus Cody also added this to
the Makefile despite the fact that very few probably use Solaris nowadays.
Cody added the try.sh script with a few commands to try
@@ -2236,14 +2236,14 @@ along with a shorter version of something the author suggested one try (it is
suggested that one try the longer version too but it will run in an infinite
loop so having it in a script is less desired).
Cody updated the Makefile so that if it fails to compile it will try he
method suggested for SunOS rather than having to update the Makefile manually or
running a more complicated command: now one can just run make.
Cody fixed a segfault in this entry as well as it displaying environmental
@@ -2265,7 +2265,7 @@ provided by the author, Cody added ‘.sh’ to the clock[1-3].sh s
1998
Cody improved the Makefile to allow for easier redefining the control
@@ -2279,7 +2279,7 @@ have them like with Macs. The alt build hard codes the page up and page down
alternatives because not doing so would overly complicate both builds and since
you can configure them all in both builds it shouldn’t matter.
Cody, out of an abundance of caution, added a second arg to main() as some
@@ -2291,13 +2291,13 @@ be a problem at such a time.
Cody also added the bas1.sh script to simplify running the
program.
Cody added the try.sh script which runs some default actions
as well as allowing one to pass in different file names or strings.
Cody added a call to endwin() to restore terminal sanity (echo etc.) when
@@ -2306,7 +2306,7 @@ exiting the program (in both versions).
all the data files, giving instructions on how to rotate and zoom in and out,
prior to each run.
Cody changed a int * used for fopen(3) to be a FILE * to be more correct
@@ -2319,26 +2319,26 @@ for why this has to be done this way.
loop until one hits q (or Q) or sends intr/ctrl-c. He also proposed there’s
a way to cheat very easily. Can you figure out how?
Cody made the program more portable by changing the void return type of main()
to be int (in both versions).
Cody added the scripts try.sh,
-try.alt.sh, pootify.sh and
+try.alt.sh, pootify.sh and
pootify.cgi.sh for a fun example use of the
program, a local pootifier of web pages and a CGI pootifier. See historical
remarks for more details on the
pootify scripts.
Cody added alt code which has vi(m) movement
(in addition to the other keys except for dropping it’s not d but j or
space) keys as well as allowing one to quit the game.
@@ -2361,7 +2361,7 @@ code look like the original with just an extra arg.
Cody also added the try.sh script to show the output of some
of the expressions that we selected.
Cody fixed invalid data types which prevented this entry from working, causing a
@@ -2380,7 +2380,7 @@ doing:
Cody also added the try.sh script to help users try the
commands that we recommended as well as some added by him.
Cody fixed this for modern systems (it did not work at all) and added an
@@ -2425,7 +2425,7 @@ the macros in the form of gcc -dM i.e., the lines are in the form <
compute the character count in the code according to the contest rules of 1998
in the file charcount.pl.
Cody fixed the code to not trigger an internal compiler error in gcc:
@@ -2442,7 +2442,7 @@ have a problem with that in the future which is not entirely out of the
question.
Cody also added the try.sh script.
Cody added the alternate code which allows one
@@ -2468,7 +2468,7 @@ for more details.
There actually is a web page for the tool and this was added to the author
information for the entry. It has not been added to any JSON file.
-1998/tomtorfs
+1998/tomtorfs
Source code: /tomtorfs.c](https://github.com/ioccc-src/temp-test-ioccc/blob/master/1998/tomtorfs/tomtorfs.c)
Cody fixed the assumption that EOF is -1 (the author noted that it assumes
@@ -2484,21 +2484,21 @@ commands that we recommended.
2000
Cody changed this entry to use fgets(3) instead of gets(3). This involved
changing the K arg to gets(3) to &K in fgets(3).
Cody also added the try.sh script.
Cody added the try.sh script with some improvements to the
commands we recommended like not assuming the number of columns one has in their
terminal.
Cody fixed this to compile in systems that require one to explicitly link in
@@ -2506,13 +2506,13 @@ terminal.
Cody also added the try.sh script for those who are
feeling a bit too confident, cocky or even happy :-)
Cody made this more portable by changing the void main to int main.
He also added the try.sh script.
Cody fixed this to compile with more recent perl versions; the symbol that’s now
@@ -2520,13 +2520,13 @@ feeling a bit too confident, cocky or even happy :-)
under Linux after this change.
Cody also added the try.sh script.
Cody made it easier to compile this in some cases by adding X11/ to the
includes of Xlib.h and keysym.h.
Cody fixed this for modern compilers. Depending on the compiler it would either
@@ -2547,18 +2547,18 @@ like the original entry but with the two fixes.
variable which although works it is incongruent with the other Makefiles and is
more confusing (even if not confusing).
Cody made this more portable by changing the void main to int main.
Cody also added the try.sh script.
Cody fixed an infinite loop that occurred if invalid input was entered, flooding
@@ -2568,12 +2568,12 @@ the screen with:
on it to assign to the ints, much like with 1987/lievaart. The strings are
char[5] and the % specifier is %4s which is enough for the game.
Cody fixed the code and added an appropriate make rule so that the
@@ -2610,12 +2610,12 @@ index.html for details on that. Note that this alternate version only will impac
the curses and the SDL versions as Cody does not have a DOS system to test the
other version in.
Cody added the alt code based on the
author’s remarks with a fix for modern systems and he also added the two
-scripts, try.sh and try.alt.sh for
+scripts, try.sh and try.alt.sh for
the main code and the alt code respectively.
And although the scripts do chmod +x on the source code (see the index.html for
details) the source code is now executable by default.
@@ -2623,7 +2623,7 @@ details) the source code is now executable by default.
2001
Cody fixed both the supplementary program and the program itself (both of which
@@ -2682,7 +2682,7 @@ sings Ten in the Bed
attempt to use the program as it was designed but if compiling as 32-bit fails
it will at least run the supplementary program as a 64-bit program directly.
Cody fixed this to compile with clang but according to the author this will not
@@ -2719,7 +2719,7 @@ versions of clang it is. With gcc we can get away with
compiler that does not support this would not work. Thus we use the modification
by Yusuke.
Cody fixed this to work with clang by adding another function that is allowed to
@@ -2730,7 +2730,7 @@ valid, BTW.
Cody also added the try.sh script.
He also fixed it to check the number of args.
Cody added a value to return in main() to make it more portable.
@@ -2753,7 +2753,7 @@ those with macOS) (to do with sound; see his
sound devices in macOS).
Cody added the try.sh.
The ANSI escape codes were no longer valid but Yusuke provided a patch to fix
@@ -2765,7 +2765,7 @@ end of main().
Cody also added the alt code that adds
vi(m) movement keys.
The author provided two changes: one to speed it up and one to make it not crash
@@ -2775,7 +2775,7 @@ might be) too good to get rid of so he kept that in.
He also points out that there is a way to get the computer to automatically lose
very quickly. Do you know what it is?
Cody fixed this so that the when compiling the code the program is not executed
@@ -2791,7 +2791,7 @@ shellcheck. In particular there were quite a few:
errors/warnings.
Cody also added the try.sh script.
Cody fixed this to work with both 64-bit and 32-bit compilers by changing most
@@ -2802,7 +2802,7 @@ useful than any other place as the command to try is quite long with C code.
For some reason the original code was missing (presumingly because it had been
added to .gitignore by accident) but Cody restored it from the archive.
Cody improved the Makefile to allow one to more easily set up the port,
@@ -2827,7 +2827,7 @@ without having to sacrifice playability by running make.
done at a time where it was said to be a bug that should be fixed, for better or
worse.
Cody fixed this to not crash if not enough args as this was not documented by
@@ -2835,7 +2835,7 @@ the author. The other problems are documented so were not fixed. See
index.html for details.
Cody also added the try.sh script.
Cody added the script try.sh to automate a heap of commands
@@ -2846,12 +2846,12 @@ described in the index.html, based on the author’s remarks.
2004
Cody added an alternate version which
@@ -2863,7 +2863,7 @@ use the original version)! :-)
file but a maze file. The extension .maz was not chosen to help with (some?)
browsers knowing what to do with it.
Cody fixed this to compile with clang and to work with both gcc and
@@ -2892,7 +2892,7 @@ nowadays and other entries had to have this same kind of change,
Finally the optimiser cannot be enabled so the compiler flags were changed for
this, forcing -O0.
Cody added three different alternate
@@ -2908,7 +2908,7 @@ that was used during development, found on their
-2004/gavin
+2004/gavin
Source code: gavin.c
Cody provided the alt code for
@@ -2921,7 +2921,7 @@ the img/fs.tar extracts into fs/ so you will have to f
is done this way to prevent extraction from the entry directory overwriting the
files and causing make clobber to wipe some of them out.
Cody fixed a bunch of links in the index.html provided with the entry
@@ -2930,7 +2930,7 @@ instead of http for instance). In most cases a new link or change t
all that was necessary but at least one or two URLs required the Internet
Wayback Machine.
@@ -2963,7 +2963,7 @@ a lot of numbers this will be harder to see).
Finally Cody added try.sh and
try.alt.sh to demonstrate both versions.
Cody reported that this entry cannot be optimised by the compiler as otherwise
@@ -2977,7 +2977,7 @@ like a letter is fed to the program and the kopczynski*-rev files w
the data files reversed with rev(1). One had to be modified additionally to
get it to work, that being kopczynski-10-rev.
Cody and Landon individually fixed this to work with clang.
@@ -2985,12 +2985,12 @@ get it to work, that being kopczynski-10-rev.
that the author referred to and was documented by Yusuke though Cody
chose the word IOCCC instead of AAA).
Cody made this use fgets(3).
@@ -3064,7 +3064,7 @@ just to make it a bit easier to compile.
2005
Cody fixed the test script, described by the author in their remarks, to refer
@@ -3080,7 +3080,7 @@ alt code respectively.
Cody added the make test and make test-n0 rules for easier use of the test
suite.
Cody fixed a problem where in some systems (like macOS) the stty sane would
@@ -3091,14 +3091,14 @@ explained in the index.html.
Cody added the alt code with vi(m) like
movements.
Cody added the input.txt data file based on suggested
input from the author, adapting it to a command to try out.
Cody also added the try.sh script.
After Landon fixed the entry to compile with clang Cody noticed this
@@ -3181,7 +3181,7 @@ what is supposed to happen. It is not known, however, if having to change the
also show correct output though.
Cody also added the try.sh script.
Cody fixed this so that the configure script (which is not
@@ -3192,7 +3192,7 @@ how https is set up, in which case just enjoy it for what it was. But there
might be some command line that will let it work that way or perhaps someone
wants to add the necessary code.
Cody added the (untested) alternate
@@ -3201,7 +3201,7 @@ sets binary mode on stdout. It is untested as Cody has no Windows s
test it on.
Cody also added the try.sh script.
Cody added the saved (with the SAVE command) BASIC program PET which was:
@@ -3229,7 +3229,7 @@ have to hit ctrl-c to end it which the script tells you.
The scripts note every time that one will have to send ctrl-c or whatever their
interrupt is set to in order to exit the program.
Cody added try.sh. It only has one command as he doesn’t
@@ -3260,14 +3260,14 @@ if one runs it from another directory, specifying the directory, it’ll not cat
2006
Cody fixed a segfault in macOS with this entry. The problem was a missing +1
for strlen() with malloc(). This prevented it from working.
Cody also added the try.sh script.
Cody fixed the Makefile to work in systems where the lpthread is not
@@ -3286,7 +3286,7 @@ implicitly linked in.
this should be fixed.
Cody also added the try.sh script.
Cody added the alternate code that lets
@@ -3303,13 +3303,13 @@ the original it was simply made to link in SDL1.
feature but one which we will accept fixes to. See 2006/monge in
bugs.html.
As Cody is a lost :-) vim user he took the author’s remarks to add support
back for arrow keys in the alternate version.
Cody fixed this entry to work with clang which has a defect with the args to
@@ -3333,7 +3333,7 @@ by default.
Since the author suggested that the lack of certain #includes might break the
program in some systems he also added -include ... to the Makefile as well.
@@ -3341,7 +3341,7 @@ program in some systems he also added -include ... to the Makefile
to read from the file. This was done at a time when it was considered to be a
bug to fix.
Cody provided the alt code based on the
@@ -3352,7 +3352,7 @@ obtained from the Internet Wayback Machine, as the file was no longer available.
The video was also no longer available but Cody found an alternative and added
it to the repo as well.
Cody, out of an abundance of caution for clang’s defects, made main() have
@@ -3361,12 +3361,12 @@ args, even though at least one of those versions allows 1 arg only.
Cody also added the try.sh script for easier use of the
entry to show the clock update in real time.
Cody fixed a segfault in this program which was making it fail to work under
@@ -3382,7 +3382,7 @@ the program and modified the fread(3)/fwrite(3) sectio
(perhaps Cody’s fix was for arm64 only?). Also, he added a note to clarify from
where appears the IMPORT.COM and HALT.COM files.
Cody fixed a crash and a display problem in this entry so that it now works in
@@ -3397,17 +3397,17 @@ We’re not able to test this.
2011
Cody, out of an abundance of caution, added a second arg to main() as some
@@ -3415,23 +3415,23 @@ versions of clang complain about not only the type of each arg to main()
the number of args as well.
Cody also added the try.sh script.
Cody added the video file boing-ball.mp4 which is the demo the
author referred to.
Cody fixed this for macOS. Before the fix it segfaulted. It worked fine under
@@ -3442,31 +3442,31 @@ and now it does work with 64-bit systems as well as 32-bit systems.
Cody also added the try.sh script.
Cody added the following words of wisdom: '"this" is not a pipe but "!" is'.
Cody added the try.sh script and the .nono files
conway-game-of-life.nono,
multi-solutions.nono,
no-solution.nono,
-plus.nono and smiley.nono.
+plus.nono and smiley.nono.
The latter two .nono files were taken from
https://web.archive.org/web/20130218055139/http://codegolf.com/paint-by-numbers
and the others were from the authors’ remarks.
Cody fixed the program to not crash if no arg was specified as this was not a
documented feature.
Cody also added the try.sh script.
Cody fixed a minor problem that showed up in both Linux and macOS. He notes
@@ -3484,7 +3484,7 @@ not be worth, as it is a possible starting point that Cody added.
helpful to test any fixes for Apple silicon chips (see 2011/richards in
bugs.html for more details).
Cody added two alternate versions: one that
@@ -3494,7 +3494,7 @@ file, layer.c.
The Makefile was also modified by Cody to make it simpler to redefine the
controls, width and height.
@@ -3502,7 +3502,7 @@ controls, width and height.
based on the author’s comments (along with looking up the function for the right
header files). To build try the alt rule of the Makefile.
@@ -3523,7 +3523,7 @@ eventually dies.
implicitly (Linux doesn’t seem to but macOS does).
Cody also added the try.sh script.
@@ -3580,14 +3580,14 @@ recent domain. For historical purposes the old link was
http://recipes.stevex.net/ but it redirects to https://www.mealsteps.com
which the recipe file now links to.
Cody added the try.sh script and the helper
Makefile rules hint.pdf, hint, hello.pdf and hello to simplify the
procedure for both hint.pdf and hello.pdf as well as compiling them as C.
Cody added the try.sh script and restored the original hint
@@ -3596,7 +3596,7 @@ index.html made the generated html not look correct; it did not have a title, a
stylesheet etc. due to the fact that there is no # header (which specified
title and stylesheet) and other formatting changes.
Cody added alt code that fixes a problem where in German ‘v’ sounds like ‘f’
@@ -3610,7 +3610,7 @@ about it. Using both, however, allows one to experience different capabilities
and also enjoy or appreciate the entry even more, given how simple the
difference is.
Cody also added six scripts: en.sh,
-de.sh, en.alt.sh and
+de.sh, en.alt.sh and
de.alt.sh which count from 0 through 13 in English and German
using the original entry and the alt version respectively.
In the German scripts it uses the umlaut and also does it without the umlaut
@@ -3622,12 +3622,12 @@ the other defaults to the submitted entry. See the index.html for details.
show different languages and numbers with the submitted and alternate version
respectively. Notice how a single letter changes so much!
Cody added the alternate versions
@@ -3644,7 +3644,7 @@ theoretically make it work in Windows.
@@ -3652,7 +3652,7 @@ theoretically make it work in Windows.
for Windows. With his instructions Cody also added the alternate version that
does this for the few who might use Windows.
Cody test.sh script and the make test rule
@@ -3670,7 +3670,7 @@ it easier for those who do not know how, and to make it more obvious to try it.<
2013
Cody changed the return 0; at the end of the program to be return system("reset"); (via redefining exit(3) so that the column ending would be
@@ -3685,18 +3685,18 @@ it very easy to redefine it at compile time.
Cody also added the try.sh script for the entry and the
try.alt.sh script for the alt code.
Cody added the try.sh script which also has an
joke Easter egg in it based on the judges’ remarks.
Cody fixed this to compile with modern systems. The problems were that
@@ -3874,7 +3874,7 @@ that was fixed and it also has #include <stdio.h> for p
#ifndef..#define..#endif was not part of the original alt code, of course.
Cody also added the try.alt.sh script.
Cody added the rake.sh script and make rake
@@ -3891,12 +3891,12 @@ run it.
file to spoilers.html to be clearer in its purpose as
it is a file with spoilers (and too close to index.html?).
Cody fixed the build for this entry: it does not require
@@ -3907,7 +3907,7 @@ Mario Bros and one of
-2014/maffiodo2
+2014/maffiodo2
Source code: prog.c
@@ -3973,7 +3973,7 @@ output.
2015
Cody fixed the code so one can make use of the echo feature, where the
@@ -4002,7 +4002,7 @@ to not have to maintain two copies of the same text.
called calc and is in documentation including the man page. Thus one only need
add a ./ to the commands in the man page/index.html.
Cody improved the Makefile so that one can easily change the dimensions
@@ -4011,17 +4011,17 @@ at compilation time via make(1).
one change the value of q to a different number, in order to see a bug that
they avoided.
Cody fixed this to compile with Linux which was having a problem with duplicate
@@ -4033,7 +4033,7 @@ Future using this entry by
simply typing make back_to or make mullender) and then runs the famous
1984/mullender.c.
@@ -4078,7 +4078,7 @@ past).
Cody fixed the build so that EOF will be -1 as the program assumes
@@ -4087,7 +4087,7 @@ the code any with C preprocessor directives (the preferred way) or changing
EOF to -1.
Cody also added the try.sh script.
Cody fixed an unfortunate typo in the Makefile that was preventing some of the
@@ -4178,7 +4178,7 @@ remarks. The input files offered includes the prog.c as the author,
Cody fixed the run.sh script (had commands that didn’t
exist and also didn’t work even after that was addressed) and added the
-try.sh, python.sh and
+try.sh, python.sh and
python3.sh scripts. The try.sh script runs all
three of the other scripts but each allows one to send an interrupt in the loops
and still continue to the next script (if one does it when not in a loop it will
@@ -4242,14 +4242,14 @@ if the user wants to see some of the spoilers and only show them if they type
2019
Cody added the try.sh script and the Unlambda
file crash.unl which is in the judges’ remarks as
to what can crash it - but it’s not a bug, it’s a feature.
Cody fixed the Makefile which had a bad character, a ‘%’ instead of a ‘$’ which
@@ -4267,7 +4267,7 @@ wrong about) in on.one.liners.txt to help with
browsers/GitHub.
Cody fixed an invalid bytes error in tr in the scripts. This does not
@@ -4285,7 +4285,7 @@ website.
version but with the caveat that only English appears to work. See the entry in
bugs.html for more details.
@@ -4295,7 +4295,7 @@ not worry about having the entire IOCCC winning entry tree (or at least the 2019
entry in a subdirectory). This is more important as there is discussion of
having tarballs for each individual entry as a convenience.
Cody added the try.sh script. This
@@ -4318,7 +4318,7 @@ that this was done (some typos were fixed as well but only some - the purpose
was to only correct spelling and only some, not to change wording or anything
else).
Cody made the make fullscreen more portable by not relying on
@@ -4331,7 +4331,7 @@ variables LINES and COLUMNS are set. But even if they
how to easily compile the program to a specific size. Note that LINES and
COLUMNS is not available to scripts so it can’t make use of them that way.
As this is a backtrace quine having the optimiser enabled is not a good idea so
@@ -4344,12 +4344,12 @@ combined with the
-2019/giles
+2019/giles
Source code: prog.c
Cody reported that with -O level > 0 this program segfaults (sometimes?). He’s
@@ -4360,7 +4360,7 @@ debugging it since it works with -O0.
He also added the script try.sh to showcase the entry a
bit more easily.
@@ -4369,7 +4369,7 @@ bit more easily.
2018/vokes so that the entry does not rely on any other
entry existing.
@@ -4390,7 +4390,7 @@ suggesting that with some versions of GCC it might not be correct with levels !=
tested: gnu17 was not tested but gnu11 was so the standard was set to
gnu11.
Cody added the try.sh script which also involved
diff --git a/thanks-for-help.md b/thanks-for-help.md
index dadf51b99..ea225a3c0 100644
--- a/thanks-for-help.md
+++ b/thanks-for-help.md
@@ -238,8 +238,8 @@ Cody also provided the [try.alt.sh](%%REPO_URL%%/1985/lycklama/try.alt.sh) scrip
-## [1985/shapiro](1985/1985/lycklama/index.html)
-### Source code: [index.html](%%REPO_URL%%/1985/shapiro/shapiro.c])
+## [1985/shapiro](1985/lycklama/index.html)
+### Source code: [index.html](%%REPO_URL%%/1985/shapiro/shapiro.c)
[Cody](#cody) added the alt code which allows one to resize the maze and he also added
@@ -376,7 +376,7 @@ Cody also added the [try.sh](%%REPO_URL%%/1985/sicherman/try.sh) and
-## [1986/applin](%%REPO_URL%%/1986/applin/index.html])
+## [1986/applin](%%REPO_URL%%/1986/applin/index.html)
### Source code: [applin.c](%%REPO_URL%%/1986/applin/applin.c)
@@ -393,7 +393,7 @@ Cody also added the [try.sh](%%REPO_URL%%/1985/sicherman/try.sh) and
-## [1986/hague](%%REPO_URL%%/1986/hague/index.html])
+## [1986/hague](%%REPO_URL%%/1986/hague/index.html)
### Source code: [hague.c](%%REPO_URL%%/1986/hague/hague.c)
@@ -2335,7 +2335,7 @@ check the [bugs.html](bugs.html) file.
[Cody](#cody) added the try scripts, four total, colour and black and white
pairs for the original entry and the alt code. These scripts are
-[try.color.sh](%%REPO_URL%%/1994/tvr/try.color.sh), [try.bw.sh](1994/tvr/try.bw.sh),
+[try.color.sh](%%REPO_URL%%/1994/tvr/try.color.sh), [try.bw.sh](%%REPO_URL%%/21994/tvr/try.bw.sh),
[try.alt.color.sh](%%REPO_URL%%/1994/tvr/try.alt.color.sh) and
[try.alt.bw.sh](%%REPO_URL%%/1994/tvr/try.alt.bw.sh), respectively. The scripts go through
each mode allowed with two sizes, 128 and 256, allowing one to quit or skip each
@@ -2386,7 +2386,7 @@ the play along the lines of the [try.sh](%%REPO_URL%%/1994/westley/try.sh) scrip
-## [1995/cdua](%%REPO_URL%%/1995/cdua/index.html])
+## [1995/cdua](%%REPO_URL%%/1995/cdua/index.html)
### Source code: [cdua.c](%%REPO_URL%%/1995/cdua/cdua.c)
@@ -2407,7 +2407,7 @@ function as the error message claims.
-## [1995/dodsond1](%%REPO_URL%%/1995/dodsond1/index.html])
+## [1995/dodsond1](%%REPO_URL%%/1995/dodsond1/index.html)
### Source code: [dodsond1.c](%%REPO_URL%%/1995/dodsond1/dodsond1.c)
@@ -2416,7 +2416,7 @@ provided which is input we suggested one try with the entry.
-## [1995/esde](%%REPO_URL%%/1995/esde/index.html])
+## [1995/esde](%%REPO_URL%%/1995/esde/index.html)
### Source code: [esde.c](%%REPO_URL%%/1995/esde/esde.c)
@@ -2424,7 +2424,7 @@ provided which is input we suggested one try with the entry.
-## [1995/garry](%%REPO_URL%%/1995/garry/index.html])
+## [1995/garry](%%REPO_URL%%/1995/garry/index.html)
### Source code: [garry.c](%%REPO_URL%%/1995/garry/garry.c)
@@ -2443,7 +2443,7 @@ added.
-## [1995/heathbar](%%REPO_URL%%/1995/heathbar/index.html])
+## [1995/heathbar](%%REPO_URL%%/1995/heathbar/index.html)
### Source code: [1995/heathbar](%%REPO_URL%%/1995/heathbar/heathbar.c)
@@ -2451,7 +2451,7 @@ added.
-## [1995/leo](%%REPO_URL%%/1995/leo/index.html])
+## [1995/leo](%%REPO_URL%%/1995/leo/index.html)
### Source code: [leo.c](%%REPO_URL%%/1995/leo/leo.c)
@@ -2473,7 +2473,7 @@ calls which has the four args.
-## [1995/savastio](%%REPO_URL%%/1995/savastio/index.html])
+## [1995/savastio](%%REPO_URL%%/1995/savastio/index.html)
### Source code: [savastio.c](%%REPO_URL%%/1995/savastio/savastio.c)
@@ -2481,7 +2481,7 @@ calls which has the four args.
-## [1995/schnitzi](%%REPO_URL%%/1995/schnitzi/index.html])
+## [1995/schnitzi](%%REPO_URL%%/1995/schnitzi/index.html)
### Source code: [schnitzi.c](%%REPO_URL%%/1995/schnitzi/schnitzi.c)
@@ -2508,7 +2508,7 @@ Cody also added the [try.sh](%%REPO_URL%%/1995/vanschnitz/try.sh) script.
-## [1996/august](%%REPO_URL%%/1996/august/index.html])
+## [1996/august](%%REPO_URL%%/1996/august/index.html)
### Source code: [august.c](%%REPO_URL%%/1996/august/august.c)
@@ -2527,7 +2527,7 @@ applied.
-## [1996/dalbec](%%REPO_URL%%/1996/dalbec/index.html])
+## [1996/dalbec](%%REPO_URL%%/1996/dalbec/index.html)
### Source code: [dalbec.c](%%REPO_URL%%/1996/dalbec/dalbec.c)
@@ -2549,8 +2549,8 @@ Cody also added the [try.sh](%%REPO_URL%%/1996/dalbec/try.sh) script.
-## [1996/eldby](%%REPO_URL%%/1996/eldby/index.html])
-### Source code: [eldby.c)](%%REPO_URL%%/1996/eldby/eldby.c)
+## [1996/eldby](%%REPO_URL%%/1996/eldby/index.html)
+### Source code: [eldby.c](%%REPO_URL%%/1996/eldby/eldby.c)
[Cody](#cody) provided an [alternate version](%%REPO_URL%%/1996/eldby/eldby.alt.c) which uses
@@ -2562,7 +2562,7 @@ these reasons.
-## [1996/gandalf](%%REPO_URL%%/1996/gandalf/index.html])
+## [1996/gandalf](%%REPO_URL%%/1996/gandalf/index.html)
### Source code: [gandalf.c](%%REPO_URL%%/1996/gandalf/gandalf.c)
@@ -2579,7 +2579,7 @@ BTW: it is perilous to try the patience of
-## [1996/huffman](%%REPO_URL%%/1996/huffman/index.html])
+## [1996/huffman](%%REPO_URL%%/1996/huffman/index.html)
### Source code: [huffman.c](%%REPO_URL%%/1996/huffman/huffman.c)
@@ -2587,7 +2587,7 @@ BTW: it is perilous to try the patience of
-## [1996/jonth](%%REPO_URL%%/1996/jonth/index.html])
+## [1996/jonth](%%REPO_URL%%/1996/jonth/index.html)
### Source code: [jonth.c](%%REPO_URL%%/1996/jonth/jonth.c)
@@ -2607,7 +2607,7 @@ NOTE: if there is no X server running this program will still crash.
-## [1996/schweikh1](%%REPO_URL%%/1996/schweikh1/index.html])
+## [1996/schweikh1](%%REPO_URL%%/1996/schweikh1/index.html)
### Source code: [schweikh1.c](%%REPO_URL%%/1996/schweikh1/schweikh1.c)
@@ -2623,7 +2623,7 @@ the Makefile despite the fact that very few probably use Solaris nowadays.
-## [1996/schweikh2](%%REPO_URL%%/1996/schweikh2/index.html])
+## [1996/schweikh2](%%REPO_URL%%/1996/schweikh2/index.html)
### Source code: [schweikh2.c](%%REPO_URL%%/1996/schweikh2/schweikh2.c)
@@ -2634,7 +2634,7 @@ loop so having it in a script is less desired).
-## [1996/schweikh3](%%REPO_URL%%/1996/schweikh3/index.html])
+## [1996/schweikh3](%%REPO_URL%%/1996/schweikh3/index.html)
## Source code: [schweikh3.c](%%REPO_URL%%/1996/schweikh3/schweikh3.c)
@@ -2644,7 +2644,7 @@ running a more complicated command: now one can just run `make`.
-## [1996/westley](%%REPO_URL%%/1996/westley/index.html])
+## [1996/westley](%%REPO_URL%%/1996/westley/index.html)
### Source code: [westley.c](%%REPO_URL%%/1996/westley/westley.c)
@@ -2673,7 +2673,7 @@ provided by the author, Cody added '.sh' to the `clock[1-3].sh` scripts.
-## [1998/banks](%%REPO_URL%%/1998/banks/index.html])
+## [1998/banks](%%REPO_URL%%/1998/banks/index.html)
### Source code: [/banks.c](%%REPO_URL%%/1998/banks/banks.c)
@@ -2691,7 +2691,7 @@ you can configure them all in both builds it shouldn't matter.
-## [1998/bas1](%%REPO_URL%%/1998/bas1/index.html])
+## [1998/bas1](%%REPO_URL%%/1998/bas1/index.html)
### Source code: [bas1.c](%%REPO_URL%%/1998/bas1/bas1.c)
@@ -2707,7 +2707,7 @@ program.
-## [1998/bas2](%%REPO_URL%%/1998/bas2/index.html])
+## [1998/bas2](%%REPO_URL%%/1998/bas2/index.html)
### Source code: [bas2.c](%%REPO_URL%%/1998/bas2/bas2.c)
@@ -2716,7 +2716,7 @@ as well as allowing one to pass in different file names or strings.
-## [1998/chaos](%%REPO_URL%%/1998/chaos/index.html])
+## [1998/chaos](%%REPO_URL%%/1998/chaos/index.html)
### Source code: [chaos.c](%%REPO_URL%%/1998/chaos/chaos.c)
@@ -2729,7 +2729,7 @@ prior to each run.
-## [1998/df](%%REPO_URL%%/1998/df/index.html])
+## [1998/df](%%REPO_URL%%/1998/df/index.html)
### Source code: [df.c](%%REPO_URL%%/1998/df/df.c)
@@ -2747,7 +2747,7 @@ a way to cheat very easily. Can you figure out how?
-## [1998/dlowe](%%REPO_URL%%/1998/dlowe/index.html])
+## [1998/dlowe](%%REPO_URL%%/1998/dlowe/index.html)
### Source code: [dlowe.c](%%REPO_URL%%/1998/dlowe/dlowe.c)
@@ -2755,7 +2755,7 @@ a way to cheat very easily. Can you figure out how?
to be `int` (in both versions).
Cody added the scripts [try.sh](%%REPO_URL%%/1998/dlowe/try.sh),
-[try.alt.sh](%%REPO_URL%%/1998/dlowe/try.alt.sh), [pootify.sh](1998/dlowe/pootify.sh) and
+[try.alt.sh](%%REPO_URL%%/1998/dlowe/try.alt.sh), [pootify.sh](%%REPO_URL%%/1998/dlowe/pootify.sh) and
[pootify.cgi.sh](%%REPO_URL%%/1998/dlowe/pootify.cgi.sh) for a fun example use of the
program, a local pootifier of web pages and a CGI pootifier. See [historical
remarks](%%REPO_URL%%/1998/dlowe/index.html#historical-remarks) for more details on the
@@ -2763,7 +2763,7 @@ pootify scripts.
-## [c1998/dloweneil](%%REPO_URL%%/1998/dloweneil/index.html])
+## [c1998/dloweneil](%%REPO_URL%%/1998/dloweneil/index.html)
### Source code: [dloweneil.c](%%REPO_URL%%/1998/dloweneil/dloweneil.c)
@@ -2773,7 +2773,7 @@ space) keys as well as allowing one to quit the game.
-## [1998/dorssel](%%REPO_URL%%/1998/dorssel/index.html])
+## [1998/dorssel](%%REPO_URL%%/1998/dorssel/index.html)
### Source code: [dorssel.c](%%REPO_URL%%/1998/dorssel/dorssel.c)
@@ -2805,7 +2805,7 @@ of the expressions that we selected.
-## [1998/schnitzi](%%REPO_URL%%/1998/schnitzi/index.html])
+## [1998/schnitzi](%%REPO_URL%%/1998/schnitzi/index.html)
### Source code: [schnitzi.c](%%REPO_URL%%/1998/schnitzi/schnitzi.c)
@@ -2833,7 +2833,7 @@ commands that we recommended as well as some added by him.
-## [index.html](%%REPO_URL%%/1998/schweikh1/index.html])
+## [index.html](%%REPO_URL%%/1998/schweikh1/index.html)
### Source code: [1998/schweikh1](%%REPO_URL%%/1998/schweikh1/schweikh1.c)
@@ -2894,7 +2894,7 @@ in the file [charcount.pl](%%REPO_URL%%/1998/schweikh1/charcount.pl).
-## [1998/schweikh2](%%REPO_URL%%/1998/schweikh2/index.html])
+## [1998/schweikh2](%%REPO_URL%%/1998/schweikh2/index.html)
### Source code: [schweikh2.c](%%REPO_URL%%/1998/schweikh2/schweikh2.c)
@@ -2920,7 +2920,7 @@ Cody also added the [try.sh](%%REPO_URL%%/1998/schweikh2/try.sh) script.
-## [1998/schweikh3](%%REPO_URL%%/1998/schweikh3/index.html])
+## [1998/schweikh3](%%REPO_URL%%/1998/schweikh3/index.html)
### Source code: [schweikh3.c](%%REPO_URL%%/1998/schweikh3/schweikh3.c)
@@ -2958,7 +2958,7 @@ information for the entry. It has not been added to any JSON file.
-## [1998/tomtorfs](%%REPO_URL%%/1998/tomtorfs/index.html])
+## [1998/tomtorfs](%%REPO_URL%%/1998/tomtorfs/index.html)
### Source code: /tomtorfs.c](%%REPO_URL%%/1998/tomtorfs/tomtorfs.c)
@@ -2981,7 +2981,7 @@ commands that we recommended.
-## [2000/anderson](%%REPO_URL%%/2000/anderson/index.html])
+## [2000/anderson](%%REPO_URL%%/2000/anderson/index.html)
### Source code: [anderson.c](%%REPO_URL%%/2000/anderson//anderson.c)
@@ -2992,7 +2992,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2000/anderson/try.sh) script.
-## [2000/bmeyer](%%REPO_URL%%/2000/bmeyer/index.html])
+## [2000/bmeyer](%%REPO_URL%%/2000/bmeyer/index.html)
### Source code: [bmeyer.c](%%REPO_URL%%/2000/bmeyer//bmeyer.c)
@@ -3002,7 +3002,7 @@ terminal.
-## [2000/briddlebane](%%REPO_URL%%/2000/briddlebane/index.html])
+## [2000/briddlebane](%%REPO_URL%%/2000/briddlebane/index.html)
### Source code: [briddlebane.c](%%REPO_URL%%/2000/briddlebane//briddlebane.c)
@@ -3014,7 +3014,7 @@ feeling a bit too confident, cocky or even happy :-)
-## [2000/dhyang](%%REPO_URL%%/2000/dhyang/index.html])
+## [2000/dhyang](%%REPO_URL%%/2000/dhyang/index.html)
### Source code: [dhyang.c](%%REPO_URL%%/2000/dhyang//dhyang.c)
@@ -3024,7 +3024,7 @@ He also added the [try.sh](%%REPO_URL%%/2000/dhyang/try.sh) script.
-## [2000/dlowe](%%REPO_URL%%/2000/dlowe/index.html])
+## [2000/dlowe](%%REPO_URL%%/2000/dlowe/index.html)
### Source code: [dlowe.c](%%REPO_URL%%/2000/dlowe//dlowe.c)
@@ -3036,7 +3036,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2000/dlowe/try.sh) script.
-## [2000/jarijyrki](%%REPO_URL%%/2000/jarijyrki/index.html])
+## [2000/jarijyrki](%%REPO_URL%%/2000/jarijyrki/index.html)
### Source code: [jarijyrki.c](%%REPO_URL%%/2000/jarijyrki//jarijyrki.c)
@@ -3045,7 +3045,7 @@ includes of `Xlib.h` and `keysym.h`.
-## [2000/natori](%%REPO_URL%%/2000/natori/index.html])
+## [2000/natori](%%REPO_URL%%/2000/natori/index.html)
### Source code: [natori.c](%%REPO_URL%%/2000/natori//natori.c)
@@ -3073,7 +3073,7 @@ more confusing (even if not confusing).
@@ -3083,7 +3083,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2000/primenum/try.sh) script.
-## [2000/rince](%%REPO_URL%%/2000/rince/index.html])
+## [2000/rince](%%REPO_URL%%/2000/rince/index.html)
### Source code: [rince.c](%%REPO_URL%%/2000/rince//rince.c)
@@ -3091,7 +3091,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2000/primenum/try.sh) script.
-## [2000/robison](%%REPO_URL%%/2000/robison/index.html])
+## [2000/robison](%%REPO_URL%%/2000/robison/index.html)
### Source code: [robison.c](%%REPO_URL%%/2000/robison//robison.c)
@@ -3108,7 +3108,7 @@ on it to assign to the `int`s, much like with `1987/lievaart`. The strings are
-## [2000/schneiderwent](%%REPO_URL%%/2000/schneiderwent/index.html])
+## [2000/schneiderwent](%%REPO_URL%%/2000/schneiderwent/index.html)
### Source code: [schneiderwent.c](%%REPO_URL%%/2000/schneiderwent//schneiderwent.c)
@@ -3116,7 +3116,7 @@ on it to assign to the `int`s, much like with `1987/lievaart`. The strings are
-## [2000/thadgavin](%%REPO_URL%%/2000/thadgavin/index.html])
+## [2000/thadgavin](%%REPO_URL%%/2000/thadgavin/index.html)
### Source code: [thadgavin.c](%%REPO_URL%%/2000/thadgavin//thadgavin.c)
@@ -3162,13 +3162,13 @@ other version in.
-## [2000/tomx](%%REPO_URL%%/2000/tomx/index.html])
+## [2000/tomx](%%REPO_URL%%/2000/tomx/index.html)
### Source code: [tomx.c](%%REPO_URL%%/2000/tomx//tomx.c)
[Cody](#cody) added the [alt code](%%REPO_URL%%/2000/tomx/index.html#alternate-code) based on the
author's remarks with a fix for modern systems and he also added the two
-scripts, [try.sh](%%REPO_URL%%/2000/tomx/try.sh) and [try.alt.sh](2000/tomx/try.alt.sh) for
+scripts, [try.sh](%%REPO_URL%%/2000/tomx/try.sh) and [try.alt.sh](%%REPO_URL%%/2000/tomx/try.alt.sh) for
the main code and the alt code respectively.
And although the scripts do `chmod +x` on the source code (see the index.html for
@@ -3181,7 +3181,7 @@ details) the source code is now executable by default.
-## [2001/anonymous](%%REPO_URL%%/2001/anonymous/index.html])
+## [2001/anonymous](2001/anonymous/index.html)
### Source code: [anonymous.c](%%REPO_URL%%/2001/anonymous//anonymous.c)
@@ -3270,7 +3270,7 @@ it will at least run the supplementary program as a 64-bit program directly.
-## [2001/bellard](%%REPO_URL%%/2001/bellard/index.html])
+## [2001/bellard](%%REPO_URL%%/2001/bellard/index.html)
### Source code: [bellard.c](%%REPO_URL%%/2001/bellard//bellard.c)
@@ -3319,7 +3319,7 @@ by Yusuke.
-## [2001/cheong](%%REPO_URL%%/2001/cheong/index.html])
+## [2001/cheong](%%REPO_URL%%/2001/cheong/index.html)
### Source code: [cheong.c](%%REPO_URL%%/2001/cheong//cheong.c)
@@ -3335,7 +3335,7 @@ He also fixed it to check the number of args.
-## [2001/coupard](%%REPO_URL%%/2001/coupard/index.html])
+## [2001/coupard](%%REPO_URL%%/2001/coupard/index.html)
### Source code: [coupard.c](%%REPO_URL%%/2001/coupard//coupard.c)
@@ -3368,7 +3368,7 @@ Cody added the [try.sh](%%REPO_URL%%/2001/coupard/try.sh).
-## [2001/ctk](%%REPO_URL%%/2001/ctk/index.html])
+## [2001/ctk](%%REPO_URL%%/2001/ctk/index.html)
### Source code: [ctk.c](%%REPO_URL%%/2001/ctk//ctk.c)
@@ -3385,7 +3385,7 @@ vi(m) movement keys.
-## [2001/dgbeards](%%REPO_URL%%/2001/dgbeards/index.html])
+## [2001/dgbeards](%%REPO_URL%%/2001/dgbeards/index.html)
### Source code: [dgbeards.c](%%REPO_URL%%/2001/dgbeards//dgbeards.c)
@@ -3399,7 +3399,7 @@ very quickly. Do you know what it is?
-## [2001/herrmann1](%%REPO_URL%%/2001/herrmann1/index.html])
+## [2001/herrmann1](%%REPO_URL%%/2001/herrmann1/index.html)
### Source code: [herrmann1.c](%%REPO_URL%%/2001/herrmann1//herrmann1.c)
@@ -3426,7 +3426,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2001/herrmann1/try.sh) script.
-## [2001/herrmann2](%%REPO_URL%%/2001/herrmann2/index.html])
+## [2001/herrmann2](%%REPO_URL%%/2001/herrmann2/index.html)
### Source code: [herrmann2.c](%%REPO_URL%%/2001/herrmann2//herrmann2.c)
@@ -3444,7 +3444,7 @@ added to `.gitignore` by accident) but Cody restored it from the archive.
-## [2001/kev](%%REPO_URL%%/2001/kev/index.html])
+## [2001/kev](%%REPO_URL%%/2001/kev/index.html)
### Source code: [kev.c](%%REPO_URL%%/2001/kev//kev.c)
@@ -3479,7 +3479,7 @@ worse.
-## [2001/schweikh](%%REPO_URL%%/2001/schweikh/index.html])
+## [2001/schweikh](%%REPO_URL%%/2001/schweikh/index.html)
### Source code: [schweikh.c](%%REPO_URL%%/2001/schweikh//schweikh.c)
@@ -3491,7 +3491,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2001/schweikh/try.sh) script.
-## [2001/westley](%%REPO_URL%%/2001/westley/index.html])
+## [2001/westley](%%REPO_URL%%/2001/westley/index.html)
### Source code: [westley.c](%%REPO_URL%%/2001/westley//westley.c)
@@ -3507,7 +3507,7 @@ described in the index.html, based on the author's remarks.
-## [2004/anonymous](%%REPO_URL%%/2004/anonymous/index.html])
+## [2004/anonymous](%%REPO_URL%%/2004/anonymous/index.html)
### Source code: [anonymous.c](%%REPO_URL%%/2004/anonymous//anonymous.c)
@@ -3515,7 +3515,7 @@ described in the index.html, based on the author's remarks.
-## [2004/arachnid](%%REPO_URL%%/2004/arachnid/index.html])
+## [2004/arachnid](%%REPO_URL%%/2004/arachnid/index.html)
### Source code: [arachnid.c](%%REPO_URL%%/2004/arachnid//arachnid.c)
@@ -3531,7 +3531,7 @@ browsers knowing what to do with it.
-## [2004/burley](%%REPO_URL%%/2004/burley/index.html])
+## [2004/burley](%%REPO_URL%%/2004/burley/index.html)
### Source code: [burley.c](%%REPO_URL%%/2004/burley//burley.c)
@@ -3569,7 +3569,7 @@ this, forcing `-O0`.
-## [2004/gavare](%%REPO_URL%%/2004/gavare/index.html])
+## [2004/gavare](%%REPO_URL%%/2004/gavare/index.html)
### Source code: [gavare.c](%%REPO_URL%%/2004/gavare//gavare.c)
@@ -3587,7 +3587,7 @@ entry](https://gavare.se/ioccc/ioccc_gavare.c.html).
-## [2004/gavin](%%REPO_URL%%/2004/gavin/index.html])
+## [2004/gavin](%%REPO_URL%%/2004/gavin/index.html)
### Source code: [gavin.c](%%REPO_URL%%/2004/gavin//gavin.c)
@@ -3604,7 +3604,7 @@ files and causing `make clobber` to wipe some of them out.
-## [2004/hibachi](%%REPO_URL%%/2004/hibachi/index.html])
+## [2004/hibachi](%%REPO_URL%%/2004/hibachi/index.html)
### Source code: [hibachi.c](%%REPO_URL%%/2004/hibachi//hibachi.c)
@@ -3616,7 +3616,7 @@ Wayback Machine.
-## [2004/hoyle](%%REPO_URL%%/2004/hoyle/index.html])
+## [2004/hoyle](%%REPO_URL%%/2004/hoyle/index.html)
### Source code: [hoyle.c](%%REPO_URL%%/2004/hoyle//hoyle.c)
@@ -3662,7 +3662,7 @@ Finally Cody added [try.sh](%%REPO_URL%%/2004/jdalbec/try.sh) and
-## [2004/kopczynski](%%REPO_URL%%/2004/kopczynski/index.html])
+## [2004/kopczynski](%%REPO_URL%%/2004/kopczynski/index.html)
### Source code: [kopczynski.c](%%REPO_URL%%/2004/kopczynski//kopczynski.c)
@@ -3681,7 +3681,7 @@ get it to work, that being `kopczynski-10-rev`.
-## [2004/newbern](%%REPO_URL%%/2004/newbern/index.html])
+## [2004/newbern](%%REPO_URL%%/2004/newbern/index.html)
### Source code: [newbern.c](%%REPO_URL%%/2004/newbern//newbern.c)
@@ -3693,7 +3693,7 @@ chose the word `IOCCC` instead of `AAA`).
-## [2004/omoikane](%%REPO_URL%%/2004/omoikane/index.html])
+## [2004/omoikane](%%REPO_URL%%/2004/omoikane/index.html)
### Source code: [omoikane.c](%%REPO_URL%%/2004/omoikane//omoikane.c)
@@ -3701,7 +3701,7 @@ chose the word `IOCCC` instead of `AAA`).
-## [2004/schnitzi](%%REPO_URL%%/2004/schnitzi/index.html])
+## [2004/schnitzi](%%REPO_URL%%/2004/schnitzi/index.html)
### Source code: [schnitzi.c](%%REPO_URL%%/2004/schnitzi//schnitzi.c)
@@ -3795,7 +3795,7 @@ just to make it a bit easier to compile.
-## [2005/aidan](%%REPO_URL%%/2005/aidan/index.html])
+## [2005/aidan](%%REPO_URL%%/2005/aidan/index.html)
### Source code: [aidan.c](%%REPO_URL%%/2005/aidan//aidan.c)
@@ -3817,7 +3817,7 @@ suite.
-## [2005/anon](%%REPO_URL%%/2005/anon/index.html])
+## [2005/anon](%%REPO_URL%%/2005/anon/index.html)
### Source code: [anon.c](%%REPO_URL%%/2005/anon//anon.c)
@@ -3834,7 +3834,7 @@ movements.
-## [2005/boutines](%%REPO_URL%%/2005/boutines/index.html])
+## [2005/boutines](%%REPO_URL%%/2005/boutines/index.html)
### Source code: [boutines.c](%%REPO_URL%%/2005/boutines//boutines.c)
@@ -3845,7 +3845,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2005/boutines/try.sh) script.
-## [2005/giljade](%%REPO_URL%%/2005/giljade/index.html])
+## [2005/giljade](%%REPO_URL%%/2005/giljade/index.html)
### Source code: [giljade.c](%%REPO_URL%%/2005/giljade//giljade.c)
@@ -3969,7 +3969,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2005/mikeash/try.sh) script.
-## [2005/mynx](%%REPO_URL%%/2005/mynx/index.html])
+## [2005/mynx](%%REPO_URL%%/2005/mynx/index.html)
### Source code: [mynx.c](%%REPO_URL%%/2005/mynx//mynx.c)
@@ -3984,7 +3984,7 @@ wants to add the necessary code.
-## [2005/persano](%%REPO_URL%%/2005/persano/index.html])
+## [2005/persano](%%REPO_URL%%/2005/persano/index.html)
### Source code: [persano.c](%%REPO_URL%%/2005/persano//persano.c)
@@ -3997,7 +3997,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2005/persano/try.sh) script.
-## [2005/sykes](%%REPO_URL%%/2005/sykes/index.html])
+## [2005/sykes](%%REPO_URL%%/2005/sykes/index.html)
### Source code: [sykes.c](%%REPO_URL%%/2005/sykes//sykes.c)
@@ -4039,7 +4039,7 @@ interrupt is set to in order to exit the program.
-## [2005/timwi](%%REPO_URL%%/2005/timwi/index.html])
+## [2005/timwi](%%REPO_URL%%/2005/timwi/index.html)
### Source code: [timwi.c](%%REPO_URL%%/2005/timwi//timwi.c)
@@ -4082,7 +4082,7 @@ if one runs it from another directory, specifying the directory, it'll not catch
-## [2006/birken](%%REPO_URL%%/2006/birken/index.html])
+## [2006/birken](%%REPO_URL%%/2006/birken/index.html)
### Source code: [birken.c](%%REPO_URL%%/2006/birken//birken.c)
@@ -4093,7 +4093,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2006/birken/try.sh) script.
-## [2006/borsanyi](%%REPO_URL%%/2006/borsanyi/index.html])
+## [2006/borsanyi](%%REPO_URL%%/2006/borsanyi/index.html)
### Source code: [borsanyi.c](%%REPO_URL%%/2006/borsanyi//borsanyi.c)
@@ -4123,7 +4123,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2006/hamre/try.sh) script.
-## [2006/monge](%%REPO_URL%%/2006/monge/index.html])
+## [2006/monge](%%REPO_URL%%/2006/monge/index.html)
### Source code: [monge.c](%%REPO_URL%%/2006/monge//monge.c)
@@ -4146,7 +4146,7 @@ bugs.html](bugs.html#2006-monge).
-## [2006/night](%%REPO_URL%%/2006/night/index.html])
+## [2006/night](%%REPO_URL%%/2006/night/index.html)
### Source code: [night.c](%%REPO_URL%%/2006/night//night.c)
@@ -4155,7 +4155,7 @@ back for arrow keys in the [alternate version](%%REPO_URL%%/2006/night/night.alt
-## [2006/sloane](%%REPO_URL%%/2006/sloane/index.html])
+## [2006/sloane](%%REPO_URL%%/2006/sloane/index.html)
### Source code: [sloane.c](%%REPO_URL%%/2006/sloane//sloane.c)
@@ -4187,7 +4187,7 @@ program in some systems he also added `-include ...` to the Makefile as well.
-## [2006/stewart](%%REPO_URL%%/2006/stewart/index.html])
+## [2006/stewart](%%REPO_URL%%/2006/stewart/index.html)
### Source code: [stewart.c](%%REPO_URL%%/2006/stewart//stewart.c)
@@ -4199,7 +4199,7 @@ bug to fix.
-## [2006/sykes1](%%REPO_URL%%/2006/sykes1/index.html])
+## [2006/sykes1](%%REPO_URL%%/2006/sykes1/index.html)
### Source code: [sykes1.c](%%REPO_URL%%/2006/sykes1//sykes1.c)
@@ -4215,7 +4215,7 @@ it to the repo as well.
-## [2006/sykes2](%%REPO_URL%%/2006/sykes2/index.html])
+## [2006/sykes2](%%REPO_URL%%/2006/sykes2/index.html)
### Source code: [sykes2.c](%%REPO_URL%%/2006/sykes2//sykes2.c)
@@ -4228,7 +4228,7 @@ entry to show the clock update in real time.
-## [2006/toledo1](%%REPO_URL%%/2006/toledo1/index.html])
+## [2006/toledo1](%%REPO_URL%%/2006/toledo1/index.html)
### Source code: [toledo1.c](%%REPO_URL%%/2006/toledo1//toledo1.c)
@@ -4236,7 +4236,7 @@ entry to show the clock update in real time.
-## [2006/toledo2](%%REPO_URL%%/2006/toledo2/index.html])
+## [2006/toledo2](%%REPO_URL%%/2006/toledo2/index.html)
### Source code: [toledo2.c](%%REPO_URL%%/2006/toledo2//toledo2.c)
@@ -4258,7 +4258,7 @@ where appears the `IMPORT.COM` and `HALT.COM` files.
-## [2006/toledo3](%%REPO_URL%%/2006/toledo3/index.html])
+## [2006/toledo3](%%REPO_URL%%/2006/toledo3/index.html)
### Source code: [toledo3.c](%%REPO_URL%%/2006/toledo3//toledo3.c)
@@ -4279,7 +4279,7 @@ We're not able to test this.
-## [2011/akari](%%REPO_URL%%/2011/akari/index.html])
+## [2011/akari](%%REPO_URL%%/2011/akari/index.html)
### Source code: [akari.c](%%REPO_URL%%/2011/akari//akari.c)
@@ -4287,7 +4287,7 @@ We're not able to test this.
-## [2011/blakely](%%REPO_URL%%/2011/blakely/index.html])
+## [2011/blakely](%%REPO_URL%%/2011/blakely/index.html)
### Source code: [blakely.c](%%REPO_URL%%/2011/blakely//blakely.c)
@@ -4295,7 +4295,7 @@ We're not able to test this.
-## [2011/borsanyi](%%REPO_URL%%/2011/borsanyi/index.html])
+## [2011/borsanyi](%%REPO_URL%%/2011/borsanyi/index.html)
### Source code: [borsanyi.c](%%REPO_URL%%/2011/borsanyi//borsanyi.c)
@@ -4307,7 +4307,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2011/borsanyi/try.sh) script.
-## [2011/dlowe](%%REPO_URL%%/2011/dlowe/index.html])
+## [2011/dlowe](%%REPO_URL%%/2011/dlowe/index.html)
### Source code: [dlowe.c](%%REPO_URL%%/2011/dlowe//dlowe.c)
@@ -4315,7 +4315,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2011/borsanyi/try.sh) script.
-## [2011/eastman](%%REPO_URL%%/2011/eastman/index.html])
+## [2011/eastman](%%REPO_URL%%/2011/eastman/index.html)
### Source code: [eastman.c](%%REPO_URL%%/2011/eastman//eastman.c)
@@ -4324,7 +4324,7 @@ author referred to.
-## [2011/fredriksson](%%REPO_URL%%/2011/fredriksson/index.html])
+## [2011/fredriksson](%%REPO_URL%%/2011/fredriksson/index.html)
### Source code: [fredriksson.c](%%REPO_URL%%/2011/fredriksson//fredriksson.c)
@@ -4332,7 +4332,7 @@ author referred to.
-## [2011/goren](%%REPO_URL%%/2011/goren/index.html])
+## [2011/goren](%%REPO_URL%%/2011/goren/index.html)
### Source code: [goren.c](%%REPO_URL%%/2011/goren//goren.c)
@@ -4348,7 +4348,7 @@ Cody added the following words of wisdom: `'"this" is not a pipe but "!" is'`.
-## [2011/hamaji](%%REPO_URL%%/2011/hamaji/index.html])
+## [2011/hamaji](%%REPO_URL%%/2011/hamaji/index.html)
### Source code: [hamaji.c](%%REPO_URL%%/2011/hamaji//hamaji.c)
@@ -4356,14 +4356,14 @@ Cody added the following words of wisdom: `'"this" is not a pipe but "!" is'`.
[conway-game-of-life.nono](%%REPO_URL%%/2011/hamaji/conway-game-of-life.nono),
[multi-solutions.nono](%%REPO_URL%%/2011/hamaji/multi-solutions.nono),
[no-solution.nono](%%REPO_URL%%/2011/hamaji/no-solution.nono),
-[plus.nono](%%REPO_URL%%/2011/hamaji/plus.nono) and [smiley.nono](2011/hamaji/smiley.nono).
+[plus.nono](%%REPO_URL%%/2011/hamaji/plus.nono) and [smiley.nono](%%REPO_URL%%/2011/hamaji/smiley.nono).
The latter two `.nono` files were taken from
and the others were from the authors' remarks.
-## [2011/hou](%%REPO_URL%%/2011/hou/index.html])
+## [2011/hou](%%REPO_URL%%/2011/hou/index.html)
### Source code: [hou.c](%%REPO_URL%%/2011/hou//hou.c)
@@ -4371,7 +4371,7 @@ and the others were from the authors' remarks.
-## [2011/konno](%%REPO_URL%%/2011/konno/index.html])
+## [2011/konno](%%REPO_URL%%/2011/konno/index.html)
### Source code: [konno.c](%%REPO_URL%%/2011/konno//konno.c)
@@ -4382,7 +4382,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2011/konno/try.sh) script.
-## [2011/richards](%%REPO_URL%%/2011/richards/index.html])
+## [2011/richards](%%REPO_URL%%/2011/richards/index.html)
### Source code: [richards.c](%%REPO_URL%%/2011/richards//richards.c)
@@ -4404,7 +4404,7 @@ bugs.html](bugs.html#2011-richards) for more details).
-## [2011/toledo](%%REPO_URL%%/2011/toledo/index.html])
+## [2011/toledo](%%REPO_URL%%/2011/toledo/index.html)
### Source code: [toledo.c](%%REPO_URL%%/2011/toledo//toledo.c)
@@ -4418,7 +4418,7 @@ controls, width and height.
-## [2011/vik](%%REPO_URL%%/2011/vik/index.html])
+## [2011/vik](%%REPO_URL%%/2011/vik/index.html)
### Source code: [vik.c](%%REPO_URL%%/2011/vik//vik.c)
@@ -4430,7 +4430,7 @@ header files). To build try the alt rule of the Makefile.
-## [2011/zucker](%%REPO_URL%%/2011/zucker/index.html])
+## [2011/zucker](%%REPO_URL%%/2011/zucker/index.html)
### Source code: [zucker.c](%%REPO_URL%%/2011/zucker//zucker.c)
@@ -4462,7 +4462,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2012/blakely/try.sh) script.
-## [2012/deckmyn](%%REPO_URL%%/2012/deckmyn/index.html])
+## [2012/deckmyn](%%REPO_URL%%/2012/deckmyn/index.html)
### Source code: [deckmyn.c](%%REPO_URL%%/2012/deckmyn//deckmyn.c)
@@ -4541,7 +4541,7 @@ which the recipe file now links to.
-## [2012/hamano](%%REPO_URL%%/2012/hamano/index.html])
+## [2012/hamano](%%REPO_URL%%/2012/hamano/index.html)
### Source code: [hamano.c](%%REPO_URL%%/2012/hamano//hamano.c)
@@ -4551,7 +4551,7 @@ procedure for both `hint.pdf` and `hello.pdf` as well as compiling them as C.
-## [2012/hou](%%REPO_URL%%/2012/hou/index.html])
+## [2012/hou](%%REPO_URL%%/2012/hou/index.html)
### Source code: [hou.c](%%REPO_URL%%/2012/hou//hou.c)
@@ -4563,7 +4563,7 @@ title and stylesheet) and other formatting changes.
-## [2012/kang](%%REPO_URL%%/2012/kang/index.html])
+## [2012/kang](%%REPO_URL%%/2012/kang/index.html)
### Source code: [kang.c](%%REPO_URL%%/2012/kang//kang.c)
@@ -4580,7 +4580,7 @@ and also enjoy or appreciate the entry even more, given how simple the
difference is.
Cody also added six scripts: [en.sh](%%REPO_URL%%/2012/kang/en.sh),
-[de.sh](%%REPO_URL%%/2012/kang/de.sh), [en.alt.sh](2012/kang/en.alt.sh) and
+[de.sh](%%REPO_URL%%/2012/kang/de.sh), [en.alt.sh](%%REPO_URL%%/2012/kang/en.alt.sh) and
[de.alt.sh](%%REPO_URL%%/2012/de.alt.sh) which count from 0 through 13 in English and German
using the original entry and the alt version respectively.
@@ -4596,7 +4596,7 @@ respectively. Notice how a single letter changes so much!
-## [2012/konno](%%REPO_URL%%/2012/konno/index.html])
+## [2012/konno](%%REPO_URL%%/2012/konno/index.html)
### Source code: [konno.c](%%REPO_URL%%/2012/konno//konno.c)
@@ -4604,7 +4604,7 @@ respectively. Notice how a single letter changes so much!
-## [2012/omoikane](%%REPO_URL%%/2012/omoikane/index.html])
+## [2012/omoikane](%%REPO_URL%%/2012/omoikane/index.html)
### Source code: [omoikane.c](%%REPO_URL%%/2012/omoikane//omoikane.c)
@@ -4628,7 +4628,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2012/omoikane/try.sh) and
-## [2012/vik](%%REPO_URL%%/2012/vik/index.html])
+## [2012/vik](%%REPO_URL%%/2012/vik/index.html)
### Source code: [vik.c](%%REPO_URL%%/2012/vik//vik.c)
@@ -4640,7 +4640,7 @@ does this for the few who might use Windows.
-## [2012/zeitak](%%REPO_URL%%/2012/zeitak/index.html])
+## [2012/zeitak](%%REPO_URL%%/2012/zeitak/index.html)
### Source code: [zeitak.c](%%REPO_URL%%/2012/zeitak//zeitak.c)
@@ -4664,7 +4664,7 @@ it easier for those who do not know how, and to make it more obvious to try it.
-## [2013/birken](%%REPO_URL%%/2013/birken/index.html])
+## [2013/birken](%%REPO_URL%%/2013/birken/index.html)
### Source code: [birken.c](%%REPO_URL%%/2013/birken//birken.c)
@@ -4685,7 +4685,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2013/birken/try.sh) script for the ent
-## [2013/cable1](%%REPO_URL%%/2013/cable1/index.html])
+## [2013/cable1](%%REPO_URL%%/2013/cable1/index.html)
### Source code: [cable1.c](%%REPO_URL%%/2013/cable1//cable1.c)
@@ -4694,7 +4694,7 @@ joke Easter egg in it based on the judges' remarks.
-## [2013/cable2](%%REPO_URL%%/2013/cable2/index.html])
+## [2013/cable2](%%REPO_URL%%/2013/cable2/index.html)
### Source code: [cable2.c](%%REPO_URL%%/2013/cable2//cable2.c)
@@ -4702,7 +4702,7 @@ joke Easter egg in it based on the judges' remarks.
-## [2013/cable3](%%REPO_URL%%/2013/cable3/index.html])
+## [2013/cable3](%%REPO_URL%%/2013/cable3/index.html)
### Source code: [cable3.c](%%REPO_URL%%/2013/cable3//cable3.c)
@@ -4953,7 +4953,7 @@ Cody also added the [try.alt.sh](%%REPO_URL%%/2014/deak/try.alt.sh) script.
-## [2014/endoh1](%%REPO_URL%%/2014/endoh1/index.html])
+## [2014/endoh1](%%REPO_URL%%/2014/endoh1/index.html)
### Source code: [prog.c](%%REPO_URL%%/2014/endoh1//prog.c)
@@ -4975,7 +4975,7 @@ it is a file with spoilers (and too close to index.html?).
-## [2014/endoh2](%%REPO_URL%%/2014/endoh2/index.html])
+## [2014/endoh2](%%REPO_URL%%/2014/endoh2/index.html)
### Source code: [prog.c](%%REPO_URL%%/2014/endoh2//prog.c)
@@ -4983,7 +4983,7 @@ it is a file with spoilers (and too close to index.html?).
-## [2014/maffiodo1](%%REPO_URL%%/2014/maffiodo1/index.html])
+## [2014/maffiodo1](%%REPO_URL%%/2014/maffiodo1/index.html)
### Source code: [prog.c](%%REPO_URL%%/2014/maffiodo1//prog.c)
@@ -4998,7 +4998,7 @@ which let one configure the width and height of the game.
-## [2014/maffiodo2](%%REPO_URL%%/2014/maffiodo2/index.html])
+## [2014/maffiodo2](%%REPO_URL%%/2014/maffiodo2/index.html)
### Source code: [prog.c](%%REPO_URL%%/2014/maffiodo2//prog.c)
@@ -5091,7 +5091,7 @@ output.
-## [2015/burton](%%REPO_URL%%/2015/burton/index.html])
+## [2015/burton](%%REPO_URL%%/2015/burton/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/burton//prog.c)
@@ -5135,7 +5135,7 @@ add a `./` to the commands in the man page/index.html.
-## [2015/dogon](%%REPO_URL%%/2015/dogon/index.html])
+## [2015/dogon](%%REPO_URL%%/2015/dogon/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/dogon//prog.c)
@@ -5148,7 +5148,7 @@ they avoided.
-## [2015/duble](%%REPO_URL%%/2015/duble/index.html])
+## [2015/duble](%%REPO_URL%%/2015/duble/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/duble//prog.c)
@@ -5156,7 +5156,7 @@ they avoided.
-## [2015/endoh2](%%REPO_URL%%/2015/endoh2/index.html])
+## [2015/endoh2](%%REPO_URL%%/2015/endoh2/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/endoh2//prog.c)
@@ -5164,7 +5164,7 @@ they avoided.
-## [2015/endoh3](%%REPO_URL%%/2015/endoh3/index.html])
+## [2015/endoh3](%%REPO_URL%%/2015/endoh3/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/endoh3//prog.c)
@@ -5180,7 +5180,7 @@ simply typing `make back_to` or `make mullender`) and then runs the famous
-## [2015/endoh4](%%REPO_URL%%/2015/endoh4/index.html])
+## [2015/endoh4](%%REPO_URL%%/2015/endoh4/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/endoh4//prog.c)
@@ -5245,7 +5245,7 @@ past).
-## [2015/schweikhardt](%%REPO_URL%%/2015/schweikhardt/index.html])
+## [2015/schweikhardt](%%REPO_URL%%/2015/schweikhardt/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/schweikhardt//prog.c)
@@ -5258,7 +5258,7 @@ Cody also added the [try.sh](%%REPO_URL%%/2015/schweikhardt/try.sh) script.
-## [2015/yang](%%REPO_URL%%/2015/yang/index.html])
+## [2015/yang](%%REPO_URL%%/2015/yang/index.html)
### Source code: [prog.c](%%REPO_URL%%/2015/yang//prog.c)
@@ -5388,7 +5388,7 @@ remarks. The input files offered includes the prog.c as the author,
[Cody](#cody) fixed the [run.sh](%%REPO_URL%%/2018/endoh2/run.sh) script (had commands that didn't
exist and also didn't work even after that was addressed) and added the
-[try.sh](%%REPO_URL%%/2018/endoh2/try.sh), [python.sh](2018/endoh2/python.sh) and
+[try.sh](%%REPO_URL%%/2018/endoh2/try.sh), [python.sh](%%REPO_URL%%/2018/endoh2/python.sh) and
[python3.sh](%%REPO_URL%%/2018/endoh2/python3.sh) scripts. The `try.sh` script runs all
three of the other scripts but each allows one to send an interrupt in the loops
and still continue to the next script (if one does it when not in a loop it will
@@ -5479,7 +5479,7 @@ if the user wants to see some of the spoilers and only show them if they type
-## [2019/adamovsky](%%REPO_URL%%/2019/adamovsky/index.html])
+## [2019/adamovsky](%%REPO_URL%%/2019/adamovsky/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/adamovsky//prog.c)
@@ -5489,7 +5489,7 @@ to what can crash it - but it's not a bug, it's a feature.
-## [2019/burton](%%REPO_URL%%/2019/burton/index.html])
+## [2019/burton](%%REPO_URL%%/2019/burton/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/burton//prog.c)
@@ -5513,7 +5513,7 @@ browsers/GitHub.
-## [2019/ciura](%%REPO_URL%%/2019/ciura/index.html])
+## [2019/ciura](%%REPO_URL%%/2019/ciura/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/ciura//prog.c)
@@ -5539,7 +5539,7 @@ bugs.html](bugs.html#2019-ciura) for more details.
-## [2019/diels-grabsch1](%%REPO_URL%%/2019/diels-grabsch1/index.html])
+## [2019/diels-grabsch1](%%REPO_URL%%/2019/diels-grabsch1/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/diels-grabsch1//prog.c)
@@ -5553,7 +5553,7 @@ having tarballs for each individual entry as a convenience.
-## [2019/diels-grabsch2](%%REPO_URL%%/2019/diels-grabsch2/index.html])
+## [2019/diels-grabsch2](%%REPO_URL%%/2019/diels-grabsch2/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/diels-grabsch2//prog.c)
@@ -5586,7 +5586,7 @@ else).
-## [2019/duble](%%REPO_URL%%/2019/duble/index.html])
+## [2019/duble](%%REPO_URL%%/2019/duble/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/duble//prog.c)
@@ -5602,7 +5602,7 @@ how to easily compile the program to a specific size. Note that `LINES` and
-## [2019/endoh](%%REPO_URL%%/2019/endoh/index.html])
+## [2019/endoh](%%REPO_URL%%/2019/endoh/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/endoh//prog.c)
@@ -5619,7 +5619,7 @@ quine.
-## [2019/giles](%%REPO_URL%%/2019/giles/index.html])
+## [2019/giles](%%REPO_URL%%/2019/giles/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/giles//prog.c)
@@ -5627,7 +5627,7 @@ quine.
-## [2019/karns](%%REPO_URL%%/2019/karns/index.html])
+## [2019/karns](%%REPO_URL%%/2019/karns/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/karns//prog.c)
@@ -5642,7 +5642,7 @@ bit more easily.
-## [2019/lynn](%%REPO_URL%%/2019/lynn/index.html])
+## [2019/lynn](%%REPO_URL%%/2019/lynn/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/lynn//prog.c)
@@ -5655,7 +5655,7 @@ entry existing.
-## [2019/mills](%%REPO_URL%%/2019/mills/index.html])
+## [2019/mills](%%REPO_URL%%/2019/mills/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/mills//prog.c)
@@ -5685,7 +5685,7 @@ tested: `gnu17` was not tested but `gnu11` was so the standard was set to
-## [2019/yang](%%REPO_URL%%/2019/yang/index.html])
+## [2019/yang](%%REPO_URL%%/2019/yang/index.html)
### Source code: [prog.c](%%REPO_URL%%/2019/yang//prog.c)
diff --git a/tmp/README.md b/tmp/README.md
index a5929cd9f..3d9925dba 100644
--- a/tmp/README.md
+++ b/tmp/README.md
@@ -348,6 +348,17 @@ Examples:
```
+## [md-chk-paths.sh](%%DOCROOT_SLASH%%tmp/md-chk-paths.sh)
+
+Print full directories of local (non-remote URL) markdown paths.
+
+Usage:
+
+```
+ tmp/md-chk-paths.sh
+```
+
+
## [md-links.sh](%%DOCROOT_SLASH%%tmp/md-links.sh)
For all markdown files, print markdown links.
diff --git a/tmp/md-chk-paths.sh b/tmp/md-chk-paths.sh
new file mode 100755
index 000000000..8e2823766
--- /dev/null
+++ b/tmp/md-chk-paths.sh
@@ -0,0 +1,463 @@
+#!/usr/bin/env bash
+#
+# md-chk-paths.sh - print local file paths referenced in markdown links
+#
+# For all markdown files, print markdown links that are local.
+# We ignore URLs that start with "http:" or "https:".
+# We ignore links that are internal to the file (i.e., "#name").
+# We strip all "#name" from paths.
+#
+# Copyright (c) 2024 by Landon Curt Noll. All Rights Reserved.
+#
+# Permission to use, copy, modify, and distribute this software and
+# its documentation for any purpose and without fee is hereby granted,
+# provided that the above copyright, this permission notice and text
+# this comment, and the disclaimer below appear in all of the following:
+#
+# supporting documentation
+# source copies
+# source works derived from this source
+# binaries derived from this source or from derived source
+#
+# LANDON CURT NOLL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
+# EVENT SHALL LANDON CURT NOLL BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+# CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+# USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+# OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+#
+# chongo (Landon Curt Noll, http://www.isthe.com/chongo/index.html) /\oo/\
+#
+# Share and enjoy! :-)
+
+# firewall - run only with a bash that is version 5.1.8 or later
+#
+# The "/usr/bin/env bash" command must result in using a bash that
+# is version 5.1.8 or later.
+#
+# We could relax this version and insist on version 4.2 or later. Versions
+# of bash between 4.2 and 5.1.7 might work. However, to be safe, we will require
+# bash version 5.1.8 or later.
+#
+# WHY 5.1.8 and not 4.2? This safely is done because macOS Homebrew bash we
+# often use is "version 5.2.26(1)-release" or later, and the RHEL Linux bash we
+# use often use is "version 5.1.8(1)-release" or later. These versions are what
+# we initially tested. We recommend you either upgrade bash or install a newer
+# version of bash and adjust your $PATH so that "/usr/bin/env bash" finds a bash
+# that is version 5.1.8 or later.
+#
+# NOTE: The macOS shipped, as of 2024 March 15, a version of bash is something like
+# bash "version 3.2.57(1)-release". That macOS shipped version of bash
+# will NOT work. For users of macOS we recommend you install Homebrew,
+# (see https://brew.sh), and then run "brew install bash" which will
+# typically install it into /opt/homebrew/bin/bash, and then arrange your $PATH
+# so that "/usr/bin/env bash" finds "/opt/homebrew/bin" (or whatever the
+# Homebrew bash is).
+#
+# NOTE: And while MacPorts might work, we noticed a number of subtle differences
+# with some of their ported tools to suggest you might be better off
+# with installing Homebrew (see https://brew.sh). No disrespect is intended
+# to the MacPorts team as they do a commendable job. Nevertheless we ran
+# into enough differences with MacPorts environments to suggest you
+# might find a better experience with this tool under Homebrew instead.
+#
+if [[ -z ${BASH_VERSINFO[0]} ||
+ ${BASH_VERSINFO[0]} -lt 5 ||
+ ${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -lt 1 ||
+ ${BASH_VERSINFO[0]} -eq 5 && ${BASH_VERSINFO[1]} -eq 1 && ${BASH_VERSINFO[2]} -lt 8 ]]; then
+ echo "$0: ERROR: bash version needs to be >= 5.1.8: $BASH_VERSION" 1>&2
+ echo "$0: Warning: bash version >= 4.2 might work but 5.1.8 was the minimum we tested" 1>&2
+ echo "$0: Notice: For macOS users: install Homebrew (see https://brew.sh), then run" \
+ ""brew install bash" and then modify your \$PATH so that \"#!/usr/bin/env bash\"" \
+ "finds the Homebrew installed (usually /opt/homebrew/bin/bash) version of bash" 1>&2
+ exit 4
+fi
+
+
+# setup bash file matching
+#
+# We must declare arrays with -ag or -Ag, and we need loops to "export" modified variables.
+# This requires a bash with a version 4.2 or later. See the larger comment above about bash versions.
+#
+shopt -s nullglob # enable expanded to nothing rather than remaining unexpanded
+shopt -u failglob # disable error message if no matches are found
+shopt -u dotglob # disable matching files starting with .
+shopt -u nocaseglob # disable strict case matching
+shopt -u extglob # enable extended globbing patterns
+shopt -s globstar # enable ** to match all files and zero or more directories and subdirectories
+
+# set variables referenced in the usage message
+#
+export VERSION="1.0 2024-04-25"
+NAME=$(basename "$0")
+export NAME
+export V_FLAG=0
+GIT_TOOL=$(type -P git)
+export GIT_TOOL
+if [[ -z "$GIT_TOOL" ]]; then
+ echo "$0: FATAL: git tool is not installed or not in \$PATH" 1>&2
+ exit 5
+fi
+"$GIT_TOOL" rev-parse --is-inside-work-tree >/dev/null 2>&1
+status="$?"
+if [[ $status -eq 0 ]]; then
+ TOPDIR=$("$GIT_TOOL" rev-parse --show-toplevel)
+fi
+export TOPDIR
+
+
+# usage
+#
+export USAGE="usage: $0 [-h] [-v level] [-V] [-d topdir]
+
+ -h print help message and exit
+ -v level set verbosity level (def level: 0)
+ -V print version string and exit
+
+ -d topdir set topdir (def: $TOPDIR)
+
+Exit codes:
+ 0 all OK
+ 1 some internal tool exited non-zero
+ 2 -h and help string printed or -V and version string printed
+ 3 command line error
+ 4 bash version is too old
+ 6 problems found with or in the topdir or topdir/YYYY directory
+ 7 problems found with or in the entry topdir/YYYY/dir directory
+ >= 10 internal error
+
+$NAME version: $VERSION"
+
+
+# fast_dirname - perform dirname(1) without calling a command
+#
+# This is very similar with dirname(1) except it is much faster.
+#
+# usage:
+# fast_dirname path_name
+#
+# path to obtain the directory from
+#
+function fast_dirname
+{
+ local PATH_NAME; # path_name argument to be modified
+
+ # parse args
+ #
+ if [[ $# -ne 1 ]]; then
+ echo "$0: ERROR: in fast_dirname: debug_parameters requires 1 arg, found: $#" 1>&2
+ exit 10
+ fi
+ PATH_NAME="$1"
+
+ # firewall - reject empty paths
+ #
+ if [[ -z $PATH_NAME ]]; then
+ echo "$0: ERROR: in fast_dirname: pathname arg is empty" 1>&2
+ exit 11
+ fi
+
+ # reduce multiple consecutive /'s to just /
+ #
+ while :; do
+ case "$PATH_NAME" in
+ *//*) PATH_NAME="${PATH_NAME//\/\//\/}" ;;
+ *) break ;;
+ esac
+ done
+
+ # trim any trailing /
+ #
+ PATH_NAME=${PATH_NAME%%/}
+
+ # case: if we only had /'s return /
+ #
+ if [[ -z "$PATH_NAME" ]]; then
+ echo '/'
+ return;
+ fi
+
+ # case: PATH_NAME is an absolute path starting with /
+ #
+ case "$PATH_NAME" in
+ /*) echo "${PATH_NAME%/*}"; return ;;
+ */*) echo "${PATH_NAME%/*}"; return ;;
+ *) echo '.'; return ;;
+ esac
+}
+
+
+# parse command line
+#
+while getopts :hv:Vd:nN flag; do
+ case "$flag" in
+ h) echo "$USAGE" 1>&2
+ exit 2
+ ;;
+ v) V_FLAG="$OPTARG"
+ ;;
+ V) echo "$VERSION"
+ exit 2
+ ;;
+ d) TOPDIR="$OPTARG"
+ ;;
+ \?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
+ echo 1>&2
+ print_usage 1>&2
+ exit 3
+ ;;
+ :) echo "$0: ERROR: option -$OPTARG requires an argument" 1>&2
+ echo 1>&2
+ echo "$USAGE" 1>&2
+ exit 3
+ ;;
+ *) echo "$0: ERROR: unexpected value from getopts: $flag" 1>&2
+ echo 1>&2
+ echo "$USAGE" 1>&2
+ exit 3
+ ;;
+ esac
+done
+
+# remove the options
+#
+shift $(( OPTIND - 1 ));
+#
+if [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: file argument count: $#" 1>&2
+fi
+#
+# verify arg count and parse args
+#
+export TOOL
+case "$#" in
+0) ;;
+*) echo "$0: ERROR: expected 0 args, found: $#" 1>&2
+ echo "$USAGE" 1>&2
+ exit 3
+ ;;
+esac
+
+# print running info if verbose
+#
+# If -v 3 or higher, print exported variables in order that they were exported.
+#
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: VERSION=$VERSION" 1>&2
+ echo "$0: debug[3]: NAME=$NAME" 1>&2
+ echo "$0: debug[3]: V_FLAG=$V_FLAG" 1>&2
+ echo "$0: debug[3]: GIT_TOOL=$GIT_TOOL" 1>&2
+ echo "$0: debug[3]: TOPDIR=$TOPDIR" 1>&2
+fi
+
+
+# cd to topdir
+#
+if [[ ! -e $TOPDIR ]]; then
+ echo "$0: ERROR: cannot cd to non-existent path: $TOPDIR" 1>&2
+ exit 6
+fi
+if [[ ! -d $TOPDIR ]]; then
+ echo "$0: ERROR: cannot cd to a non-directory: $TOPDIR" 1>&2
+ exit 6
+fi
+export CD_FAILED
+if [[ $V_FLAG -ge 5 ]]; then
+ echo "$0: debug[5]: about to: cd $TOPDIR" 1>&2
+fi
+cd "$TOPDIR" || CD_FAILED="true"
+if [[ -n $CD_FAILED ]]; then
+ echo "$0: ERROR: cd $TOPDIR failed" 1>&2
+ exit 6
+fi
+if [[ $V_FLAG -ge 3 ]]; then
+ echo "$0: debug[3]: now in directory: $(/bin/pwd)" 1>&2
+fi
+
+
+# collect markdown links
+#
+# Here be extended regular expression magic dragons! :-)
+#
+# We will try to explain, as best as we can, these complex regular expressions.
+#
+# After grep of markdown files (files in sorted dictionary order) for markdown line lines, we sed:
+#
+# # remove any "[some string]" that is not immediately followed by "("
+#
+# -e 's/\[[^]]*\]([^(])/\1/' \
+#
+# # remove any trialing "[followed by text without a closing bracket"
+#
+# -e 's/\[[^]]*$//' \
+#
+# Then processing the second file (after the filename field) we sed:
+#
+# # remove any leading "..non-[-stuff..["
+#
+# -e 's/^[^[]()+\[/[/' \
+#
+# # replace "beginning text stuff](" with "[text stuff]("
+# # because the previous line might have ended with "[beginning"
+#
+# -e 's/^([^][]*\]\()/[\1/g' \
+#
+# # remove any "[..non-]-stuff..][..more-non-]-stuff..]"
+#
+# -e 's/(\[[^][]*\])+([^(])/\2/g' \
+#
+# # remove any non-link before the first "[some string](path)"
+#
+# -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
+#
+# # remove any final "[..non-]-stuff..$"
+#
+# -e 's/\[[^]]*$//' \
+#
+# # remove any final "(..non-)-stuff..)..non-[-stuff.."
+#
+# -e 's/(\([^)]*\))[^[]*$/\1/' \
+#
+# # remove any trailing non-[-text after the final "[some string](path)"
+#
+# -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
+#
+# # replace ")..non-open-bracket-stuff.[" with ") ["
+#
+# -e 's/\)[^[]*\[/) [/g' \
+#
+# # replace "[some string](apath) [other string](bpath)" with two lines:
+# #
+# # "[some string](apath)"
+# # "[other string](bpath)"
+#
+# -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
+#
+# # remove blank and empty lines
+#
+# -e '/^\s*$/d' \
+#
+# Then pipe the lines into another sed:
+#
+# # replace multiple space with a single space
+#
+# -e 's/ +/ /g' \
+#
+# # remove the leading "[pseudo title]("
+#
+# -e 's/\[[^]]*\]\(//' \
+#
+# # remove trailing ")":
+#
+# -e 's/\)$//' \
+#
+# # remove and trailing #name
+#
+# -e 's/#.*$//' \
+#
+# # remove any leading whitespace
+#
+# -e 's/^ //' \
+#
+# # remove blank and empty lines
+#
+# -e '/^\s*$/d' \
+#
+# # delete all http: and https: URLs
+#
+# -e '/^https?:/d' \
+#
+# # delete all mailto: URLs
+#
+# -e '/^mailto:/d' \
+#
+#
+# -e 's;%%DOCROOT_SLASH%%/*;/;' \
+#
+# # add current directory in front of absolute paths
+#
+# -e "s;^/;$PWD;" \
+#
+# # add current directory followed by / in front of relative paths
+#
+# -e "s;^([^/]);$PWD/\1;" \
+#
+# # convert "%%REPO_URL%%/" into TOPDIR
+#
+# -e "s;%%REPO_URL%%/*;$TOPDIR/;" \
+#
+# # convert "%%DOCROOT_SLASH%%" into TOPDIR
+#
+# -e "s;%%DOCROOT_SLASH%%/*;$TOPDIR/;" \
+#
+# # relative paths have the directory of the markdown file added to them
+#
+# -e "s;^([^/]);$TOPDIR/$MD_DIR/\1;" \
+#
+# # delete all lines containing "%%TOKEN%%" as this is a just a test/example token
+#
+# -e '/%%TOKEN%%/d' \
+#
+# At this point in the pipe, we have absolute /-based paths to markdown linked local files.
+# We test if those file exist, and if not report a problem in the form:
+#
+# # Missing file linked in: markdown_file_name.md
+# # Markdown line: ..the markdown line containing the line..
+# /missing/filename
+#
+find . -name '*.md' ! -name markdown.md ! -path './tmp/*' -print |
+ LANG=C sort -d |
+ xargs grep '\]([^)][^)]*)' /dev/null |
+ sed -E \
+ -e 's;^\.\/;;' \
+ -e 's/^([^:]+):\s*/\1 /' \
+ |
+ while read -r MD_PATH MD_LINE; do
+
+ # note directory containing the markdown file
+ #
+ MD_DIR=$(fast_dirname "$MD_PATH")
+ export MD_DIR
+
+ # extract markdown parts from the given markdown file
+ #
+ echo "$MD_LINE" |
+ sed -E \
+ -e 's/^[^[]()+\[/[/' \
+ -e 's/^([^][]*\]\()/[\1/g' \
+ -e 's/(\[[^][]*\])+([^(])/\2/g' \
+ -e 's/^[^][]+(\[[^]]*\]\([^(]*\))/\1/' \
+ -e 's/\[[^]]*$//' \
+ -e 's/(\([^)]*\))[^[]*$/\1/' \
+ -e 's/(\[[^]]*\]\([^(]*\))[^[]+$/\1/' \
+ -e 's/\)[^[]*\[/) [/g' \
+ -e 's/(\[[^]]*\]\([^(]*\))/\1\n/g' \
+ -e '/^\s*$/d' \
+ |
+ sed -E \
+ -e 's/ +/ /g' \
+ -e 's/\[[^]]*\]\(//' \
+ -e 's/\)$//' \
+ -e 's/#.*$//' \
+ -e 's/^ //' \
+ -e '/^\s*$/d' \
+ -e '/^https?:/d' \
+ -e '/^mailto:/d' \
+ -e "s;%%REPO_URL%%/*;$TOPDIR/;" \
+ -e "s;%%DOCROOT_SLASH%%/*;$TOPDIR/;" \
+ -e "s;^([^/]);$TOPDIR/$MD_DIR/\1;" \
+ -e '/%%TOKEN%%/d' \
+ |
+ while read -r ABS_LOCAL_FILE_PATH; do
+ if [[ ! -e $ABS_LOCAL_FILE_PATH ]]; then
+ echo "# Missing file linked in: $MD_PATH" 1>&2
+ echo "# Markdown line: $MD_LINE" 1>&2
+ echo "$ABS_LOCAL_FILE_PATH" 1>&2
+ fi
+ done
+ done
+
+# All Done!!! -- Jessica Noll, Age 2
+#
+exit 0