aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2014-06-08 22:56:28 +0300
committerArnold D. Robbins <arnold@skeeve.com>2014-06-08 22:56:28 +0300
commit3b01804f1b62c091f56a996c7f00657934dc9a0f (patch)
treef6aba7d94daf6083a7479d6d7e21e6f0bc3164bc
parentdaf5b0c87115b6793c5ac6568009916d4be3152b (diff)
downloadegawk-3b01804f1b62c091f56a996c7f00657934dc9a0f.tar.gz
egawk-3b01804f1b62c091f56a996c7f00657934dc9a0f.tar.bz2
egawk-3b01804f1b62c091f56a996c7f00657934dc9a0f.zip
Improvements in testdfa.c.
-rw-r--r--helpers/ChangeLog4
-rw-r--r--helpers/testdfa.c31
2 files changed, 22 insertions, 13 deletions
diff --git a/helpers/ChangeLog b/helpers/ChangeLog
index 17624c3f..c9121403 100644
--- a/helpers/ChangeLog
+++ b/helpers/ChangeLog
@@ -1,3 +1,7 @@
+2014-06-08 Arnold D. Robbins <arnold@skeeve.com>
+
+ * testdfa.c: Minor improvements.
+
2014-04-08 Arnold D. Robbins <arnold@skeeve.com>
* 4.1.1: Release tar ball made.
diff --git a/helpers/testdfa.c b/helpers/testdfa.c
index 813acaab..25a229a2 100644
--- a/helpers/testdfa.c
+++ b/helpers/testdfa.c
@@ -40,14 +40,16 @@
#include <sys/stat.h>
+#undef _Noreturn
#define _Noreturn
+#define _GL_ATTRIBUTE_PURE
#include "dfa.h"
const char *regexflags2str(int flags);
char *databuf(int fd);
const char * reflags2str(int flagval);
int parse_escape(const char **string_ptr);
-char *setup_pattern(const char *pattern, size_t len);
+char *setup_pattern(const char *pattern, size_t *len);
char casetable[];
reg_syntax_t syn;
@@ -126,10 +128,10 @@ int main(int argc, char **argv)
printf("Ignorecase: %s\nSyntax: %s\n",
(ignorecase ? "true" : "false"),
reflags2str(syn));
- printf("Pattern: /%s/\n", pattern);
+ printf("Pattern: /%s/, len = %d\n", pattern, len);
- pattern = setup_pattern(pattern, len);
- len = strlen(pattern);
+ pattern = setup_pattern(pattern, & len);
+ printf("After setup_pattern(), len = %d\n", len);
pat.fastmap = (char *) malloc(256);
if (pat.fastmap == NULL) {
@@ -191,7 +193,10 @@ int main(int argc, char **argv)
&count, &try_backref);
data[len] = save;
- printf("dfaexec returned %p (%.3s)\n", place, place);
+ if (place == NULL)
+ printf("dfaexec returned NULL\n");
+ else
+ printf("dfaexec returned %d (%.3s)\n", place - data, place);
/* release storage */
regfree(& pat);
@@ -363,7 +368,7 @@ r_fatal(const char *mesg, ...)
/* setup_pattern --- do what gawk does with the pattern string */
char *
-setup_pattern(const char *pattern, size_t len)
+setup_pattern(const char *pattern, size_t *len)
{
size_t is_multibyte = 0;
int c, c2;
@@ -377,7 +382,7 @@ setup_pattern(const char *pattern, size_t len)
memset(& mbs, 0, sizeof(mbs));
src = pattern;
- end = pattern + len;
+ end = pattern + *len;
/* Handle escaped characters first. */
@@ -387,19 +392,19 @@ setup_pattern(const char *pattern, size_t len)
* from that.
*/
if (buf == NULL) {
- buf = (char *) malloc(len + 2);
+ buf = (char *) malloc(*len + 2);
if (buf == NULL) {
fprintf(stderr, "%s: malloc failed\n", __func__);
exit(EXIT_FAILURE);
}
- buflen = len;
- } else if (len > buflen) {
- buf = (char *) realloc(buf, len + 2);
+ buflen = *len;
+ } else if (*len > buflen) {
+ buf = (char *) realloc(buf, *len + 2);
if (buf == NULL) {
fprintf(stderr, "%s: realloc failed\n", __func__);
exit(EXIT_FAILURE);
}
- buflen = len;
+ buflen = *len;
}
dest = buf;
@@ -487,7 +492,7 @@ setup_pattern(const char *pattern, size_t len)
} /* while */
*dest = '\0';
- len = dest - buf;
+ *len = dest - buf;
return buf;
}