getopt_long() returns int

Use the right type for variable, as getopt_long() returns an int. Using
char is not a problem on x86, but prevents the return of -1 in case of
parameter reading end. This led to infinite loops on ARM, which is fixed
through the variable type change. An additional counter measure (showing
the problem) would be to print and error out when reading an undefined
parameter, which is added here as well.

This has been forgotten when making the same change for getopt() in
cf9854601c ("getopt() returns int").
This commit is contained in:
Robert Schmidt
2025-03-24 09:19:30 +01:00
parent 677a904b6c
commit 9d796fb31f
2 changed files with 6 additions and 2 deletions
+3 -1
View File
@@ -69,7 +69,7 @@ int main (int argc, char * const argv[])
{NULL, 0, NULL, 0}
};
int option_index;
char option_short;
int option_short;
/*
* Read command line parameters
@@ -94,6 +94,8 @@ int main (int argc, char * const argv[])
output_dir = optarg;
break;
default:
fprintf(stderr, "unknown option %d, exit\n", option_short);
exit(1);
break;
}
}
+3 -1
View File
@@ -69,7 +69,7 @@ int main (int argc, char * const argv[])
{NULL, 0, NULL, 0}
};
int option_index;
char option_short;
int option_short;
/*
* Read command line parameters
@@ -94,6 +94,8 @@ int main (int argc, char * const argv[])
output_dir = optarg;
break;
default:
fprintf(stderr, "unknown option %d, exit\n", option_short);
exit(1);
break;
}
}