| --- a/hostapd/main.c |
| +++ b/hostapd/main.c |
| @@ -31,7 +31,7 @@ |
| #include "config_file.h" |
| #include "eap_register.h" |
| #include "ctrl_iface.h" |
| - |
| +#include "build_features.h" |
| |
| struct hapd_global { |
| void **drv_priv; |
| @@ -692,7 +692,7 @@ int main(int argc, char *argv[]) |
| wpa_supplicant_event = hostapd_wpa_event; |
| wpa_supplicant_event_global = hostapd_wpa_event_global; |
| for (;;) { |
| - c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:vg:G:q"); |
| + c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:g:G:qv::"); |
| if (c < 0) |
| break; |
| switch (c) { |
| @@ -729,6 +729,8 @@ int main(int argc, char *argv[]) |
| break; |
| #endif /* CONFIG_DEBUG_LINUX_TRACING */ |
| case 'v': |
| + if (optarg) |
| + exit(!has_feature(optarg)); |
| show_version(); |
| exit(1); |
| case 'g': |
| --- a/wpa_supplicant/main.c |
| +++ b/wpa_supplicant/main.c |
| @@ -12,6 +12,7 @@ |
| #endif /* __linux__ */ |
| |
| #include "common.h" |
| +#include "build_features.h" |
| #include "crypto/crypto.h" |
| #include "fst/fst.h" |
| #include "wpa_supplicant_i.h" |
| @@ -203,7 +204,7 @@ int main(int argc, char *argv[]) |
| |
| for (;;) { |
| c = getopt(argc, argv, |
| - "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuvW"); |
| + "b:Bc:C:D:de:f:g:G:hH:i:I:KLMm:No:O:p:P:qsTtuv::W"); |
| if (c < 0) |
| break; |
| switch (c) { |
| @@ -306,8 +307,12 @@ int main(int argc, char *argv[]) |
| break; |
| #endif /* CONFIG_CTRL_IFACE_DBUS_NEW */ |
| case 'v': |
| - printf("%s\n", wpa_supplicant_version); |
| - exitcode = 0; |
| + if (optarg) { |
| + exitcode = !has_feature(optarg); |
| + } else { |
| + printf("%s\n", wpa_supplicant_version); |
| + exitcode = 0; |
| + } |
| goto out; |
| case 'W': |
| params.wait_for_monitor++; |