| --- a/hostapd/main.c |
| +++ b/hostapd/main.c |
| @@ -15,6 +15,7 @@ |
| #include "utils/common.h" |
| #include "utils/eloop.h" |
| #include "utils/uuid.h" |
| +#include "utils/build_features.h" |
| #include "crypto/random.h" |
| #include "crypto/tls.h" |
| #include "common/version.h" |
| @@ -691,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:"); |
| + c = getopt(argc, argv, "b:Bde:f:hi:KP:sSTtu:g:G:v::"); |
| if (c < 0) |
| break; |
| switch (c) { |
| @@ -728,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); |
| break; |
| --- a/wpa_supplicant/main.c |
| +++ b/wpa_supplicant/main.c |
| @@ -12,6 +12,7 @@ |
| #endif /* __linux__ */ |
| |
| #include "common.h" |
| +#include "build_features.h" |
| #include "fst/fst.h" |
| #include "wpa_supplicant_i.h" |
| #include "driver_i.h" |
| @@ -202,7 +203,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) { |
| @@ -305,8 +306,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++; |