aboutsummaryrefslogtreecommitdiffstats
path: root/extension
diff options
context:
space:
mode:
Diffstat (limited to 'extension')
-rw-r--r--extension/ChangeLog9
-rw-r--r--extension/rwarray.c12
2 files changed, 15 insertions, 6 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog
index 0642a955..bf7d3fa4 100644
--- a/extension/ChangeLog
+++ b/extension/ChangeLog
@@ -41,6 +41,15 @@
* testext.c: Ditto.
* time.c: Ditto.
+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..b62b6de0 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)
* 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 regex or an array */
static awk_bool_t
write_value(FILE *fp, awk_value_t *val)
@@ -232,7 +232,7 @@ 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;
+ code = (val->val_type == AWK_STRING ? 0 : 3);
if (fwrite(& code, 1, sizeof(code), fp) != sizeof(code))
return awk_false;
@@ -449,7 +449,7 @@ read_value(FILE *fp, awk_value_t *value)
return awk_false;
}
len = ntohl(len);
- value->val_type = AWK_STRING;
+ value->val_type = (code == 0 ? AWK_STRING : AWK_REGEX);
value->str_value.len = len;
value->str_value.str = gawk_malloc(len + 1);
memset(value->str_value.str, '\0', len + 1);