diff options
author | Ron Yorston <rmy@pobox.com> | 2023-12-31 14:07:09 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2023-12-31 14:07:09 +0000 |
commit | 62c3c07d04a8e48ce221fe84fd73e2fefb94c760 (patch) | |
tree | 706590cb44a4020d9ea3fe9e8c68238a2fd5693c | |
parent | 9d619a83a479f6760cdfcadcc0fd0ef1bd110e39 (diff) | |
download | busybox-w32-62c3c07d04a8e48ce221fe84fd73e2fefb94c760.tar.gz busybox-w32-62c3c07d04a8e48ce221fe84fd73e2fefb94c760.tar.bz2 busybox-w32-62c3c07d04a8e48ce221fe84fd73e2fefb94c760.zip |
win32: fix clang error/warning
Since clang doesn't seem to know about ffs(3) make it use
__builtin_ffs() instead.
Fix a warning in process_escape() in winansi.c: result of comparison
of constant -1 with expression of type 'WORD' (aka 'unsigned short')
is always true. Change the error value returned by process_colour()
from -1 to 0xffff.
Costs 16 bytes.
-rw-r--r-- | include/mingw.h | 4 | ||||
-rw-r--r-- | win32/winansi.c | 6 |
2 files changed, 7 insertions, 3 deletions
diff --git a/include/mingw.h b/include/mingw.h index 88da85243..4abdcf459 100644 --- a/include/mingw.h +++ b/include/mingw.h | |||
@@ -236,7 +236,11 @@ int strverscmp(const char *s1, const char *s2); | |||
236 | /* | 236 | /* |
237 | * strings.h | 237 | * strings.h |
238 | */ | 238 | */ |
239 | #if !defined(__clang__) | ||
239 | int ffs(int i); | 240 | int ffs(int i); |
241 | #else | ||
242 | # define ffs(i) __builtin_ffs(i) | ||
243 | #endif | ||
240 | 244 | ||
241 | /* | 245 | /* |
242 | * sys/ioctl.h | 246 | * sys/ioctl.h |
diff --git a/win32/winansi.c b/win32/winansi.c index ff4f4b118..6142a244c 100644 --- a/win32/winansi.c +++ b/win32/winansi.c | |||
@@ -518,7 +518,7 @@ static char *process_colour(char *str, WORD *attr) | |||
518 | { | 518 | { |
519 | long val = strtol(str, (char **)&str, 10); | 519 | long val = strtol(str, (char **)&str, 10); |
520 | 520 | ||
521 | *attr = -1; /* error return */ | 521 | *attr = 0xffff; /* error return */ |
522 | switch (val) { | 522 | switch (val) { |
523 | case 2: | 523 | case 2: |
524 | str = process_24bit(str + 1, attr); | 524 | str = process_24bit(str + 1, attr); |
@@ -628,7 +628,7 @@ static char *process_escape(char *pos) | |||
628 | break; | 628 | break; |
629 | case 38: /* 8/24 bit */ | 629 | case 38: /* 8/24 bit */ |
630 | str = process_colour(str + 1, &t); | 630 | str = process_colour(str + 1, &t); |
631 | if (t != -1) { | 631 | if (t != 0xffff) { |
632 | attr &= ~(FOREGROUND_ALL|FOREGROUND_INTENSITY); | 632 | attr &= ~(FOREGROUND_ALL|FOREGROUND_INTENSITY); |
633 | attr |= t; | 633 | attr |= t; |
634 | } | 634 | } |
@@ -652,7 +652,7 @@ static char *process_escape(char *pos) | |||
652 | break; | 652 | break; |
653 | case 48: /* 8/24 bit */ | 653 | case 48: /* 8/24 bit */ |
654 | str = process_colour(str + 1, &t); | 654 | str = process_colour(str + 1, &t); |
655 | if (t != -1) { | 655 | if (t != 0xffff) { |
656 | attr &= ~(BACKGROUND_ALL|BACKGROUND_INTENSITY); | 656 | attr &= ~(BACKGROUND_ALL|BACKGROUND_INTENSITY); |
657 | attr |= t << 4; | 657 | attr |= t << 4; |
658 | } | 658 | } |