Make my fix to 2001/coupard more like original

In linux clang does not support implicit int and it's an error. I ended
up adding 'int' but to make it more like the original I added to the
CSILENCE -Wno-implicit-int instead. Thus the code is the original and
only the Makefile is different.

The thanks file was updated for this but also other entries (nothing
changed in the entries themselves, just changes in the description in
the thanks file).
This commit is contained in:
Cody Boone Ferguson committed 2023-10-27 08:22:32 -07:00
1 parent b022c51f1e
commit d8b2ed49c1
3 files changed
+48 -49

No files matched your search

+4 -34
View File
@@ -38,7 +38,7 @@ include ../../var.mk
# Common C compiler warnings to silence # Common C compiler warnings to silence
# #
CSILENCE= -Wno-empty-body -Wno-pointer-sign -Wno-return-type -Wno-deprecated-non-prototype CSILENCE= -Wno-empty-body -Wno-pointer-sign -Wno-return-type -Wno-deprecated-non-prototype -Wno-implicit-int
# Common C compiler warning flags # Common C compiler warning flags
# #
@@ -124,8 +124,7 @@ ALT_TARGET=
all: data ${TARGET} all: data ${TARGET}
@${TRUE} @${TRUE}
.PHONY: all alt data everything diff_orig_prog diff_prog_orig \ .PHONY: all alt data everything orig_prog_diff alt_prog_diff \
diff_alt_prog diff_prog_alt diff_orig_alt diff_alt_orig \
clean clobber install love haste waste maker easter_egg \ clean clobber install love haste waste maker easter_egg \
sandwich supernova deep_magic magic charon pluto sandwich supernova deep_magic magic charon pluto
@@ -147,47 +146,18 @@ data: ${DATA}
everything: all alt everything: all alt
@${TRUE} @${TRUE}
#####################
# make a difference #
#####################
#
# diff orig source and source # diff orig source and source
# #
diff_orig_prog: ${PROG}.orig.c ${PROG}.c orig_prog_diff: ${PROG}.orig.c ${PROG}.c
@-${DIFF} -u ${PROG}.orig.c ${PROG}.c @-${DIFF} -u ${PROG}.orig.c ${PROG}.c
# diff source and orig source
#
diff_prog_orig: ${PROG}.c ${PROG}.orig.c
@-${DIFF} -u ${PROG}.c ${PROG}.orig.c
# diff alt source and source # diff alt source and source
# #
diff_alt_prog: ${PROG}.c alt_prog_diff: ${PROG}.c
@-if [[ -e ${PROG}.alt.c ]]; then \ @-if [[ -e ${PROG}.alt.c ]]; then \
${DIFF} -u ${PROG}.alt.c ${PROG}.c; \ ${DIFF} -u ${PROG}.alt.c ${PROG}.c; \
fi fi
# diff source and alt source
#
diff_prog_alt: ${PROG}.c
@-if [[ -e ${PROG}.alt.c ]]; then \
${DIFF} -u ${PROG}.c ${PROG}.alt.c; \
fi
# diff orig and alt
#
diff_orig_alt: ${PROG}.orig.c
@-if [[ -e ${PROG}.alt.c ]]; then \
${DIFF} -u ${PROG}.orig.c ${PROG}.alt.c; \
fi
diff_alt_orig:
@-if [[ -e ${PROG}.alt.c ]]; then \
${DIFF} -u ${PROG}.alt.c ${PROG}.orig.c; \
fi
############### ###############
# utility rules # utility rules
+1 -1
View File
@@ -28,7 +28,7 @@ $",p[6789];
int o[]={145,1145,1745,2545,3045,4045,4345,5145,5745,6369},i=0,j=0,l=0; int o[]={145,1145,1745,2545,3045,4045,4345,5145,5745,6369},i=0,j=0,l=0;
void e(int n,int h){ void e(n,h){
for(j=0;n>0;n-=!(p[j++]^9)); for(j=0;n>0;n-=!(p[j++]^9));
for(;!n&&j[p]^9;j++)write(1,p+p[j][o],o[p[j]+1]-p[j][o]); for(;!n&&j[p]^9;j++)write(1,p+p[j][o],o[p[j]+1]-p[j][o]);
for(i=0;i<h[o];i++)write(1,d+7,1);} for(i=0;i<h[o];i++)write(1,d+7,1);}
+43 -14
View File
@@ -1447,9 +1447,31 @@ like the original entry but with the two fixes.
Cody fixed the code and added an appropriate make rule so that the SDL version Cody fixed the code and added an appropriate make rule so that the SDL version
works independent from the curses version (using the same code). works independent from the curses version (using the same code).
To see the craziness of the SDL fix (because of a terrible design choice of the Due to a terrible design choice of the SDL1 developers something had to be
SDL1 developers) see the log for commit changed. As was noted in the log:
dd0b26b5d6325e8b6fdef1232156c8bb8c66613f. Be prepared for a surprise!
```
The SDL version did not work for a number of reasons. First of all the
code requires that SDL is defined. Second the path wrong header file was
included. Third the SDL1 developers thought it would be a great idea
(but obviously it's a terrible idea) to redefine main() (!!) so that any
program that uses SDL1 has to have the same args as their definition.
This program had 'main()' so the error message was:
thadgavin.c:60:1: error: conflicting types for 'SDL_main'
main()
^
/opt/local/include/SDL/SDL_main.h:34:14: note: expanded from macro 'main'
#define main SDL_main
^
/opt/local/include/SDL/SDL_main.h:35:12: note: previous declaration is here
extern int SDL_main(int argc, char *argv[]);
^
1 warning and 1 error generated.
make: *** [thadgavin_sdl] Error 1
Thus main() was changed to 'int main(int argc, char **argv)'.
```
Cody also added an alternate version to help see what is going on in more modern Cody also added an alternate version to help see what is going on in more modern
systems and in case you're sensitive to rapidly moving swirling. See the systems and in case you're sensitive to rapidly moving swirling. See the
@@ -1464,10 +1486,11 @@ Cody fixed both the supplementary program and the program itself (both of which
segfaulted and once that was fixed only the binary was modified; it was not run segfaulted and once that was fixed only the binary was modified; it was not run
but according to the author's remarks it should be executed). He managed to do but according to the author's remarks it should be executed). He managed to do
this with linux but it will not work with any system that does not allow one to this with linux but it will not work with any system that does not allow one to
compile 32-bit binaries such as macOS. See [bugs.md](/bugs.md) for why this is; compile 32-bit binaries such as macOS. See
_this is **not** a bug, it's a feature_ inherent in what it does! [bugs.md](/bugs.md#2001anonymous-readmemd) for why this is; _this is **not** a
bug, it's a feature_ inherent in what it does!
Below is what it took to fix. The following had to be done to fix this:
- `#include <sys/mman.h>` for `mmap()` and `munmap()`. - `#include <sys/mman.h>` for `mmap()` and `munmap()`.
- have `main()` call another function which is no longer a recursive function; - have `main()` call another function which is no longer a recursive function;
@@ -1530,9 +1553,15 @@ Finally to see from start to finish:
git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..4bc03de321612869aebf855850c6500df95cb6ef anonymous.c git diff d2a42f42e8f477f29e9d5ed09ce2bb349eaf7397..4bc03de321612869aebf855850c6500df95cb6ef anonymous.c
``` ```
or to not use `git`:
```sh
make diff_orig_prog
```
Cody also added a [program](anonymous.bed.c) like [anonymous.ten.c](anonymous.ten.c) Cody also added a [program](anonymous.bed.c) like [anonymous.ten.c](anonymous.ten.c)
[Ten Green Bottles](https://en.wikipedia.org/wiki/Ten_Green_Bottles) but which [Ten Green Bottles](https://en.wikipedia.org/wiki/Ten_Green_Bottles) but which
sings [Ten in the Bed](https://allnurseryrhymes.com/ten-in-the-bed/). sings [Ten in the Bed](https://allnurseryrhymes.com/ten-in-the-bed/) instead.
As well he added the [try.me.sh](2001/anonymous/try.me.sh) so that one can As well he added the [try.me.sh](2001/anonymous/try.me.sh) so that one can
attempt to use the program as it was designed but if compiling as 32-bit fails attempt to use the program as it was designed but if compiling as 32-bit fails
@@ -1607,19 +1636,19 @@ void e(n,h){
``` ```
One fix would be to disable that warning. Another one might be to change the C The easiest fix is to just disable the warning which is what was done.
standard. The one that was done, to make it more portable, was to just add 'int' Originally the code was changed to use `int` but to make it more like the
to the function parameters. original this was undone.
Thanks go to Yusuke for providing a proper command line for macOS (to do with Yusuke for providing a proper command line for macOS (to do with sound; see his
sound; see his [/2013/endoh3/README.md](2013/endoh3/README.md) entry where he [/2013/endoh3/README.md](2013/endoh3/README.md) entry where he also refers to
also refers to sound devices in macOS). sound devices in macOS).
## [2001/ctk](2001/ctk/ctk.c) ([README.md](2001/ctk/README.md])) ## [2001/ctk](2001/ctk/ctk.c) ([README.md](2001/ctk/README.md]))
The ANSI escape codes were no longer valid but Yusuke provided a patch to fix The ANSI escape codes were no longer valid but Yusuke provided a patch to fix
the ANSI escape codes. This works with macOS as well. the ANSI escape codes. Cody tested this for macOS and it works fine.
## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md])) ## [2001/dgbeards](2001/dgbeards/dgbeards.c) ([README.md](2001/dgbeards/README.md]))