This will break some of the internal scripts we have here which use "nodeinfo".

I don't have an objection to all this option changing, but we need to make it
clear that many options have changed throughout all the diags.

Ira


On Mon, 26 Jan 2009 11:14:19 +0200
Sasha Khapyorsky <[email protected]> wrote:

> 
> This makes usage of smpquery operations more user friendly - similar to
> saquery each operation now has a shorter alias, string matching is case
> insensitive and abbreviations are allowed for both operation name and
> alias. And it is how this looks:
> 
> Usage: smpquery [options] <op> <dest dr_path|lid|guid> [op params]
> 
> Supported operations (and aliases, case insensitive):
>   NodeInfo (NI) <addr>
>   NodeDesc (ND) <addr>
>   PortInfo (PI) <addr> [<portnum>]
>   SwitchInfo (SI) <addr>
>   PKeyTable (PKeys) <addr> [<portnum>]
>   SL2VLTable (SL2VL) <addr> [<portnum>]
>   VLArbitration (VLArb) <addr> [<portnum>]
>   GUIDInfo (GI) <addr>
> 
> Signed-off-by: Sasha Khapyorsky <[email protected]>
> ---
>  infiniband-diags/src/smpquery.c |   32 +++++++++++++++++---------------
>  1 files changed, 17 insertions(+), 15 deletions(-)
> 
> diff --git a/infiniband-diags/src/smpquery.c b/infiniband-diags/src/smpquery.c
> index 7dcf888..44280e1 100644
> --- a/infiniband-diags/src/smpquery.c
> +++ b/infiniband-diags/src/smpquery.c
> @@ -54,7 +54,7 @@
>  typedef char *(op_fn_t)(ib_portid_t *dest, char **argv, int argc);
>  
>  typedef struct match_rec {
> -     char *name;
> +     const char *name, *alias;
>       op_fn_t *fn;
>       unsigned opt_portnum;
>  } match_rec_t;
> @@ -63,14 +63,14 @@ static op_fn_t    node_desc, node_info, port_info, 
> switch_info, pkey_table,
>       sl2vl_table, vlarb_table, guid_info;
>  
>  static const match_rec_t match_tbl[] = {
> -     { "nodeinfo", node_info },
> -     { "nodedesc", node_desc },
> -     { "portinfo", port_info, 1 },
> -     { "switchinfo", switch_info },
> -     { "pkeys", pkey_table, 1 },
> -     { "sl2vl", sl2vl_table, 1 },
> -     { "vlarb", vlarb_table, 1 },
> -     { "guids", guid_info },
> +     { "NodeInfo", "NI", node_info },
> +     { "NodeDesc", "ND", node_desc },
> +     { "PortInfo", "PI", port_info, 1 },
> +     { "SwitchInfo", "SI", switch_info },
> +     { "PKeyTable", "PKeys", pkey_table, 1 },
> +     { "SL2VLTable", "SL2VL", sl2vl_table, 1 },
> +     { "VLArbitration", "VLArb", vlarb_table, 1 },
> +     { "GUIDInfo", "GI", guid_info },
>       {0}
>  };
>  
> @@ -373,14 +373,15 @@ guid_info(ib_portid_t *dest, char **argv, int argc)
>       return 0;
>  }
>  
> -static op_fn_t *
> -match_op(char *name)
> +static op_fn_t *match_op(char *name)
>  {
>       const match_rec_t *r;
> +     unsigned len = strlen(name);
>       for (r = match_tbl; r->name; r++)
> -             if (!strcmp(r->name, name))
> +             if (!strncasecmp(r->name, name, len) ||
> +                 (r->alias && !strncasecmp(r->alias, name, len)))
>                       return r->fn;
> -     return 0;
> +     return NULL;
>  }
>  
>  static int process_opt(void *context, int ch, char *optarg)
> @@ -422,10 +423,11 @@ int main(int argc, char **argv)
>       };
>  
>       n = sprintf(usage_args, "<op> <dest dr_path|lid|guid> [op params]\n"
> -                 "\nSupported ops:\n");
> +                 "\nSupported ops (and aliases, case insensitive):\n");
>       for (r = match_tbl ; r->name ; r++) {
>               n += snprintf(usage_args + n, sizeof(usage_args) - n,
> -                           "  %s <addr>%s\n", r->name,
> +                           "  %s (%s) <addr>%s\n", r->name,
> +                           r->alias ? r->alias : "",
>                             r->opt_portnum ? " [<portnum>]" : "");
>               if (n >= sizeof(usage_args))
>                       exit(-1);
> -- 
> 1.6.0.4.766.g6fc4a
> 
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to