]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
[BUILD] fix some build warnings on Solaris with is* macros
authorWilly Tarreau <w@1wt.eu>
Tue, 2 Mar 2010 23:16:00 +0000 (00:16 +0100)
committerWilly Tarreau <w@1wt.eu>
Tue, 2 Mar 2010 23:16:00 +0000 (00:16 +0100)
isalnum, isdigit and friends are really annoying because they take
an int in which we should pass an unsigned char, while strings
everywhere use chars. Solaris uses macros relying on an array for
those functions, which easily triggers some warnings showing where
we have mistakenly passed a char instead of an unsigned char or an
int. Those warnings may indicate real bugs on some platforms
depending on the implementation.

src/buffers.c
src/cfgparse.c
src/checks.c
src/standard.c

index 79cc45bf581d02d940382e3a2e4994da755dddd9..2557fe4a0add5037814e81b09a7ac565644d0c77 100644 (file)
@@ -407,7 +407,7 @@ int chunk_htmlencode(struct chunk *dst, struct chunk *src) {
 
                c = src->str[i];
 
-               if (!isascii(c) || !isprint(c) || c == '&' || c == '"' || c == '\'' || c == '<' || c == '>') {
+               if (!isascii(c) || !isprint((unsigned char)c) || c == '&' || c == '"' || c == '\'' || c == '<' || c == '>') {
                        l = snprintf(dst->str + dst->len, free, "&#%u;", (unsigned char)c);
 
                        if (free < l) {
@@ -447,7 +447,7 @@ int chunk_asciiencode(struct chunk *dst, struct chunk *src, char qc) {
 
                c = src->str[i];
 
-               if (!isascii(c) || !isprint(c) || c == '<' || c == '>' || c == qc) {
+               if (!isascii(c) || !isprint((unsigned char)c) || c == '<' || c == '>' || c == qc) {
                        l = snprintf(dst->str + dst->len, free, "<%02X>", (unsigned char)c);
 
                        if (free < l) {
index b5437a6a1a5657184ec60d2ddec381e31ecd9384..147f0185bb7b4372354168f3abd83ffc3bcefb43 100644 (file)
@@ -727,7 +727,8 @@ int cfg_parse_global(const char *file, int linenum, char **args, int kwm)
 
                for (i=0; args[1][i]; i++) {
                        c = args[1][i];
-                       if (!isupper(c) && !islower(c) && !isdigit(c) && c != '_' && c != '-' && c != '.')
+                       if (!isupper((unsigned char)c) && !islower((unsigned char)c) &&
+                           !isdigit((unsigned char)c) && c != '_' && c != '-' && c != '.')
                                break;
                }
 
@@ -2506,7 +2507,8 @@ int cfg_parse_listen(const char *file, int linenum, char **args, int kwm)
 
                                for (i=0; args[2][i]; i++) {
                                        c = args[2][i];
-                                       if (!isupper(c) && !islower(c) && !isdigit(c) && c != '_' && c != '-' && c != '.')
+                                       if (!isupper((unsigned char)c) && !islower((unsigned char)c) &&
+                                           !isdigit((unsigned char)c) && c != '_' && c != '-' && c != '.')
                                                break;
                                }
 
index b235d9e150f292708a42aab202dcc04ddafbe26e..a023bf7fdb7ed1ed9623f98b5eb782c80684a633 100644 (file)
@@ -906,7 +906,8 @@ static int event_srv_chk_r(int fd)
                if ((len < strlen("HTTP/1.0 000\r")) ||
                    (memcmp(trash, "HTTP/1.", 7) != 0 ||
                    (trash[12] != ' ' && trash[12] != '\r')) ||
-                   !isdigit(trash[9]) || !isdigit(trash[10]) || !isdigit(trash[11])) {
+                   !isdigit((unsigned char)trash[9]) || !isdigit((unsigned char)trash[10]) ||
+                   !isdigit((unsigned char)trash[11])) {
 
                        cut_crlf(trash);
                        set_server_check_status(s, HCHK_STATUS_L7RSP, trash);
@@ -941,7 +942,8 @@ static int event_srv_chk_r(int fd)
                /* Check if the server speaks SMTP */
                if ((len < strlen("000\r")) ||
                    (trash[3] != ' ' && trash[3] != '\r') ||
-                   !isdigit(trash[0]) || !isdigit(trash[1]) || !isdigit(trash[2])) {
+                   !isdigit((unsigned char)trash[0]) || !isdigit((unsigned char)trash[1]) ||
+                   !isdigit((unsigned char)trash[2])) {
 
                        cut_crlf(trash);
                        set_server_check_status(s, HCHK_STATUS_L7RSP, trash);
index 2e68936545ae47757bc724822cadd6884b67102a..8106725938871c544cabe32d54a528efef08014e 100644 (file)
@@ -184,7 +184,7 @@ const char *invalid_char(const char *name)
                return name;
 
        while (*name) {
-               if (!isalnum((int)*name) && *name != '.' && *name != ':' &&
+               if (!isalnum((int)(unsigned char)*name) && *name != '.' && *name != ':' &&
                    *name != '_' && *name != '-')
                        return name;
                name++;
@@ -203,7 +203,7 @@ const char *invalid_domainchar(const char *name) {
                return name;
 
        while (*name) {
-               if (!isalnum((int)*name) && *name != '.' &&
+               if (!isalnum((int)(unsigned char)*name) && *name != '.' &&
                    *name != '_' && *name != '-')
                        return name;