We now return error codes and break when something important goes wrong. because of that, we have to split hook_new and hook_edit. When zone_settins-read fails in hook_edit we cannot go but it would every time we would call it in hook_new.
Signed-off-by: Jonatan Schlag jonatan.schlag@ipfire.org --- src/header-zone | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/src/header-zone b/src/header-zone index 98b0ce7..219b0d6 100644 --- a/src/header-zone +++ b/src/header-zone @@ -34,17 +34,39 @@ hook_new() { assert isset zone shift
- zone_settings_read "${zone}" - - hook_parse_cmdline $@ + if ! hook_parse_cmdline $@; then + return ${EXIT_ERROR} + fi
- zone_settings_write "${zone}" + if ! zone_settings_write "${zone}"; then + log ERROR "Could not write settings for zone ${zone}" + return ${EXIT_ERROR} + fi
exit ${EXIT_OK} }
hook_edit() { - hook_new $@ + local zone="${1}" + assert isset zone + shift + + if ! zone_settings_read "${zone}"; then + log ERROR "Could not read settings for zone ${zone}" + return ${EXIT_ERROR} + fi + + if ! hook_parse_cmdline $@; then + return ${EXIT_ERROR} + fi + + if ! zone_settings_write "${zone}"; then + log ERROR "Could not write settings for zone ${zone}" + return ${EXIT_ERROR} + fi + + exit ${EXIT_OK} + }
hook_remove() {