Merge pull request #1498 from xexyl/outdated-faq
This commit is contained in:
5 files changed
+48
-19
No files matched your search
+25
-10
@@ -14,21 +14,20 @@ make
|
|||||||
./vince
|
./vince
|
||||||
```
|
```
|
||||||
|
|
||||||
Under macOS run from within an console tab (whether xterm, the default or
|
|
||||||
another) while the X11 server is running.
|
|
||||||
|
|
||||||
|
## Try:
|
||||||
|
|
||||||
### Try:
|
When running this in the program's window try hitting space a few times and see
|
||||||
|
what happens!
|
||||||
```sh
|
|
||||||
echo "Do or do not. There is no try."
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## Alternate code:
|
## Alternate code:
|
||||||
|
|
||||||
The [vince.alt.c](vince.alt.c) code of the submission will run on SGI IRIX and
|
The [vince.alt.c](vince.alt.c) code of the submission will run on SGI IRIX and
|
||||||
also has the recursive CPP macro (which sneaked in accidentally) removed.
|
also has the recursive `CPP` macro (which sneaked in accidentally) removed.
|
||||||
|
|
||||||
|
|
||||||
|
### Alternate build:
|
||||||
|
|
||||||
To compile this alternate version:
|
To compile this alternate version:
|
||||||
|
|
||||||
@@ -36,9 +35,16 @@ To compile this alternate version:
|
|||||||
make alt
|
make alt
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Alternate use:
|
||||||
|
|
||||||
Use `vince.alt` as you would `vince` above.
|
Use `vince.alt` as you would `vince` above.
|
||||||
|
|
||||||
|
|
||||||
|
### Alternate try:
|
||||||
|
|
||||||
|
Try it just like `vince` as above.
|
||||||
|
|
||||||
|
|
||||||
## Judges' remarks:
|
## Judges' remarks:
|
||||||
|
|
||||||
This beauteous entry makes use of visual `{}`s and whitespace to instruct the
|
This beauteous entry makes use of visual `{}`s and whitespace to instruct the
|
||||||
@@ -53,6 +59,7 @@ Challenge: Try modifying the texture to something of your own design.
|
|||||||
|
|
||||||
## Author's remarks:
|
## Author's remarks:
|
||||||
|
|
||||||
|
|
||||||
### ABUSE OF RULES
|
### ABUSE OF RULES
|
||||||
|
|
||||||
* The executable needs to read in its own source code in order to run. As
|
* The executable needs to read in its own source code in order to run. As
|
||||||
@@ -64,6 +71,7 @@ able to find it...
|
|||||||
* The program abuses severely the whitespace and `{ } ;` exceptions in the
|
* The program abuses severely the whitespace and `{ } ;` exceptions in the
|
||||||
file size limits.
|
file size limits.
|
||||||
|
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
|
||||||
* OpenGL. It works (slowly) with Mesa.
|
* OpenGL. It works (slowly) with Mesa.
|
||||||
@@ -74,6 +82,7 @@ file size limits.
|
|||||||
and the source's name should be the same as the executable but with `.c` on the
|
and the source's name should be the same as the executable but with `.c` on the
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
### Background
|
### Background
|
||||||
|
|
||||||
I was annoyed after the last IOCCC because I slaved away on a clever text
|
I was annoyed after the last IOCCC because I slaved away on a clever text
|
||||||
@@ -84,6 +93,7 @@ So to one up them, I decided to use OpenGL. It's standard, and most Unix-like
|
|||||||
systems these days have either accelerated graphics or else software
|
systems these days have either accelerated graphics or else software
|
||||||
rendering.
|
rendering.
|
||||||
|
|
||||||
|
|
||||||
### Obfuscation
|
### Obfuscation
|
||||||
|
|
||||||
It was a challenge getting the source code below the 2k limit. OpenGL has way
|
It was a challenge getting the source code below the 2k limit. OpenGL has way
|
||||||
@@ -94,26 +104,31 @@ size to fit under the limit while still having some semblance of a demo.
|
|||||||
|
|
||||||
There are some interesting abuses scattered about.
|
There are some interesting abuses scattered about.
|
||||||
|
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
|
|
||||||
Try hitting the space bar when the program is running.
|
Try hitting the space bar when the program is running.
|
||||||
|
|
||||||
|
|
||||||
### For Fun
|
### For Fun
|
||||||
|
|
||||||
|
|
||||||
Try modifying the texture to your own custom design...
|
Try modifying the texture to your own custom design...
|
||||||
|
|
||||||
|
|
||||||
### Thanks
|
### Thanks
|
||||||
|
|
||||||
Many thanks to John Clemens for testing this on various machines for me.
|
Many thanks to John Clemens for testing this on various machines for me.
|
||||||
|
|
||||||
|
|
||||||
### Errors you can get
|
### Errors you can get
|
||||||
|
|
||||||
- 0 = no error.
|
- 0 = no error.
|
||||||
- 1 =
|
- 1 =
|
||||||
[X](https://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture)
|
[X](https://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture)
|
||||||
problem.
|
problem.
|
||||||
- 2 = Can't open [glx](https://en.wikipedia.org/wiki/GLX).
|
- 2 = can't open [GLX](https://en.wikipedia.org/wiki/GLX).
|
||||||
- 3 = Can't open 16bpp visual.
|
- 3 = can't open 16bpp visual.
|
||||||
- 4 = can't open source file.
|
- 4 = can't open source file.
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ void Q()
|
|||||||
,N ) ) E( 2 ) ; v = glXChooseVisual L , DefaultScreen (y ),b
|
,N ) ) E( 2 ) ; v = glXChooseVisual L , DefaultScreen (y ),b
|
||||||
); s. colormap = XCreateColormap L , u = RootWindow ( y , v->
|
); s. colormap = XCreateColormap L , u = RootWindow ( y , v->
|
||||||
screen),v->visual, AllocNone ); if ( !(r=glXCreateContext L,v
|
screen),v->visual, AllocNone ); if ( !(r=glXCreateContext L,v
|
||||||
,N , 1 ) ) ) E ( 3 ) ; strcpy (f , * A) ; strcat (f, ".c" ) ;
|
,N , 1 ) ) ) E ( 3 ) ; strcpy (f , __FILE__); ;
|
||||||
F = fopen ( f , "r" ) ; s . event_mask = KeyPressMask ; w =
|
F = fopen ( f , "r" ) ; s . event_mask = KeyPressMask ; w =
|
||||||
XCreateWindow L,u, 0,0,640, 480,0,v -> depth, InputOutput , v
|
XCreateWindow L,u, 0,0,640, 480,0,v -> depth, InputOutput , v
|
||||||
-> visual , CWBorderPixel | CWColormap | CWEventMask ,& s);
|
-> visual , CWBorderPixel | CWColormap | CWEventMask ,& s);
|
||||||
@@ -72,9 +72,9 @@ GL_PROJECTION ) ; gluPerspective ( 60 , 1.333 , 1 , 100) ; J
|
|||||||
GL_MODELVIEW); u=glGenLists(1); glNewList (u,GL_COMPILE); H X
|
GL_MODELVIEW); u=glGenLists(1); glNewList (u,GL_COMPILE); H X
|
||||||
); while(a!=81)a=G; G;G;for(x=0;x<6;x++){glBegin(GL_QUADS ) ;
|
); while(a!=81)a=G; G;G;for(x=0;x<6;x++){glBegin(GL_QUADS ) ;
|
||||||
R(); glNormal3f(c,m,n); T(1,1); V T(1,0); V T(0,0); V T(0 ,1)
|
R(); glNormal3f(c,m,n); T(1,1); V T(1,0); V T(0,0); V T(0 ,1)
|
||||||
; V glEnd(); } glEndList(); XMapWindow L, w) ; c=0; for(; ; )
|
; V glEnd(); } glEndList(); XMapWindow L, w) ; c=0; for(; ; )
|
||||||
{ if (XPending L)){ XNextEvent L, &e); if ((XLookupKeysym ( (
|
{ if (XPending L)){ XNextEvent L, &e); if ((XLookupKeysym ( (
|
||||||
XKeyEvent *)&e,0))&1<<5){ h=10; i[c] =!i[c]; c++; c&=3; } else
|
XKeyEvent *)&e,0))&1<<5){ h=10; i[c] =!i[c]; c++; c&=3; } els
|
||||||
E(0) } glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;
|
E(0) } glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;
|
||||||
glLoadIdentity (); gluLookAt ( -2 ,0 ,5 ,0,0 ,0,0 ,0 ,1 ) ; H
|
glLoadIdentity (); gluLookAt ( -2 ,0 ,5 ,0,0 ,0,0 ,0 ,1 ) ; H
|
||||||
GL_LIGHTING); H GL_LIGHT0 ); U GL_POSITION, i + 4 ); U O) ; U
|
GL_LIGHTING); H GL_LIGHT0 ); U GL_POSITION, i + 4 ); U O) ; U
|
||||||
|
|||||||
+2
-2
@@ -58,8 +58,8 @@ void Q()
|
|||||||
glXQueryExtension L , N , N ) ) E (2); v=glXChooseVisual L ,
|
glXQueryExtension L , N , N ) ) E (2); v=glXChooseVisual L ,
|
||||||
DefaultScreen (y ) , b ) ; s.colormap = XCreateColormap L ,
|
DefaultScreen (y ) , b ) ; s.colormap = XCreateColormap L ,
|
||||||
RootWindow (y,v -> screen), v -> visual, AllocNone ); if (!(
|
RootWindow (y,v -> screen), v -> visual, AllocNone ); if (!(
|
||||||
r= glXCreateContext L, v, N, 1) ) ) E (3) ; strcpy(f, *A ) ;
|
r= glXCreateContext L, v, N, 1) ) ) E (3) ; strcpy(f, __FILE__ ) ;
|
||||||
s.event_mask=KeyPressMask; strcat(f,".c"); F=fopen(f,"r" ) ;
|
s.event_mask=KeyPressMask; ; F = fopen(f, "r" ) ;
|
||||||
w= XCreateWindow L, RootWindow( y, v -> screen ), M , M, 0,v
|
w= XCreateWindow L, RootWindow( y, v -> screen ), M , M, 0,v
|
||||||
->depth,InputOutput, v->visual , CWColormap|CWEventMask, &s)
|
->depth,InputOutput, v->visual , CWColormap|CWEventMask, &s)
|
||||||
;glXMakeCurrent L , w , r ); H GL_DEPTH_TEST ); if ( ! F )E(
|
;glXMakeCurrent L , w , r ); H GL_DEPTH_TEST ); if ( ! F )E(
|
||||||
|
|||||||
@@ -1217,11 +1217,11 @@ If you do submit a pull request, we ask that each pull request address just one
|
|||||||
Note that just because you have a fix does not mean it'll be accepted. This
|
Note that just because you have a fix does not mean it'll be accepted. This
|
||||||
might be because the author objects or it doesn't fit in some way or another. Of
|
might be because the author objects or it doesn't fit in some way or another. Of
|
||||||
course if the entry does not work we'll certainly be more inclined to accept the
|
course if the entry does not work we'll certainly be more inclined to accept the
|
||||||
fix. If it is accepted we'll be happy to credit you in the entry's _README.md_
|
fix. If it is accepted we'll be happy to credit you in the
|
||||||
file. If you're a previous winner we will happily link to your entries; if
|
[thanks](/thanks-for-fixes.md) file. If you're a previous winner we will happily
|
||||||
you're not we can link to your website if you wish.
|
link to your entries; if you're not we can link to your website if you wish.
|
||||||
|
|
||||||
More generally please see the file [how-to-bugfix.md](/how-to-bugfix.md). Note
|
More generally please see the file [how-to-help.md](/how-to-help.md). Note
|
||||||
that this file is not a tutorial on how to fix X, Y and Z problems but rather
|
that this file is not a tutorial on how to fix X, Y and Z problems but rather
|
||||||
what to do to get the fix in.
|
what to do to get the fix in.
|
||||||
|
|
||||||
|
|||||||
@@ -3032,6 +3032,20 @@ another function that takes 4 args and which is what used to be `main()`.
|
|||||||
The alternate versions were also fixed.
|
The alternate versions were also fixed.
|
||||||
|
|
||||||
|
|
||||||
|
## [2005/vince](2005/vince/vince.c) ([README.md](2005/vince/README.md))
|
||||||
|
|
||||||
|
Cody fixed this in the case that the program is compiled or linked/copies to
|
||||||
|
another file name: the code constructed the source code file name in a clever
|
||||||
|
and more obscure way by copying to the buffer `*argv` and then using `strcat(3)`
|
||||||
|
to concatenate to it `.c`. But this assumes that the executable is the same name
|
||||||
|
as the source file which isn't always be true. The author even stated: 'as long
|
||||||
|
as the source is in the same directory as the executable it should be able to
|
||||||
|
find it' but the source code file name is not always the same as the executable
|
||||||
|
with the appropriate extension so this might be called a bug fix as well though
|
||||||
|
if one runs it from another directory, specifying the directory, it'll not catch
|
||||||
|
it.
|
||||||
|
|
||||||
|
|
||||||
## [2006/birken](2006/birken/birken.c) ([README.md](2006/birken/README.md]))
|
## [2006/birken](2006/birken/birken.c) ([README.md](2006/birken/README.md]))
|
||||||
|
|
||||||
Cody fixed a segfault in macOS with this entry. The problem was a missing `+1`
|
Cody fixed a segfault in macOS with this entry. The problem was a missing `+1`
|
||||||
|
|||||||
Reference in new issue
Block a user