- snprintf(err_buf, sizeof(err_buf),
- "%s%s: %s\n",
- am_server ? "on remote machine: " : "",
- poptBadOption(pc, POPT_BADOPTION_NOALIAS),
- poptStrerror(opt));
+ /* A large opt value means that set_refuse_options()
+ * turned this option off (opt-BASE is its index). */
+ if (opt >= OPT_REFUSED_BASE) {
+ struct poptOption *op =
+ &long_options[opt-OPT_REFUSED_BASE];
+ int n = snprintf(err_buf, sizeof err_buf,
+ "This server does not support --%s\n",
+ op->longName) - 1;
+ if (op->shortName) {
+ snprintf(err_buf+n, sizeof err_buf-n,
+ " (-%c)\n", op->shortName);
+ }
+ } else {
+ snprintf(err_buf, sizeof err_buf,
+ "%s%s: %s\n",
+ am_server ? "on remote machine: " : "",
+ poptBadOption(pc, POPT_BADOPTION_NOALIAS),
+ poptStrerror(opt));
+ }