aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2023-12-31 14:07:09 +0000
committerRon Yorston <rmy@pobox.com>2023-12-31 14:07:09 +0000
commit62c3c07d04a8e48ce221fe84fd73e2fefb94c760 (patch)
tree706590cb44a4020d9ea3fe9e8c68238a2fd5693c
parent9d619a83a479f6760cdfcadcc0fd0ef1bd110e39 (diff)
downloadbusybox-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.h4
-rw-r--r--win32/winansi.c6
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__)
239int ffs(int i); 240int 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 }