diff -rup nano-2.0.9.orig/src/chars.c nano-2.0.9/src/chars.c --- nano-2.0.9.orig/src/chars.c 2008-04-02 05:49:33.000000000 +0200 +++ nano-2.0.9/src/chars.c 2009-09-21 13:22:25.976235192 +0200 @@ -79,6 +79,18 @@ bool is_byte(int c) return ((unsigned int)c == (unsigned char)c); } +static void mbtowc_reset(void) +{ + int rv = mbtowc(NULL, NULL, 0); + (void) rv; +} + +static void wctomb_reset(void) +{ + int rv = wctomb(NULL, 0); + (void) rv; +} + /* This function is equivalent to isalnum() for multibyte characters. */ bool is_alnum_mbchar(const char *c) { @@ -89,7 +101,7 @@ bool is_alnum_mbchar(const char *c) wchar_t wc; if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); wc = bad_wchar; } @@ -109,7 +121,7 @@ bool is_blank_mbchar(const char *c) wchar_t wc; if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); wc = bad_wchar; } @@ -156,7 +168,7 @@ bool is_cntrl_mbchar(const char *c) wchar_t wc; if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); wc = bad_wchar; } @@ -177,7 +189,7 @@ bool is_punct_mbchar(const char *c) int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX); if (c_mb_len < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); wc = bad_wchar; } @@ -243,14 +255,14 @@ char *control_mbrep(const char *c, char wchar_t wc; if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); *crep_len = bad_mbchar_len; strncpy(crep, bad_mbchar, *crep_len); } else { *crep_len = wctomb(crep, control_wrep(wc)); if (*crep_len < 0) { - wctomb(NULL, 0); + wctomb_reset(); *crep_len = 0; } } @@ -278,14 +290,14 @@ char *mbrep(const char *c, char *crep, i /* Reject invalid Unicode characters. */ if (mbtowc(&wc, c, MB_CUR_MAX) < 0 || !is_valid_unicode(wc)) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); *crep_len = bad_mbchar_len; strncpy(crep, bad_mbchar, *crep_len); } else { *crep_len = wctomb(crep, wc); if (*crep_len < 0) { - wctomb(NULL, 0); + wctomb_reset(); *crep_len = 0; } } @@ -311,7 +323,7 @@ int mbwidth(const char *c) int width; if (mbtowc(&wc, c, MB_CUR_MAX) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); wc = bad_wchar; } @@ -356,7 +368,7 @@ char *make_mbchar(long chr, int *chr_mb_ /* Reject invalid Unicode characters. */ if (*chr_mb_len < 0 || !is_valid_unicode((wchar_t)chr)) { - wctomb(NULL, 0); + wctomb_reset(); *chr_mb_len = 0; } } else { @@ -388,7 +400,8 @@ int parse_mbchar(const char *buf, char * /* If buf contains an invalid multibyte character, only * interpret buf's first byte. */ if (buf_mb_len < 0) { - mblen(NULL, 0); + int rv = mblen(NULL, 0); + (void) rv; buf_mb_len = 1; } else if (buf_mb_len == 0) buf_mb_len++; @@ -545,7 +558,7 @@ int mbstrncasecmp(const char *s1, const s1_mb_len = parse_mbchar(s1, s1_mb, NULL); if (mbtowc(&ws1, s1_mb, s1_mb_len) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); ws1 = (unsigned char)*s1_mb; bad_s1_mb = TRUE; } @@ -553,7 +566,7 @@ int mbstrncasecmp(const char *s1, const s2_mb_len = parse_mbchar(s2, s2_mb, NULL); if (mbtowc(&ws2, s2_mb, s2_mb_len) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); ws2 = (unsigned char)*s2_mb; bad_s2_mb = TRUE; } @@ -781,7 +794,7 @@ char *mbstrchr(const char *s, const char int c_mb_len = mbtowc(&wc, c, MB_CUR_MAX); if (c_mb_len < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); wc = (unsigned char)*c; bad_c_mb = TRUE; } @@ -790,7 +803,7 @@ char *mbstrchr(const char *s, const char int s_mb_len = parse_mbchar(s, s_mb, NULL); if (mbtowc(&ws, s_mb, s_mb_len) < 0) { - mbtowc(NULL, NULL, 0); + mbtowc_reset(); ws = (unsigned char)*s; bad_s_mb = TRUE; } diff -rup nano-2.0.9.orig/src/files.c nano-2.0.9/src/files.c --- nano-2.0.9.orig/src/files.c 2008-08-24 07:49:25.000000000 +0200 +++ nano-2.0.9/src/files.c 2009-09-21 13:24:50.585047697 +0200 @@ -1057,6 +1057,7 @@ char *get_full_path(const char *origpath free(d_there); d_there = NULL; } else { + int rv; free(d_there); /* Get the full path. */ @@ -1082,7 +1083,8 @@ char *get_full_path(const char *origpath /* Finally, go back to the path specified in d_here, * where we were before. We don't check for a chdir() * error, since we can do nothing if we get one. */ - chdir(d_here); + rv = chdir(d_here); + (void) rv; /* Free d_here, since we're done using it. */ free(d_here); diff -rup nano-2.0.9.orig/src/chars.c nano-2.0.9/src/chars.c --- nano-2.0.9.orig/src/chars.c 2009-09-21 21:23:45.682379298 +0200 +++ nano-2.0.9/src/chars.c 2009-09-21 21:28:50.143093880 +0200 @@ -81,14 +81,12 @@ bool is_byte(int c) static void mbtowc_reset(void) { - int rv = mbtowc(NULL, NULL, 0); - (void) rv; + IGNORE_CALL_RESULT(mbtowc(NULL, NULL, 0)); } static void wctomb_reset(void) { - int rv = wctomb(NULL, 0); - (void) rv; + IGNORE_CALL_RESULT(wctomb(NULL, 0)); } /* This function is equivalent to isalnum() for multibyte characters. */ @@ -400,8 +398,7 @@ int parse_mbchar(const char *buf, char * /* If buf contains an invalid multibyte character, only * interpret buf's first byte. */ if (buf_mb_len < 0) { - int rv = mblen(NULL, 0); - (void) rv; + IGNORE_CALL_RESULT(mblen(NULL, 0)); buf_mb_len = 1; } else if (buf_mb_len == 0) buf_mb_len++; diff -rup nano-2.0.9.orig/src/files.c nano-2.0.9/src/files.c --- nano-2.0.9.orig/src/files.c 2009-09-21 21:23:45.683422811 +0200 +++ nano-2.0.9/src/files.c 2009-09-21 21:29:11.684110349 +0200 @@ -1057,7 +1057,6 @@ char *get_full_path(const char *origpath free(d_there); d_there = NULL; } else { - int rv; free(d_there); /* Get the full path. */ @@ -1083,8 +1082,7 @@ char *get_full_path(const char *origpath /* Finally, go back to the path specified in d_here, * where we were before. We don't check for a chdir() * error, since we can do nothing if we get one. */ - rv = chdir(d_here); - (void) rv; + IGNORE_CALL_RESULT(chdir(d_here)); /* Free d_here, since we're done using it. */ free(d_here); diff -rup nano-2.0.9.orig/src/nano.h nano-2.0.9/src/nano.h --- nano-2.0.9.orig/src/nano.h 2008-04-02 05:49:33.000000000 +0200 +++ nano-2.0.9/src/nano.h 2009-09-21 21:27:50.795110162 +0200 @@ -44,6 +44,9 @@ #include #endif +/* Suppress warnings for __attribute__((warn_unused_result)) */ +#define IGNORE_CALL_RESULT(call) do { if (call) {} } while(0) + /* Macros for flags. */ #define SET(bit) flags |= bit #define UNSET(bit) flags &= ~bit