home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / m / mawk11as.zip / NEW < prev    next >
Text File  |  1992-01-22  |  3KB  |  134 lines

  1.  
  2. This file describes the changes from mawk 1.0 to mawk 1.1
  3.  
  4.  
  5. ------------------------------------------------------
  6. CHANGES dictated by posix requirements:
  7.  
  8. command line:
  9.  
  10.   -f file      program can come from multiple -f options
  11.   -v var=value     assignment *before* BEGIN execution
  12.  
  13.   all implementation dependent options are arguments to -W
  14.  
  15.   -W version     replaces -V
  16.   -W dump    replaces -D
  17.   -W sprintf=number     enlarges sprintf buffer to number bytes
  18.   -W posix_space    forces mawk not to consider '\n' space
  19.  
  20.  
  21. new builtin variables:
  22.  
  23.   CONVFMT used for internal conversion from number to
  24.   string, initially = "%.6g"
  25.  
  26.      to convert x to string if x is exact integer
  27.     
  28.     x <- sprintf("%d", x)
  29.  
  30.     else
  31.  
  32.     x <- sprintf(CONVFMT, x)
  33.  
  34.  
  35.   output still uses OFMT except exact integers use "%d"
  36.  
  37.  
  38.   ENVIRON[] array holds inherited environment.  Changes are *not*
  39.   passed to commands executed by mawk.
  40.  
  41.  
  42. new functions:
  43.  
  44.    toupper()
  45.    tolower()
  46.  
  47.  
  48. /regexpr/    can be used anywhere in the program as an expression,
  49.  
  50. so
  51.  
  52.       if ( /^A.*B/ ) {....}
  53.  
  54. is the same as
  55.  
  56.       if ( $0 ~ /^A.*B/ ) {....}
  57.  
  58.  
  59. length   is no longer valid must be length() or length(expr)
  60.  
  61.       (programs that fail can be run through
  62.     examples/ct_length.awk,
  63.        ct stands for cold turkey)
  64.  
  65. [WARNING: THIS BREAKS SOME OLD AWK SCRIPTS.
  66. Mawk1.1 does not support length without arguments, because
  67.  
  68.     (1) It's not in the posix draft.
  69.     (2) It's not in the AWK book.
  70.     (3) It's inconsistent with the overall language design.
  71.  
  72. Those who disagree with this decision enough to complain should
  73. put "pointy-headed purist" somewhere in their Subject: line.
  74. ]
  75.  
  76.  
  77. printf and sprintf are ANSI C compatible, you can for example
  78.  
  79.      printf "%-#0*.*lX", 20,6 , x
  80.  
  81.  
  82.      (mawk passes printf and sprintf to printf(3) and sprintf(3)
  83.       so real ansi compatibility requires an ANSI C library.)
  84.  
  85. RS == ""  now strips blank lines from the front and back of 
  86.       each file, and then acts the same as RS = "\n\n+"
  87.  
  88. ------------------------------------------------------------
  89. Non posix changes:
  90.  
  91.  
  92.     print or printf > "/dev/stderr"   writes to stderr
  93.     (taken from gawk)
  94.  
  95.  
  96. Hardwired limits are mostly gone for example if you have enough
  97. memory you can dynamically allocate up to 32K fields 
  98. (or more by adjusting defines in sizes.h)
  99.  
  100. ---------------------------------------------------------------
  101.  
  102. I "fixed" some things that in hindsight I thought I did wrong the
  103. first time.
  104.  
  105.      array storage is different.
  106.      program flow is entirely controlled in execute().
  107.      there are some new op codes
  108.      grammar is a little cleaner
  109.  
  110. ---------------------
  111.  
  112. DOS:  
  113.  
  114.    1) under command.com for programs from the command line
  115.    The use of " and ' is reversed.  This makes batch files
  116.    easier at the cost of some quote dyslexia.
  117.  
  118.  
  119.    Unix:  mawk '/foo/{print "bar"}'
  120.  
  121.  
  122.    DOS :   mawk "/foo/{print 'bar'}"
  123.  
  124.        but only from the command line, not from files
  125.  
  126.        mawk -f con
  127.        /fool/{print "bar"}
  128.        ^Z
  129.  
  130.    2) System() and pipes, so DOS mawk is now fully compatible with
  131.    unix mawk.
  132.  
  133.  
  134.