Make fi_info a little more general:

./simple/fi_info -h
usage: ./simple/fi_info
  -n, --node=NAME               node name or address
  -p, --port=PNUM               port number
  -c, --caps=CAP1|CAP2..        one or more capabilities: FI_MSG|FI_RMA...
  -m, --mode=MOD1|MOD2..        one or more modes, default all modes
  -e, --ep_type=EPTYPE          specify single endpoint type: FI_EP_MSG, FI_EP_DGRAM...

Use like:

$ # display proivders' fi_info structure which match criteria:
$ fi_info -e FI_EP_MSG -c "FI_MSG|FI_RMA"
...
> > -static struct fi_info hints, *info;
> > -static char *node, *port;
> 
> I don't feel too strongly about the hints/node/port move. I wanted them
> declared closer to their use and explicitly initialized to NULLs.

Are these variables relevant to the program as a whole, or the main function in particular?  If the former, global is a better choice, and global variables are initialized to 0 by definition.

> I was going to go through and put some things in shared.c, but that is a
> separate patch.

I'm good with this.