[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [gawk-diffs] [SCM] gawk branch, master, updated. 894413cf12f347facef4de3626573644d067c3bb,
Arnold Robbins <=