diff --git a/1993/lmfjyh/README.md b/1993/lmfjyh/README.md index f5d5b87df..dbfeebf33 100644 --- a/1993/lmfjyh/README.md +++ b/1993/lmfjyh/README.md @@ -6,25 +6,31 @@ If you have gcc < 2.3.3 you can build this entry like: make all ``` -This will create a file called `";main(){puts("Hello World!");}char*C=".c` which -would print `Hello World!` when compiled. +This will try to create a file whose actual filename is literally: + +``` +";main(){puts("Hello World!");}char*C=".c +``` + +When that file is compiled, it will greet the world in the +traditional fashion of C. For an explanation of why and how this works see the author's remarks. The gist -of the entry itself, however, is the file name _itself **is** the code_. +of the entry itself, however, is the file name _itself_ **is** _part of the code_. -NOTE: we delete the temporary file whether or not the compilation succeeds -because it is an unsafe filename and not doing so would cause problems for -anyone running `make`. +NOTE: We delete the temporary file as part of `make all` whether +or not the compilation succeeds. This is a Makefile **feature** +that might **bug** anyone running the make command. :-) -This entry will not compile with gcc < 2.3.3 as it relies on a bug which was -fixed in gcc 2.3.3 which was fixed a very long time ago now. There is an -alternate version for [those of -us](https://www.collinsdictionary.com/dictionary/english/everyone) with gcc >= -2.3.3. See [Alternate code](#alternate-code) section below for more details. +This entry will not compile with gcc version >= 2.3.3 as it relied +on a bug which was later fixed in gcc 2.3.3, and that happened +_a long time ago_ (.. _in a galaxy far, far away_?). -However, there is an another version that will be compiled in the extremely -likely case this fails. This should happen automatically. See [Alternate -code](#alternate-code) below for more details on it. +If `make all` fails to compile, a suggestion of compiling and running +the alternate version is printed. This alternate version is a variant +for [those of us](https://www.collinsdictionary.com/dictionary/english/everyone) +with gcc >= 2.3.3 or using clang. See [Alternate code](#alternate-code) +section below for more details. ### Bugs and (Mis)features: @@ -51,8 +57,7 @@ If you have gcc < 2.3.3 (i.e. the entry can compile): This version does what the code did but in a way that will work with modern compilers. We'd like to say there's something special about it but there isn't. -Nonetheless it will be compiled in case the original entry fails to compile -(which will happen unless you have gcc < 2.3.3. +Nonetheless it will be compiled in case the original entry fails to compile. ### Alternate build: diff --git a/1993/lmfjyh/index.html b/1993/lmfjyh/index.html index 2e4b01193..76cc57703 100644 --- a/1993/lmfjyh/index.html +++ b/1993/lmfjyh/index.html @@ -142,36 +142,37 @@ Location: FI - Republic of Finland To build:
If you have gcc < 2.3.3 you can build this entry like:
make allThis will create a file called ";main(){puts("Hello World!");}char*C=".c which
-would print Hello World! when compiled.
This will try to create a file whose actual filename is literally:
+";main(){puts("Hello World!");}char*C=".c
+When that file is compiled, it will greet the world in the +traditional fashion of C.
For an explanation of why and how this works see the author’s remarks. The gist -of the entry itself, however, is the file name itself is the code.
-NOTE: we delete the temporary file whether or not the compilation succeeds
-because it is an unsafe filename and not doing so would cause problems for
-anyone running make.
This entry will not compile with gcc < 2.3.3 as it relies on a bug which was -fixed in gcc 2.3.3 which was fixed a very long time ago now. There is an -alternate version for those of -us with gcc >= -2.3.3. See Alternate code section below for more details.
-However, there is an another version that will be compiled in the extremely -likely case this fails. This should happen automatically. See Alternate -code below for more details on it.
+of the entry itself, however, is the file name itself is part of the code. +NOTE: We delete the temporary file as part of make all whether
+or not the compilation succeeds. This is a Makefile feature
+that might bug anyone running the make command. :-)
This entry will not compile with gcc version >= 2.3.3 as it relied +on a bug which was later fixed in gcc 2.3.3, and that happened +a long time ago (.. in a galaxy far, far away?).
+If make all fails to compile, a suggestion of compiling and running
+the alternate version is printed. This alternate version is a variant
+for those of us
+with gcc >= 2.3.3 or using clang. See Alternate code
+section below for more details.
The current status of this entry is:
STATUS: INABIAF - please **DO NOT** fix
For more detailed information see 1993 lmfjyh bugs.
If you have gcc < 2.3.3 (i.e. the entry can compile):
-./lmfjyh./lmfjyhThis version does what the code did but in a way that will work with modern compilers. We’d like to say there’s something special about it but there isn’t. -Nonetheless it will be compiled in case the original entry fails to compile -(which will happen unless you have gcc < 2.3.3.
+Nonetheless it will be compiled in case the original entry fails to compile.Should you wish to build this version manually:
-make altmake altUse lmfjyh.alt as you would lmfjyh above. Note that other code could also be
done with the bug that the entry abuses but that would have to be manually
@@ -187,10 +188,10 @@ best with C-source code.
As an example, I have taken a simple “Hello world!” program that should be familiar to all C-programmers.
main()
-{
- puts("Hello World!");
-}main()
+{
+ puts("Hello World!");
+}Normally a file name is used only to identify the file, but this new revolutionary method introduces a totally new concept: THE FILE NAME IS THE @@ -198,9 +199,9 @@ PROGRAM. There is no need to waste valuable disk space to store source The program is embedded in the file name, only a minor portion of it is inside the file.
char*_=__FILE__;char*_=__FILE__;";main(){puts("Hello World!");}char*C=".c";main(){puts("Hello World!");}char*C=".cThe sample program in listing 1 is 36 bytes long. By using the new compression method, the example program may be squeezed to sixteen bytes. In the example the compression ratio is 2:1. It is evident