From: Karel Zak Date: Tue, 1 Apr 2025 17:45:01 +0200 Subject: treewide: avoid strcasecmp() for ASCII-only strings Use cctype.h for locale-independent string comparison and to avoid tricky string conversions like in tr_TR locales. Fixes: https://github.com/util-linux/util-linux/issues/3490 Signed-off-by: Karel Zak (cherry picked from commit 107293a68206f24e531fd906e8114b578911bb7a) --- lib/blkdev.c | 7 ++++--- lib/colors.c | 3 ++- lib/logindefs.c | 7 ++++--- lib/match.c | 5 +++-- lib/sysfs.c | 3 ++- libsmartcols/src/filter-param.c | 5 +++-- login-utils/chfn.c | 3 ++- login-utils/lslogins.c | 3 ++- lsfd-cmd/lsfd.c | 3 ++- misc-utils/fincore.c | 3 ++- misc-utils/findmnt.c | 11 ++++++----- misc-utils/logger.c | 3 ++- misc-utils/lsclocks.c | 3 ++- misc-utils/lslocks.c | 3 ++- misc-utils/uuidparse.c | 3 ++- misc-utils/wipefs.c | 3 ++- schedutils/ionice.c | 3 ++- sys-utils/chmem.c | 7 ++++--- sys-utils/dmesg.c | 5 +++-- sys-utils/irq-common.c | 11 ++++++----- sys-utils/ldattach.c | 3 ++- sys-utils/losetup.c | 3 ++- sys-utils/lscpu.c | 5 +++-- sys-utils/lsipc.c | 3 ++- sys-utils/lsmem.c | 27 +++++++++++++++------------ sys-utils/lsns.c | 3 ++- sys-utils/prlimit.c | 3 ++- sys-utils/rfkill.c | 3 ++- sys-utils/swapon.c | 3 ++- sys-utils/wdctl.c | 5 +++-- sys-utils/zramctl.c | 3 ++- term-utils/script.c | 5 +++-- tests/helpers/test_mkfds.c | 7 ++++--- 33 files changed, 101 insertions(+), 66 deletions(-) diff --git a/lib/blkdev.c b/lib/blkdev.c index b10da99..110abcd 100644 --- a/lib/blkdev.c +++ b/lib/blkdev.c @@ -35,6 +35,7 @@ #include "all-io.h" #include "blkdev.h" #include "c.h" +#include "cctype.h" #include "linux_version.h" #include "fileutils.h" #include "nls.h" @@ -384,14 +385,14 @@ int blkdev_lock(int fd, const char *devname, const char *lockmode) if (!lockmode) return 0; - if (strcasecmp(lockmode, "yes") == 0 || + if (c_strcasecmp(lockmode, "yes") == 0 || strcmp(lockmode, "1") == 0) oper = LOCK_EX; - else if (strcasecmp(lockmode, "nonblock") == 0) + else if (c_strcasecmp(lockmode, "nonblock") == 0) oper = LOCK_EX | LOCK_NB; - else if (strcasecmp(lockmode, "no") == 0 || + else if (c_strcasecmp(lockmode, "no") == 0 || strcmp(lockmode, "0") == 0) return 0; else { diff --git a/lib/colors.c b/lib/colors.c index c9a9518..4852a87 100644 --- a/lib/colors.c +++ b/lib/colors.c @@ -32,6 +32,7 @@ #endif #include "c.h" +#include "cctype.h" #include "colors.h" #include "pathnames.h" #include "strutils.h" @@ -744,7 +745,7 @@ int colormode_from_string(const char *str) assert(ARRAY_SIZE(modes) == __UL_NCOLORMODES); for (i = 0; i < ARRAY_SIZE(modes); i++) { - if (strcasecmp(str, modes[i]) == 0) + if (c_strcasecmp(str, modes[i]) == 0) return i; } diff --git a/lib/logindefs.c b/lib/logindefs.c index 7b69599..4fee839 100644 --- a/lib/logindefs.c +++ b/lib/logindefs.c @@ -32,6 +32,7 @@ #include #include "c.h" +#include "cctype.h" #include "closestream.h" #include "logindefs.h" #include "nls.h" @@ -171,7 +172,7 @@ static struct item *search(const char *name) ptr = list; while (ptr != NULL) { - if (strcasecmp(name, ptr->name) == 0) + if (c_strcasecmp(name, ptr->name) == 0) return ptr; ptr = ptr->next; } @@ -185,7 +186,7 @@ static const char *search_config(const char *name) ptr = list; while (ptr != NULL) { - if (strcasecmp(name, ptr->name) == 0) + if (c_strcasecmp(name, ptr->name) == 0) return ptr->path; ptr = ptr->next; } @@ -196,7 +197,7 @@ static const char *search_config(const char *name) int getlogindefs_bool(const char *name, int dflt) { struct item *ptr = search(name); - return ptr && ptr->value ? (strcasecmp(ptr->value, "yes") == 0) : dflt; + return ptr && ptr->value ? (c_strcasecmp(ptr->value, "yes") == 0) : dflt; } unsigned long getlogindefs_num(const char *name, unsigned long dflt) diff --git a/lib/match.c b/lib/match.c index a286a19..2e0b3ce 100644 --- a/lib/match.c +++ b/lib/match.c @@ -8,6 +8,7 @@ #include #include "match.h" +#include "cctype.h" /* * match_fstype: @@ -39,10 +40,10 @@ int match_fstype(const char *type, const char *pattern) len = strlen(type); p = pattern; while(1) { - if (!strncmp(p, "no", 2) && !strncasecmp(p+2, type, len) && + if (!strncmp(p, "no", 2) && !c_strncasecmp(p+2, type, len) && (p[len+2] == 0 || p[len+2] == ',')) return 0; - if (strncasecmp(p, type, len) == 0 && (p[len] == 0 || p[len] == ',')) + if (c_strncasecmp(p, type, len) == 0 && (p[len] == 0 || p[len] == ',')) return !no; p = strchr(p,','); if (!p) diff --git a/lib/sysfs.c b/lib/sysfs.c index ac9c5c3..0a016be 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -11,6 +11,7 @@ #include #include "c.h" +#include "cctype.h" #include "pathnames.h" #include "sysfs.h" #include "fileutils.h" @@ -576,7 +577,7 @@ int sysfs_blkdev_get_wholedisk( struct path_cxt *pc, tmp = uuid; prefix = uuid ? strsep(&tmp, "-") : NULL; - if (prefix && strncasecmp(prefix, "part", 4) == 0) + if (prefix && c_strncasecmp(prefix, "part", 4) == 0) is_part = 1; free(uuid); diff --git a/libsmartcols/src/filter-param.c b/libsmartcols/src/filter-param.c index 4a67cbf..63af4c6 100644 --- a/libsmartcols/src/filter-param.c +++ b/libsmartcols/src/filter-param.c @@ -4,6 +4,7 @@ #include #include +#include "cctype.h" #include "rpmatch.h" #include "smartcolsP.h" @@ -627,8 +628,8 @@ static int string_cast(int type, struct filter_param *n) case SCOLS_DATA_BOOLEAN: { bool x = str && *str - && (strcasecmp(str, "1") == 0 - || strcasecmp(str, "true") == 0 + && (strcmp(str, "1") == 0 + || c_strcasecmp(str, "true") == 0 || rpmatch(str) == RPMATCH_YES); n->val.boolean = x; break; diff --git a/login-utils/chfn.c b/login-utils/chfn.c index b82492e..7067ffa 100644 --- a/login-utils/chfn.c +++ b/login-utils/chfn.c @@ -33,6 +33,7 @@ #include #include "c.h" +#include "cctype.h" #include "env.h" #include "closestream.h" #include "islocal.h" @@ -245,7 +246,7 @@ static char *ask_new_field(struct chfn_control *ctl, const char *question, free(buf); return xstrdup(def_val); } - if (!strcasecmp(buf, "none")) { + if (!c_strcasecmp(buf, "none")) { free(buf); ctl->changed = 1; return xstrdup(""); diff --git a/login-utils/lslogins.c b/login-utils/lslogins.c index ae7047d..88b0c4b 100644 --- a/login-utils/lslogins.c +++ b/login-utils/lslogins.c @@ -52,6 +52,7 @@ #endif #include "c.h" +#include "cctype.h" #include "nls.h" #include "closestream.h" #include "xalloc.h" @@ -324,7 +325,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(coldescs); i++) { const char *cn = coldescs[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/lsfd-cmd/lsfd.c b/lsfd-cmd/lsfd.c index 714083e..78f0c2c 100644 --- a/lsfd-cmd/lsfd.c +++ b/lsfd-cmd/lsfd.c @@ -46,6 +46,7 @@ #define PF_KTHREAD 0x00200000 /* I am a kernel thread */ #include "c.h" +#include "cctype.h" #include "list.h" #include "closestream.h" #include "column-list-table.h" @@ -611,7 +612,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/misc-utils/fincore.c b/misc-utils/fincore.c index 25ce5aa..ea48f3e 100644 --- a/misc-utils/fincore.c +++ b/misc-utils/fincore.c @@ -27,6 +27,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "closestream.h" #include "xalloc.h" @@ -149,7 +150,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/misc-utils/findmnt.c b/misc-utils/findmnt.c index fbfb84c..46955fc 100644 --- a/misc-utils/findmnt.c +++ b/misc-utils/findmnt.c @@ -44,6 +44,7 @@ #include "nls.h" #include "closestream.h" #include "c.h" +#include "cctype.h" #include "strutils.h" #include "xalloc.h" #include "optutils.h" @@ -344,13 +345,13 @@ static int poll_action_name_to_id(const char *name, size_t namesz) { int id = -1; - if (strncasecmp(name, "move", namesz) == 0 && namesz == 4) + if (c_strncasecmp(name, "move", namesz) == 0 && namesz == 4) id = MNT_TABDIFF_MOVE; - else if (strncasecmp(name, "mount", namesz) == 0 && namesz == 5) + else if (c_strncasecmp(name, "mount", namesz) == 0 && namesz == 5) id = MNT_TABDIFF_MOUNT; - else if (strncasecmp(name, "umount", namesz) == 0 && namesz == 6) + else if (c_strncasecmp(name, "umount", namesz) == 0 && namesz == 6) id = MNT_TABDIFF_UMOUNT; - else if (strncasecmp(name, "remount", namesz) == 0 && namesz == 7) + else if (c_strncasecmp(name, "remount", namesz) == 0 && namesz == 7) id = MNT_TABDIFF_REMOUNT; else warnx(_("unknown action: %s"), name); @@ -396,7 +397,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = column_id_to_name(i); - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/misc-utils/logger.c b/misc-utils/logger.c index bcdff06..a96b005 100644 --- a/misc-utils/logger.c +++ b/misc-utils/logger.c @@ -56,6 +56,7 @@ #include "all-io.h" #include "c.h" +#include "cctype.h" #include "closestream.h" #include "nls.h" #include "pathnames.h" @@ -220,7 +221,7 @@ static int decode(const char *name, const CODE *codetab) return -1; } for (c = codetab; c->c_name; c++) - if (!strcasecmp(name, c->c_name)) + if (!c_strcasecmp(name, c->c_name)) return (c->c_val); return -1; diff --git a/misc-utils/lsclocks.c b/misc-utils/lsclocks.c index 0a87256..376bc6e 100644 --- a/misc-utils/lsclocks.c +++ b/misc-utils/lsclocks.c @@ -31,6 +31,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "strutils.h" #include "timeutils.h" @@ -172,7 +173,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/misc-utils/lslocks.c b/misc-utils/lslocks.c index bbf5d38..6cc7431 100644 --- a/misc-utils/lslocks.c +++ b/misc-utils/lslocks.c @@ -43,6 +43,7 @@ #include "xalloc.h" #include "strutils.h" #include "c.h" +#include "cctype.h" #include "list.h" #include "closestream.h" #include "optutils.h" @@ -552,7 +553,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/misc-utils/uuidparse.c b/misc-utils/uuidparse.c index 7ad1e2e..98f2aee 100644 --- a/misc-utils/uuidparse.c +++ b/misc-utils/uuidparse.c @@ -48,6 +48,7 @@ #include #include "c.h" +#include "cctype.h" #include "closestream.h" #include "nls.h" #include "optutils.h" @@ -118,7 +119,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/misc-utils/wipefs.c b/misc-utils/wipefs.c index 148907f..4bd2e58 100644 --- a/misc-utils/wipefs.c +++ b/misc-utils/wipefs.c @@ -40,6 +40,7 @@ #include "all-io.h" #include "match.h" #include "c.h" +#include "cctype.h" #include "closestream.h" #include "optutils.h" #include "blkdev.h" @@ -126,7 +127,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/schedutils/ionice.c b/schedutils/ionice.c index 6e897ec..0ac65b1 100644 --- a/schedutils/ionice.c +++ b/schedutils/ionice.c @@ -19,6 +19,7 @@ #include "nls.h" #include "strutils.h" #include "c.h" +#include "cctype.h" #include "closestream.h" static int tolerant; @@ -65,7 +66,7 @@ static int parse_ioclass(const char *str) size_t i; for (i = 0; i < ARRAY_SIZE(to_prio); i++) - if (!strcasecmp(str, to_prio[i])) + if (!c_strcasecmp(str, to_prio[i])) return i; return -1; } diff --git a/sys-utils/chmem.c b/sys-utils/chmem.c index 4105d19..69e04fe 100644 --- a/sys-utils/chmem.c +++ b/sys-utils/chmem.c @@ -25,6 +25,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "path.h" #include "strutils.h" @@ -84,7 +85,7 @@ static int zone_name_to_id(const char *name) size_t i; for (i = 0; i < ARRAY_SIZE(zone_names); i++) { - if (!strcasecmp(name, zone_names[i])) + if (!c_strcasecmp(name, zone_names[i])) return i; } return -1; @@ -133,7 +134,7 @@ static int chmem_size(struct chmem_desc *desc, int enable, int zone_id) zn = zone_names[zone_id]; if (enable && !strcasestr(line, zn)) continue; - if (!enable && strncasecmp(line, zn, strlen(zn)) != 0) + if (!enable && c_strncasecmp(line, zn, strlen(zn)) != 0) continue; } else if (enable) { /* By default, use zone Movable for online, if valid */ @@ -218,7 +219,7 @@ static int chmem_range(struct chmem_desc *desc, int enable, int zone_id) warnx(_("%s enable failed: Zone mismatch"), str); continue; } - if (!enable && strncasecmp(line, zn, strlen(zn)) != 0) { + if (!enable && c_strncasecmp(line, zn, strlen(zn)) != 0) { warnx(_("%s disable failed: Zone mismatch"), str); continue; } diff --git a/sys-utils/dmesg.c b/sys-utils/dmesg.c index 75ca4b6..dc9a287 100644 --- a/sys-utils/dmesg.c +++ b/sys-utils/dmesg.c @@ -29,6 +29,7 @@ #include #include "c.h" +#include "cctype.h" #include "colors.h" #include "nls.h" #include "strutils.h" @@ -460,7 +461,7 @@ static int parse_level(const char *str, size_t len) for (i = 0; i < ARRAY_SIZE(level_names); i++) { const char *n = level_names[i].name; - if (strncasecmp(str, n, len) == 0 && *(n + len) == '\0') + if (c_strncasecmp(str, n, len) == 0 && *(n + len) == '\0') return i + offset; } } @@ -498,7 +499,7 @@ static int parse_facility(const char *str, size_t len) for (i = 0; i < ARRAY_SIZE(facility_names); i++) { const char *n = facility_names[i].name; - if (strncasecmp(str, n, len) == 0 && *(n + len) == '\0') + if (c_strncasecmp(str, n, len) == 0 && *(n + len) == '\0') return i; } } diff --git a/sys-utils/irq-common.c b/sys-utils/irq-common.c index f069d8a..e546fcc 100644 --- a/sys-utils/irq-common.c +++ b/sys-utils/irq-common.c @@ -25,6 +25,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "pathnames.h" #include "strutils.h" @@ -89,7 +90,7 @@ int irq_column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); @@ -407,13 +408,13 @@ static void sort_result(struct irq_output *out, void set_sort_func_by_name(struct irq_output *out, const char *name) { - if (strcasecmp(name, "IRQ") == 0) + if (c_strcasecmp(name, "IRQ") == 0) out->sort_cmp_func = cmp_interrupts; - else if (strcasecmp(name, "TOTAL") == 0) + else if (c_strcasecmp(name, "TOTAL") == 0) out->sort_cmp_func = cmp_total; - else if (strcasecmp(name, "DELTA") == 0) + else if (c_strcasecmp(name, "DELTA") == 0) out->sort_cmp_func = cmp_delta; - else if (strcasecmp(name, "NAME") == 0) + else if (c_strcasecmp(name, "NAME") == 0) out->sort_cmp_func = cmp_name; else errx(EXIT_FAILURE, _("unsupported column name to sort output")); diff --git a/sys-utils/ldattach.c b/sys-utils/ldattach.c index 2a24b3d..e06047c 100644 --- a/sys-utils/ldattach.c +++ b/sys-utils/ldattach.c @@ -22,6 +22,7 @@ #include #include "c.h" +#include "cctype.h" #include "all-io.h" #include "nls.h" #include "strutils.h" @@ -152,7 +153,7 @@ static int lookup_table(const struct ld_table *tab, const char *str) const struct ld_table *t; for (t = tab; t && t->name; t++) - if (!strcasecmp(t->name, str)) + if (!c_strcasecmp(t->name, str)) return t->value; return -1; } diff --git a/sys-utils/losetup.c b/sys-utils/losetup.c index 7134542..eafab72 100644 --- a/sys-utils/losetup.c +++ b/sys-utils/losetup.c @@ -26,6 +26,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "strutils.h" #include "loopdev.h" @@ -124,7 +125,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/lscpu.c b/sys-utils/lscpu.c index ffec372..108efb1 100644 --- a/sys-utils/lscpu.c +++ b/sys-utils/lscpu.c @@ -29,6 +29,7 @@ #include +#include "cctype.h" #include "closestream.h" #include "optutils.h" #include "c_strtod.h" @@ -186,7 +187,7 @@ cpu_column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(coldescs_cpu); i++) { const char *cn = coldescs_cpu[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); @@ -201,7 +202,7 @@ cache_column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(coldescs_cache); i++) { const char *cn = coldescs_cache[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/lsipc.c b/sys-utils/lsipc.c index 133957e..693be9b 100644 --- a/sys-utils/lsipc.c +++ b/sys-utils/lsipc.c @@ -35,6 +35,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "closestream.h" #include "strutils.h" @@ -244,7 +245,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(coldescs); i++) { const char *cn = coldescs[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) { + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) { if (i > COL_CTIME) { if (i >= LOWER && i <= UPPER) return i; diff --git a/sys-utils/lsmem.c b/sys-utils/lsmem.c index 9aa6745..2b79114 100644 --- a/sys-utils/lsmem.c +++ b/sys-utils/lsmem.c @@ -11,23 +11,26 @@ * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. */ -#include -#include -#include -#include -#include -#include -#include -#include #include #include +#include +#include #include #include #include #include -#include + #include +#include "c.h" +#include "cctype.h" +#include "nls.h" +#include "path.h" +#include "strutils.h" +#include "closestream.h" +#include "xalloc.h" +#include "optutils.h" + #define _PATH_SYS_MEMORY "/sys/devices/system/memory" #define MEMORY_STATE_ONLINE 0 @@ -150,7 +153,7 @@ static int zone_name_to_id(const char *name) size_t i; for (i = 0; i < ARRAY_SIZE(zone_names); i++) { - if (!strcasecmp(name, zone_names[i])) + if (!c_strcasecmp(name, zone_names[i])) return i; } return ZONE_UNKNOWN; @@ -166,7 +169,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(coldescs); i++) { const char *cn = coldescs[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); @@ -737,7 +740,7 @@ int main(int argc, char **argv) int split[ARRAY_SIZE(coldescs)] = { 0 }; static size_t nsplits = 0; - if (strcasecmp(splitarg, "none") == 0) + if (c_strcasecmp(splitarg, "none") == 0) ; else if (string_add_to_idarray(splitarg, split, ARRAY_SIZE(split), &nsplits, column_name_to_id) < 0) diff --git a/sys-utils/lsns.c b/sys-utils/lsns.c index fc590f8..812afe7 100644 --- a/sys-utils/lsns.c +++ b/sys-utils/lsns.c @@ -42,6 +42,7 @@ #include "nls.h" #include "xalloc.h" #include "c.h" +#include "cctype.h" #include "widechar.h" #include "list.h" #include "closestream.h" @@ -271,7 +272,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/prlimit.c b/sys-utils/prlimit.c index 57c11fb..fbab008 100644 --- a/sys-utils/prlimit.c +++ b/sys-utils/prlimit.c @@ -24,6 +24,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "xalloc.h" #include "strutils.h" @@ -277,7 +278,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/rfkill.c b/sys-utils/rfkill.c index 860e864..d1c38b0 100644 --- a/sys-utils/rfkill.c +++ b/sys-utils/rfkill.c @@ -30,6 +30,7 @@ #include #include "c.h" +#include "cctype.h" #include "closestream.h" #include "nls.h" #include "optutils.h" @@ -156,7 +157,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/swapon.c b/sys-utils/swapon.c index 15efa48..7667857 100644 --- a/sys-utils/swapon.c +++ b/sys-utils/swapon.c @@ -29,6 +29,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "bitops.h" #include "blkdev.h" @@ -158,7 +159,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/wdctl.c b/sys-utils/wdctl.c index ba013a3..6559b54 100644 --- a/sys-utils/wdctl.c +++ b/sys-utils/wdctl.c @@ -32,6 +32,7 @@ #include "nls.h" #include "c.h" +#include "cctype.h" #include "xalloc.h" #include "closestream.h" #include "optutils.h" @@ -165,7 +166,7 @@ static long name2bit(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(wdflags); i++) { const char *cn = wdflags[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return wdflags[i].flag; } warnx(_("unknown flag: %s"), name); @@ -178,7 +179,7 @@ static int column2id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/sys-utils/zramctl.c b/sys-utils/zramctl.c index dfe752b..9aa7296 100644 --- a/sys-utils/zramctl.c +++ b/sys-utils/zramctl.c @@ -29,6 +29,7 @@ #include #include "c.h" +#include "cctype.h" #include "nls.h" #include "closestream.h" #include "strutils.h" @@ -143,7 +144,7 @@ static int column_name_to_id(const char *name, size_t namesz) for (i = 0; i < ARRAY_SIZE(infos); i++) { const char *cn = infos[i].name; - if (!strncasecmp(name, cn, namesz) && !*(cn + namesz)) + if (!c_strncasecmp(name, cn, namesz) && !*(cn + namesz)) return i; } warnx(_("unknown column: %s"), name); diff --git a/term-utils/script.c b/term-utils/script.c index 4da25fa..9007024 100644 --- a/term-utils/script.c +++ b/term-utils/script.c @@ -58,6 +58,7 @@ #include "closestream.h" #include "nls.h" #include "c.h" +#include "cctype.h" #include "ttyutils.h" #include "all-io.h" #include "monotonic.h" @@ -864,9 +865,9 @@ int main(int argc, char **argv) ctl.quiet = 1; break; case 'm': - if (strcasecmp(optarg, "classic") == 0) + if (c_strcasecmp(optarg, "classic") == 0) format = SCRIPT_FMT_TIMING_SIMPLE; - else if (strcasecmp(optarg, "advanced") == 0) + else if (c_strcasecmp(optarg, "advanced") == 0) format = SCRIPT_FMT_TIMING_MULTI; else errx(EXIT_FAILURE, _("unsupported logging format: '%s'"), optarg); diff --git a/tests/helpers/test_mkfds.c b/tests/helpers/test_mkfds.c index 5ceaa3f..f7673c8 100644 --- a/tests/helpers/test_mkfds.c +++ b/tests/helpers/test_mkfds.c @@ -18,6 +18,7 @@ */ #include "c.h" +#include "cctype.h" #include "xalloc.h" #include "test_mkfds.h" #include "exitcodes.h" @@ -242,10 +243,10 @@ static union value boolean_read(const char *arg, const union value *defv) if (!arg) return *defv; - if (strcasecmp(arg, "true") == 0 + if (c_strcasecmp(arg, "true") == 0 || strcmp(arg, "1") == 0 - || strcasecmp(arg, "yes") == 0 - || strcasecmp(arg, "y") == 0) + || c_strcasecmp(arg, "yes") == 0 + || c_strcasecmp(arg, "y") == 0) r.boolean = true; else r.boolean = false;