Fixes in 1990/jaw
The example commands in the judges' comments had some problems that gave
an error message when running them.
I have also figured out the apparent problem with macOS in the command
under the try section being:
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
But it's not actually a problem. It uses perror() and under macOS with
errno == 0 it shows:
Undefined error: 0
whereas linux shows 'Success'. So it's not actually a problem with the
entry at all. In fact the condition that triggers that call is the same
in both linux and macOS.
I've updated bugs.md to note this and I also updated the README.md to
note it (and to refer to the bugs.md file for more details).
The thank you to me is because I missed it earlier on when I fixed the
scripts, simple though the fixes were.
This commit is contained in:
1 parent
50e026a93f
commit
67a3677763
4 files changed
+70
-16
No files matched your search
@@ -1,3 +1,6 @@
|
||||
atob
|
||||
jaw
|
||||
zcat
|
||||
receive
|
||||
unshark
|
||||
unshark.c
|
||||
+23
-14
@@ -21,17 +21,33 @@
|
||||
|
||||
## To build:
|
||||
|
||||
make all
|
||||
make all
|
||||
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the script to
|
||||
work properly in modern environments (to do with PATH not having '.' in it). He
|
||||
notes that with an invocation in the try section below you will with macOS get
|
||||
what appears to be an error message but is actually okay. He gives more
|
||||
information in the [bugs.md](/bugs.md) file. Thank you Cody for the help and
|
||||
notes!
|
||||
|
||||
NOTE: as `btoa` is not common we used a ruby script from [Yusuke
|
||||
Endoh](/winners.html#Yusuke_Endoh). Thank you Yusuke for your implementation of
|
||||
`btoa`!
|
||||
|
||||
|
||||
### Try:
|
||||
|
||||
To test the official C entry, one might try:
|
||||
|
||||
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||
|
||||
NOTE: part of this entry does not work under macOS.
|
||||
which should apply the identity transformation to a minimal
|
||||
holoalphabetic sentence.
|
||||
|
||||
NOTE: Cody notes the above will not work under macOS. The `sh shark.sh jaw.*
|
||||
README.md > receive` and following commands below do work with macOS after the
|
||||
fixes he made.
|
||||
|
||||
|
||||
## Judges' comments:
|
||||
@@ -42,30 +58,23 @@ The program, in its base form, implements two useful utilities:
|
||||
atob - ascii to binary conversion
|
||||
zcat - decompression filter
|
||||
|
||||
To test the official C entry, one might try:
|
||||
|
||||
echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||
|
||||
which should apply the identity transformation to a minimal
|
||||
holoalphabetic sentence.
|
||||
|
||||
Included with this entry is a shell script (with comments edited down
|
||||
to reduce it to 1530 bytes) which implements the complete
|
||||
shark utility. The script, shark.sh, contains a 'jaw.c' embedded
|
||||
within it!
|
||||
|
||||
The sender must have 'compress' and 'btoa'. To send, try:
|
||||
The sender must have `compress` and `btoa`. To send, try:
|
||||
|
||||
sh shark.sh jaw.* > receive
|
||||
sh shark.sh jaw.* README.md > receive
|
||||
|
||||
The resulting file, 'receive', unpacks the input files
|
||||
even if the receiver lacks 'uncompress' and 'btoa':
|
||||
even if the receiver lacks `uncompress` and `btoa`:
|
||||
|
||||
mkdir test
|
||||
mkdir -p test
|
||||
cd test
|
||||
sh ../receive
|
||||
cmp ../jaw.c jaw.c
|
||||
cmp ../jaw.hint jaw.hint
|
||||
cmp ../README.md README.md
|
||||
|
||||
## Authors' comments:
|
||||
|
||||
|
||||
+2
-2
@@ -10,7 +10,7 @@ for i in "${@?${usage?$0 file...}}";do<"$i"||exit;done
|
||||
# "Cleverly he dialed from within." -- D. Van Vliet, "Trout Mask Replica"
|
||||
#
|
||||
PATH=$PATH:. a=atob m=unshark z=zcat
|
||||
r="rm -f $a $m* $z" v="cc -o $z $m.c"
|
||||
r="rm -f $a $m* $z" v="cc -Wno-implicit-function-declaration -o $z $m.c"
|
||||
trap "$r;exit 1" 1 2 13 15
|
||||
echo decoding...
|
||||
(:|compress|./btoa|$a|$z)2>$m>&2||(sed '1,9s/./#define & /
|
||||
@@ -43,5 +43,5 @@ Z,h@=w;n=8;f=Q+e;i=o=HIo<0)X,1;P(i)WH+1){Iw==Q&e){Z;m=n=8;f=QIH<0)X}
|
||||
c=wIw>=f)U++=i,w=oWw>=Q)U++=h@,w=t@;P(i=h@)Wp>D+Q)P(*--p)
|
||||
I(w=f)<1l<<k)t@=o,h[f++]=i;o=c}X}
|
||||
_
|
||||
($v||$v -Mh)&&ln $z $a)&&$a<<\w>$m-&&$z<$m->$m&&tar xvf $m&&$r
|
||||
($v)&&ln $z $a)&&$a<<\w>$m-&&$z<$m->$m&&tar xvf $m&&$r
|
||||
Z
|
||||
@@ -20,6 +20,7 @@ you have one if you like).
|
||||
|
||||
## Known bugs that are OK to fix
|
||||
|
||||
|
||||
### [1995/cdua](1995/cdua/cdua.c) ([README.md](1995/cdua/README.md))
|
||||
|
||||
This did not compile under macOS and after it did it crashed.
|
||||
@@ -103,6 +104,47 @@ Vax-11 or pdp-11. In 1984 machine dependent code was allowed.
|
||||
This entry is known to segfault after printing its output. It was documented by
|
||||
the judges and needn't be fixed.
|
||||
|
||||
### [1990/jaw](1990/jaw/jaw.c) ([README.md](1990/jaw/README.md))
|
||||
|
||||
[Cody Boone Ferguson](/winners.html#Cody_Boone_Ferguson) fixed the scripts to
|
||||
work in modern systems. He notes however that the command in the try section,
|
||||
the one to test the official C entry, appear to not work with macOS, giving:
|
||||
|
||||
|
||||
$ echo "Quartz glyph jocks vend, fix, BMW." | compress | ./btoa | ./jaw
|
||||
oops: Undefined error: 0
|
||||
oops: Undefined error: 0
|
||||
|
||||
|
||||
However this is because the entry uses `perror()` and it just so happens that
|
||||
the default `errno` gives that result. For instance if you run the following C
|
||||
program under macOS you will get undefined error but if you do it under linux
|
||||
you'll likely get success.
|
||||
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <string.h>
|
||||
int main()
|
||||
{
|
||||
errno = 0;
|
||||
printf("%d, %s\n", errno, strerror(errno));
|
||||
}
|
||||
```
|
||||
|
||||
In fact the condition which is in the `a()` function on line 18 of the entry
|
||||
namely:
|
||||
|
||||
I k>16)
|
||||
|
||||
is true on both linux and macOS, with `k` being equal to 22.
|
||||
|
||||
Should the entry use `perror()`? Perhaps not but we're not sure of its purpose
|
||||
so it can stay for now with this note.
|
||||
|
||||
|
||||
|
||||
### [1996/westley](1996/westley/westley.c) ([README.md](1996/westley/README.md))
|
||||
|
||||
This entry will possibly segfault even when showing the proper output in the
|
||||
|
||||
Reference in new issue
Block a user