<div>the option "<span style="line-height: 1.5;">-p, --port"</span><span style="line-height: 1.5;"> was list in the usage, so i think i can specify a different </span><span style="line-height: 1.5;">daemon</span><span style="line-height: 1.5;"> port </span><span style="line-height: 1.5;">except 7000</span><span style="line-height: 1.5;">.</span></div><div><span style="line-height: 1.5;"><br></span></div><div><span style="line-height: 1.5;">so, i think "</span><span style="line-height: 1.5;">expected behavior</span><span style="line-height: 1.5;">" should</span> be:</div><div><span style="line-height: 1.5;"><div><br></div><div>[root@de3eb sheepdog]# <span style="line-height: 1.5;">./collie/</span><span style="line-height: 1.5;">collie cluster recover disable -p7001</span></div></span><span style="line-height: 1.5;"><div>Cluster recovery: disable</div><div><br></div><div>-p option work just like:</div><div><br></div><div><div>[root@de3eb sheepdog]# ./collie/collie node list -p7001</div><div>M   Id   Host:Port         V-Nodes       Zone</div><div>-    0   127.0.0.1:7001         64          3</div><div>-    1   127.0.0.1:7002         64          1</div><div>-    2   127.0.0.1:7004         64          4</div></div></span></div><div><includetail><div><br></div><div>isn't it?</div><div><br></div><div>Thanks,</div><div>ChenZhe</div><div> </div><div style="font:Verdana normal 14px;color:#000;"><div style="FONT-SIZE: 12px;FONT-FAMILY: Arial Narrow;padding:2px 0 2px 0;">------------------ Original ------------------</div><div style="FONT-SIZE: 12px;background:#efefef;padding:8px;"><div id="menu_sender"><b>From: </b> "Liu Yuan"<namei.unix@gmail.com>;</div><div><b>Date: </b> Fri, Mar 15, 2013 02:28 PM</div><div><b>To: </b> "ChenZhe"<cz@de3eb.cn>; <wbr></div><div><b>Cc: </b> "sheepdog"<sheepdog@lists.wpkg.org>; "ChenZhe"<chenzhe@xinnet.com>; <wbr></div><div><b>Subject: </b> Re: [sheepdog] [PATCH] collie: correct command-line options parser</div></div><div> </div>On 03/15/2013 02:00 PM, ChenZhe wrote:<br>> From: ChenZhe <chenzhe@xinnet.com><br>> <br>> "collie cluster recover disable -p7001" not work.<br>> getopt_long() will reorder the options in argv.<br>> so, we need to skip one more argument before getopt() for the subcmd who need third arg.<br>> <br>> Signed-off-by: ChenZhe <chenzhe@xinnet.com><br>> Signed-off-by: ChenZhe <cz@de3eb.cn><br>> ---<br>>  collie/collie.c |    5 ++++-<br>>  1 files changed, 4 insertions(+), 1 deletions(-)<br>> <br>> diff --git a/collie/collie.c b/collie/collie.c<br>> index 08c78eb..2d05f3d 100644<br>> --- a/collie/collie.c<br>> +++ b/collie/collie.c<br>> @@ -348,6 +348,9 @@ int main(int argc, char **argv)<br>>        long_options = build_long_options(sd_opts);<br>>          short_options = build_short_options(sd_opts);<br>>  <br>> +      if(flags & SUBCMD_FLAG_NEED_THIRD_ARG && argc > 3)<br>> +               optind++;<br>> +<br>>    while ((ch = getopt_long(argc, argv, short_options, long_options,<br>>                            &longindex)) >= 0) {<br>>  <br>> @@ -391,7 +394,7 @@ int main(int argc, char **argv)<br>>           }<br>>    }<br>>  <br>> -  if (flags & SUBCMD_FLAG_NEED_THIRD_ARG && argc == optind)<br>> +   if (flags & SUBCMD_FLAG_NEED_THIRD_ARG && optind <= 3)<br>>                subcommand_usage(argv[1], argv[2], EXIT_USAGE);<br>>  <br>>         return command_fn(argc, argv);<br>> <br><br>yliu@K55VM-ubuntu:~/sheepdog$ collie/collie cluster recover disable -p7001<br>Usage: collie cluster recover {force|enable|disable} [-a address] [-f] [-p port] [-h]<br>Available subcommands:<br>  force                   force recover cluster immediately<br>  enable                  enable automatic recovery and run once recover if necessary<br>  disable                 disable automatic recovery<br>Options:<br>  -a, --address           specify the daemon address (default: localhost)<br>  -f, --force             do not prompt for confirmation<br>  -p, --port              specify the daemon port<br>  -h, --help              display this help and exit<br><br>So '-p7001' will catch the wrong option and report the usage, isn't this expected behavior?<br><br>Thanks,<br>Yuan<br></div></includetail></div>