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))