The entry rules are great. Highly specific in that way you know exactly how they were abused in the past.
Rule 2
Rule 2 requires that your submission satisfy BOTH Rule 2a AND Rule 2b.
You may check your code with respect to Rule 2a and Rule 2b prior to
submitting your code by giving the filename as a command like
argument to the iocccsize(1) tool. For example:
iocccsize prog.c
The source to iocccsize(1) may be found in the mkiocccentry repo.
See also the FAQ on “how to further test your submission” for more more thorough testing, including Rule 2.
See also Rule 2a, Rule 2b, and Rule 17.
Rule 2a
The size of your program source should NOT exceed 4993 bytes.
Rule 2b
When the filename of your program source is given as a
command line argument to the latest version of the official
IOCCC size tool (hereby referred to as iocccsize(1)),
the value printed should NOT exceed 2503.
See also Rule 17.
So you are allowed to store 2053 bytes worth of extra data in the filename. That's... surprisingly lenient.
How would you actually read that data back from your program?
__FILE__
argv[0]
That would only work assuming the program isn't just compiled to "a.out". I don't think this "loophole" would work at all.
edit: Nevermind, I misread the original rule.
4993 bytes, I wonder how did they came up with such a specific number