* v0.6: I tried to use it and didn't get far
** Special forms added
cdar cddr apply unsafe-system shellquote
** Macros added
let*
** Library functions added
intercalate string-join system
** Known issues
None yet.
** ~system~ rehabilitation
The special form ~system~ was previously a direct interface to AWK's
~system~ function, thence to ~system(3)~, which takes a command as a
single string and runs it in a subshell. If that string contains any
untrusted input, you have OS command injection.
The old ~system~ special form has been renamed to ~unsafe-system~, and
replaced with the library function ~system~. This takes any number of
strings, the first for the executable and one for each desired
argument. It uses ~shellquote~ to defang each string, concatenates
them using ~string-join~, and then runs ~unsafe-system~ with that.
** ~quasiquote~ works
Tested and reimplemented. It may not be the most efficient, but it
doesn't crash anything.
* v0.5: First public release
** Special forms added (this is all of them)
quote atom eq car cdr cons cond label lambda not null equal
caar cadr memq member assoc setq
caaar caadr cadar caddr cdaar cdadr cddar cdddr
rplaca rplacd nreverse nconc append list-length print progn
macro expand1 eval
only2+ only2* only2- only2/ only2// only2% only2**
atan2 cos sin exp log sqrt rand srand int
system tolower toupper substr index match split sub gsub
printf sprintf string-length strcat getline
with-ors with-rs with-fs with-output-to with-input-from
fflush close
gc-dot gc dump dump-dot
** Macros added (this is all of them)
let quasiquote
** Library functions added (this is all of them)
mapcar foldl reduce mappend + * - / // % **
** Known issues
~system~ probably doesn't even work. This is good because, without
appropriate quoting, it has Common Weakness CWE-78, OS command
injection.
~quasiquote~ doesn't work and may crash awk due to infinite recursion.