Check 1990/jaw/README.md for typos
Removed this task from todo.md, changing it to refer to just make sure all README.md files have been checked for typos. I _believe_ this means 1990 has been checked for typos except for the 1990/README.md file itself.
This commit is contained in:
1 parent
637a43d841
commit
ececfced3e
2 files changed
+62
-60
No files matched your search
+60
-57
@@ -70,49 +70,53 @@ sh shark.sh jaw.* README.md > receive
|
||||
The resulting file, `receive`, unpacks the input files
|
||||
even if the receiver lacks `uncompress` and `btoa`:
|
||||
|
||||
mkdir -p test
|
||||
cd test
|
||||
sh ../receive
|
||||
cmp ../jaw.c jaw.c
|
||||
cmp ../README.md README.md
|
||||
```sh
|
||||
mkdir -p test
|
||||
cd test
|
||||
sh ../receive
|
||||
cmp ../jaw.c jaw.c
|
||||
cmp ../README.md README.md
|
||||
```
|
||||
|
||||
## Authors' comments:
|
||||
|
||||
### ABSTRACT
|
||||
|
||||
Minimal, Universal File Bundling
|
||||
(or, Functional Obfuscation in a Self-Decoding Unix Shell Archive)
|
||||
#### Minimal, Universal File Bundling (or, Functional Obfuscation in a Self-Decoding Unix Shell Archive)
|
||||
|
||||
James A. Woods
|
||||
Universities Space Research Association
|
||||
NASA Ames Research Center
|
||||
|
||||
James A. Woods
|
||||
Universities Space Research Association
|
||||
NASA Ames Research Center
|
||||
---
|
||||
|
||||
> "Use an algorithm, go to jail."
|
||||
>
|
||||
> -- anon., circa 1988, pre-Morris worm era
|
||||
|
||||
"Use an algorithm, go to jail."
|
||||
[anon., circa 1988, pre-Morris worm era]
|
||||
|
||||
----
|
||||
|
||||
Myriad formats have been proposed for network-mailable data. A major difficulty
|
||||
undermining the popularity of most file/message bundlers is that the sender
|
||||
assumes prior installation of the computational dual of such bundling software
|
||||
by the receiver. Command shell archives alleviate this problem somewhat, but
|
||||
still require standardization for the function of data compression and
|
||||
mail-transparency encoding. On Unix, these coding format quandaries are over-
|
||||
come by planting a novel Trojan Horse in the archive header to perform
|
||||
mail-transparency encoding. On Unix, these coding format quandaries are overcome
|
||||
by planting a novel Trojan Horse in the archive header to perform
|
||||
negotiation-less decoding.
|
||||
|
||||
Specifically, we outline the development of an extraordinarily compact portable
|
||||
(un)bundler to (dis)assemble data-compressed, binary-to-ASCII-converted,
|
||||
length-split, and checksummed directory structures using standard Unix tools.
|
||||
Miniature versions of counterparts to a Lempel-Ziv coder ('compress' or
|
||||
'squeeze') and an efficient bit packetizer ('btoa') are compiled on-the-fly at
|
||||
Miniature versions of counterparts to a Lempel-Ziv coder (`compress` or
|
||||
`squeeze`) and an efficient bit packetizer (`btoa`) are compiled on-the-fly at
|
||||
mail destination sites where they may not already exist. These are written in
|
||||
purposefully obfuscated-C to accompany similarly-shrunk shell command glue. This
|
||||
resulting shell archiver is dubbed `shark`.
|
||||
|
||||
`shark` procedure overhead consumes as few as three dozen shell lines (or
|
||||
`~1100` bytes), commensurate with the size of many Internet mail headers; it
|
||||
amortizes favorably with message size. 'Shark' is portable across Unix
|
||||
amortizes favorably with message size. `shark` is portable across Unix
|
||||
variants, while the underlying technique is inherently generalizable to other
|
||||
encoding schemes.
|
||||
|
||||
@@ -123,12 +127,12 @@ environment.
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
> Oh, the shark has pretty teeth, dear--
|
||||
> And he shows them pearly white
|
||||
> Just a jackknife has Macheath, dear--
|
||||
> And he keeps it out of sight.
|
||||
|
||||
> [Bertolt Brecht, Threepenny Opera]
|
||||
> Oh, the shark has pretty teeth, dear--
|
||||
> And he shows them pearly white
|
||||
> Just a jackknife has Macheath, dear--
|
||||
> And he keeps it out of sight.
|
||||
>
|
||||
> -- Bertolt Brecht, Threepenny Opera
|
||||
|
||||
----------------------------------------------
|
||||
|
||||
@@ -137,7 +141,7 @@ environment.
|
||||
We have ported this program to a wide variety of systems. Among
|
||||
these are:
|
||||
|
||||
- SunOS 4.1 / Sun Sparcstation 1 (using both 'cc' and 'gcc 1.37.1')
|
||||
- SunOS 4.1 / Sun SPARCstation 1 (using both 'cc' and 'gcc 1.37.1')
|
||||
- SunOS 4.0.3 / Sun 3
|
||||
- BSD 4.3 / VAX 8650
|
||||
- SEIUX / Sumitomo Electric Ustation/S
|
||||
@@ -154,8 +158,8 @@ We (the authors) feel this program is obfuscated for the
|
||||
following reasons:
|
||||
|
||||
|
||||
0. This is one of the few programs you'll see WHOSE VERY UTILITY DEPENDS ON ITS
|
||||
OBFUSCATION!
|
||||
0. This is one of the few programs you'll see _WHOSE VERY UTILITY DEPENDS ON ITS
|
||||
OBFUSCATION_!
|
||||
|
||||
1. The contest entry may be used to send its wonderful self to anyone in the
|
||||
Unix world! Virus writers need not apply...
|
||||
@@ -164,23 +168,22 @@ Unix world! Virus writers need not apply...
|
||||
kindness of our hearts (as well as to maintain eligibility for the large IOCCC
|
||||
prize fund), dedicated to the public domain. Claude Shannon, meet Alan Turing.
|
||||
|
||||
3. Meta-obfuscation is via obfuscated description (see ABSTRACT).
|
||||
3. Meta-obfuscation is via obfuscated description (see _ABSTRACT_).
|
||||
|
||||
4. "Literary" allusion. Production code contains a reference to self-reference,
|
||||
preserved at amazing cost for sheer perversity.
|
||||
|
||||
5. Many, many micro obfuscations below, honed over three years time, in shell as
|
||||
well as C. Ask about the 'tar' pit escape, the argv[0] flip, Paul's &4294967295
|
||||
portability hack, the "void where prohibited by flaw" fix, the scanf()
|
||||
space-saver, shift shenanigans, signal madness, `exit()`ing stage left, and
|
||||
source-to-source transformations galore.
|
||||
well as C. Ask about the 'tar' pit escape, the `argv[0]` flip, Paul's
|
||||
`&4294967295` portability hack, the "void where prohibited by flaw" fix, the
|
||||
`scanf()` space-saver, shift shenanigans, signal madness, `exit()`ing stage
|
||||
left, and source-to-source transformations galore.
|
||||
|
||||
### For extra credit:
|
||||
|
||||
Construct 'sharkmail', to auto-split sharkives into mailable
|
||||
segments and mail them. Here's a simple one, which could be
|
||||
extended to enable auto-reassembly with one shell cmd at the
|
||||
far end.
|
||||
Construct `sharkmail`, to auto-split `sharkives` into mailable segments and mail
|
||||
them. Here's a simple one, which could be extended to enable auto-reassembly
|
||||
with one shell cmd at the far end.
|
||||
|
||||
```sh
|
||||
#!/bin/sh
|
||||
@@ -199,39 +202,39 @@ rm /tmp/shark$$*
|
||||
|
||||
### Shark history:
|
||||
|
||||
May 1987: Karl Fox introduces 1023-byte zcat.c to USENET.
|
||||
It's too late for the 4th IOCCC.
|
||||
- May 1987: Karl Fox introduces 1023-byte zcat.c to USENET.
|
||||
It's too late for the 4th IOCCC.
|
||||
|
||||
May 21, 1987: James A. Woods extends idea to construct self
|
||||
decompressing shar Trojan horse, utilizing 'cc', 'shar',
|
||||
'zcat', & 'btoa'; size: 2303 bytes.
|
||||
- May 21, 1987: James A. Woods extends idea to construct self
|
||||
decompressing shar Trojan horse, utilizing 'cc', 'shar',
|
||||
'zcat', & 'btoa'; size: 2303 bytes.
|
||||
|
||||
May 23, 1987: 'jaw' trims 250 bytes without much thought.
|
||||
- May 23, 1987: 'jaw' trims 250 bytes without much thought.
|
||||
|
||||
June 2, 1987: 52 lines of shell, 1991 bytes, now made with 'tar',
|
||||
short-circuit C-compile at far end, dual-use main.c,
|
||||
portability mods. (jaw)
|
||||
- June 2, 1987: 52 lines of shell, 1991 bytes, now made with 'tar',
|
||||
short-circuit C-compile at far end, dual-use main.c,
|
||||
portability mods. (jaw)
|
||||
|
||||
Mar-May 1988: abortive run at 5th IOCCC.
|
||||
jaw.c - 1529 bytes. compile line: 152 bytes.
|
||||
generated funny code with execvp() to invoke shell.
|
||||
- Mar-May 1988: abortive run at 5th IOCCC.
|
||||
jaw.c - 1529 bytes. compile line: 152 bytes.
|
||||
generated funny code with execvp() to invoke shell.
|
||||
|
||||
Aug 29, 1988: production version, now at 1830 bytes.
|
||||
- Aug 29, 1988: production version, now at 1830 bytes.
|
||||
|
||||
Jan 1990: Paul Eggert does tour-de-force shark re-engineering.
|
||||
- Jan 1990: Paul Eggert does tour-de-force shark re-engineering.
|
||||
|
||||
May 24, 1990: collaboration yields 999-byte jaw.c core (see above)
|
||||
and 1530-byte production shell code (w/comments).
|
||||
Eggert comes through with lion's share of improvements.
|
||||
7th IOCCC code now faster than the btoa/zcat it replaces.
|
||||
- May 24, 1990: collaboration yields 999-byte jaw.c core (see above)
|
||||
and 1530-byte production shell code (w/comments).
|
||||
Eggert comes through with lion's share of improvements.
|
||||
7th IOCCC code now faster than the btoa/zcat it replaces.
|
||||
|
||||
May 1990: 'jaw' develops experimental replacement using
|
||||
Dan Bernstein's high-compression 'squeeze'.
|
||||
- May 1990: 'jaw' develops experimental replacement using
|
||||
Dan Bernstein's high-compression 'squeeze'.
|
||||
|
||||
|
||||
To which we add:
|
||||
|
||||
June 1990: 'shark' wins the IOCCC, finally! :-)
|
||||
- June 1990: 'shark' wins the IOCCC, finally! :-)
|
||||
|
||||
## Copyright and CC BY-SA 4.0 License:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# A todo list of known things to check and/or do
|
||||
*Last updated: Sun 9 Apr 2023 05:12:09 PDT*
|
||||
*Last updated: Sun 9 Apr 2023 13:38:05 UTC*
|
||||
|
||||
More things will likely be added over time and as items are done they _should
|
||||
be_ removed from the list IF AND ONLY IF (!!) we are certain it is done (many
|
||||
@@ -11,8 +11,7 @@ not been done).
|
||||
- Find entries with bugs and INABIAF and add to [bugs.md](/bugs.md).
|
||||
- Resolve as many of the issues in [bugs.md](/bugs.md) with the exception of the
|
||||
INABIAF ones. This is likely not possible but some certainly can be fixed.
|
||||
- Check for typos in [1990/jaw/README.md](/1990/jaw/README.md). Many other
|
||||
README.md files have to be checked for typos as well.
|
||||
- Check for typos in README.md files.
|
||||
- Verify which README.md files have not been checked for correct formatting and
|
||||
fix any issues.
|
||||
|
||||
|
||||
Reference in new issue
Block a user