Added `bin/bin/tar-entry.sh` to build a compressed tarball for an entry. The compressed tarball is formed by gnu tar with options so that the same entry file content will always produce the same compressed tarball, byte for byte. As some files are missing from some entries, one should use the `-W` option as in: ```sh bin/tar-entry.sh -v 5 -W 2020/ferguson1 ``` Added `make form_entry_tarball` to the top level `Makefile` to build entry tarballs even when files are still missing. Added `make verify_entry_files` to verify that all entries have all of their files listed in their manifest, plus the top level ioccc.css and var.mk files. As file entry files are still missing (due to HTML files that need to be built), the overall `make quick_www` and `make www` do **NOT** (yet) exit when the `make verify_entry_files` fails. Improved `bin/chk-entry.sh` by removing some variables that were not needed. TODO: Improve `bin/` tool exit codes as the current use is a bit silly. TODO: Clean out some variables used in `bin/` tools as some of then are only set printed in debug statements. TODO: Clean up usage messages, some of the options listed to not match the `getopts(1)` parsing. In some cases the option needs to be parsed but needs to be ignored by the tool because another tool automatically passes along certain options that really have no effect. Such ignored options need to be show as "This option is ignored" in the usage message.
To build:
make all
To use:
./scjones
Try:
./try.sh
Judges' remarks:
The addition of trigraphs has made it easier to make programs hard to read. It was a dark and stormy night for C when the ANSI C committee added trigraphs to the standard. Too bad that they didn't just simply require a more reasonable ISO character set.
The Author sent us this note after he was informed that he won:
Although I am quite grateful for the "ANSI Committee's Worst Abuse of C" title (were you aware that I am a member of the committee or is the double meaning unintentional?), I was really hoping for something more along the lines of "Closest Resemblance to Line Noise." :-)
... it was unintentional.
Author's remarks:
Since this year's contest is dedicated to ANSI C, here is a strictly conforming
entry. In accordance with the ANSI definition of a strictly conforming program
it does not produce output dependent on any unspecified, undefined, or
implementation defined behavior, and it does not exceed any of the minimum
implementation limits. It adheres to all of the syntactic and semantic
constraints of the standard: it #includes the relevant headers for the
functions it uses, and it uses the EXIT_SUCCESS and EXIT_FAILURE macros to
return a correct success/fail status to the invoking program. It also uses
trigraphs for characters which are not in the Invariant Code Set of ISO 646:1983, so it will be portable to machines with deficient (from C's
standpoint) character sets. In short, it should be very widely portable. As an
extra added attraction, all of the lines are under 72 characters long, which
would allow for sequence numbers to be punched in columns 73-80 :-).
Copyright and CC BY-SA 4.0 License:
This file is Copyright (c) 2023 by Landon Curt Noll. All Rights Reserved. You are free to share and adapt this file under the terms of this license:
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
For more information, see: https://creativecommons.org/licenses/by-sa/4.0/