diff --git a/include/common/standard.h b/include/common/standard.h index be0762573..c4c5d64f1 100644 --- a/include/common/standard.h +++ b/include/common/standard.h @@ -760,6 +760,19 @@ char *env_expand(char *in); */ #define fddebug(msg...) do { char *_m = NULL; memprintf(&_m, ##msg); if (_m) write(-1, _m, strlen(_m)); free(_m); } while (0) +/* used from everywhere just to drain results we don't want to read and which + * recent versions of gcc increasingly and annoyingly complain about. + */ +extern int shut_your_big_mouth_gcc_int; + +/* used from everywhere just to drain results we don't want to read and which + * recent versions of gcc increasingly and annoyingly complain about. + */ +static inline void shut_your_big_mouth_gcc(int r) +{ + shut_your_big_mouth_gcc_int = r; +} + /* same as strstr() but case-insensitive */ const char *strnistr(const char *str1, int len_str1, const char *str2, int len_str2); diff --git a/src/appsession.c b/src/appsession.c index a71f186c8..c22be45ce 100644 --- a/src/appsession.c +++ b/src/appsession.c @@ -99,7 +99,7 @@ static struct task *appsession_refresh(struct task *t) (!(global.mode & MODE_QUIET) || (global.mode & MODE_VERBOSE))) { chunk_printf(&trash, "appsession_refresh: cleaning up expired Session '%s' on Server %s\n", element->sessid, element->serverid?element->serverid:"(null)"); - if (write(1, trash.str, trash.len) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(1, trash.str, trash.len)); } /* delete the expired element from within the hash table */ LIST_DEL(&element->hash_list); diff --git a/src/frontend.c b/src/frontend.c index 8a01a4ab9..591c1f21a 100644 --- a/src/frontend.c +++ b/src/frontend.c @@ -184,7 +184,7 @@ int frontend_accept(struct session *s) break; } - if (write(1, trash.str, trash.len) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(1, trash.str, trash.len)); } if (s->fe->mode == PR_MODE_HTTP) diff --git a/src/haproxy.c b/src/haproxy.c index 0ec217e53..5cfebd29a 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -193,6 +193,11 @@ const struct linger nolinger = { .l_onoff = 1, .l_linger = 0 }; char hostname[MAX_HOSTNAME_LEN]; char localpeer[MAX_HOSTNAME_LEN]; +/* used from everywhere just to drain results we don't want to read and which + * recent versions of gcc increasingly and annoyingly complain about. + */ +int shut_your_big_mouth_gcc_int = 0; + /* list of the temporarily limited listeners because of lack of resource */ struct list global_listener_queue = LIST_HEAD_INIT(global_listener_queue); struct task *global_listener_queue_task; @@ -1541,7 +1546,7 @@ int main(int argc, char **argv) if (pidfd >= 0) { char pidstr[100]; snprintf(pidstr, sizeof(pidstr), "%d\n", ret); - if (write(pidfd, pidstr, strlen(pidstr)) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(pidfd, pidstr, strlen(pidstr))); } relative_pid++; /* each child will get a different one */ } diff --git a/src/proto_http.c b/src/proto_http.c index b7982bce3..db6a88700 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -7992,7 +7992,7 @@ void debug_hdr(const char *dir, struct session *t, const char *start, const char UBOUND(max, trash.size - trash.len - 3); trash.len += strlcpy2(trash.str + trash.len, start, max + 1); trash.str[trash.len++] = '\n'; - if (write(1, trash.str, trash.len) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(1, trash.str, trash.len)); } /* diff --git a/src/session.c b/src/session.c index 86dcb8484..21fea399d 100644 --- a/src/session.c +++ b/src/session.c @@ -2359,7 +2359,7 @@ struct task *process_session(struct task *t) s->uniq_id, s->be->id, objt_conn(s->si[0].end) ? (unsigned short)objt_conn(s->si[0].end)->t.sock.fd : -1, objt_conn(s->si[1].end) ? (unsigned short)objt_conn(s->si[1].end)->t.sock.fd : -1); - if (write(1, trash.str, trash.len) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(1, trash.str, trash.len)); } if (s->si[0].state == SI_ST_CLO && @@ -2368,7 +2368,7 @@ struct task *process_session(struct task *t) s->uniq_id, s->be->id, objt_conn(s->si[0].end) ? (unsigned short)objt_conn(s->si[0].end)->t.sock.fd : -1, objt_conn(s->si[1].end) ? (unsigned short)objt_conn(s->si[1].end)->t.sock.fd : -1); - if (write(1, trash.str, trash.len) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(1, trash.str, trash.len)); } } @@ -2473,7 +2473,7 @@ struct task *process_session(struct task *t) s->uniq_id, s->be->id, objt_conn(s->si[0].end) ? (unsigned short)objt_conn(s->si[0].end)->t.sock.fd : -1, objt_conn(s->si[1].end) ? (unsigned short)objt_conn(s->si[1].end)->t.sock.fd : -1); - if (write(1, trash.str, trash.len) < 0) /* shut gcc warning */; + shut_your_big_mouth_gcc(write(1, trash.str, trash.len)); } s->logs.t_close = tv_ms_elapsed(&s->logs.tv_accept, &now);