From 07e321ab2ec49756cff1fe837265f22525f3e243 Mon Sep 17 00:00:00 2001 From: David Teigland Date: Nov 22 2019 15:29:45 +0000 Subject: dlm_tool: fix ls name handling When 'dlm_tool ls name' is called with a non-existing name, the command should report nothing and return an error. --- diff --git a/dlm_tool/main.c b/dlm_tool/main.c index 1aacfbb..53d9336 100644 --- a/dlm_tool/main.c +++ b/dlm_tool/main.c @@ -224,6 +224,7 @@ static void decode_arguments(int argc, char **argv) int need_lsname; int need_command = 0; int need_uuid = 0; + int optional_lsname = 0; int i; char modebuf[8]; @@ -332,6 +333,7 @@ static void decode_arguments(int argc, char **argv) operation = OP_LIST; opt_ind = optind + 1; need_lsname = 0; + optional_lsname = 1; break; } else if (!strncmp(argv[optind], "status", 6) && (strlen(argv[optind]) == 6)) { @@ -428,8 +430,17 @@ static void decode_arguments(int argc, char **argv) exit(EXIT_FAILURE); } - if (!need_lsname && !need_uuid && !need_command) + /* + * The operation does not require an arg, but may + * accept an optional arg, i.e. dlm_tool ls [name] + */ + if (!need_lsname && !need_uuid && !need_command) { + if (optind < argc - 1) { + if (optional_lsname) + lsname = argv[opt_ind]; + } return; + } if (optind < argc - 1) { if (need_lsname)