mirror of
https://gitlab.isc.org/isc-projects/dhcp
synced 2025-08-22 09:57:20 +00:00
[master] Handle long commands in execute better
Use token_print_indent_concat() to write the comamnd in an execute statement to the lease file. This keeps the quotes with the command. When using token_print_indent() and passing the quotes as a prefix and suffix they could be discarded if the command was overly long.
This commit is contained in:
parent
1bfdeaaee9
commit
1d3fc4d0d8
4
RELNOTES
4
RELNOTES
@ -195,6 +195,10 @@ by Eric Young (eay@cryptsoft.com).
|
|||||||
- Add more option definitions.
|
- Add more option definitions.
|
||||||
[ISC-Bugs #40562]
|
[ISC-Bugs #40562]
|
||||||
|
|
||||||
|
- Correct outputting of long lines in the lease file when writing
|
||||||
|
a lease that includes long strings in an execute statement.
|
||||||
|
[ISC-Bugs #40994]
|
||||||
|
|
||||||
Changes since 4.3.3b1
|
Changes since 4.3.3b1
|
||||||
|
|
||||||
- None
|
- None
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
Support for executable statements. */
|
Support for executable statements. */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2009,2013-2015 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2009,2013-2016 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
|
* Copyright (c) 2004-2007 by Internet Systems Consortium, Inc. ("ISC")
|
||||||
* Copyright (c) 1998-2003 by Internet Software Consortium
|
* Copyright (c) 1998-2003 by Internet Software Consortium
|
||||||
*
|
*
|
||||||
@ -990,18 +990,25 @@ void write_statements (file, statements, indent)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case execute_statement:
|
case execute_statement:
|
||||||
|
|
||||||
#ifdef ENABLE_EXECUTE
|
#ifdef ENABLE_EXECUTE
|
||||||
indent_spaces (file, indent);
|
indent_spaces(file, indent);
|
||||||
col = token_print_indent(file, indent + 4, indent + 4,
|
col = token_print_indent(file, indent + 4, indent + 4,
|
||||||
"", "", "execute");
|
"", "", "execute");
|
||||||
col = token_print_indent(file, col, indent + 4, " ", "",
|
col = token_print_indent(file, col, indent + 4, " ", "",
|
||||||
"(");
|
"(");
|
||||||
col = token_print_indent(file, col, indent + 4, "\"", "\"", r->data.execute.command);
|
col = token_print_indent_concat(file, col, indent + 4,
|
||||||
for (expr = r->data.execute.arglist; expr; expr = expr->data.arg.next) {
|
"", "", "\"",
|
||||||
col = token_print_indent(file, col, indent + 4, "", " ", ",");
|
r->data.execute.command,
|
||||||
col = write_expression (file, expr->data.arg.val, col, indent + 4, 0);
|
"\"", (char *)0);
|
||||||
}
|
for (expr = r->data.execute.arglist; expr; expr = expr->data.arg.next) {
|
||||||
(void) token_print_indent(file, col, indent + 4, "", "", ");");
|
col = token_print_indent(file, col, indent + 4,
|
||||||
|
"", " ", ",");
|
||||||
|
col = write_expression(file, expr->data.arg.val,
|
||||||
|
col, indent + 4, 0);
|
||||||
|
}
|
||||||
|
(void) token_print_indent(file, col, indent + 4,
|
||||||
|
"", "", ");");
|
||||||
#else /* !ENABLE_EXECUTE */
|
#else /* !ENABLE_EXECUTE */
|
||||||
log_fatal("Impossible case at %s:%d (ENABLE_EXECUTE "
|
log_fatal("Impossible case at %s:%d (ENABLE_EXECUTE "
|
||||||
"is not defined).", MDL);
|
"is not defined).", MDL);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user