Merge pull request #1212 from xexyl/1989-westley-try-sh-fixes
This commit is contained in:
7 files changed
+95
-90
No files matched your search
+3
-5
@@ -63,7 +63,7 @@ CDEFINE=
|
|||||||
|
|
||||||
# Include files that are needed to compile
|
# Include files that are needed to compile
|
||||||
#
|
#
|
||||||
CINCLUDE= -include stdio.h -include unistd.h
|
CINCLUDE= -include stdio.h -include unistd.h -include string.h
|
||||||
|
|
||||||
# Optimization
|
# Optimization
|
||||||
#
|
#
|
||||||
@@ -114,8 +114,8 @@ OBJ= ${PROG}.o
|
|||||||
DATA=
|
DATA=
|
||||||
TARGET= ${PROG}
|
TARGET= ${PROG}
|
||||||
#
|
#
|
||||||
ALT_OBJ= ${PROG}.alt.o
|
ALT_OBJ=
|
||||||
ALT_TARGET= ${PROG}.alt
|
ALT_TARGET=
|
||||||
|
|
||||||
|
|
||||||
#################
|
#################
|
||||||
@@ -131,8 +131,6 @@ all: data ${TARGET}
|
|||||||
sandwich supernova deep_magic magic charon pluto
|
sandwich supernova deep_magic magic charon pluto
|
||||||
|
|
||||||
${PROG}: ${PROG}.c
|
${PROG}: ${PROG}.c
|
||||||
@echo "NOTE: this entry uses gets() so you might get a warning about this"
|
|
||||||
@echo " when compiling and running this program with some systems."
|
|
||||||
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
||||||
|
|
||||||
# alternative executable
|
# alternative executable
|
||||||
|
|||||||
@@ -9,10 +9,6 @@ UK
|
|||||||
make all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
There is an alternate version which uses `fgets()`. See the Alternate code
|
|
||||||
section below as well as the [bugs.md](/bugs.md) file for more details as to why
|
|
||||||
it is worth having as an alternate version.
|
|
||||||
|
|
||||||
## To use:
|
## To use:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -35,24 +31,6 @@ Also try:
|
|||||||
echo IOCCC | ./hague 2>/dev/null
|
echo IOCCC | ./hague 2>/dev/null
|
||||||
```
|
```
|
||||||
|
|
||||||
## Alternate code:
|
|
||||||
|
|
||||||
Whereas with some entries the change to `fgets()` (see the [FAQ](/faq.md) for
|
|
||||||
details on why this has been done) can be done in the original code this entry
|
|
||||||
is more complicated in that although both forms of input show the correct
|
|
||||||
output, one form segfaults after the output.
|
|
||||||
|
|
||||||
If you wish to use this alternate code, do:
|
|
||||||
|
|
||||||
```sh
|
|
||||||
make alt
|
|
||||||
```
|
|
||||||
|
|
||||||
Use `hague.alt` as you would `hague` above. As for which form will segfault
|
|
||||||
after outputting the text it is when text is piped into the program. Again see
|
|
||||||
the [bugs.md](/bugs.md) file for more details.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ DITDAH _DIT,DITDAH DAH_,DITDAH DIT_,
|
|||||||
DITDAH _DIT_,DITDAH DIT_DAH DIT
|
DITDAH _DIT_,DITDAH DIT_DAH DIT
|
||||||
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
|
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
|
||||||
DIT _DIT=DIT_DAH DIT 81 DAH,DIT_=_DIT
|
DIT _DIT=DIT_DAH DIT 81 DAH,DIT_=_DIT
|
||||||
__DAH;_DIT=DAH_DIT DIT _DIT,81,stdin DAH,_DIT[strlen(_DIT)-1]='\0',_DIT!=NULL;__DIT
|
__DAH;_DIT==DAH_DIT DIT _DIT,81,stdin DAH&&(_DIT[strlen(_DIT)-1]='\0',_DIT);__DIT
|
||||||
DIT'\n'DAH DAH DAHDIT DIT DAH_=_DIT;DITDAH
|
DIT'\n'DAH DAH DAHDIT DIT DAH_=_DIT;DITDAH
|
||||||
DAH_;__DIT DIT DITDAH
|
DAH_;__DIT DIT DITDAH
|
||||||
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
|
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
|
||||||
|
|||||||
+2
-2
@@ -4,7 +4,7 @@
|
|||||||
#define DITDAH *
|
#define DITDAH *
|
||||||
#define DAHDIT for
|
#define DAHDIT for
|
||||||
#define DIT_DAH malloc
|
#define DIT_DAH malloc
|
||||||
#define DAH_DIT gets
|
#define DAH_DIT fgets
|
||||||
#define _DAHDIT char
|
#define _DAHDIT char
|
||||||
_DAHDIT _DAH_[]="ETIANMSURWDKGOHVFaLaPJBXCYZQb54a3d2f16g7c8a90l?e'b.s;i,d:"
|
_DAHDIT _DAH_[]="ETIANMSURWDKGOHVFaLaPJBXCYZQb54a3d2f16g7c8a90l?e'b.s;i,d:"
|
||||||
;main DIT DAH{_DAHDIT
|
;main DIT DAH{_DAHDIT
|
||||||
@@ -12,7 +12,7 @@ DITDAH _DIT,DITDAH DAH_,DITDAH DIT_,
|
|||||||
DITDAH _DIT_,DITDAH DIT_DAH DIT
|
DITDAH _DIT_,DITDAH DIT_DAH DIT
|
||||||
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
|
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
|
||||||
DIT _DIT=DIT_DAH DIT 81 DAH,DIT_=_DIT
|
DIT _DIT=DIT_DAH DIT 81 DAH,DIT_=_DIT
|
||||||
__DAH;_DIT==DAH_DIT DIT _DIT DAH;__DIT
|
__DAH;_DIT==DAH_DIT DIT _DIT,81,stdin DAH&&(_DIT[strlen(_DIT)-1]='\0',_DIT);__DIT
|
||||||
DIT'\n'DAH DAH DAHDIT DIT DAH_=_DIT;DITDAH
|
DIT'\n'DAH DAH DAHDIT DIT DAH_=_DIT;DITDAH
|
||||||
DAH_;__DIT DIT DITDAH
|
DAH_;__DIT DIT DITDAH
|
||||||
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
|
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
|
||||||
|
|||||||
@@ -132,7 +132,6 @@ all: data ${TARGET}
|
|||||||
sandwich supernova deep_magic magic charon pluto
|
sandwich supernova deep_magic magic charon pluto
|
||||||
|
|
||||||
${PROG}: ${PROG}.c
|
${PROG}: ${PROG}.c
|
||||||
@echo "NOTE: This entry uses non-standard args to main() that do not work with some modern compilers."
|
|
||||||
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
|
||||||
|
|
||||||
# alternative executable
|
# alternative executable
|
||||||
|
|||||||
+74
-51
@@ -1,70 +1,93 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
make all || exit 1
|
# first compile everything or at least try to
|
||||||
|
./compile.sh
|
||||||
|
|
||||||
echo "$ echo IOCCC | ./westley"
|
if [[ -e "./westley" ]]; then
|
||||||
echo IOCCC | ./westley
|
echo "$ echo IOCCC | ./westley"
|
||||||
echo
|
echo IOCCC | ./westley
|
||||||
|
echo
|
||||||
|
|
||||||
echo "$ echo IOCCC | ./westley 1"
|
echo "$ echo IOCCC | ./westley 1"
|
||||||
echo IOCCC | ./westley 1
|
echo IOCCC | ./westley 1
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo IOCCC | ./westley 1 2"
|
echo "$ echo IOCCC | ./westley 1 2"
|
||||||
echo IOCCC | ./westley 1 2
|
echo IOCCC | ./westley 1 2
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo IOCCC | ./westley 1 2 3"
|
echo "$ echo IOCCC | ./westley 1 2 3"
|
||||||
echo IOCCC | ./westley 1 2 3
|
echo IOCCC | ./westley 1 2 3
|
||||||
echo
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
echo "$ echo IOCCC | ./ver0"
|
if [[ -e "./ver0" ]]; then
|
||||||
echo IOCCC | ./ver0
|
echo "$ echo IOCCC | ./ver0"
|
||||||
echo
|
echo IOCCC | ./ver0
|
||||||
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 1 | ./ver1"
|
echo "$ echo IOCCC | ./ver0 1"
|
||||||
echo Version 1 | ./ver1
|
echo IOCCC | ./ver0 1
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 1 | ./ver1 1"
|
echo "$ echo IOCCC | ./ver0 1 2"
|
||||||
echo Version 1 | ./ver1 1
|
echo IOCCC | ./ver0 1 2
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 1 | ./ver1 1 2"
|
echo "$ echo IOCCC | ./ver0 1 2 3"
|
||||||
echo Version 1 | ./ver1 1 2
|
echo IOCCC | ./ver0 1 2 3
|
||||||
echo
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
echo "$ echo Version 1 | ./ver1 1 2 3"
|
if [[ -e "./ver1" ]]; then
|
||||||
echo Version 1 | ./ver1 1 2 3
|
echo "$ echo Version 1 | ./ver1"
|
||||||
echo
|
echo Version 1 | ./ver1
|
||||||
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 2 | ./ver2"
|
echo "$ echo Version 1 | ./ver1 1"
|
||||||
echo Version 2 | ./ver2
|
echo Version 1 | ./ver1 1
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 2 | ./ver2 1"
|
echo "$ echo Version 1 | ./ver1 1 2"
|
||||||
echo Version 2 | ./ver2 1
|
echo Version 1 | ./ver1 1 2
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 2 | ./ver2 1 2"
|
echo "$ echo Version 1 | ./ver1 1 2 3"
|
||||||
echo Version 2 | ./ver2 1 2
|
echo Version 1 | ./ver1 1 2 3
|
||||||
echo
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
echo "$ echo Version 2 | ./ver2 1 2 3"
|
if [[ -e "./ver2" ]]; then
|
||||||
echo Version 2 | ./ver2 1 2 3
|
echo "$ echo Version 2 | ./ver2"
|
||||||
echo
|
echo Version 2 | ./ver2
|
||||||
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 3 | ./ver3"
|
echo "$ echo Version 2 | ./ver2 1"
|
||||||
echo Version 3 | ./ver3
|
echo Version 2 | ./ver2 1
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 3 | ./ver3 1"
|
echo "$ echo Version 2 | ./ver2 1 2"
|
||||||
echo Version 3 | ./ver3 1
|
echo Version 2 | ./ver2 1 2
|
||||||
echo
|
echo
|
||||||
|
|
||||||
echo "$ echo Version 3 | ./ver3 1 2"
|
echo "$ echo Version 2 | ./ver2 1 2 3"
|
||||||
echo Version 3 | ./ver3 1 2
|
echo Version 2 | ./ver2 1 2 3
|
||||||
echo
|
echo
|
||||||
|
fi
|
||||||
|
|
||||||
echo "$ echo Version 3 | ./ver3 1 2 3"
|
if [[ -e "./ver3" ]]; then
|
||||||
echo Version 3 | ./ver3 1 2 3
|
echo "$ echo Version 3 | ./ver3"
|
||||||
|
echo Version 3 | ./ver3
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "$ echo Version 3 | ./ver3 1"
|
||||||
|
echo Version 3 | ./ver3 1
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "$ echo Version 3 | ./ver3 1 2"
|
||||||
|
echo Version 3 | ./ver3 1 2
|
||||||
|
echo
|
||||||
|
|
||||||
|
echo "$ echo Version 3 | ./ver3 1 2 3"
|
||||||
|
echo Version 3 | ./ver3 1 2 3
|
||||||
|
fi
|
||||||
+15
-8
@@ -100,6 +100,18 @@ be made consistent but adding markdown where necessary in the remarks is).
|
|||||||
A lot of these fixes were done with his [sgit
|
A lot of these fixes were done with his [sgit
|
||||||
tool](https://github.com/xexyl/sgit) but many were done manually as well.
|
tool](https://github.com/xexyl/sgit) but many were done manually as well.
|
||||||
|
|
||||||
|
## A note about changes `fgets()`
|
||||||
|
|
||||||
|
Although this is discussed in the [FAQ](/faq.md) we want to say here simply that
|
||||||
|
the problem with `gets()` is that in some systems a warning can be interspersed
|
||||||
|
with the output which can be confusing, to say nothing of the annoyance of it. A
|
||||||
|
good example was [1990/tbr](/thanks-for-fixes.md#1990tbr-readmemd) where one
|
||||||
|
would see:
|
||||||
|
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ warning: this program uses gets(), which is unsafe.
|
||||||
|
```
|
||||||
|
|
||||||
## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md))
|
## [1984/anonymous](1984/anonymous/anonymous.c) ([README.md](1984/anonymous/README.md))
|
||||||
|
|
||||||
@@ -292,14 +304,9 @@ commented out.
|
|||||||
|
|
||||||
## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md]))
|
## [1986/hague](1986/hague/hague.c) ([README.md](1986/hague/README.md]))
|
||||||
|
|
||||||
Cody added alt code that uses `fgets()` to avoid alarming and annoying warnings
|
Cody made this use `fgets()` to avoid alarming and annoying messages about
|
||||||
about `gets()` being unsafe. The reason this is alt code, at least for now, is
|
`gets()` being unsafe, sometimes interspersed with the output of the program.
|
||||||
that although it will print the results in both forms of invocation, after the
|
For more details about that see the [FAQ](/faq.md).
|
||||||
output in one invocation form it will segfault. This might be addressed later on
|
|
||||||
or it might be decided that it is worth it, with a caveat in the Makefile or at
|
|
||||||
least the README.md file, since it still prints out the correct output, though
|
|
||||||
that seems like it might not be so ideal unless it can be fixed (which might be
|
|
||||||
done). See the [bugs.md](/bugs.md) file for details.
|
|
||||||
|
|
||||||
## [1986/holloway](1986/holloway/holloway.c) ([README.md](1986/holloway/README.md]))
|
## [1986/holloway](1986/holloway/holloway.c) ([README.md](1986/holloway/README.md]))
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user