2022-05-14 02:24:42

by Thiago Becker

[permalink] [raw]
Subject: [PATCH] nfsrahead: getopt return type is int

While compiling for aarch64, the compiler throws the warning below
because char is unsigned for aarch64.

main.c: In function ‘main’:
main.c:145:48: warning: comparison is always true due to limited range of data type [-Wtype-limits]
145 | while((opt = getopt(argc, argv, "dF")) != -1) {
|

This makes nfsrahead to run forever. Fix opt type to the same as getopt
type.

Signed-off-by: Thiago Becker <[email protected]>
---
tools/nfsrahead/main.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/tools/nfsrahead/main.c b/tools/nfsrahead/main.c
index 5fae941c..c83c6f71 100644
--- a/tools/nfsrahead/main.c
+++ b/tools/nfsrahead/main.c
@@ -135,10 +135,9 @@ static int conf_get_readahead(const char *kind) {

int main(int argc, char **argv)
{
- int ret = 0, retry;
+ int ret = 0, retry, opt;
struct device_info device;
unsigned int readahead = 128, log_level, log_stderr = 0;
- char opt;


log_level = D_ALL & ~D_GENERAL;
--
2.35.1



2022-05-26 18:26:13

by Steve Dickson

[permalink] [raw]
Subject: Re: [PATCH] nfsrahead: getopt return type is int



On 5/13/22 3:18 PM, Thiago Becker wrote:
> While compiling for aarch64, the compiler throws the warning below
> because char is unsigned for aarch64.
>
> main.c: In function ‘main’:
> main.c:145:48: warning: comparison is always true due to limited range of data type [-Wtype-limits]
> 145 | while((opt = getopt(argc, argv, "dF")) != -1) {
> |
>
> This makes nfsrahead to run forever. Fix opt type to the same as getopt
> type.
>
> Signed-off-by: Thiago Becker <[email protected]>
Committed... (tag: nfs-utils-2-6-2-rc5)

steved
> ---
> tools/nfsrahead/main.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/tools/nfsrahead/main.c b/tools/nfsrahead/main.c
> index 5fae941c..c83c6f71 100644
> --- a/tools/nfsrahead/main.c
> +++ b/tools/nfsrahead/main.c
> @@ -135,10 +135,9 @@ static int conf_get_readahead(const char *kind) {
>
> int main(int argc, char **argv)
> {
> - int ret = 0, retry;
> + int ret = 0, retry, opt;
> struct device_info device;
> unsigned int readahead = 128, log_level, log_stderr = 0;
> - char opt;
>
>
> log_level = D_ALL & ~D_GENERAL;