diff options
author | Michael R Sweet <michael.r.sweet@gmail.com> | 2021-05-12 09:32:24 -0400 |
---|---|---|
committer | Michael R Sweet <michael.r.sweet@gmail.com> | 2021-05-12 09:32:24 -0400 |
commit | 90a7970b93a7207da24c942b3ae3ac6b83dde600 (patch) | |
tree | 5ff775c6c6544cf90d557cdf3776822a2c35988e /tools | |
parent | 213f5a7cfd16fed6b064afee4ed44ae2b33cd626 (diff) | |
download | cups-90a7970b93a7207da24c942b3ae3ac6b83dde600.tar.gz |
Add DISPLAY-MATCH to ipptool.
HTML man page updates.
Diffstat (limited to 'tools')
-rw-r--r-- | tools/ipptool.c | 111 |
1 files changed, 69 insertions, 42 deletions
diff --git a/tools/ipptool.c b/tools/ipptool.c index 49374761d..e89fb5bca 100644 --- a/tools/ipptool.c +++ b/tools/ipptool.c @@ -85,7 +85,8 @@ typedef struct ipptool_expect_s /**** Expected attribute info ****/ *with_value_from, /* Attribute must have one of the values in this attribute */ *define_match, /* Variable to define on match */ *define_no_match, /* Variable to define on no-match */ - *define_value; /* Variable to define with value */ + *define_value, /* Variable to define with value */ + *display_match; /* Message to display on a match */ int repeat_limit, /* Maximum number of times to repeat */ repeat_match, /* Repeat test on match */ repeat_no_match, /* Repeat test on no match */ @@ -1074,6 +1075,9 @@ do_monitor_printer_state( break; } + if (found && expect->display_match && (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))) + cupsFilePrintf(cupsFileStdout(), "CONT]\n\n%s\n\n %-68.68s [", expect->display_match, data->name); + if (found && expect->define_match) { _ippVarsSet(data->vars, expect->define_match, "1"); @@ -1847,6 +1851,9 @@ do_test(_ipp_file_t *f, /* I - IPP data file */ } } + if (found && expect->display_match && (data->output == IPPTOOL_OUTPUT_TEST || (data->output == IPPTOOL_OUTPUT_PLIST && data->outfile != cupsFileStdout()))) + cupsFilePrintf(cupsFileStdout(), "\n%s\n\n", expect->display_match); + if (found && expect->define_match) _ippVarsSet(data->vars, expect->define_match, "1"); @@ -2115,36 +2122,25 @@ do_test(_ipp_file_t *f, /* I - IPP data file */ for (i = 0; i < data->num_statuses; i ++) { - if (data->statuses[i].if_defined) - free(data->statuses[i].if_defined); - if (data->statuses[i].if_not_defined) - free(data->statuses[i].if_not_defined); - if (data->statuses[i].define_match) - free(data->statuses[i].define_match); - if (data->statuses[i].define_no_match) - free(data->statuses[i].define_no_match); + free(data->statuses[i].if_defined); + free(data->statuses[i].if_not_defined); + free(data->statuses[i].define_match); + free(data->statuses[i].define_no_match); } data->num_statuses = 0; for (i = data->num_expects, expect = data->expects; i > 0; i --, expect ++) { free(expect->name); - if (expect->of_type) - free(expect->of_type); - if (expect->same_count_as) - free(expect->same_count_as); - if (expect->if_defined) - free(expect->if_defined); - if (expect->if_not_defined) - free(expect->if_not_defined); - if (expect->with_value) - free(expect->with_value); - if (expect->define_match) - free(expect->define_match); - if (expect->define_no_match) - free(expect->define_no_match); - if (expect->define_value) - free(expect->define_value); + free(expect->of_type); + free(expect->same_count_as); + free(expect->if_defined); + free(expect->if_not_defined); + free(expect->with_value); + free(expect->define_match); + free(expect->define_no_match); + free(expect->define_value); + free(expect->display_match); } data->num_expects = 0; @@ -2158,22 +2154,15 @@ do_test(_ipp_file_t *f, /* I - IPP data file */ for (i = data->num_monitor_expects, expect = data->monitor_expects; i > 0; i --, expect ++) { free(expect->name); - if (expect->of_type) - free(expect->of_type); - if (expect->same_count_as) - free(expect->same_count_as); - if (expect->if_defined) - free(expect->if_defined); - if (expect->if_not_defined) - free(expect->if_not_defined); - if (expect->with_value) - free(expect->with_value); - if (expect->define_match) - free(expect->define_match); - if (expect->define_no_match) - free(expect->define_no_match); - if (expect->define_value) - free(expect->define_value); + free(expect->of_type); + free(expect->same_count_as); + free(expect->if_defined); + free(expect->if_not_defined); + free(expect->with_value); + free(expect->define_match); + free(expect->define_no_match); + free(expect->define_value); + free(expect->display_match); } data->num_monitor_expects = 0; @@ -2705,6 +2694,7 @@ parse_monitor_printer_state( _cups_strcasecmp(token, "DEFINE-MATCH") && _cups_strcasecmp(token, "DEFINE-NO-MATCH") && _cups_strcasecmp(token, "DEFINE-VALUE") && + _cups_strcasecmp(token, "DISPLAY-MATCH") && _cups_strcasecmp(token, "IF-DEFINED") && _cups_strcasecmp(token, "IF-NOT-DEFINED") && _cups_strcasecmp(token, "IN-GROUP") && @@ -2832,6 +2822,24 @@ parse_monitor_printer_state( return (0); } } + else if (!_cups_strcasecmp(token, "DISPLAY-MATCH")) + { + if (!_ippFileReadToken(f, temp, sizeof(temp))) + { + print_fatal_error(data, "Missing DISPLAY-MATCH message on line %d of \"%s\".", f->linenum, f->filename); + return (0); + } + + if (data->last_expect) + { + data->last_expect->display_match = strdup(temp); + } + else + { + print_fatal_error(data, "DISPLAY-MATCH without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename); + return (0); + } + } else if (!_cups_strcasecmp(token, "DELAY")) { /* @@ -3130,7 +3138,7 @@ pause_message(const char *message) /* I - Message */ * Display the prompt... */ - cupsFilePrintf(cupsFileStdout(), "%s\n---- PRESS ANY KEY ----", message); + cupsFilePrintf(cupsFileStdout(), "\n%s\n\n---- PRESS ANY KEY ----", message); #ifdef _WIN32 /* @@ -3935,6 +3943,7 @@ token_cb(_ipp_file_t *f, /* I - IPP file data */ _cups_strcasecmp(token, "DEFINE-MATCH") && _cups_strcasecmp(token, "DEFINE-NO-MATCH") && _cups_strcasecmp(token, "DEFINE-VALUE") && + _cups_strcasecmp(token, "DISPLAY-MATCH") && _cups_strcasecmp(token, "IF-DEFINED") && _cups_strcasecmp(token, "IF-NOT-DEFINED") && _cups_strcasecmp(token, "IN-GROUP") && @@ -4576,6 +4585,24 @@ token_cb(_ipp_file_t *f, /* I - IPP file data */ return (0); } } + else if (!_cups_strcasecmp(token, "DISPLAY-MATCH")) + { + if (!_ippFileReadToken(f, temp, sizeof(temp))) + { + print_fatal_error(data, "Missing DISPLAY-MATCH mesaage on line %d of \"%s\".", f->linenum, f->filename); + return (0); + } + + if (data->last_expect) + { + data->last_expect->display_match = strdup(temp); + } + else + { + print_fatal_error(data, "DISPLAY-MATCH without a preceding EXPECT on line %d of \"%s\".", f->linenum, f->filename); + return (0); + } + } else if (!_cups_strcasecmp(token, "OF-TYPE")) { if (!_ippFileReadToken(f, temp, sizeof(temp))) |