From 479f347a14279834fd95c0b50ecc5bd1713cd7df Mon Sep 17 00:00:00 2001 From: Cody Boone Ferguson <53008573+xexyl@users.noreply.github.com> Date: Mon, 22 Jan 2024 10:07:56 -0800 Subject: [PATCH] Add 2006/borsanyi/try.sh The script runs in a loop until the user answers anything but 'y' or 'Y' when asked if they wish to make another one. It does NOT check the valid range of characters or the length. Instead it suggests one try and see what happens if they do not follow the rules. Updated .gitignore. --- 2006/borsanyi/.gitignore | 2 +- 2006/borsanyi/README.md | 7 +++++- 2006/borsanyi/try.sh | 48 ++++++++++++++++++++++++++++++++++++++++ thanks-for-help.md | 4 +++- 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100755 2006/borsanyi/try.sh diff --git a/2006/borsanyi/.gitignore b/2006/borsanyi/.gitignore index 1c6b1a052..5761bd3ec 100644 --- a/2006/borsanyi/.gitignore +++ b/2006/borsanyi/.gitignore @@ -3,7 +3,7 @@ borsanyi borsanyi.orig *.dSYM -example.gif +*.gif indent indent.c indent.o diff --git a/2006/borsanyi/README.md b/2006/borsanyi/README.md index 7eed56360..cd40db5dd 100644 --- a/2006/borsanyi/README.md +++ b/2006/borsanyi/README.md @@ -26,9 +26,14 @@ For more detailed information see [2006 borsanyi in bugs.md](/bugs.md#2006-borsa ## Try: ```sh -./borsanyi ioccc@example.com > example.gif +./try.sh ``` +We recommend you input for the filename `example.gif` and for the string +`ioccc@example.com`. The script will not overwrite files. It runs the program in +a loop until you answer that you do not wish to make another. + + ## Judges' remarks: diff --git a/2006/borsanyi/try.sh b/2006/borsanyi/try.sh new file mode 100755 index 000000000..31df8b24f --- /dev/null +++ b/2006/borsanyi/try.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# +# try.sh - demonstrate IOCCC winner 2006/borsanyi +# + +# make sure CC is set so that when we do make CC="$CC" it isn't empty. Doing it +# this way allows us to have the user specify a different compiler in an easy +# way. +if [[ -z "$CC" ]]; then + CC="cc" +fi + +make CC="$CC" all >/dev/null || exit 1 + +# clear screen after compilation so that only the entry is shown +clear + +echo "When using this script, ask yourself what happens if you put a string > 42" 1>&2 +echo "characters long and what happens if you input characters not in the regexp:" 1>&2 +echo "'a-z_A-Z0-9@.-'." 1>&2 +echo 1>&2 + +while :; do + read -r -p "Enter a target file name: " filename + if [[ -n "$filename" ]]; then + if [[ -f "$filename" ]]; then + echo "$0: ERROR: $filename already exists, will not overwrite." 1>&2 + continue + fi + else + echo "$0: ERROR: empty file name, try again." 1>&2 + continue + fi + read -r -p "Enter a string to write to the file: " email + if [[ -n "$email" ]]; then + ./borsanyi "$email" > "$filename" + if [[ -f "$filename" ]]; then + echo "Wrote image to $filename" 1>&2 + else + echo "$0: ERROR: failed to write to $filename" 1>&2 + fi + fi + read -r -n 1 -p "Do you wish to make another one (Y/N)? " + if [[ "$REPLY" != "Y" && "$REPLY" != "y" ]]; then + break + fi + echo 1>&2 +done diff --git a/thanks-for-help.md b/thanks-for-help.md index 00a579838..17135538a 100644 --- a/thanks-for-help.md +++ b/thanks-for-help.md @@ -3414,9 +3414,11 @@ Cody also added the [try.sh](/2006/birken/try.sh) script. ## [2006/borsanyi](/2006/borsanyi/borsanyi.c) ([README.md](/2006/borsanyi/README.md])) -[Cody](#cody) fixed the Makefile under some systems where the `lpthread` was not +[Cody](#cody) fixed the Makefile to work in systems where the `lpthread` is not implicitly linked in. +Cody also added the [try.sh](/2006/borsanyi/try.sh) script. + ## [2006/grothe](/2006/grothe/grothe.c) ([README.md](/2006/grothe/README.md))