fio_client_add_cmd_option(client, opt);
}
+static void show_closest_option(const char *name)
+{
+ int best_option, best_distance;
+ int i, distance;
+
+ while (*name == '-')
+ name++;
+
+ best_option = -1;
+ best_distance = INT_MAX;
+ i = 0;
+ while (l_opts[i].name) {
+ distance = string_distance(name, l_opts[i].name);
+ if (distance < best_distance) {
+ best_distance = distance;
+ best_option = i;
+ }
+ i++;
+ }
+
+ if (best_option != -1)
+ log_err("Did you mean %s?\n", l_opts[best_option].name);
+}
+
int parse_cmd_line(int argc, char *argv[], int client_type)
{
struct thread_data *td = NULL;
case '?':
log_err("%s: unrecognized option '%s'\n", argv[0],
argv[optind - 1]);
+ show_closest_option(argv[optind - 1]);
default:
do_exit++;
exit_val = 1;
* Option match, levenshtein distance. Handy for not quite remembering what
* the option name is.
*/
-static int string_distance(const char *s1, const char *s2)
+int string_distance(const char *s1, const char *s2)
{
unsigned int s1_len = strlen(s1);
unsigned int s2_len = strlen(s2);
extern int check_str_time(const char *p, long long *val, int);
extern int str_to_float(const char *str, double *val, int is_time);
+extern int string_distance(const char *s1, const char *s2);
+
/*
* Handlers for the options
*/