Merge pull request #980 from xexyl/1985-applin

Remove outdated message about macOS in 1985/applin
This commit is contained in:
Landon Curt Noll authored and GitHub committed 2023-09-27 21:10:08 -07:00
commit 55ad41edcf
9 files changed
+42 -26

No files matched your search

-1
View File
@@ -128,7 +128,6 @@ all: data ${TARGET}
supernova deep_magic magic charon pluto supernova deep_magic magic charon pluto
${PROG}: ${PROG}.c ${PROG}: ${PROG}.c
@echo "NOTE: this does not work properly in macOS."
${CC} ${CFLAGS} $< -o $@ ${LDFLAGS} ${CC} ${CFLAGS} $< -o $@ ${LDFLAGS}
# alternative executable # alternative executable
+9 -9
View File
@@ -9,11 +9,11 @@ make all
``` ```
There is an alternate version. See the Alternate code section for the commentary There is an alternate version. See the Alternate code section for the commentary
on why this is: there was a funny problem depending on the compiler and flags on why this is: there was a funny problem in modern systems where depending on
where it would work with one compiler with the optimiser but it would not work the compiler and flags it would work with one compiler with the optimiser but it
with the other; and if the optimiser state is changed the previous problematic would not work with the other; and if the optimiser state is changed the
compiler might work but the other one would not! We describe this in more detail previous problematic compiler might work but the other one would not! We
below and we encourage you to read it. describe this in more detail below and we encourage you to read it.
## Try: ## Try:
@@ -30,10 +30,10 @@ you can see if your compiler has the problem as described below.
In some versions of gcc and clang (this was first discovered in fedora linux 38) In some versions of gcc and clang (this was first discovered in fedora linux 38)
depending on whether or not the optimiser was enabled would cause one compiler depending on whether or not the optimiser was enabled would cause one compiler
to segfault but not another but when changing the state of the optimiser the to generate code that segfaults but not another - but when changing the state
opposite would happen: the compiler that did not segfault suddenly did and the of the optimiser the opposite would happen: the compiler that did not cause a
one that did now worked! Another problem was an infinite loop also depending on segfault suddenly did and the one that did now worked! Another problem was an
the optimiser. infinite loop also depending on the optimiser.
The alternate code has the original fix for clang which works with some The alternate code has the original fix for clang which works with some
compilers depending on the optimiser. When we refer to the code below we refer compilers depending on the optimiser. When we refer to the code below we refer
+3 -1
View File
@@ -27,7 +27,9 @@ OLD LANDER.BAS
RUN RUN
``` ```
NOTE: this is case sensitive. NOTE: this entry is probably one of the only times CAPS LOCK might be worth
having (though still not useful enough to enable :-) ) as all input has to be
UPPER CASE.
## Judges' remarks: ## Judges' remarks:
+1
View File
@@ -1,3 +1,4 @@
tbr tbr
tbr.orig tbr.orig
tbr.alt
prog.orig prog.orig
+4 -3
View File
@@ -39,7 +39,8 @@ include ../../var.mk
# Common C compiler warnings to silence # Common C compiler warnings to silence
# #
CSILENCE= -Wno-char-subscripts -Wno-error -Wno-implicit-function-declaration \ CSILENCE= -Wno-char-subscripts -Wno-error -Wno-implicit-function-declaration \
-Wno-unused-value -Wno-deprecated-non-prototype -Wno-return-type -Wno-unused-value -Wno-deprecated-non-prototype -Wno-return-type -Wno-implicit-int \
-Wno-empty-body
# Common C compiler warning flags # Common C compiler warning flags
# #
@@ -114,8 +115,8 @@ OBJ= ${PROG}.o
DATA= DATA=
TARGET= ${PROG} TARGET= ${PROG}
# #
ALT_OBJ= ALT_OBJ= ${PROG}.alt.o
ALT_TARGET= ALT_TARGET= ${PROG}.alt
################# #################
+11
View File
@@ -0,0 +1,11 @@
#define D ,close(
char*c,q[512],m[256],*v[99],**u,*i[3];int f[2],p;main(){for(m[m[60]=m[62]=
32]=m[*m=124[m]=9]=6;e(-8),gets(1+(c=q))||(exit(0),0);r(0,0))for(;*++c;);}
r(t,o){*i=i[2]=0;for(u=v+98;m[*--c]^9;m[*c]&32?i[*c&2]=
*u,u-v^98&&++u:3)if(!m[*c]){for(*++c=0;!m[*--c];);*--u=
++c;}u-v^98?strcmp(*u,"cd")?*c?pipe(f),o=f[1]:1,(p=fork())?e(p),o?
r(o,0)D o)D*f):4,wait(0):(o?dup2(*f,0)D*f)D o):*i?1 D
0),e(open(*i,0)):5,t?dup2(t,1)D t):i[2]?9 D
1),e(creat(i[2],438)):2,e(execvp(*u,u))):e(chdir(u[1])*2):6;}
e(x){x<0?write(2,"?\n$ "-x/4,2),x+1||(exit(1),0):5;}
-1
View File
@@ -1,4 +1,3 @@
int e(int x),r(int t,int o);
#define gets(x)fgets((x),512,stdin) #define gets(x)fgets((x),512,stdin)
#define exit(x) exit((x)),0 #define exit(x) exit((x)),0
#define D ,close( #define D ,close(
+2
View File
@@ -1,3 +1,5 @@
mikeash mikeash
mikeash.orig mikeash.orig
mikeash2
mikeash2.c
prog.orig prog.orig
+12 -11
View File
@@ -396,19 +396,21 @@ judge and user the executioner? :-)
## [1990/dds](1990/dds/dds.c) ([README.md](1990/dds/README.md])) ## [1990/dds](1990/dds/dds.c) ([README.md](1990/dds/README.md]))
Yusuke and Cody in conjunction fixed this for modern systems. Yusuke and Cody in conjunction fixed this for modern systems (both fixed a
different compiler error but more fixes were also made).
Yusuke added the comma operator for a binary expression with `free(3)` which is Yusuke added the comma operator for a binary expression with `free(3)` which is
an error because `free()` returns void. Cody then made it slightly more like the is a compiler error because `free()` returns void. Cody then made it slightly more like the
original in this way by redefining `free` to have the comma operator itself. original in this way by redefining `free` to have the comma operator itself.
Cody removed the erroneous prototype to `fopen()` which caused a compiler error Cody fixed another compiler error by removing the erroneous prototype to
and he also made this use `fgets()` instead of `gets()` to make it safer and to `fopen()`. Cody also changed a file to be a proper `FILE *` and fixed a typo in
prevent an annoying and potentially alarming warning at compiling and/or linking [LANDER.BAS](1990/dds/LANDER.BAS).
and/or runtime.
Cody also changed a file to be a proper `FILE *` and fixed a typo Cody also made this use `fgets()` instead of `gets()` to make it safer and to
in [LANDER.BAS](1990/dds/LANDER.BAS). prevent an annoying and potentially alarming warning at compiling and/or linking
and/or runtime, the latter of which is unfortunately interspersed with the
output of the program.
Later Cody improved the `gets()`/`fgets()` fix by redefining `gets()` to use Later Cody improved the `gets()`/`fgets()` fix by redefining `gets()` to use
`fgets()`. Notice that the original entry used `fgets()` in one case as it has `fgets()`. Notice that the original entry used `fgets()` in one case as it has
@@ -416,7 +418,6 @@ to read from another file and in this place nothing was changed.
With these improvements the entry looks much more like the original! With these improvements the entry looks much more like the original!
## [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md])) ## [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md]))
Cody fixed the script to work properly in modern environments (to do with `$PATH` Cody fixed the script to work properly in modern environments (to do with `$PATH`
@@ -1388,7 +1389,7 @@ for strlen() with malloc(). This prevented it from working.
## [2006/borsanyi](2006/borsanyi/borsanyi.c) ([README.md](2006/borsanyi/README.md])) ## [2006/borsanyi](2006/borsanyi/borsanyi.c) ([README.md](2006/borsanyi/README.md]))
Cody fixed (the Makefile) under some systems where the `lpthread` was not Cody fixed the Makefile under some systems where the `lpthread` was not
implicitly linked in. implicitly linked in.
@@ -1405,7 +1406,7 @@ well segfault (for instance it segfaulted on his MacBook Pro with the M1 chip).
## [2006/night](2006/night/night.c) ([README.md](2006/night/README.md])) ## [2006/night](2006/night/night.c) ([README.md](2006/night/README.md]))
As Cody is a lost :-) `vim` user he took the author's remarks to add support As Cody is a lost :-) `vim` user he took the author's remarks to add support
back for arrow keys. back for arrow keys in the [alternate version](2006/night/night.alt.c).
## [2006/sloane](2006/sloane/sloane.c) ([README.md](2006/sloane/README.md])) ## [2006/sloane](2006/sloane/sloane.c) ([README.md](2006/sloane/README.md]))