Skip to content

Releases: ioccc-src/mkiocccentry

release 2.11.0 2025-11-30

01 Dec 07:14

Choose a tag to compare

release IOCCC29-beta2 of the mkiocccentry tooolkit

Update IOCCC_REGISTER_URL to "https://www.freelists.org/list/ioccc29-reg".

Elevate all versions that were modified since the
release of IOCCC29-beta (since Release 2.10.0 2025-11-18)
to the next 2nd-level version number.

Changed MKIOCCCENTRY_REPO_VERSION to "2.11.0 2025-11-30".
Changed SOUP_VERSION to "2.4.0 2025-11-30".
Changed MKIOCCCENTRY_VERSION to "2.3.0 2025-11-30".
Changed CHKENTRY_VERSION to "2.3.0 2025-11-30".
Changed CHKSUBMIT_VERSION to "2.1.0 2025-11-30".

release 2.10.4 2025-11-26

27 Nov 05:55

Choose a tag to compare

Release 2.10.4 2025-11-26

Sync with recent non-C code changes to cpath/ and pr/.

release 2.10.3 2025-11-21

26 Nov 22:09
d8c951b

Choose a tag to compare

Define __GNU_VISIBLE in soup/walk.h before it includes <fnmatch.h>
in an effort to help Cygwin compile the code. Reports were that
FNM_CASEFOLD was undefined for some Cygwin users.

The mkiocccentry(1) command converts the workdir and topdir
command line args into absolute paths. This will allow both args,
for example, to start with ../ (dot-dot slash).

Changed MKIOCCCENTRY_REPO_VERSION to "2.10.3 2025-11-21".
Changed MKIOCCCENTRY_VERSION to "2.2.1 2025-11-21".
Changed SOUP_VERSION to "2.3.3 2025-11-21",

release 2.10.0 2025-11-18

19 Nov 06:13

Choose a tag to compare

Release IOCCC29-beta of the mkiocccentry tooolkit.

Elevate all versions, except for JSON format versions,
and the iocccsize(1) version to at least "2.x.0".

Do not install under the pr/, NOR the cpath/ subdirs.

Establish make variable ${SH_INSTALL} and ${PROG_INSTALL}
for values that are installed.

Improve make uninstall to just uninstall items once.

No longer install test_file_util, NOR try_walk_set, NOR
try_fts_walk, NOR reset_tstamp.sh, NOR all_sem_ref.sh.
However make uninstall will uninstall them.

Changed MKIOCCCENTRY_REPO_VERSION to "2.10.0 2025-11-18".
Changed SOUP_VERSION to "2.3.0 2025-11-18".
Changed IOCCCSIZE_VERSION to "29.1.0 2025-11-18".
Changed MKIOCCCENTRY_VERSION to "2.2.0 2025-11-18".
Changed LOCATION_VERSION to "2.0.0 2025-11-18"
Changed FNAMCHK_VERSION to "2.2.0 2025-11-18".
Changed TXZCHK_VERSION to "2.1.0 2025-11-18".
Changed CHKENTRY_VERSION to "2.2.0 2025-11-18".
Changed CHKSUBMIT_VERSION to "2.0.0 2025-11-18".
Changed FILE_UTIL_TEST_VERSION to "2.2.0 2025-11-18".
Changed TRY_FTS_WALK_VERSION to "2.0.0 2025-11-18".
Changed TRY_WALK_SET_VERSION to "2.0.0 2025-11-18".

release version 2.4.8 2025-05-05

05 May 23:18

Choose a tag to compare

Release 2.4.8 2025-05-05

Allow a submitter's system clock to be as much as 48 hours in the future before
their submission is rejected as having a bogus "future" timestamp.

Improved text in the chkentry(1) man page and in the chkentry -h usage message.

Improved the format of how mkiocccentry(1) announces doing a make clobber.

Updated MKIOCCCENTRY_VERSION to 2.0.7 2025-05-05.

release version 2.4.7 2025-05-02

02 May 20:43

Choose a tag to compare

Release 2.4.7 2025-05-02

Fix annoying bug where mkiocccentry -i answers would warn about using
the answer yes option.

Make it an error if the answers file used is in the topdir in mkiocccentry(1).

Add temporary workaround for issue #1258. It might be that the real fix involves
an update to a jparse routine but during the IOCCC28 itself that is not going to
be looked at and it is arguable it is not even a good idea to do that anyway.
Instead for the time being in the problematic code an extra check is done with
another FTS related routine I had written last year (I guess) in jparse. An
comment was added to chkentry.c but it might be (unsure as this was done
quickly) that a fix in jparse/util.c has to be done instead later on.

Updated CHKENTRY_VERSION to "2.0.4 2025-05-02".

Removed aliases for chkentry -i subpath option after discussion on GitHub.

Clarified the meaning of chkentry -i subpath in both the chkentry(1)
man page and in the chkentrty -h usage message.

release version 2.4.6 2025-04-26

26 Apr 17:42

Choose a tag to compare

Release 2.4.6 2025-04-26

Allow for the default handle to contain upper case letters.

Updated MKIOCCCENTRY_VERSION to "2.4.6 2025-04-26".

Release version 2.4.5 2025-04-25

26 Apr 05:57
a248d6a

Choose a tag to compare

Release 2.4.5 2025-04-25

We released mkiocccentry toolkit version 2.4.5 2025-04-25.

While you are NOT required to use this release in order to submit to IOCCC28,
we do RECOMMEND that you install and use it, because among other things, it provides:

  • Fixed and improved how topdir is scanned to not count ignored files and directories against max allowed.
  • Clarified the purpose of a submission title to emphasize NOT contain name(s).

Release version 2.4.4 2025-03-15

15 Mar 21:20

Choose a tag to compare

Release 2.4.4 2025-03-15

IMPORTANT NOTE:

While you are NOT required to use this release in order to submit to IOCCC28,
we do RECOMMEND that you use and install this release of the mkiocccentry toolkit.

BACKWARD COMPATIBILITY:

This release is backward compatible with both "Release 2.4.2 2025-03-02".
This release is backward compatible with both "Release 2.4.3 2025-03-11".

Submissions made under "Release 2.4.2 2025-03-02" remain valid for IOCCC28.
Submissions made under "Release 2.4.3 2025-03-11" remain valid for IOCCC28.

RELEASE DETAILS FOLLOW:

Set locale to C, the official locale of the IOCCC.

See the "programmer's apology" of the set_ioccc_locale() function in soup/location_util.c
for more details.

Updated MKIOCCCENTRY_VERSION to "2.0.3 2025-03-14".
Updated FNAMCHK_VERSION to "2.0.1 2025-03-14".
Maintain MIN_FNAMCHK_VERSION as "2.0.0 2025-02-28".
Updated TXZCHK_VERSION to "2.0.3 2025-03-14"
Updated CHKENTRY_VERSION to "2.0.3 2025-03-14".

Sync jparse repo to jparse/. This
updates the jparse(3) man page with additional functions (with two new
files added), adds to all the tools (early on main() - no libraries)
setlocale(LC_ALL, ""); to use the system's default locale based on
$LANG. Additionally a macro and variable were renamed to better reflect
what they are (this does not affect any code in mkiocccentry toolkit however).

Release version 2.4.3 2025-03-11

13 Mar 01:35
73e3101

Choose a tag to compare

Release 2.4.3 2025-03-11

IMPORTANT NOTE:

While you are NOT required to use this release in order to submit to IOCCC28,
we do RECOMMEND that you use and install this release of the mkiocccentry toolkit.

BACKWARD COMPATIBILITY:

This release is backward compatible with "Release 2.4.2 2025-03-02".
Submissions made under "Release 2.4.2 2025-03-02" remain valid for IOCCC28.

RELEASE DETAILS FOLLOW:

Fix search of tools under $PATH.

Fix bugs in resolve_path() where even if one had ./ or / in front of the
path it could end up resolving a path that is not a regular executable file
(when it did not have a / in the path this did not happen). Another bug was
fixed where if $PATH is NULL or empty and the path is not a regular executable
file it still would be a strdup()d copy of the original path.

The above solved a problem where we could get the tools to be found (if they
exist) if we also did a check for is_file() and is_exec() but with the above
fixes we only have to check for != NULL.

The find_utils() functions now takes a corresponding bool * for each tool to
find. If the boolean is not NULL then we search for that tool. If it is NULL and
the char ** is not NULL then we set the *tool to NULL. This way the caller
can, if they wish and they are careful, decide whether or not to find all the
tools. For example txzchk only looks for tar if test mode is not enabled.
And although as a safety check before free()ing the pointer we do check that
test mode was not used we do not technically need it as long as we pass in
&tar (although we do give NULL so we do need to check it).

Sync copyright fixes from jparse.

Force set nul_warning to false in mkiocccentry(1) and disable checking of
it in chkentry(1). Post IOCCC28 it will be removed from struct info, the
.info.json files and chkentry(1) that checks it.

Rather than directly put in true in the writing of the .info.json file, force
set first_rule_is_all to true in mkiocccentry(1) and reference that
boolean in the writing of the .info.json file.

Changed MIN_MKIOCCCENTRY_VERSION to "2.0.1 2025-03-02"
Updated MKIOCCCENTRY_VERSION to "2.0.2 2025-03-11".
Changed MIN_TXZCHK_VERSION to "2.0.1 2025-03-02".
Updated TXZCHK_VERSION to "2.0.2 2025-03-11".
Changed MIN_CHKENTRY_VERSION to "2.0.1 2025-03-02".
Updated CHKENTRY_VERSION to "2.0.2 2025-03-11".

Resolve issue #1229. Add -U UUID to mkiocccentry(1) to set the username.

Also fixed an error with -u uuidfile where it would not set the test boolean
to true if the UUID was "true".

The -u uuidfile and -U UUID options may not be used with -i answers,
-d, nor -s seed.

Partial fix to issue #1208. The -x option to force delete the
submission directory and -r rm option to set path to rm(1) were added to
mkiocccentry(1) as part of issue #1208. The part of issue #1208 that was NOT
done was moved into issue #1235: and that will be completed later for IOCCC29.

Fixed bug where overwrite_answers was always true by default in mkiocccentry(1).

Updated man page for the above changes.

Resolved issues #1233 and #1218. Both mkiocccentry(1) and txzchk(1) (the only ones
that use other tools) now search $PATH for the tools first by way of the
find_utils() function (modified a fair bit) and a new util function in jparse
called resolve_path(). The jparse util functions shell_cmd() and
pipe_open() were also improved to resolve paths if no / is in the command
name. As for make: we now search for gmake first as the Makefiles we need
are GNU Makefiles.

Add missing -r to rm in mkiocccentry_test.sh.

Resolve issue #1206. Some people wanted this option to submit multiple
submissions without having to repeatedly copy/paste their username UUID. Now they
can just put the UUID in a text file and use -u uuid. If the file is not a regular
readable file or it does not have a valid UUID it'll prompt like before. If the
-i answers flag is used it is not relevant.

Resolve issue #1210. The directory/file lists to be ignored prompting was
confusing to some people. The question of 'Is this OK?' was reworded to 'Do you
wish to continue?' and the explanation is hopefully a bit clearer too.

Resolve issue #1221. Removed the check for first rule is all (in Makefiles).
This allows one to also have earlier on the format of CC:= cc rather than just
CC= cc, should they wish. The .info.json file still has this bool but it's
always set to true and chkentry will ignore it. AFTER IOCCC28 it will be
removed from .info.json and chkentry(1) code will no longer have the functions
involved.

Resolve issue #1209. Although not labelled 'top priority' it was already done in
the code. If topdir is the same as workdir it is an error. If workdir is under
topdir it is an error. If topdir is somehow slipped into the submission
directory it is an error. If workdir is encountered in topdir we skip it with
fts_set() so as to not descend into it. Also, we now check that the
directories are directories an are the right permissions, prior to even trying
to scan/copy files/directories (to show a better error message).

Resolve issue #1214. With guidance from @SirWumpus and Landon, and at their
request, the iocccsize tool no longer warns against wordbuf warning unless
verbosity is high enough; in mkiocccentry(1) it sets the boolean to true or false
depending on the result but it only notes it as a fun fact, suggesting the user
note it in their remarks. Post IOCCC28 the bool will be removed from .info.json
and chkentry(1) functions for it will be removed. For now the function that
checks this value in chkentry(1) simply returns true. Additionally, the wrong
variable was being referenced in soup/rule_count.c - it was referencing
counts.wordbuf_warning when it should have been referencing
counts.ungetc_error. Also, because rule 13 no longer restricts UTF the char
warning is only shown if verbose enough. This did not need to be updated in
mkiocccentry as it's only referenced #ifdef ASCII_ONLY and before that check
is in soup/rule_count.c the code does #undef ASCII_ONLY (and it's not even
referenced in mkiocccentry.c).

Resolve issue #1215.

Now the version checks for chkentry(1) are a >= check. Uses code from
jparse/verge.c. Its main() was moved to verge_main.c and verge.c now has
a new function vercmp(). verge.o is linked into the library and chkentry
now uses it. Also there are new arrays that we called 'poisoned versions' and
this allows for bad versions to be excluded. Each tool and some other versions
have a minimum version allowed which at this time is equivalent to the current
release. If a version is incremented then the minimum version would be changed
to be the version at the time the contest opens. In this way uploaded
submissions will not be invalidated. As for poisoned versions the lists are
currently empty (just NULL terminated - must be last element).

Updated test_ioccc/gen_test_JSON.sh to have a new function -
get_version. This was necessary so we can use grep -v MIN_. If it was in the
same function it would cause another MIN_ macro to be excluded from
limit_ioccc.h which was a problem. Updated the script's version to
"1.0.2 2025-03-07".