Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/tests/lib/libcurses/director tests/libcurses: move function ...
details: https://anonhg.NetBSD.org/src/rev/a7a46f2b99da
branches: trunk
changeset: 959340:a7a46f2b99da
user: rillig <rillig%NetBSD.org@localhost>
date: Mon Feb 08 19:28:08 2021 +0000
description:
tests/libcurses: move function 'check' out of the grammar section
This removes the inconsistent indentation.
diffstat:
tests/lib/libcurses/director/testlang_parse.y | 187 +++++++++++++------------
1 files changed, 97 insertions(+), 90 deletions(-)
diffs (217 lines):
diff -r 861f427eddba -r a7a46f2b99da tests/lib/libcurses/director/testlang_parse.y
--- a/tests/lib/libcurses/director/testlang_parse.y Mon Feb 08 19:15:20 2021 +0000
+++ b/tests/lib/libcurses/director/testlang_parse.y Mon Feb 08 19:28:08 2021 +0000
@@ -1,5 +1,5 @@
%{
-/* $NetBSD: testlang_parse.y,v 1.36 2021/02/08 19:15:20 rillig Exp $ */
+/* $NetBSD: testlang_parse.y,v 1.37 2021/02/08 19:28:08 rillig Exp $ */
/*-
* Copyright 2009 Brett Lymn <blymn%NetBSD.org@localhost>
@@ -138,6 +138,7 @@
static void write_func_and_args(void);
static void compare_streams(const char *, bool);
static void do_function_call(size_t);
+static void check(void);
static void save_slave_output(bool);
static void validate_type(data_enum_t, ct_data_t *, int);
static void set_var(data_enum_t, const char *, void *);
@@ -286,96 +287,9 @@
;
check : CHECK var returns {
- ct_data_t retvar;
- var_t *vptr;
-
- if (command.returns[0].data_index == -1)
- err(1, "%s:%zu: Undefined variable in check statement",
- cur_file, line);
-
- if (command.returns[1].data_type == data_var) {
- vptr = &vars[command.returns[1].data_index];
- command.returns[1].data_type = vptr->type;
- command.returns[1].data_len = vptr->len;
- if (vptr->type != data_cchar)
- command.returns[1].data_value = vptr->value;
- else
- command.returns[1].data_value = &vptr->cchar;
- }
-
- if (verbose) {
- fprintf(stderr, "Checking contents of variable %s for %s\n",
- vars[command.returns[0].data_index].name,
- enum_names[command.returns[1].data_type]);
- }
-
- /*
- * Check if var and return have same data types
- */
- if (((command.returns[1].data_type == data_byte) &&
- (vars[command.returns[0].data_index].type != data_byte)))
- err(1, "Var type %s (%d) does not match return type %s (%d)",
- enum_names[vars[command.returns[0].data_index].type],
- vars[command.returns[0].data_index].type,
- enum_names[command.returns[1].data_type],
- command.returns[1].data_type);
-
- switch (command.returns[1].data_type) {
- case data_err:
- case data_ok:
- validate_type(vars[command.returns[0].data_index].type,
- &command.returns[1], 0);
- break;
-
- case data_null:
- validate_variable(0, data_string, "NULL",
- command.returns[0].data_index, 0);
- break;
-
- case data_nonnull:
- validate_variable(0, data_string, "NULL",
- command.returns[0].data_index, 1);
- break;
-
- case data_string:
- case data_number:
- if (verbose) {
- fprintf(stderr, " %s == returned %s\n",
- (const char *)command.returns[1].data_value,
- (const char *)
- vars[command.returns[0].data_index].value);
+ check();
}
- validate_variable(0, data_string,
- command.returns[1].data_value,
- command.returns[0].data_index, 0);
- break;
-
- case data_byte:
- vptr = &vars[command.returns[0].data_index];
- retvar.data_len = vptr->len;
- retvar.data_type = vptr->type;
- retvar.data_value = vptr->value;
- validate_byte(&retvar, &command.returns[1], 0);
- break;
-
- case data_cchar:
- validate_cchar(&vars[command.returns[0].data_index].cchar,
- (cchar_t *) command.returns[1].data_value, 0);
- break;
-
- case data_wchar:
- validate_wchar((wchar_t *) vars[command.returns[0].data_index].value,
- (wchar_t *) command.returns[1].data_value, 0);
- break;
-
- default:
- err(1, "%s:%zu: Malformed check statement", cur_file, line);
- break;
- }
-
- init_parse_variables(0);
-}
- ;
+ ;
delay : DELAY numeric {
/* set the inter-character delay */
@@ -1362,6 +1276,99 @@
write_cmd_pipe(NULL); /* signal end of arguments */
}
+static void
+check(void)
+{
+ ct_data_t retvar;
+ var_t *vptr;
+
+ if (command.returns[0].data_index == -1)
+ err(1, "%s:%zu: Undefined variable in check statement",
+ cur_file, line);
+
+ if (command.returns[1].data_type == data_var) {
+ vptr = &vars[command.returns[1].data_index];
+ command.returns[1].data_type = vptr->type;
+ command.returns[1].data_len = vptr->len;
+ if (vptr->type != data_cchar)
+ command.returns[1].data_value = vptr->value;
+ else
+ command.returns[1].data_value = &vptr->cchar;
+ }
+
+ if (verbose) {
+ fprintf(stderr, "Checking contents of variable %s for %s\n",
+ vars[command.returns[0].data_index].name,
+ enum_names[command.returns[1].data_type]);
+ }
+
+ /*
+ * Check if var and return have same data types
+ */
+ if (((command.returns[1].data_type == data_byte) &&
+ (vars[command.returns[0].data_index].type != data_byte)))
+ err(1, "Var type %s (%d) does not match return type %s (%d)",
+ enum_names[vars[command.returns[0].data_index].type],
+ vars[command.returns[0].data_index].type,
+ enum_names[command.returns[1].data_type],
+ command.returns[1].data_type);
+
+ switch (command.returns[1].data_type) {
+ case data_err:
+ case data_ok:
+ validate_type(vars[command.returns[0].data_index].type,
+ &command.returns[1], 0);
+ break;
+
+ case data_null:
+ validate_variable(0, data_string, "NULL",
+ command.returns[0].data_index, 0);
+ break;
+
+ case data_nonnull:
+ validate_variable(0, data_string, "NULL",
+ command.returns[0].data_index, 1);
+ break;
+
+ case data_string:
+ case data_number:
+ if (verbose) {
+ fprintf(stderr, " %s == returned %s\n",
+ (const char *)command.returns[1].data_value,
+ (const char *)
+ vars[command.returns[0].data_index].value);
+ }
+ validate_variable(0, data_string,
+ command.returns[1].data_value,
+ command.returns[0].data_index, 0);
+ break;
+
+ case data_byte:
+ vptr = &vars[command.returns[0].data_index];
+ retvar.data_len = vptr->len;
+ retvar.data_type = vptr->type;
+ retvar.data_value = vptr->value;
+ validate_byte(&retvar, &command.returns[1], 0);
+ break;
+
+ case data_cchar:
+ validate_cchar(&vars[command.returns[0].data_index].cchar,
+ (cchar_t *) command.returns[1].data_value, 0);
+ break;
+
+ case data_wchar:
+ validate_wchar((wchar_t *) vars[command.returns[0].data_index].value,
+ (wchar_t *) command.returns[1].data_value, 0);
+ break;
+
+ default:
+ err(1, "%s:%zu: Malformed check statement", cur_file, line);
+ break;
+ }
+
+ init_parse_variables(0);
+}
+
/*
* Initialise the command structure - if initial is non-zero then just set
* everything to sane values otherwise free any memory that was allocated
Home |
Main Index |
Thread Index |
Old Index