IOCCC image by Matt Zucker

The International Obfuscated C Code Contest

1995/garry - Best utility

Environment-expansion and binary output via escaped env vars

Author:

To build:

    make all

To use:

    ./garry <input_file >output_file

Try:

    ./try.sh

Alternate code:

While it may not have been the intention of the author, the judges noted that the C pre-processed version (with the #includes left intact) looked very much like a rat “dropping core”. See garry.alt.c and judge for yourself!

Alternate build:

    make alt

Alternate use:

    ./garry.alt <input_file >output_file

Alternate try:

    ./try.alt.sh

Judges’ remarks:

The author was kind enough to provide a less obfuscated version of the source called garry.fmt.c.

Author’s remarks:

This program is a file filter, designed to do environment-expansion and incorporating the ability to create binary from escaped data in the environment variables.

The calling syntax is pretty simple, just use it with stdio-redirection or inside pipelines, e.g.:

    ./garry <file_to_convert >converted_file

or

    cat all_my_files/* | ./garry | lp

The syntax of the conversion of the input file is as follows: To include the value of an environment variable in the output file, place the name of the variable between $-signs in the input, e.g.:

    My Home-Directory is: $HOME$
    I'm using the path: $PATH$

Unknown Env-variables or malformed expressions are ignored and kept intact.

Additionally, the filter replaces escaped octal values in the environment variables by their binary representation, e.g.:

    $ TEST="\110\145\154\154\157"
    $ export TEST
    $ echo '$TEST$' | ./garry
    Hello

Inventory for 1995/garry

Primary files

Secondary files


Jump to: top