diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2016-12-22 18:32:21 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2016-12-22 18:32:21 +0200 |
commit | 6402c9480ffcd8610b1322a381f0c14a42d95083 (patch) | |
tree | bbf1f2c00923c562b1ff346b5a6b759d58920902 /extension | |
parent | 2af62b50e5b9574c0e169fb4d99c4912e56eef1f (diff) | |
parent | af31a6de1bd15d4d5f5520ebfcb1d24239b9a683 (diff) | |
download | egawk-6402c9480ffcd8610b1322a381f0c14a42d95083.tar.gz egawk-6402c9480ffcd8610b1322a381f0c14a42d95083.tar.bz2 egawk-6402c9480ffcd8610b1322a381f0c14a42d95083.zip |
Merge branch 'master' into feature/fix-comments
Diffstat (limited to 'extension')
-rw-r--r-- | extension/ChangeLog | 20 | ||||
-rw-r--r-- | extension/rwarray.c | 42 | ||||
-rw-r--r-- | extension/testext.c | 2 |
3 files changed, 58 insertions, 6 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog index 0642a955..20834b01 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,7 @@ +2016-12-22 Arnold D. Robbins <arnold@skeeve.com> + + * testext.c (valrep2str): Update for new API types. + 2016-12-16 Arnold D. Robbins <arnold@skeeve.com> * filefuncs.c: Update func_table again. @@ -41,6 +45,22 @@ * testext.c: Ditto. * time.c: Ditto. +2016-12-05 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * rwarray.c: Adjust to read and write strnum values. + (write_value): When writing a string value, code should use htonl. + There are now 3 string types: string, strnum, and regex. + (read_value): Support 3 string types: string, strnum, and regex. + +2016-11-30 Arnold D. Robbins <arnold@skeeve.com> + + * rwarray.c: Restore read comparion of major and minor versions + to use !=. + +2016-11-29 Arnold D. Robbins <arnold@skeeve.com> + + * rwarray.c: Adjust to read and write regexes also. + 2016-10-23 Arnold D. Robbins <arnold@skeeve.com> * General: Remove trailing whitespace from all relevant files. diff --git a/extension/rwarray.c b/extension/rwarray.c index 00ded7bf..186dac0f 100644 --- a/extension/rwarray.c +++ b/extension/rwarray.c @@ -55,11 +55,11 @@ #define MAGIC "awkrulz\n" #define MAJOR 3 -#define MINOR 0 +#define MINOR 1 static const gawk_api_t *api; /* for convenience macros to work */ static awk_ext_id_t *ext_id; -static const char *ext_version = "rwarray extension: version 1.0"; +static const char *ext_version = "rwarray extension: version 1.1"; static awk_bool_t (*init_func)(void) = NULL; int plugin_is_GPL_compatible; @@ -84,7 +84,7 @@ static awk_bool_t read_value(FILE *fp, awk_value_t *value); * For each element: * Length of index val: 4 bytes - network order * Index val as characters (N bytes) - * Value type 4 bytes (0 = string, 1 = number, 2 = array) + * Value type 4 bytes (0 = string, 1 = number, 2 = array, 3 = regex, 4 = strnum) * IF string: * Length of value 4 bytes * Value as characters (N bytes) @@ -210,7 +210,7 @@ write_elem(FILE *fp, awk_element_t *element) return write_value(fp, & element->value); } -/* write_value --- write a number or a string or a array */ +/* write_value --- write a number or a string or a strnum or a regex or an array */ static awk_bool_t write_value(FILE *fp, awk_value_t *val) @@ -232,7 +232,22 @@ write_value(FILE *fp, awk_value_t *val) if (fwrite(& val->num_value, 1, sizeof(val->num_value), fp) != sizeof(val->num_value)) return awk_false; } else { - code = 0; + switch (val->val_type) { + case AWK_STRING: + code = htonl(0); + break; + case AWK_STRNUM: + code = htonl(4); + break; + case AWK_REGEX: + code = htonl(3); + break; + default: + /* XXX can this happen? */ + code = htonl(0); + warning(ext_id, _("array value has unknown type %d"), val->val_type); + break; + } if (fwrite(& code, 1, sizeof(code), fp) != sizeof(code)) return awk_false; @@ -449,7 +464,22 @@ read_value(FILE *fp, awk_value_t *value) return awk_false; } len = ntohl(len); - value->val_type = AWK_STRING; + switch (code) { + case 0: + value->val_type = AWK_STRING; + break; + case 3: + value->val_type = AWK_REGEX; + break; + case 4: + value->val_type = AWK_STRNUM; + break; + default: + /* this cannot happen! */ + warning(ext_id, _("treating recovered value with unknown type code %d as a string"), code); + value->val_type = AWK_STRING; + break; + } value->str_value.len = len; value->str_value.str = gawk_malloc(len + 1); memset(value->str_value.str, '\0', len + 1); diff --git a/extension/testext.c b/extension/testext.c index bf342182..d23ad368 100644 --- a/extension/testext.c +++ b/extension/testext.c @@ -70,6 +70,8 @@ valrep2str(const awk_value_t *value) case AWK_VALUE_COOKIE: strcpy(buf, "<value-cookie>"); break; + case AWK_REGEX: + case AWK_STRNUM: case AWK_STRING: if (value->str_value.len < size) size = value->str_value.len; |