mirror of
https://github.com/moparisthebest/pacman
synced 2024-12-22 07:48:50 -05:00
pacsort, introduce define for escape_char error code
The signedness of char is implementation defined. On systems where char is unsigned, comparing a variable of type char with -1 is never true, due to integer promotion rules. To avoid this, introduce a define for invalid field separators where -1 is cast to char. This will ensure that the return value check works for both unsigned and signed char. Fixes one warning [-Wtype-limits] for comparissons with -1 when compiling with -funsigned-char. Signed-off-by: Rikard Falkeborn <rikard.falkeborn@gmail.com> Signed-off-by: Allan McRae <allan@archlinux.org>
This commit is contained in:
parent
875c017e4d
commit
88f348f2b1
@ -28,6 +28,7 @@
|
|||||||
#include "util-common.h"
|
#include "util-common.h"
|
||||||
|
|
||||||
#define DELIM ' '
|
#define DELIM ' '
|
||||||
|
#define INVALD_ESCAPE_CHAR ((char)-1)
|
||||||
|
|
||||||
#ifndef MIN
|
#ifndef MIN
|
||||||
#define MIN(a, b) \
|
#define MIN(a, b) \
|
||||||
@ -385,13 +386,13 @@ static int vercmp(const void *p1, const void *p2)
|
|||||||
static char escape_char(const char *string)
|
static char escape_char(const char *string)
|
||||||
{
|
{
|
||||||
if(!string) {
|
if(!string) {
|
||||||
return -1;
|
return INVALD_ESCAPE_CHAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t len = strlen(string);
|
const size_t len = strlen(string);
|
||||||
|
|
||||||
if(len > 2) {
|
if(len > 2) {
|
||||||
return -1;
|
return INVALD_ESCAPE_CHAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(len == 1) {
|
if(len == 1) {
|
||||||
@ -399,7 +400,7 @@ static char escape_char(const char *string)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(*string != '\\') {
|
if(*string != '\\') {
|
||||||
return -1;
|
return INVALD_ESCAPE_CHAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch(string[1]) {
|
switch(string[1]) {
|
||||||
@ -412,7 +413,7 @@ static char escape_char(const char *string)
|
|||||||
case '0':
|
case '0':
|
||||||
return '\0';
|
return '\0';
|
||||||
default:
|
default:
|
||||||
return -1;
|
return INVALD_ESCAPE_CHAR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -463,7 +464,7 @@ static int parse_options(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
case 't':
|
case 't':
|
||||||
opts.delim = escape_char(optarg);
|
opts.delim = escape_char(optarg);
|
||||||
if(opts.delim == -1) {
|
if(opts.delim == INVALD_ESCAPE_CHAR) {
|
||||||
fprintf(stderr, "error: invalid field separator -- `%s'\n", optarg);
|
fprintf(stderr, "error: invalid field separator -- `%s'\n", optarg);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user