home *** CD-ROM | disk | FTP | other *** search
-
- This file describes the changes from mawk 1.0 to mawk 1.1
-
-
- ------------------------------------------------------
- CHANGES dictated by posix requirements:
-
- command line:
-
- -f file program can come from multiple -f options
- -v var=value assignment *before* BEGIN execution
-
- all implementation dependent options are arguments to -W
-
- -W version replaces -V
- -W dump replaces -D
- -W sprintf=number enlarges sprintf buffer to number bytes
- -W posix_space forces mawk not to consider '\n' space
-
-
- new builtin variables:
-
- CONVFMT used for internal conversion from number to
- string, initially = "%.6g"
-
- to convert x to string if x is exact integer
-
- x <- sprintf("%d", x)
-
- else
-
- x <- sprintf(CONVFMT, x)
-
-
- output still uses OFMT except exact integers use "%d"
-
-
- ENVIRON[] array holds inherited environment. Changes are *not*
- passed to commands executed by mawk.
-
-
- new functions:
-
- toupper()
- tolower()
-
-
- /regexpr/ can be used anywhere in the program as an expression,
-
- so
-
- if ( /^A.*B/ ) {....}
-
- is the same as
-
- if ( $0 ~ /^A.*B/ ) {....}
-
-
- length is no longer valid must be length() or length(expr)
-
- (programs that fail can be run through
- examples/ct_length.awk,
- ct stands for cold turkey)
-
- [WARNING: THIS BREAKS SOME OLD AWK SCRIPTS.
- Mawk1.1 does not support length without arguments, because
-
- (1) It's not in the posix draft.
- (2) It's not in the AWK book.
- (3) It's inconsistent with the overall language design.
-
- Those who disagree with this decision enough to complain should
- put "pointy-headed purist" somewhere in their Subject: line.
- ]
-
-
- printf and sprintf are ANSI C compatible, you can for example
-
- printf "%-#0*.*lX", 20,6 , x
-
-
- (mawk passes printf and sprintf to printf(3) and sprintf(3)
- so real ansi compatibility requires an ANSI C library.)
-
- RS == "" now strips blank lines from the front and back of
- each file, and then acts the same as RS = "\n\n+"
-
- ------------------------------------------------------------
- Non posix changes:
-
-
- print or printf > "/dev/stderr" writes to stderr
- (taken from gawk)
-
-
- Hardwired limits are mostly gone for example if you have enough
- memory you can dynamically allocate up to 32K fields
- (or more by adjusting defines in sizes.h)
-
- ---------------------------------------------------------------
-
- I "fixed" some things that in hindsight I thought I did wrong the
- first time.
-
- array storage is different.
- program flow is entirely controlled in execute().
- there are some new op codes
- grammar is a little cleaner
-
- ---------------------
-
- DOS:
-
- 1) under command.com for programs from the command line
- The use of " and ' is reversed. This makes batch files
- easier at the cost of some quote dyslexia.
-
-
- Unix: mawk '/foo/{print "bar"}'
-
-
- DOS : mawk "/foo/{print 'bar'}"
-
- but only from the command line, not from files
-
- mawk -f con
- /fool/{print "bar"}
- ^Z
-
- 2) System() and pipes, so DOS mawk is now fully compatible with
- unix mawk.
-
-
-