Remove 1986/hague alt code, make main entry

I fixed it so that the form where it would segfault (after printing the
correct output) no longer occurs.

The thanks file has had a note added towards the top about changing to
fgets(), noting that although more is mentioned in the FAQ, it can be a
real problem with some systems. The best example of it being beneficial
is 1990/tbr. Naturally I also updated the thanks file for 1986/hague
too, updating the details.
This commit is contained in:
Cody Boone Ferguson committed 2023-10-29 08:25:08 -07:00
1 parent dc57ef5c78
commit baec52c901
5 files changed
+21 -38

No files matched your search

+3 -5
View File
@@ -63,7 +63,7 @@ CDEFINE=
# 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
#
@@ -114,8 +114,8 @@ OBJ= ${PROG}.o
DATA=
TARGET= ${PROG}
#
ALT_OBJ= ${PROG}.alt.o
ALT_TARGET= ${PROG}.alt
ALT_OBJ=
ALT_TARGET=
#################
@@ -131,8 +131,6 @@ all: data ${TARGET}
sandwich supernova deep_magic magic charon pluto
${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}
# alternative executable
-22
View File
@@ -9,10 +9,6 @@ UK
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:
```sh
@@ -35,24 +31,6 @@ Also try:
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:
+1 -1
View File
@@ -12,7 +12,7 @@ DITDAH _DIT,DITDAH DAH_,DITDAH DIT_,
DITDAH _DIT_,DITDAH DIT_DAH DIT
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
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
DAH_;__DIT DIT DITDAH
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
+2 -2
View File
@@ -4,7 +4,7 @@
#define DITDAH *
#define DAHDIT for
#define DIT_DAH malloc
#define DAH_DIT gets
#define DAH_DIT fgets
#define _DAHDIT char
_DAHDIT _DAH_[]="ETIANMSURWDKGOHVFaLaPJBXCYZQb54a3d2f16g7c8a90l?e'b.s;i,d:"
;main DIT DAH{_DAHDIT
@@ -12,7 +12,7 @@ DITDAH _DIT,DITDAH DAH_,DITDAH DIT_,
DITDAH _DIT_,DITDAH DIT_DAH DIT
DAH,DITDAH DAH_DIT DIT DAH;DAHDIT
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
DAH_;__DIT DIT DITDAH
_DIT_?_DAH DIT DITDAH DIT_ DAH:'?'DAH,__DIT
+15 -8
View File
@@ -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
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))
@@ -292,14 +304,9 @@ commented out.
## [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
about `gets()` being unsafe. The reason this is alt code, at least for now, is
that although it will print the results in both forms of invocation, after the
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.
Cody made this use `fgets()` to avoid alarming and annoying messages about
`gets()` being unsafe, sometimes interspersed with the output of the program.
For more details about that see the [FAQ](/faq.md).
## [1986/holloway](1986/holloway/holloway.c) ([README.md](1986/holloway/README.md]))