gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, master, updated. 894413cf12f347facef4de3


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, master, updated. 894413cf12f347facef4de3626573644d067c3bb
Date: Wed, 19 Dec 2012 13:37:41 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, master has been updated
       via  894413cf12f347facef4de3626573644d067c3bb (commit)
       via  e468705fb6c7f2b2384c20f320e617cdbd55238c (commit)
       via  ab76bb69f10de31c94d7b6855c85402673a4e5ed (commit)
       via  da6e4513c4b16249f4732c42c5329b39d398f0c9 (commit)
       via  925f763a6f0240b39742ebf9239163a664cc9afc (commit)
      from  886be6b488e3fa72f78979c3a2cd7d31a3bc6a85 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=894413cf12f347facef4de3626573644d067c3bb

commit 894413cf12f347facef4de3626573644d067c3bb
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Dec 19 15:36:57 2012 +0200

    Make indirectly updated vars accessable to SYMTAB, API.

diff --git a/ChangeLog b/ChangeLog
index 0914e2d..54bc908 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,14 @@
        * gawkapi.h (awk_input_buf_t): Move it to here.
        * io.c (iop_alloc, get_a_record, get_read_timeout): Adjust code.
 
+       Unrelated: Make sure that variables like NF, NR, FNR are
+       accessable correctly both through SYMTAB and through API.
+
+       * gawkapi.c (api_sym_lookup): Call update_global_values().
+       (api_sym_lookup_scalar): Ditto.
+       * interpret.h (Op_subscript, Op_subscript_lhs): Ditto.
+       * main.c (update_global_values): Adjust comment.
+
 2012-12-18         Andrew J. Schorr     <address@hidden>
 
        * gawkapi.c (sym_update_real): If setting a scalar variable that exists
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 3e46d63..da24b78 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -1,3 +1,7 @@
+2012-12-19         Arnold D. Robbins     <address@hidden>
+
+       * testext.c (test_indirect_vars): New test and awk code.
+
 2012-12-02         Arnold D. Robbins     <address@hidden>
 
        * Makefile.am (EXTRA_DIST): Add README.fts.
diff --git a/extension/testext.c b/extension/testext.c
index 9367da7..8f6735c 100644
--- a/extension/testext.c
+++ b/extension/testext.c
@@ -686,6 +686,52 @@ out:
        return result;
 }
 
+/*
+BEGIN {
+       print "line 1" > "testexttmp.txt"
+       print "line 2" > "testexttmp.txt"
+       print "line 3" > "testexttmp.txt"
+       close("testexttmp.txt")
+       ARGV[1] = "testexttmp.txt"
+       ARGC = 2
+       getline
+       getline
+       getline         # now NR should be 3
+#      system("rm testexttmp.txt")
+       ret = test_indirect_vars()      # should get correct value of NR
+       printf("test_indirect_var() return %d\n", ret)
+       delete ARGV[1]
+}
+*/
+
+/* test_indirect_vars --- test that access to NR, NF, get correct vales */
+
+static awk_value_t *
+test_indirect_vars(int nargs, awk_value_t *result)
+{
+       awk_value_t value;
+       char *name = "NR";
+
+       assert(result != NULL);
+       make_number(0.0, result);
+
+       /* system("rm testexttmp.txt") */
+       (void) unlink("testexttmp.txt");
+
+       if (sym_lookup(name, AWK_NUMBER, & value))
+               printf("test_indirect_var: sym_lookup of %s passed\n", name);
+       else {
+               printf("test_indirect_var: sym_lookup of %s failed\n", name);
+               goto out;
+       }
+
+       printf("test_indirect_var: value of NR is %g\n", value.num_value);
+
+       make_number(1.0, result);
+out:
+       return result;
+}
+
 /* fill_in_array --- fill in a new array */
 
 static void
@@ -780,6 +826,7 @@ static awk_ext_func_t func_table[] = {
        { "print_do_lint", print_do_lint, 0 },
        { "test_scalar", test_scalar, 1 },
        { "test_scalar_reserved", test_scalar_reserved, 0 },
+       { "test_indirect_vars", test_indirect_vars, 0 },
 };
 
 /* init_testext --- additional initialization function */
diff --git a/gawkapi.c b/gawkapi.c
index cd09cdd..b89bdbc 100644
--- a/gawkapi.c
+++ b/gawkapi.c
@@ -505,6 +505,8 @@ api_sym_lookup(awk_ext_id_t id,
 {
        NODE *node;
 
+       update_global_values();         /* make sure stuff like NF, NR, are up 
to date */
+
        if (   name == NULL
            || *name == '\0'
            || result == NULL
@@ -532,6 +534,8 @@ api_sym_lookup_scalar(awk_ext_id_t id,
            || node->type != Node_var)
                return false;
 
+       update_global_values(); /* make sure stuff like NF, NR, are up to date 
*/
+
        return node_to_awk_value(node, result, wanted);
 }
 
diff --git a/interpret.h b/interpret.h
index 228a3f3..c652624 100644
--- a/interpret.h
+++ b/interpret.h
@@ -225,6 +225,10 @@ top:
                                }
                                r = t2;
                        } else {
+                               /* make sure stuff like NF, NR, are up to date 
*/
+                               if (t1 == symbol_table)
+                                       update_global_values();
+
                                r = *assoc_lookup(t1, t2);
                        }
                        DEREF(t2);
@@ -308,6 +312,7 @@ top:
                        else if (   t1 == symbol_table
                                 && (   (*lhs)->type == Node_var
                                     || (*lhs)->type == Node_var_new)) {
+                               update_global_values();         /* make sure 
stuff like NF, NR, are up to date */
                                (*lhs)->type = Node_var;        /* in case was 
Node_var_new */
                                lhs = & ((*lhs)->var_value);    /* extra level 
of indirection */
                        }
diff --git a/main.c b/main.c
index d054ec1..88fe3bd 100644
--- a/main.c
+++ b/main.c
@@ -1561,6 +1561,8 @@ save_argv(int argc, char **argv)
 /*
  * update_global_values --- make sure the symbol table has correct values.
  * Called from the grammar before dumping values.
+ *
+ * Also called when accessing through SYMTAB, and from api_sym_lookup().
  */
 
 void
diff --git a/test/ChangeLog b/test/ChangeLog
index af93a7e..1897aed 100644
--- a/test/ChangeLog
+++ b/test/ChangeLog
@@ -1,3 +1,10 @@
+2012-12-19         Arnold D. Robbins     <address@hidden>
+
+       * symtab9.awk, symtab9.ok: New files.
+       * Makefile.am (EXTRA_DIST): Add new files.
+       (symtab9): New test.
+       * symtab1.ok, testext.ok: Updated.
+
 2012-12-16         Arnold D. Robbins     <address@hidden>
 
        * symtab7.awk, symtab7.in, symtab7.ok, symtab8.awk, symtab8.in,
diff --git a/test/Makefile.am b/test/Makefile.am
index 793df59..2bf7eba 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -813,6 +813,8 @@ EXTRA_DIST = \
        symtab8.awk \
        symtab8.in \
        symtab8.ok \
+       symtab9.awk \
+       symtab9.ok \
        synerr1.awk \
        synerr1.ok \
        synerr2.awk \
@@ -935,7 +937,8 @@ GAWK_EXT_TESTS = \
        rebuf regx8bit reint reint2 rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
        strtonum switch2 \
-       symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 symtab8
+       symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 \
+       symtab8 symtab9
 
 EXTRA_TESTS = inftest regtest
 
diff --git a/test/Makefile.in b/test/Makefile.in
index b97d438..6cdff55 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -1025,6 +1025,8 @@ EXTRA_DIST = \
        symtab8.awk \
        symtab8.in \
        symtab8.ok \
+       symtab9.awk \
+       symtab9.ok \
        synerr1.awk \
        synerr1.ok \
        synerr2.awk \
@@ -1146,7 +1148,8 @@ GAWK_EXT_TESTS = \
        rebuf regx8bit reint reint2 rsstart1 \
        rsstart2 rsstart3 rstest6 shadow sortfor sortu splitarg4 strftime \
        strtonum switch2 \
-       symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 symtab8
+       symtab1 symtab2 symtab3 symtab4 symtab5 symtab6 symtab7 \
+       symtab8 symtab9
 
 EXTRA_TESTS = inftest regtest
 INET_TESTS = inetdayu inetdayt inetechu inetecht
@@ -3308,6 +3311,11 @@ symtab7:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+symtab9:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 double1:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/Maketests b/test/Maketests
index e7ab3c7..457363e 100644
--- a/test/Maketests
+++ b/test/Maketests
@@ -1210,6 +1210,11 @@ symtab7:
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  < $(srcdir)/address@hidden 
>_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
        @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
 
+symtab9:
+       @echo $@
+       @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
+       @-$(CMP) $(srcdir)/address@hidden _$@ && rm -f _$@
+
 double1:
        @echo $@
        @AWKPATH=$(srcdir) $(AWK) -f address@hidden  >_$@ 2>&1 || echo EXIT 
CODE: $$? >>_$@
diff --git a/test/symtab1.ok b/test/symtab1.ok
index 3e435dd..04709e0 100644
--- a/test/symtab1.ok
+++ b/test/symtab1.ok
@@ -10,7 +10,7 @@ SYMTAB["ERRNO"] = ""
 SYMTAB["NR"] = "0"
 SYMTAB["IGNORECASE"] = "0"
 SYMTAB["TEXTDOMAIN"] = "messages"
-SYMTAB["NF"] = "-1"
+SYMTAB["NF"] = "0"
 SYMTAB["ARGIND"] = "0"
 a[1] = 1
 a[2][1] = 21
diff --git a/test/symtab9.awk b/test/symtab9.awk
new file mode 100644
index 0000000..fd8f14d
--- /dev/null
+++ b/test/symtab9.awk
@@ -0,0 +1,15 @@
+BEGIN {
+       file = "testit.txt"
+       for (i = 1; i <= 3; i++)
+               print("line", i) > file
+       close(file)
+
+       ARGV[1] = file
+       ARGC = 2
+
+       for (i = 1; i <= 3; i++)
+               getline
+
+       printf "NR should be 3, is %d\n", SYMTAB["NR"]
+       system("rm testit.txt")
+}
diff --git a/test/symtab9.ok b/test/symtab9.ok
new file mode 100644
index 0000000..759a427
--- /dev/null
+++ b/test/symtab9.ok
@@ -0,0 +1 @@
+NR should be 3, is 3
diff --git a/test/testext.ok b/test/testext.ok
index f606635..5612e92 100644
--- a/test/testext.ok
+++ b/test/testext.ok
@@ -65,6 +65,9 @@ test_scalar(lazy) returned 1, the_scalar is lazy
 test_scalar(dog) returned 1, the_scalar is dog
 test_scalar_reserved: sym_lookup of ARGC passed - got a value!
 test_scalar_reserved: could not update new_value2 for ARGC - pass
+test_indirect_var: sym_lookup of NR passed
+test_indirect_var: value of NR is 3
+test_indirect_var() return 1
 answer_num = 42
 message_string = hello, world
 new_array["hello"] = "world"

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=e468705fb6c7f2b2384c20f320e617cdbd55238c

commit e468705fb6c7f2b2384c20f320e617cdbd55238c
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Dec 19 15:26:36 2012 +0200

    Move read_func from IOBUF into awk_input_buf_t.

diff --git a/ChangeLog b/ChangeLog
index 63edbba..0914e2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,12 @@
 
        * bootstrap.sh: Touch extension/aclocal.m4 also.
 
+       Unrelated: Extend input parser API:
+
+       * awk.h (IOBUF): Remove read_func pointer.
+       * gawkapi.h (awk_input_buf_t): Move it to here.
+       * io.c (iop_alloc, get_a_record, get_read_timeout): Adjust code.
+
 2012-12-18         Andrew J. Schorr     <address@hidden>
 
        * gawkapi.c (sym_update_real): If setting a scalar variable that exists
diff --git a/awk.h b/awk.h
index caf0da1..60a0db7 100644
--- a/awk.h
+++ b/awk.h
@@ -886,12 +886,6 @@ typedef struct iobuf {
        ssize_t count;          /* amount read last time */
        size_t scanoff;         /* where we were in the buffer when we had
                                   to regrow/refill */
-       /*
-        * No argument prototype on read_func. See get_src_buf()
-        * in awkgram.y.
-        */
-       ssize_t (*read_func)();
-
        bool valid;
        int errcode;
 
diff --git a/doc/ChangeLog b/doc/ChangeLog
index b686693..0e0b806 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2012-12-18         Arnold D. Robbins     <address@hidden>
+
+       * gawk.texi (Input Parsers): Add info on read_func.
+
 2012-12-16         Arnold D. Robbins     <address@hidden>
 
        * gawk.texi: Move design decisions on new API to appendix C.
diff --git a/doc/gawk.info b/doc/gawk.info
index 8a440f5..55595e7 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -22126,6 +22126,7 @@ used for `RT', if any.
          void *opaque;           /* private data for input parsers */
          int (*get_record)(char **out, struct awk_input *iobuf,
                            int *errcode, char **rt_start, size_t *rt_len);
+         ssize_t (*read_func)();
          void (*close_func)(struct awk_input *iobuf);
          struct stat sbuf;       /* stat buf */
      } awk_input_buf_t;
@@ -22175,6 +22176,12 @@ function then fills in at least the `get_record' field 
of the
      input records.  Said function is the core of the input parser.
      Its behavior is described below.
 
+`ssize_t (*read_func)();'
+     This function pointer should point to function that has the same
+     behavior as the standard POSIX `read()' system call.  It is an
+     alternative to the `get_record' pointer.  Its behavior is also
+     described below.
+
 `void (*close_func)(struct awk_input *iobuf);'
      This function pointer should point to a function that does the
      "tear down." It should release any resources allocated by
@@ -22227,6 +22234,23 @@ equal -1, `gawk' automatically updates the `ERRNO' 
variable based on
 the value of `*errcode' (e.g., setting `*errcode = errno' should do the
 right thing).
 
+   As an alternative to supplying a function that returns an input
+record, you may instead supply a function that simply reads bytes, and
+let `gawk' parse the data into records.  If you do so, the data should
+be returned in the multibyte encoding of the current locale.  Such a
+function should follow the same behavior as the `read()' system call,
+and you fill in the `read_func' pointer with its address in the
+`awk_input_buf_t' structure.
+
+   By default, `gawk' sets the `read_func' pointer to point to the
+`read()' system call. So your extension need not set this field
+explicitly.
+
+     NOTE: You must choose one method or the other: either a function
+     that returns a record, or one that returns raw data.  In
+     particular, if you supply a function to get a record, `gawk' will
+     call it, and never call the raw read function.
+
    `gawk' ships with a sample extension that reads directories,
 returning records for each entry in the directory (*note Extension
 Sample Readdir::).  You may wish to use that code as a guide for writing
@@ -32226,116 +32250,116 @@ Node: Extension Functions887880
 Node: Exit Callback Functions890054
 Node: Extension Version String891297
 Node: Input Parsers891947
-Node: Output Wrappers900534
-Node: Two-way processors904950
-Node: Printing Messages907080
-Ref: Printing Messages-Footnote-1908157
-Node: Updating `ERRNO'908309
-Node: Accessing Parameters909048
-Node: Symbol Table Access910278
-Node: Symbol table by name910790
-Ref: Symbol table by name-Footnote-1912960
-Node: Symbol table by cookie913040
-Ref: Symbol table by cookie-Footnote-1917169
-Node: Cached values917232
-Ref: Cached values-Footnote-1920675
-Node: Array Manipulation920766
-Ref: Array Manipulation-Footnote-1921864
-Node: Array Data Types921903
-Ref: Array Data Types-Footnote-1924606
-Node: Array Functions924698
-Node: Flattening Arrays928464
-Node: Creating Arrays935303
-Node: Extension API Variables940098
-Node: Extension Versioning940734
-Node: Extension API Informational Variables942635
-Node: Extension API Boilerplate943721
-Node: Finding Extensions947552
-Node: Extension Example948099
-Node: Internal File Description948837
-Node: Internal File Ops952525
-Ref: Internal File Ops-Footnote-1963972
-Node: Using Internal File Ops964112
-Ref: Using Internal File Ops-Footnote-1966465
-Node: Extension Samples966731
-Node: Extension Sample File Functions968174
-Node: Extension Sample Fnmatch976647
-Node: Extension Sample Fork978373
-Node: Extension Sample Ord979587
-Node: Extension Sample Readdir980363
-Node: Extension Sample Revout981867
-Node: Extension Sample Rev2way982460
-Node: Extension Sample Read write array983150
-Node: Extension Sample Readfile985033
-Node: Extension Sample API Tests985788
-Node: Extension Sample Time986313
-Node: gawkextlib987620
-Node: Language History990001
-Node: V7/SVR3.1991523
-Node: SVR4993844
-Node: POSIX995286
-Node: BTL996294
-Node: POSIX/GNU997099
-Node: Common Extensions1002634
-Node: Ranges and Locales1003693
-Ref: Ranges and Locales-Footnote-11008311
-Ref: Ranges and Locales-Footnote-21008338
-Ref: Ranges and Locales-Footnote-31008598
-Node: Contributors1008819
-Node: Installation1013115
-Node: Gawk Distribution1014009
-Node: Getting1014493
-Node: Extracting1015319
-Node: Distribution contents1017011
-Node: Unix Installation1022272
-Node: Quick Installation1022889
-Node: Additional Configuration Options1024851
-Node: Configuration Philosophy1026328
-Node: Non-Unix Installation1028670
-Node: PC Installation1029128
-Node: PC Binary Installation1030427
-Node: PC Compiling1032275
-Node: PC Testing1035219
-Node: PC Using1036395
-Node: Cygwin1040580
-Node: MSYS1041580
-Node: VMS Installation1042094
-Node: VMS Compilation1042697
-Ref: VMS Compilation-Footnote-11043704
-Node: VMS Installation Details1043762
-Node: VMS Running1045397
-Node: VMS Old Gawk1047004
-Node: Bugs1047478
-Node: Other Versions1051330
-Node: Notes1056645
-Node: Compatibility Mode1057445
-Node: Additions1058228
-Node: Accessing The Source1059155
-Node: Adding Code1060758
-Node: New Ports1066800
-Node: Derived Files1070935
-Ref: Derived Files-Footnote-11076256
-Ref: Derived Files-Footnote-21076290
-Ref: Derived Files-Footnote-31076890
-Node: Future Extensions1076988
-Node: Implementation Limitations1077569
-Node: Extension Design1078821
-Node: Old Extension Problems1079970
-Ref: Old Extension Problems-Footnote-11081478
-Node: Extension New Mechanism Goals1081535
-Ref: Extension New Mechanism Goals-Footnote-11084894
-Node: Extension Other Design Decisions1085080
-Node: Extension Future Growth1087186
-Node: Old Extension Mechansim1088007
-Node: Basic Concepts1089764
-Node: Basic High Level1090445
-Ref: figure-general-flow1090716
-Ref: figure-process-flow1091315
-Ref: Basic High Level-Footnote-11094544
-Node: Basic Data Typing1094729
-Node: Glossary1098084
-Node: Copying1123395
-Node: GNU Free Documentation License1160952
-Node: Index1186089
+Node: Output Wrappers901664
+Node: Two-way processors906080
+Node: Printing Messages908210
+Ref: Printing Messages-Footnote-1909287
+Node: Updating `ERRNO'909439
+Node: Accessing Parameters910178
+Node: Symbol Table Access911408
+Node: Symbol table by name911920
+Ref: Symbol table by name-Footnote-1914090
+Node: Symbol table by cookie914170
+Ref: Symbol table by cookie-Footnote-1918299
+Node: Cached values918362
+Ref: Cached values-Footnote-1921805
+Node: Array Manipulation921896
+Ref: Array Manipulation-Footnote-1922994
+Node: Array Data Types923033
+Ref: Array Data Types-Footnote-1925736
+Node: Array Functions925828
+Node: Flattening Arrays929594
+Node: Creating Arrays936433
+Node: Extension API Variables941228
+Node: Extension Versioning941864
+Node: Extension API Informational Variables943765
+Node: Extension API Boilerplate944851
+Node: Finding Extensions948682
+Node: Extension Example949229
+Node: Internal File Description949967
+Node: Internal File Ops953655
+Ref: Internal File Ops-Footnote-1965102
+Node: Using Internal File Ops965242
+Ref: Using Internal File Ops-Footnote-1967595
+Node: Extension Samples967861
+Node: Extension Sample File Functions969304
+Node: Extension Sample Fnmatch977777
+Node: Extension Sample Fork979503
+Node: Extension Sample Ord980717
+Node: Extension Sample Readdir981493
+Node: Extension Sample Revout982997
+Node: Extension Sample Rev2way983590
+Node: Extension Sample Read write array984280
+Node: Extension Sample Readfile986163
+Node: Extension Sample API Tests986918
+Node: Extension Sample Time987443
+Node: gawkextlib988750
+Node: Language History991131
+Node: V7/SVR3.1992653
+Node: SVR4994974
+Node: POSIX996416
+Node: BTL997424
+Node: POSIX/GNU998229
+Node: Common Extensions1003764
+Node: Ranges and Locales1004823
+Ref: Ranges and Locales-Footnote-11009441
+Ref: Ranges and Locales-Footnote-21009468
+Ref: Ranges and Locales-Footnote-31009728
+Node: Contributors1009949
+Node: Installation1014245
+Node: Gawk Distribution1015139
+Node: Getting1015623
+Node: Extracting1016449
+Node: Distribution contents1018141
+Node: Unix Installation1023402
+Node: Quick Installation1024019
+Node: Additional Configuration Options1025981
+Node: Configuration Philosophy1027458
+Node: Non-Unix Installation1029800
+Node: PC Installation1030258
+Node: PC Binary Installation1031557
+Node: PC Compiling1033405
+Node: PC Testing1036349
+Node: PC Using1037525
+Node: Cygwin1041710
+Node: MSYS1042710
+Node: VMS Installation1043224
+Node: VMS Compilation1043827
+Ref: VMS Compilation-Footnote-11044834
+Node: VMS Installation Details1044892
+Node: VMS Running1046527
+Node: VMS Old Gawk1048134
+Node: Bugs1048608
+Node: Other Versions1052460
+Node: Notes1057775
+Node: Compatibility Mode1058575
+Node: Additions1059358
+Node: Accessing The Source1060285
+Node: Adding Code1061888
+Node: New Ports1067930
+Node: Derived Files1072065
+Ref: Derived Files-Footnote-11077386
+Ref: Derived Files-Footnote-21077420
+Ref: Derived Files-Footnote-31078020
+Node: Future Extensions1078118
+Node: Implementation Limitations1078699
+Node: Extension Design1079951
+Node: Old Extension Problems1081100
+Ref: Old Extension Problems-Footnote-11082608
+Node: Extension New Mechanism Goals1082665
+Ref: Extension New Mechanism Goals-Footnote-11086024
+Node: Extension Other Design Decisions1086210
+Node: Extension Future Growth1088316
+Node: Old Extension Mechansim1089137
+Node: Basic Concepts1090894
+Node: Basic High Level1091575
+Ref: figure-general-flow1091846
+Ref: figure-process-flow1092445
+Ref: Basic High Level-Footnote-11095674
+Node: Basic Data Typing1095859
+Node: Glossary1099214
+Node: Copying1124525
+Node: GNU Free Documentation License1162082
+Node: Index1187219
 
 End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index 9005842..922f7cc 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -29060,6 +29060,7 @@ typedef struct awk_input @{
     void *opaque;           /* private data for input parsers */
     int (*get_record)(char **out, struct awk_input *iobuf,
                       int *errcode, char **rt_start, size_t *rt_len);
+    ssize_t (*read_func)();
     void (*close_func)(struct awk_input *iobuf);
     struct stat sbuf;       /* stat buf */
 @} awk_input_buf_t;
@@ -29115,6 +29116,12 @@ This function pointer should point to a function that 
creates the input
 records.  Said function is the core of the input parser.  Its behavior
 is described below.
 
address@hidden ssize_t (*read_func)();
+This function pointer should point to function that has the
+same behavior as the standard POSIX @code{read()} system call.
+It is an alternative to the @code{get_record} pointer.  Its behavior
+is also described below.
+
 @item void (*close_func)(struct awk_input *iobuf);
 This function pointer should point to a function that does
 the ``tear down.'' It should release any resources allocated by
@@ -29172,6 +29179,25 @@ does not equal @minus{}1, @command{gawk} automatically 
updates
 the @code{ERRNO} variable based on the value of @code{*errcode} (e.g.,
 setting @samp{*errcode = errno} should do the right thing).
 
+As an alternative to supplying a function that returns an input record,
+you may instead supply a function that simply reads bytes, and let
address@hidden parse the data into records.  If you do so, the data
+should be returned in the multibyte encoding of the current locale.
+Such a function should follow the same behavior as the @code{read()}
+system call, and you fill in the @code{read_func} pointer with its
+address in the @code{awk_input_buf_t} structure.
+
+By default, @command{gawk} sets the @code{read_func} pointer to
+point to the @code{read()} system call. So your extension need not
+set this field explicitly.
+
address@hidden NOTE
+You must choose one method or the other: either a function that
+returns a record, or one that returns raw data.  In particular,
+if you supply a function to get a record, @command{gawk} will
+call it, and never call the raw read function.
address@hidden quotation
+
 @command{gawk} ships with a sample extension that reads directories,
 returning records for each entry in the directory (@pxref{Extension
 Sample Readdir}).  You may wish to use that code as a guide for writing
diff --git a/gawkapi.h b/gawkapi.h
index 8fc0816..de9197e 100644
--- a/gawkapi.h
+++ b/gawkapi.h
@@ -152,6 +152,12 @@ typedef struct awk_input {
                        char **rt_start, size_t *rt_len);
 
        /*
+        * No argument prototype on read_func to allow for older systems
+        * whose headers are not up to date.
+        */
+       ssize_t (*read_func)();
+
+       /*
         * The close_func is called to allow the parser to free private data.
         * Gawk itself will close the fd unless close_func first sets it to
         * INVALID_HANDLE.
diff --git a/io.c b/io.c
index 7559b41..0b008fc 100644
--- a/io.c
+++ b/io.c
@@ -2877,7 +2877,7 @@ iop_alloc(int fd, const char *name, int errno_val)
        memset(iop, '\0', sizeof(IOBUF));
        iop->public.fd = fd;
        iop->public.name = name;
-       iop->read_func = ( ssize_t(*)() ) read;
+       iop->public.read_func = ( ssize_t(*)() ) read;
        iop->valid = false;
        iop->errcode = errno_val;
 
@@ -3343,7 +3343,7 @@ get_a_record(char **out,        /* pointer to pointer to 
data */
 
         /* fill initial buffer */
        if (has_no_data(iop) || no_data_left(iop)) {
-               iop->count = iop->read_func(iop->public.fd, iop->buf, 
iop->readsize);
+               iop->count = iop->public.read_func(iop->public.fd, iop->buf, 
iop->readsize);
                if (iop->count == 0) {
                        iop->flag |= IOP_AT_EOF;
                        return EOF;
@@ -3409,7 +3409,7 @@ get_a_record(char **out,        /* pointer to pointer to 
data */
                amt_to_read = min(amt_to_read, SSIZE_MAX);
 #endif
 
-               iop->count = iop->read_func(iop->public.fd, iop->dataend, 
amt_to_read);
+               iop->count = iop->public.read_func(iop->public.fd, 
iop->dataend, amt_to_read);
                if (iop->count == -1) {
                        *errcode = errno;
                        iop->flag |= IOP_AT_EOF;
@@ -3705,7 +3705,10 @@ get_read_timeout(IOBUF *iop)
        } else
                tmout = read_default_timeout;   /* initialized from env. 
variable in init_io() */
 
-       iop->read_func = tmout > 0 ? read_with_timeout : ( ssize_t(*)() ) read;
+       /* overwrite read routine only if an extension has not done so */
+       if ((iop->public.read_func == ( ssize_t(*)() ) read) && tmout > 0)
+               iop->public.read_func = read_with_timeout;
+
        return tmout;
 }
 

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=ab76bb69f10de31c94d7b6855c85402673a4e5ed

commit ab76bb69f10de31c94d7b6855c85402673a4e5ed
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Dec 19 13:26:46 2012 +0200

    Fix in bootstrap.sh.

diff --git a/ChangeLog b/ChangeLog
index ae49f56..63edbba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-12-19         Arnold D. Robbins     <address@hidden>
+
+       * bootstrap.sh: Touch extension/aclocal.m4 also.
+
 2012-12-18         Andrew J. Schorr     <address@hidden>
 
        * gawkapi.c (sym_update_real): If setting a scalar variable that exists
diff --git a/bootstrap.sh b/bootstrap.sh
index 535ae8f..700babe 100755
--- a/bootstrap.sh
+++ b/bootstrap.sh
@@ -3,7 +3,7 @@
 # bootstrap.sh --- touch relevant files to avoid out-of-date issues in
 #                 Git sandboxes
 
-# Copyright (C) 2007, 2009, 2010, 2011 the Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009, 2010, 2011, 2012 the Free Software Foundation, Inc.
 # 
 # This file is part of GAWK, the GNU implementation of the
 # AWK Programming Language.
@@ -23,6 +23,7 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA
 
 touch aclocal.m4
+touch extension/aclocal.m4
 find awklib -type f -print | xargs touch
 sleep 1
 touch configure

http://git.sv.gnu.org/cgit/gawk.git/commit/?id=da6e4513c4b16249f4732c42c5329b39d398f0c9

commit da6e4513c4b16249f4732c42c5329b39d398f0c9
Merge: 925f763 886be6b
Author: Arnold D. Robbins <address@hidden>
Date:   Wed Dec 19 13:14:50 2012 +0200

    Merge branch 'master' of ssh://git.sv.gnu.org/srv/git/gawk


http://git.sv.gnu.org/cgit/gawk.git/commit/?id=925f763a6f0240b39742ebf9239163a664cc9afc

commit 925f763a6f0240b39742ebf9239163a664cc9afc
Author: Arnold D. Robbins <address@hidden>
Date:   Tue Dec 18 19:32:13 2012 +0200

    VMS fix to use default dir on logical search list.

diff --git a/vms/ChangeLog b/vms/ChangeLog
index d6ff295..6c56405 100644
--- a/vms/ChangeLog
+++ b/vms/ChangeLog
@@ -1,7 +1,14 @@
+2012-12-18         John E. Malmberg    <address@hidden>
+
+       * descrip.mms: Make the build procedure run on a default directory
+       that is on a VMS logical name search list.
+       * vmstest.com: Make the tests run on a default directory that is on
+       a VMS logical name search list.
+
 2012-12-13         Anders Wallin         <address@hidden>
 
        * descrip.mms: Update to handle removal of pgawk and dgawk,
-        workaround for MMS bug
+       workaround for MMS bug
 
 2012-12-09         Anders Wallin         <address@hidden>
 
diff --git a/vms/descrip.mms b/vms/descrip.mms
index d1dc1e4..069c45f 100644
--- a/vms/descrip.mms
+++ b/vms/descrip.mms
@@ -129,7 +129,7 @@ gawk.exe : $(GAWKOBJ) $(AWKOBJS) $(VMSOBJS) gawk.opt
        $(LINK) $(LINKFLAGS) gawk.opt/options
 
 gawk.opt : $(MAKEFILE)                 # create linker options file
-      @        open/write opt gawk.opt         ! ~ 'cat <<close >gawk.opt'
+      @        open/write opt sys$disk:[]gawk.opt              ! ~ 'cat 
<<close >gawk.opt'
       @        write opt "! GAWK -- GNU awk"
       @ write opt "$(GAWKOBJ)"
       @ write opt "$(AWKOBJ1)"
@@ -214,7 +214,7 @@ command.c   : command.y
      @- if f$search("command_tab.c").nes."" then  rename/new_vers 
command_tab.c $@
 
 config.h       : $(VMSDIR)vms-conf.h
-       copy $< $@
+       copy $< sys$disk:[]$@
 
 $(VMSCMD)      : $(VMSDIR)gawk.cld
        set command $(CLDFLAGS)/object=$@ $<
diff --git a/vms/vmstest.com b/vms/vmstest.com
index fd8e7ee..360f2fd 100644
--- a/vms/vmstest.com
+++ b/vms/vmstest.com
@@ -267,7 +267,7 @@ $zeroe0:
 $! common with 'test'.in
 $      echo "''test'"
 $      gawk -f 'test'.awk 'test'.in >_'test'.tmp
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -336,7 +336,7 @@ $zeroflag:
 $! common without 'test'.in
 $      echo "''test'"
 $      gawk -f 'test'.awk >_'test'.tmp
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -376,11 +376,11 @@ $
 $messages:     echo "''test'"
 $      set noOn
 $      gawk -f 'test'.awk > _out2 >& _out3
-$      cmp out1.ok _out1.
+$      cmp out1.ok sys$disk:[]_out1.
 $      if $status then  rm _out1.;
-$      cmp out2.ok _out2.
+$      cmp out2.ok sys$disk:[]_out2.
 $      if $status then  rm _out2.;
-$      cmp out3.ok _out3.
+$      cmp out3.ok sys$disk:[]_out3.
 $      if $status then  rm _out3.;
 $      set On
 $      return
@@ -389,34 +389,34 @@ $argarray:        echo "argarray"
 $      define/User TEST "test"                 !this is useless...
 $      gawk -f argarray.awk ./argarray.in - >_argarray.tmp
 just a test
-$      cmp argarray.ok _argarray.tmp
+$      cmp argarray.ok sys$disk:[]_argarray.tmp
 $      if $status then  rm _argarray.tmp;
 $      return
 $
 $fstabplus:    echo "fstabplus"
 $      gawk -f fstabplus.awk >_fstabplus.tmp
 1              2
-$      cmp fstabplus.ok _fstabplus.tmp
+$      cmp fstabplus.ok sys$disk:[]_fstabplus.tmp
 $      if $status then  rm _fstabplus.tmp;
 $      return
 $
 $longwrds:     echo "longwrds"
 $      gawk -v "SORT=sort sys$input: _longwrds.tmp" -f longwrds.awk 
longwrds.in >_NL:
-$      cmp longwrds.ok _longwrds.tmp
+$      cmp longwrds.ok sys$disk:[]_longwrds.tmp
 $      if $status then  rm _longwrds.tmp;
 $      return
 $
 $fieldwdth:    echo "fieldwdth"
 $      gawk -v "FIELDWIDTHS=2 3 4" "{ print $2}" >_fieldwdth.tmp
 123456789
-$      cmp fieldwdth.ok _fieldwdth.tmp
+$      cmp fieldwdth.ok sys$disk:[]_fieldwdth.tmp
 $      if $status then  rm _fieldwdth.tmp;
 $      return
 $
 $ignrcase:     echo "ignrcase"
 $      gawk -v "IGNORECASE=1" "{ sub(/y/, """"); print}" >_ignrcase.tmp
 xYz
-$      cmp ignrcase.ok _ignrcase.tmp
+$      cmp ignrcase.ok sys$disk:[]_ignrcase.tmp
 $      if $status then  rm _ignrcase.tmp;
 $      return
 $
@@ -434,7 +434,7 @@ $
 $posix: echo "posix"
 $      gawk -f posix.awk >_posix.tmp
 1:2,3 4
-$      cmp posix.ok _posix.tmp
+$      cmp posix.ok sys$disk:[]_posix.tmp
 $      if $status then  rm _posix.tmp;
 $      return
 $
@@ -469,19 +469,19 @@ $ return
 $
 $compare:      echo "compare"
 $      gawk -f compare.awk 0 1 compare.in >_compare.tmp
-$      cmp compare.ok _compare.tmp
+$      cmp compare.ok sys$disk:[]_compare.tmp
 $      if $status then  rm _compare.tmp;
 $      return
 $
 $rs:           echo "rs"
 $      gawk -v "RS=" "{ print $1, $2}" rs.in >_rs.tmp
-$      cmp rs.ok _rs.tmp
+$      cmp rs.ok sys$disk:[]_rs.tmp
 $      if $status then  rm _rs.tmp;
 $      return
 $
 $fsbs:         echo "fsbs"
 $      gawk -v "FS=\" "{ print $1, $2 }" fsbs.in >_fsbs.tmp
-$      cmp fsbs.ok _fsbs.tmp
+$      cmp fsbs.ok sys$disk:[]_fsbs.tmp
 $      if $status then  rm _fsbs.tmp;
 $      return
 $
@@ -489,14 +489,14 @@ $inftest: echo "inftest"
 $     !!  echo "This test is very machine specific..."
 $      set noOn
 $      gawk -f inftest.awk >_inftest.tmp
-$     !!  cmp inftest.ok _inftest.tmp  !just care that gawk doesn't crash...
+$     !!  cmp inftest.ok sys$disk:[]_inftest.tmp       !just care that gawk 
doesn't crash...
 $      if $status then  rm _inftest.tmp;
 $      set On
 $      return
 $
 $getline2:     echo "getline2"
 $      gawk -f getline2.awk getline2.awk getline2.awk >_getline2.tmp
-$      cmp getline2.ok _getline2.tmp
+$      cmp getline2.ok sys$disk:[]_getline2.tmp
 $      if $status then  rm _getline2.tmp;
 $      return
 $
@@ -508,20 +508,20 @@ $ return
 $
 $negexp:       echo "negexp"
 $      gawk "BEGIN { a = -2; print 10^a }" >_negexp.tmp
-$      cmp negexp.ok _negexp.tmp
+$      cmp negexp.ok sys$disk:[]_negexp.tmp
 $      if $status then  rm _negexp.tmp;
 $      return
 $
 $awkpath:      echo "awkpath"
 $      define/User AWK_LIBRARY [],[.lib]
 $      gawk -f awkpath.awk >_awkpath.tmp
-$      cmp awkpath.ok _awkpath.tmp
+$      cmp awkpath.ok sys$disk:[]_awkpath.tmp
 $      if $status then  rm _awkpath.tmp;
 $      return
 $
 $argtest:      echo "argtest"
 $      gawk -f argtest.awk -x -y abc >_argtest.tmp
-$      cmp argtest.ok _argtest.tmp
+$      cmp argtest.ok sys$disk:[]_argtest.tmp
 $      if $status then  rm _argtest.tmp;
 $      return
 $
@@ -530,7 +530,7 @@ $   on error then continue
 $      gawk -f 2>&1 >_badargs.too
 $!     search/Match=Nor _badargs.too "patchlevel" /Output=_badargs.tmp
 $      gawk "/patchlevel/{next}; {gsub(""\"""",""'""); print}" <_badargs.too 
>_badargs.tmp
-$      cmp badargs.ok _badargs.tmp
+$      cmp badargs.ok sys$disk:[]_badargs.tmp
 $      if $status then  rm _badargs.tmp;,_badargs.too;
 $      return
 $
@@ -539,7 +539,7 @@ $   ! This one might fail, depending on the tool used to 
unpack the
 $      ! distribution.  Some will add a final newline if the file lacks one.
 $      AWKPATH_srcdir
 $      gawk --lint -f nonl.awk _NL: >_nonl.tmp 2>&1
-$      cmp nonl.ok _nonl.tmp
+$      cmp nonl.ok sys$disk:[]_nonl.tmp
 $      if $status then  rm _nonl.tmp;
 $      return
 $
@@ -549,14 +549,14 @@ $ AWKPATH_srcdir
 $      gawk --lint -f defref.awk >_defref.tmp 2>&1
 $      if .not.$status then call exit_code 2 _defref.tmp
 $      set On
-$      cmp defref.ok _defref.tmp
+$      cmp defref.ok sys$disk:[]_defref.tmp
 $      if $status then  rm _defref.tmp;
 $      return
 $
 $nofmtch:      echo "nofmtch"
 $      AWKPATH_srcdir
 $      gawk --lint -f nofmtch.awk >_nofmtch.tmp 2>&1
-$      cmp nofmtch.ok _nofmtch.tmp
+$      cmp nofmtch.ok sys$disk:[]_nofmtch.tmp
 $      if $status then  rm _nofmtch.tmp;
 $      return
 $
@@ -578,7 +578,7 @@ $   write ftmp wkd," ",mon," ",day," ",tim," ",tz," ",yr
 $      close ftmp
 $      gawk -v "OUTPUT"=_strftime.tmp -f strftime.awk strftime.in
 $      set noOn
-$      cmp strftime.ok _strftime.tmp
+$      cmp strftime.ok sys$disk:[]_strftime.tmp
 $      if $status then  rm _strftime.tmp;,strftime.ok;*,strftime.in;*
 $      set On
 $      return
@@ -586,20 +586,20 @@ $
 $litoct:       echo "litoct"
 $      gawk --traditional -f litoct.awk >_litoct.tmp
 ab
-$      cmp litoct.ok _litoct.tmp
+$      cmp litoct.ok sys$disk:[]_litoct.tmp
 $      if $status then  rm _litoct.tmp;
 $      return
 $
 $resplit:      echo "resplit"
 $      gawk -- "{ FS = "":""; $0 = $0; print $2 }" >_resplit.tmp
 a:b:c d:e:f
-$      cmp resplit.ok _resplit.tmp
+$      cmp resplit.ok sys$disk:[]_resplit.tmp
 $      if $status then  rm _resplit.tmp;
 $      return
 $
 $intprec:      echo "intprec"
 $      gawk -f intprec.awk >_intprec.tmp 2>&1
-$      cmp intprec.ok _intprec.tmp
+$      cmp intprec.ok sys$disk:[]_intprec.tmp
 $      if $status then  rm _intprec.tmp;
 $      return
 $
@@ -607,7 +607,7 @@ $incdupe:   echo "''test'"
 $   set noOn
 $   gawk --lint -i inclib -i inclib.awk "BEGIN {print sandwich(""a"", ""b"", 
""c"")}" > _'test'.tmp 2>&1
 $   if .not. $status then call exit_code 1 _'test'.tmp
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*
 $   set On
 $   return
@@ -616,20 +616,20 @@ $incdupe2:   echo "''test'"
 $   set noOn
 $   gawk --lint -f inclib -f inclib.awk >_'test'.tmp 2>&1
 $   if .not. $status then call exit_code 1 _'test'.tmp
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*
 $   set On
 $   return
 $
 $incdupe3:   echo "''test'"
 $   gawk --lint -f hello -f hello.awk >_'test'.tmp 2>&1
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*
 $   return
 $
 $include2:   echo "''test'"
 $   gawk -i inclib "BEGIN {print sandwich(""a"", ""b"", ""c"")}" >_'test'.tmp 
2>&1
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*
 $   return
 $
@@ -640,7 +640,7 @@ $symtab3:   echo "''test'"
 $   set noOn
 $   gawk -f 'test'.awk  >_'test'.tmp 2>&1
 $   if .not. $status then call exit_code 2 _'test'.tmp
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*
 $   set On
 $   return
@@ -650,7 +650,7 @@ $symtab5:   echo "''test'"
 $   set noOn
 $   gawk -f 'test'.awk <'test'.in >_'test'.tmp 2>&1
 $   if .not. $status then call exit_code 2 _'test'.tmp
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*
 $   set On
 $   return
@@ -659,7 +659,7 @@ $symtab6:   echo "''test'"
 $   set noOn
 $   gawk -d__'test'.tmp -f 'test'.awk
 $   pipe search __'test'.tmp "ENVIRON" /match=nand | search sys$pipe 
"PROCINFO" /match=nand > _'test'.tmp
-$   cmp 'test'.ok _'test'.tmp
+$   cmp 'test'.ok sys$disk:[]_'test'.tmp
 $   if $status then rm _'test'.tmp;*,__'test'.tmp;*
 $   set On
 $   return
@@ -673,28 +673,28 @@ $ echo "note: type ``hi<return><ctrl/Z>'",-
 $!!    @echo hi | gawk "BEGIN { ""cat"" | getline; print; close(""cat"") }" 
>_childin.tmp
 $      gawk "BEGIN { ""type sys$input:"" | getline; print; close(""type 
sys$input:"") }" >_childin.tmp
 hi
-$      cmp childin.ok _childin.tmp
+$      cmp childin.ok sys$disk:[]_childin.tmp
 $      if $status then  rm _childin.tmp;
 $      return
 $
 $noeffect:     echo "noeffect"
 $      AWKPATH_srcdir
 $      gawk --lint -f noeffect.awk >_noeffect.tmp 2>&1
-$      cmp noeffect.ok _noeffect.tmp
+$      cmp noeffect.ok sys$disk:[]_noeffect.tmp
 $      if $status then  rm _noeffect.tmp;
 $      return
 $
 $numsubstr:    echo "numsubstr"
 $      AWKPATH_srcdir
 $      gawk -f numsubstr.awk numsubstr.in >_numsubstr.tmp
-$      cmp numsubstr.ok _numsubstr.tmp
+$      cmp numsubstr.ok sys$disk:[]_numsubstr.tmp
 $      if $status then  rm _numsubstr.tmp;
 $      return
 $
 $prmreuse:     echo "prmreuse"
 $      if f$search("prmreuse.ok").eqs."" then  create prmreuse.ok
 $      gawk -f prmreuse.awk >_prmreuse.tmp
-$      cmp prmreuse.ok _prmreuse.tmp
+$      cmp prmreuse.ok sys$disk:[]_prmreuse.tmp
 $      if $status then  rm _prmreuse.tmp;
 $      return
 $
@@ -704,7 +704,7 @@ $   return
 $!!fflush:     echo "fflush"
 $      ! hopelessly Unix-specific
 $!!    @fflush.sh >_fflush.tmp
-$      cmp fflush.ok _fflush.tmp
+$      cmp fflush.ok sys$disk:[]_fflush.tmp
 $      if $status then  rm _fflush.tmp;
 $      return
 $
@@ -713,47 +713,47 @@ $ echo "getlnhd skipped"
 $      return
 $!!getlnhd:    echo "getlnhd"
 $      gawk -f getlnhd.awk >_getlnhd.tmp
-$      cmp getlnhd.ok _getlnhd.tmp
+$      cmp getlnhd.ok sys$disk:[]_getlnhd.tmp
 $      if $status then  rm _getlnhd.tmp;
 $      return
 $
 $tweakfld:     echo "tweakfld"
 $      gawk -f tweakfld.awk tweakfld.in >_tweakfld.tmp
 $      if f$search("errors.cleanup").nes."" then  rm errors.cleanup;*
-$      cmp tweakfld.ok _tweakfld.tmp
+$      cmp tweakfld.ok sys$disk:[]_tweakfld.tmp
 $      if $status then  rm _tweakfld.tmp;
 $      return
 $
 $clsflnam:     echo "clsflnam"
 $      if f$search("clsflnam.ok").eqs."" then  create clsflnam.ok
 $      gawk -f clsflnam.awk clsflnam.in >_clsflnam.tmp 2>&1
-$      cmp clsflnam.ok _clsflnam.tmp
+$      cmp clsflnam.ok sys$disk:[]_clsflnam.tmp
 $      if $status then  rm _clsflnam.tmp;
 $      return
 $
 $mmap8k:       echo "mmap8k"
 $      gawk "{ print }" mmap8k.in >_mmap8k.tmp
-$      cmp mmap8k.in _mmap8k.tmp
+$      cmp mmap8k.in sys$disk:[]_mmap8k.tmp
 $      if $status then  rm _mmap8k.tmp;
 $      return
 $
 $eofsplit:     echo "eofsplit"
 $      if f$search("eofsplit.ok").eqs."" then  create eofsplit.ok
 $      gawk -f eofsplit.awk >_eofsplit.tmp
-$      cmp eofsplit.ok _eofsplit.tmp
+$      cmp eofsplit.ok sys$disk:[]_eofsplit.tmp
 $      if $status then  rm _eofsplit.tmp;
 $      return
 $
 $back89:               echo "back89"
 $      gawk "/a\8b/" back89.in >_back89.tmp
-$      cmp back89.ok _back89.tmp
+$      cmp back89.ok sys$disk:[]_back89.tmp
 $      if $status then  rm _back89.tmp;
 $      return
 $
 $tradanch:     echo "tradanch"
 $      if f$search("tradanch.ok").eqs."" then  create tradanch.ok
 $      gawk --traditional -f tradanch.awk tradanch.in >_tradanch.tmp
-$      cmp tradanch.ok _tradanch.tmp
+$      cmp tradanch.ok sys$disk:[]_tradanch.tmp
 $      if $status then  rm _tradanch.tmp;
 $      return
 $
@@ -761,14 +761,14 @@ $pid:             echo "pid"
 $      pid = f$integer("%x" + f$getjpi("","PID"))
 $      ppid = f$integer("%x" + f$getjpi("","OWNER"))
 $      gawk -v "ok_pid=''pid'" -v "ok_ppid=''ppid'" -f pid.awk >_pid.tmp >& 
_NL:
-$      cmp pid.ok _pid.tmp
+$      cmp pid.ok sys$disk:[]_pid.tmp
 $      if $status then  rm _pid.tmp;
 $      return
 $
 $strftlng:     echo "strftlng"
 $      define/User TZ "UTC"            !useless
 $      gawk -f strftlng.awk >_strftlng.tmp
-$      cmp strftlng.ok _strftlng.tmp
+$      cmp strftlng.ok sys$disk:[]_strftlng.tmp
 $      if $status then  rm _strftlng.tmp;
 $      return
 $
@@ -776,7 +776,7 @@ $nfldstr:   echo "nfldstr"
 $      if f$search("nfldstr.ok").eqs."" then  create nfldstr.ok
 $      gawk "$1 == 0 { print ""bug"" }" >_nfldstr.tmp
 
-$      cmp nfldstr.ok _nfldstr.tmp
+$      cmp nfldstr.ok sys$disk:[]_nfldstr.tmp
 $      if $status then  rm _nfldstr.tmp;
 $      return
 $
@@ -786,13 +786,13 @@ $!!       @echo A B C D E | tr -d '\12' | $(AWK) '{ print 
$$NF }' - $(srcdir)/nors.in
 $!! so just read a line from sys$input instead
 $      gawk "{ print $NF }" - nors.in >_nors.tmp
 A B C D E
-$      cmp nors.ok _nors.tmp
+$      cmp nors.ok sys$disk:[]_nors.tmp
 $      if $status then  rm _nors.tmp;
 $      return
 $
 $reint:                echo "reint"
 $      gawk --re-interval -f reint.awk reint.in >_reint.tmp
-$      cmp reint.ok _reint.tmp
+$      cmp reint.ok sys$disk:[]_reint.tmp
 $      if $status then  rm _reint.tmp;
 $      return
 $
@@ -802,7 +802,7 @@ $   AWKPATH_srcdir
 $      gawk -f noparms.awk >_noparms.tmp 2>&1
 $      if .not.$status then call exit_code 1 _noparms.tmp
 $      set On
-$      cmp noparms.ok _noparms.tmp
+$      cmp noparms.ok sys$disk:[]_noparms.tmp
 $      if $status then  rm _noparms.tmp;
 $      return
 $
@@ -812,7 +812,7 @@ $   define/User test1 []test1.
 $      define/User test2 []test2.
 $      gawk -f pipeio1.awk >_pipeio1.tmp
 $      rm test1.;,test2.;
-$      cmp pipeio1.ok _pipeio1.tmp
+$      cmp pipeio1.ok sys$disk:[]_pipeio1.tmp
 $      if $status then  rm _pipeio1.tmp;
 $      return
 $
@@ -823,15 +823,15 @@ $!!pipeio2:       echo "pipeio2"
 $      cat = "gawk -- {print}"
 $      tr  = "??"      !unfortunately, no trivial substitution available...
 $      gawk -v "SRCDIR=." -f pipeio2.awk >_pipeio2.tmp
-$      cmp pipeio2.ok _pipeio2.tmp
+$      cmp pipeio2.ok sys$disk:[]_pipeio2.tmp
 $      if $status then  rm _pipeio2.tmp;
 $      return
 $
 $clobber:      echo "clobber"
 $      gawk -f clobber.awk >_clobber.tmp
-$      cmp clobber.ok seq.
+$      cmp clobber.ok sys$disk:[]seq.
 $      if $status then  rm seq.;*
-$      cmp clobber.ok _clobber.tmp
+$      cmp clobber.ok sys$disk:[]_clobber.tmp
 $      if $status then  rm _clobber.tmp;
 $      return
 $
@@ -840,7 +840,7 @@ $   set noOn
 $      gawk -f nasty.awk >_nasty.tmp
 $      call fixup_LRL nasty.ok
 $      call fixup_LRL _nasty.tmp "purge"
-$      cmp nasty.ok _nasty.tmp
+$      cmp nasty.ok sys$disk:[]_nasty.tmp
 $      if $status then  rm _nasty.tmp;
 $      set On
 $      return
@@ -850,7 +850,7 @@ $   set noOn
 $      gawk -f nasty2.awk >_nasty2.tmp
 $      call fixup_LRL nasty2.ok
 $      call fixup_LRL _nasty2.tmp "purge"
-$      cmp nasty2.ok _nasty2.tmp
+$      cmp nasty2.ok sys$disk:[]_nasty2.tmp
 $      if $status then  rm _nasty2.tmp;
 $      set On
 $      return
@@ -873,36 +873,36 @@ $ set noOn
 $      gawk -f 'test'.awk >_'test'.tmp 2>&1
 $      if .not.$status then call exit_code 2 _'test'.tmp
 $      set On
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
 $arynocls:     echo "arynocls"
 $      gawk -v "INPUT"=arynocls.in -f arynocls.awk >_arynocls.tmp
-$      cmp arynocls.ok _arynocls.tmp
+$      cmp arynocls.ok sys$disk:[]_arynocls.tmp
 $      if $status then  rm _arynocls.tmp;
 $      return
 $
 $getlnbuf:     echo "getlnbuf"
 $      gawk -f getlnbuf.awk getlnbuf.in >_getlnbuf.tmp
 $      gawk -f gtlnbufv.awk getlnbuf.in >_getlnbuf.too
-$      cmp getlnbuf.ok _getlnbuf.tmp
+$      cmp getlnbuf.ok sys$disk:[]_getlnbuf.tmp
 $      if $status then  rm _getlnbuf.tmp;
-$      cmp getlnbuf.ok _getlnbuf.too
+$      cmp getlnbuf.ok sys$disk:[]_getlnbuf.too
 $      if $status then  rm _getlnbuf.too;
 $      return
 $
 $lint: echo "lint"
 $      AWKPATH_srcdir
 $      gawk -f lint.awk >_lint.tmp 2>&1
-$      cmp lint.ok _lint.tmp
+$      cmp lint.ok sys$disk:[]_lint.tmp
 $      if $status then  rm _lint.tmp;
 $      return
 $
 $lintold:      echo "lintold"
 $      AWKPATH_srcdir
 $      gawk -f lintold.awk --lint-old <lintold.in >_lintold.tmp 2>&1
-$      cmp lintold.ok _lintold.tmp
+$      cmp lintold.ok sys$disk:[]_lintold.tmp
 $      if $status then  rm _lintold.tmp;
 $      return
 $
@@ -910,7 +910,7 @@ $ofmtbig:   echo "ofmtbig"
 $      set noOn
 $      gawk -f ofmtbig.awk ofmtbig.in >_ofmtbig.tmp 2>&1
 $      set On
-$      cmp ofmtbig.ok _ofmtbig.tmp
+$      cmp ofmtbig.ok sys$disk:[]_ofmtbig.tmp
 $      if $status then  rm _ofmtbig.tmp;
 $      return
 $
@@ -948,13 +948,13 @@ $ return
 $
 $redfilnm:     echo "redfilnm"
 $      gawk -f redfilnm.awk srcdir="." redfilnm.in >_redfilnm.tmp
-$      cmp redfilnm.ok _redfilnm.tmp
+$      cmp redfilnm.ok sys$disk:[]_redfilnm.tmp
 $      if $status then  rm _redfilnm.tmp;
 $      return
 $
 $leaddig:      echo "leaddig"
 $      gawk -v "x=2E"  -f leaddig.awk >_leaddig.tmp
-$      cmp leaddig.ok _leaddig.tmp
+$      cmp leaddig.ok sys$disk:[]_leaddig.tmp
 $      if $status then  rm _leaddig.tmp;
 $      return
 $
@@ -963,7 +963,7 @@ $   echo "clos1way: not supported"
 $      return
 $!!clos1way:   echo "clos1way"
 $      gawk -f clos1way.awk >_clos1way.tmp
-$      cmp clos1way.ok _clos1way.tmp
+$      cmp clos1way.ok sys$disk:[]_clos1way.tmp
 $      if $status then  rm _clos1way.tmp;
 $      return
 $
@@ -972,7 +972,7 @@ $   set noOn
 $      AWKPATH_srcdir
 $      gawk --lint -f shadow.awk >_shadow.tmp 2>&1
 $      set On
-$      cmp shadow.ok _shadow.tmp
+$      cmp shadow.ok sys$disk:[]_shadow.tmp
 $      if $status then  rm _shadow.tmp;
 $      return
 $
@@ -982,7 +982,7 @@ $   AWKPATH_srcdir
 $      gawk --lint -f lintwarn.awk >_lintwarn.tmp 2>&1
 $      if .not.$status then call exit_code 1 _lintwarn.tmp
 $      set On
-$      cmp lintwarn.ok _lintwarn.tmp
+$      cmp lintwarn.ok sys$disk:[]_lintwarn.tmp
 $      if $status then  rm _lintwarn.tmp;
 $      return
 $
@@ -993,14 +993,14 @@ $!! the records here are too long for DIFF to handle
 $!! so assume success as long as gawk doesn't crash
 $!!    call fixup_LRL longsub.ok
 $!!    call fixup_LRL _longsub.tmp "purge"
-$!!    cmp longsub.ok _longsub.tmp
+$!!    cmp longsub.ok sys$disk:[]_longsub.tmp
 $      if $status then  rm _longsub.tmp;
 $      set On
 $      return
 $
 $arrayprm3:    echo "arrayprm3"
 $      gawk -f arrayprm3.awk arrayprm3.in >_arrayprm3.tmp
-$      cmp arrayprm3.ok _arrayprm3.tmp
+$      cmp arrayprm3.ok sys$disk:[]_arrayprm3.tmp
 $      if $status then  rm _arrayprm3.tmp;
 $      return
 $
@@ -1025,7 +1025,7 @@ $ set noOn
 $      gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
 $      if .not.$status then call exit_code 2 _'test'.tmp
 $      set On
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1037,7 +1037,7 @@ $ set noOn
 $      gawk -f 'test'.awk <'test'.in >_'test'.tmp 2>&1
 $      if .not.$status then call exit_code 2 _'test'.tmp
 $      set On
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1045,7 +1045,7 @@ $exitval2:        echo "exitval2 skipped"
 $      return
 $!!exitval2:   echo "exitval2"
 $      gawk -f exitval2.awk exitval2.in >_exitval2.tmp
-$      cmp exitval2.ok _exitval2.tmp
+$      cmp exitval2.ok sys$disk:[]_exitval2.tmp
 $      if $status then  rm _exitval2.tmp;
 $      return
 $
@@ -1062,7 +1062,7 @@ $ set noOn
 $      gawk -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
 $      if .not.$status then call exit_code 1 _'test'.tmp
 $      set On
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1070,13 +1070,13 @@ $getline:       echo "getline skipped"
 $      return
 $!!getline:    echo "getline"
 $      gawk -f getline.awk getline.in >_getline.tmp
-$      cmp getline.ok _getline.tmp
+$      cmp getline.ok sys$disk:[]_getline.tmp
 $      if $status then  rm _getline.tmp;
 $      return
 $
 $gsubtst3:     echo "gsubtst3"
 $      gawk --re-interval -f gsubtst3.awk gsubtst3.in >_gsubtst3.tmp
-$      cmp gsubtst3.ok _gsubtst3.tmp
+$      cmp gsubtst3.ok sys$disk:[]_gsubtst3.tmp
 $      if $status then  rm _gsubtst3.tmp;
 $      return
 $
@@ -1088,7 +1088,7 @@ $         oldout = f$search("_iobug1.tmp;")
 $      gawk -f iobug1.awk iobug1.in >_iobug1.tmp
 $              badout = f$search("_iobug1.tmp;-1")
 $              if badout.nes."" .and. badout.nes.oldout then  rm 'badout'
-$      cmp iobug1.ok _iobug1.tmp
+$      cmp iobug1.ok sys$disk:[]_iobug1.tmp
 $      if $status then  rm _iobug1.tmp;
 $      return
 $
@@ -1096,7 +1096,7 @@ $rstest4: echo "rstest4 skipped"
 $      return
 $!!rstest4:    echo "rstest4"
 $      gawk -f rstest4.awk rstest4.in >_rstest4.tmp
-$      cmp rstest4.ok _rstest4.tmp
+$      cmp rstest4.ok sys$disk:[]_rstest4.tmp
 $      if $status then  rm _rstest4.tmp;
 $      return
 $
@@ -1104,7 +1104,7 @@ $rstest5: echo "rstest5 skipped"
 $      return
 $!!rstest5:    echo "rstest5"
 $      gawk -f rstest5.awk rstest5.in >_rstest5.tmp
-$      cmp rstest5.ok _rstest5.tmp
+$      cmp rstest5.ok sys$disk:[]_rstest5.tmp
 $      if $status then  rm _rstest5.tmp;
 $      return
 $
@@ -1122,7 +1122,7 @@ $ set noOn
 $      gawk -f 'test'.awk >_'test'.tmp 2>&1
 $      if .not.$status then call exit_code 1 _'test'.tmp
 $      set On
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1133,7 +1133,7 @@ $uninit5:
 $uninitialized:
 $      echo "''test'"
 $      gawk --lint -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1147,7 +1147,7 @@ $ gawk "{gsub(""file specification syntax error"", ""no 
such file or directory""
                _space.tmp >_space.too
 $      rm _space.tmp;
 $      mv _space.too _space.tmp
-$      igncascmp space.ok _space.tmp
+$      igncascmp space.ok sys$disk:[]_space.tmp
 $      if $status then  rm _space.tmp;
 $      return
 $
@@ -1155,7 +1155,7 @@ $posix2008sub:
 $printf0:
 $      echo "''test'"
 $      gawk --posix -f 'test'.awk >_'test'.tmp
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1174,7 +1174,7 @@ $ pipe -
        gawk -- "BEGIN {RS = """"; ORS = ""\n\n""}; {print}" | -
        gawk -- "/^[^a]/; END {print NR}" >_rsnulbig.tmp
 $      set On
-$      cmp rsnulbig.ok _rsnulbig.tmp
+$      cmp rsnulbig.ok sys$disk:[]_rsnulbig.tmp
 $      if $status then  rm _rsnulbig.tmp;
 $      return
 $
@@ -1193,7 +1193,7 @@ $ pipe -
        gawk -- "BEGIN {RS=""""; ORS=""\n\n"" }; {print}" | -
        gawk -- "/^[^a]/; END {print NR}" >_rsnulbig2.tmp
 $      set On
-$      cmp rsnulbig2.ok _rsnulbig2.tmp
+$      cmp rsnulbig2.ok sys$disk:[]_rsnulbig2.tmp
 $      if $status then  rm _rsnulbig2.tmp;
 $      return
 $
@@ -1204,7 +1204,7 @@ $widesub3:
 $      echo "''test'"
 $      gosub define_gawklocale
 $      gawk -f 'test'.awk 'test'.in >_'test'.tmp
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1216,7 +1216,7 @@ $widesub4:
 $      echo "''test'"
 $      gosub define_gawklocale
 $      gawk -f 'test'.awk >_'test'.tmp
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1224,13 +1224,13 @@ $! This test is somewhat suspect for vms due to exit 
code manipulation
 $exitval1:     echo "exitval1"
 $      gawk -f exitval1.awk >_exitval1.tmp 2>&1
 $      if $status then  call exit_code 0 _exitval1.tmp
-$      cmp exitval1.ok _exitval1.tmp
+$      cmp exitval1.ok sys$disk:[]_exitval1.tmp
 $      if $status then  rm _exitval1.tmp;
 $      return
 $
 $fsspcoln:     echo "fsspcoln"
 $      gawk -f fsspcoln.awk "FS=[ :]+" fsspcoln.in >_forspcoln.tmp
-$      cmp fsspcoln.ok _forspcoln.tmp
+$      cmp fsspcoln.ok sys$disk:[]_forspcoln.tmp
 $      if $status then  rm _forspcoln.tmp;
 $      return
 $
@@ -1239,13 +1239,13 @@ $       ! assume we're running in the test 
subdirectory; we don't want to
 $      ! perform a messy conversion of [] into its file specification
 $      gawk -v "SRCDIR=[-]test.dir" -f getlndir.awk >_getlndir.tmp
 $!     getlndir.ok expects "Is a directory", we see "is a directory"
-$      igncascmp getlndir.ok _getlndir.tmp
+$      igncascmp getlndir.ok sys$disk:[]_getlndir.tmp
 $      if $status then  rm _getlndir.tmp;
 $      return
 $
 $rsstart2:     echo "rsstart2"
 $      gawk -f rsstart2.awk rsstart1.in >_rsstart2.tmp
-$      cmp rsstart2.ok _rsstart2.tmp
+$      cmp rsstart2.ok sys$disk:[]_rsstart2.tmp
 $      if $status then  rm _rsstart2.tmp;
 $      return
 $
@@ -1267,7 +1267,7 @@ $ pipe -
        gawk -- "FNR <= 10" rsstart1.in | -
        gawk -f rsstart2.awk >_rsstart3.tmp
 $      set On
-$      cmp rsstart3.ok _rsstart3.tmp
+$      cmp rsstart3.ok sys$disk:[]_rsstart3.tmp
 $      if $status then  rm _rsstart3.tmp;
 $      return
 $
@@ -1298,7 +1298,7 @@ $ gawk -- "FNR==1 {sub(""1"",""0"")}; {print}" 
_rtlen01.tmp >_rtlen01.too
 $      rm _rtlen01.tmp;
 $      mv _rtlen01.too _rtlen01.tmp
 $   endif
-$      cmp 'f' _'test'.tmp
+$      cmp 'f' sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1317,7 +1317,7 @@ $ endsubroutine !do__rtlen01
 $
 $nondec2:      echo "nondec2"
 $      gawk --non-decimal-data -v "a=0x1" -f nondec2.awk >_nondec2.tmp
-$      cmp nondec2.ok _nondec2.tmp
+$      cmp nondec2.ok sys$disk:[]_nondec2.tmp
 $      if $status then  rm _nondec2.tmp;
 $      return
 $
@@ -1334,27 +1334,27 @@ $       gawk "{gsub(""no-such-file"", 
""no/such/file""); print}" _nofile.tmp >_nofile.
 $      rm _nofile.tmp;
 $      mv _nofile.too _nofile.tmp
 $!     nofile.ok expects "No such file ...", we see "no such file ..."
-$      igncascmp nofile.ok _nofile.tmp
+$      igncascmp nofile.ok sys$disk:[]_nofile.tmp
 $      if $status then  rm _nofile.tmp;
 $      return
 $
 $binmode1:     echo "binmode1"
 $      gawk -v "BINMODE=3" "BEGIN { print BINMODE }" >_binmode1.tmp
-$      cmp binmode1.ok _binmode1.tmp
+$      cmp binmode1.ok sys$disk:[]_binmode1.tmp
 $      if $status then  rm _binmode1.tmp;
 $      return
 $
 $subi18n:      echo "subi18n"
 $      define/User GAWKLOCALE "en_US.UTF-8"
 $      gawk -f subi18n.awk >_subi18n.tmp
-$      cmp subi18n.ok _subi18n.tmp
+$      cmp subi18n.ok sys$disk:[]_subi18n.tmp
 $      if $status then  rm _subi18n.tmp;
 $      return
 $
 $concat4:      echo "concat4"
 $      define/User GAWKLOCALE "en_US.UTF-8"
 $      gawk -f concat4.awk concat4.in >_concat4.tmp
-$      cmp concat4.ok _concat4.tmp
+$      cmp concat4.ok sys$disk:[]_concat4.tmp
 $      if $status then  rm _concat4.tmp;
 $      return
 $
@@ -1362,7 +1362,7 @@ $devfd:           echo "devfd: not supported"
 $      return
 $!!devfd:      echo "devfd"
 $      gawk 1 /dev/fd/4 /dev/fd/5 4< /devfd.in4 5< devfd.in5 >_devfd.tmp
-$      cmp devfd.ok _devfd.tmp
+$      cmp devfd.ok sys$disk:[]_devfd.tmp
 $      if $status then  rm _devfd.tmp;
 $      return
 $
@@ -1370,7 +1370,7 @@ $devfd1:  echo "devfd1: not supported"
 $      return
 $!!devfd1:     echo "devfd1"
 $      gawk -f devfd1.awk 4< devfd.in1 5< devfd.in2 >_devfd1.tmp
-$      cmp devfd1.ok _devfd1.tmp
+$      cmp devfd1.ok sys$disk:[]_devfd1.tmp
 $      if $status then  rm _devfd1.tmp;
 $      return
 $
@@ -1379,7 +1379,7 @@ $ return
 $!!devfd2:     echo "devfd2"
 $! The program text is the '1' which will print each record. How compact can 
you get?
 $      gawk 1 /dev/fd/4 /dev/fd/5 4< /devfd.in1 5< devfd.in2 >_devfd2.tmp
-$      cmp devfd2.ok _devfd2.tmp
+$      cmp devfd2.ok sys$disk:[]_devfd2.tmp
 $      if $status then  rm _devfd2.tmp;
 $      return
 $
@@ -1400,21 +1400,21 @@ $       set noOn
 $      gawk -f /dev/null --source "BEGIN {return junk}" >_mixed1.tmp 2>&1
 $      if .not.$status then call exit_code 1 _mixed1.tmp
 $      set On
-$      cmp mixed1.ok _mixed1.tmp
+$      cmp mixed1.ok sys$disk:[]_mixed1.tmp
 $      if $status then  rm _mixed1.tmp;
 $      return
 $
 $mtchi18n:     echo "mtchi18n"
 $      define/User GAWKLOCALE "ru_RU.UTF-8"
 $      gawk -f mtchi18n.awk mtchi18n.in >_mtchi18n.tmp
-$      cmp mtchi18n.ok _mtchi18n.tmp
+$      cmp mtchi18n.ok sys$disk:[]_mtchi18n.tmp
 $      if $status then  rm _mtchi18n.tmp;
 $      return
 $
 $reint2:       echo "reint2"
 $      gosub define_gawklocale
 $      gawk --re-interval -f reint2.awk reint2.in >_reint2.tmp
-$      cmp reint2.ok _reint2.tmp
+$      cmp reint2.ok sys$disk:[]_reint2.tmp
 $      if $status then  rm _reint2.tmp;
 $      return
 $
@@ -1422,7 +1422,7 @@ $localenl:        echo "localenl skipped"
 $      return
 $!!localenl:   echo "localenl"
 $      @localenl.com /Output=_localenl.tmp     ! sh ./localenl.sh >tmp.
-$      cmp localenl.ok _localenl.tmp
+$      cmp localenl.ok sys$disk:[]_localenl.tmp
 $      if $status then  rm _localenl.tmp;
 $      return
 $
@@ -1432,7 +1432,7 @@ $!!mbprintf1:     echo "mbprintf1"
 $! Makefile test exports this, but we don't want to impact user's environment
 $      define/User GAWKLOCALE "en_US.UTF-8"
 $      gawk -f mbprintf1.awk mbprintf1.in >_mbprintf1.tmp
-$      cmp mbprintf1.ok _mbprintf1.tmp
+$      cmp mbprintf1.ok sys$disk:[]_mbprintf1.tmp
 $      if $status then  rm _mbprintf1.tmp;
 $      return
 $
@@ -1440,7 +1440,7 @@ $mbprintf2:       echo "mbprintf2"
 $! Makefile test exports this, ...
 $      define/User GAWKLOCALE "ja_JP.UTF-8"
 $      gawk -f mbprintf2.awk >_mbprintf2.tmp
-$      cmp mbprintf2.ok _mbprintf2.tmp
+$      cmp mbprintf2.ok sys$disk:[]_mbprintf2.tmp
 $      if $status then  rm _mbprintf2.tmp;
 $      return
 $
@@ -1448,7 +1448,7 @@ $mbprintf3:       echo "mbprintf3"
 $! Makefile test exports this, ...
 $      define/User GAWKLOCALE "en_US.UTF-8"
 $      gawk -f mbprintf3.awk mbprintf3.in >_mbprintf2.tmp
-$      cmp mbprintf3.ok _mbprintf2.tmp
+$      cmp mbprintf3.ok sys$disk:[]_mbprintf2.tmp
 $      if $status then  rm _mbprintf2.tmp;
 $      return
 $
@@ -1458,14 +1458,14 @@ $!!mbfw1:               echo "mbfw1"
 $! Makefile test exports this, ...
 $      define/User GAWKLOCALE "en_US.UTF-8"
 $      gawk -f mbfw1.awk mbfw1.in >_mbfw1.tmp
-$      cmp mbfw1.ok _mbfw1.tmp
+$      cmp mbfw1.ok sys$disk:[]_mbfw1.tmp
 $      if $status then  rm _mbfw1.tmp;
 $      return
 $
 $gsubtst6:     echo "gsubtst6"
 $      define/User GAWKLOCALE "C"
 $      gawk -f gsubtst6.awk >_gsubtst6.tmp
-$      cmp gsubtst6.ok _gsubtst6.tmp
+$      cmp gsubtst6.ok sys$disk:[]_gsubtst6.tmp
 $      if $status then  rm _gsubtst6.tmp;
 $      return
 $
@@ -1473,7 +1473,7 @@ $mbstr1:  echo "mbstr1"
 $      gosub define_gawklocale
 $      AWKPATH_srcdir
 $      gawk -f mbstr1.awk >_mbstr1.tmp
-$      cmp mbstr1.ok _mbstr1.tmp
+$      cmp mbstr1.ok sys$disk:[]_mbstr1.tmp
 $      if $status then  rm _mbstr1.tmp;
 $      return
 $
@@ -1483,7 +1483,7 @@ $ echo "''test'"
 $      set noOn
 $      gawk --lint -f 'test'.awk 'test'.in >_'test'.tmp 2>&1
 $      set On
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;
 $      return
 $
@@ -1496,7 +1496,7 @@ $ if floatmode.lt.2
 $      then    echo "fmtspcl: not supported"
 $      else    echo "fmtspcl"
 $              gawk -f fmtspcl.awk >_fmtspcl.tmp 2>&1
-$              cmp fmtspcl.ok _fmtspcl.tmp
+$              cmp fmtspcl.ok sys$disk:[]_fmtspcl.tmp
 $              if $status then  rm _fmtspcl.tmp;
 $      endif
 $      return
@@ -1512,7 +1512,7 @@ $ hugeval = huge_'floatmode'
 $      set noOn
 $      gawk -v "HUGEVAL=''hugeval'" -f intformat.awk >_intformat.tmp 2>&1
 $      set On
-$      cmp intformat.ok _intformat.tmp
+$      cmp intformat.ok sys$disk:[]_intformat.tmp
 $      if $status then  rm _intformat.tmp;
 $      return
 $
@@ -1532,14 +1532,14 @@ $       gawk -f - _beginfile1.tmp >_beginfile1.too
   gsub("no-such-file","file"); gsub("Makefile.in","Makefile"); print }
 $      rm _beginfile1.tmp;
 $      mv _beginfile1.too _beginfile1.tmp
-$      igncascmp beginfile1.ok _beginfile1.tmp
+$      igncascmp beginfile1.ok sys$disk:[]_beginfile1.tmp
 $      if $status then  rm _beginfile1.tmp;
 $      return
 $
 $dumpvars: echo "dumpvars"
 $      gawk --dump-variables 1 <dumpvars.in >_NL: 2>&1
 $      mv awkvars.out _dumpvars.tmp
-$      cmp dumpvars.ok _dumpvars.tmp
+$      cmp dumpvars.ok sys$disk:[]_dumpvars.tmp
 $      if $status then  rm _dumpvars.tmp;
 $      return
 $
@@ -1557,7 +1557,7 @@ $ gawk -v "sortcmd=SORT sys$intput: sys$output:" -
                        -f awkprof.out dtdgport.awk > _'test'.tmp2
 $              badout = f$search("_''test'.tmp2;-1")
 $              if badout.nes."" .and. badout.nes.oldout then  rm 'badout'
-$      cmp _'test'.tmp1 _'test'.tmp2
+$      cmp _'test'.tmp1 sys$disk:[]_'test'.tmp2
 $      if $status then  rm _'test'.tmp%;,awkprof.out;
 $      return
 $
@@ -1569,7 +1569,7 @@ $ sumslp awkprof.out /update=sys$input: 
/output=_'test'.tmp
 -1,2
 /
 $      rm awkprof.out;
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;*
 $      return
 $
@@ -1580,7 +1580,7 @@ $ sumslp awkprof.out /update=sys$input: 
/output=_'test'.tmp
 -1,2
 /
 $      rm awkprof.out;
-$      cmp 'test'.ok _'test'.tmp
+$      cmp 'test'.ok sys$disk:[]_'test'.tmp
 $      if $status then  rm _'test'.tmp;*
 $      return
 $
@@ -1593,7 +1593,7 @@ $ gawk "function f() {next}; {f()}; END{f()}" _NL:     
>>_next.tmp 2>&1
 $      gawk "function f() {next}; BEGINFILE{f()}" _NL:      >>_next.tmp 2>&1
 $      gawk "function f() {next}; {f()}; ENDFILE{f()}" _NL: >>_next.tmp 2>&1
 $      set On
-$      cmp next.ok _next.tmp
+$      cmp next.ok sys$disk:[]_next.tmp
 $      if $status then  rm _next.tmp;
 $      return
 $
@@ -1609,7 +1609,7 @@ $ endif
 $      set noOn
 $      call/Output=_exit.tmp do__exit
 $      set On
-$      cmp exit.ok _exit.tmp
+$      cmp exit.ok sys$disk:[]_exit.tmp
 $      if $status then  rm _exit.tmp;
 $      return
 $
@@ -1659,7 +1659,7 @@ $ then create vms_cmd.ok
 World!
 $      endif
 $      gawk /Commands="BEGIN { print ""World!"" }" _NL: /Output=_vms_cmd.tmp
-$      cmp vms_cmd.ok _vms_cmd.tmp
+$      cmp vms_cmd.ok sys$disk:[]_vms_cmd.tmp
 $      if $status then  rm _vms_cmd.tmp;
 $      return
 $
@@ -1672,7 +1672,7 @@ $ !       define/User dbg$input sys$command:
 $      gawk -f - >_vms_io1.tmp
 # prior to 3.0.4, gawk crashed doing any redirection after closing stdin
 BEGIN { print "Hello" >"/dev/stdout" }
-$      cmp vms_io1.ok _vms_io1.tmp
+$      cmp vms_io1.ok sys$disk:[]_vms_io1.tmp
 $      if $status then  rm _vms_io1.tmp;
 $      return
 $
@@ -1698,9 +1698,9 @@ $ set noOn
 $ !    define/User dbg$input sys$command:
 $      gawk -- "BEGIN { print ""xyzzy"" >""_vms_io2.vfc"" }" >_vms_io2.tmp 2>&1
 $      set On
-$      cmp _NL: _vms_io2.tmp
+$      cmp _NL: sys$disk:[]_vms_io2.tmp
 $      if $status then  rm _vms_io2.tmp;
-$      cmp vms_io2.ok _vms_io2.vfc
+$      cmp vms_io2.ok sys$disk:[]_vms_io2.vfc
 $      if $status then  rm _vms_io2.vfc;*
 $      return
 $

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog           |   18 ++++
 awk.h               |    6 -
 bootstrap.sh        |    3 +-
 doc/ChangeLog       |    4 +
 doc/gawk.info       |  246 +++++++++++++++++++++++++++----------------------
 doc/gawk.texi       |   26 +++++
 extension/ChangeLog |    4 +
 extension/testext.c |   47 ++++++++++
 gawkapi.c           |    4 +
 gawkapi.h           |    6 +
 interpret.h         |    5 +
 io.c                |   11 ++-
 main.c              |    2 +
 test/ChangeLog      |    7 ++
 test/Makefile.am    |    5 +-
 test/Makefile.in    |   10 ++-
 test/Maketests      |    5 +
 test/symtab1.ok     |    2 +-
 test/symtab9.awk    |   15 +++
 test/symtab9.ok     |    1 +
 test/testext.ok     |    3 +
 vms/ChangeLog       |    9 ++-
 vms/descrip.mms     |    4 +-
 vms/vmstest.com     |  254 +++++++++++++++++++++++++-------------------------
 24 files changed, 442 insertions(+), 255 deletions(-)
 create mode 100644 test/symtab9.awk
 create mode 100644 test/symtab9.ok


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]