summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPieter Noordhuis <pcnoordhuis@gmail.com>2011-12-20 10:45:27 -0800
committerPieter Noordhuis <pcnoordhuis@gmail.com>2011-12-20 10:45:27 -0800
commitd5d884378d3df75f8ce4ed86ffe62f1210ffe4fb (patch)
treefe98c1f594142f6ca7578575733796b8d43864ed
parent95e83386f7d592d021bed87f4df1530eda454c6a (diff)
parent56ae8aa11097f3973c20a5b04fc07dc0f3729766 (diff)
Merge pull request #72 from chipdude/master
Fix self-test of connect error on Linux; merge duplicated string (DRY)
-rw-r--r--hiredis.c11
-rw-r--r--test.c5
2 files changed, 9 insertions, 7 deletions
diff --git a/hiredis.c b/hiredis.c
index ac5c3e3..1a57adb 100644
--- a/hiredis.c
+++ b/hiredis.c
@@ -749,6 +749,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
default:
/* Try to detect printf format */
{
+ static const char intfmts[] = "diouxX";
char _format[16];
const char *_p = c+1;
size_t _l = 0;
@@ -774,7 +775,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
va_copy(_cpy,ap);
/* Integer conversion (without modifiers) */
- if (strchr("diouxX",*_p) != NULL) {
+ if (strchr(intfmts,*_p) != NULL) {
va_arg(ap,int);
goto fmt_valid;
}
@@ -788,7 +789,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
/* Size: char */
if (_p[0] == 'h' && _p[1] == 'h') {
_p += 2;
- if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
+ if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
va_arg(ap,int); /* char gets promoted to int */
goto fmt_valid;
}
@@ -798,7 +799,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
/* Size: short */
if (_p[0] == 'h') {
_p += 1;
- if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
+ if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
va_arg(ap,int); /* short gets promoted to int */
goto fmt_valid;
}
@@ -808,7 +809,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
/* Size: long long */
if (_p[0] == 'l' && _p[1] == 'l') {
_p += 2;
- if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
+ if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
va_arg(ap,long long);
goto fmt_valid;
}
@@ -818,7 +819,7 @@ int redisvFormatCommand(char **target, const char *format, va_list ap) {
/* Size: long */
if (_p[0] == 'l') {
_p += 1;
- if (*_p != '\0' && strchr("diouxX",*_p) != NULL) {
+ if (*_p != '\0' && strchr(intfmts,*_p) != NULL) {
va_arg(ap,long);
goto fmt_valid;
}
diff --git a/test.c b/test.c
index ca98f9b..5945b65 100644
--- a/test.c
+++ b/test.c
@@ -177,7 +177,7 @@ static void test_format_commands(void) {
FLOAT_WIDTH_TEST(double);
test("Format command with invalid printf format: ");
- len = redisFormatCommand(&cmd,"key:%08p %b",1234,"foo",3);
+ len = redisFormatCommand(&cmd,"key:%08p %b",(void*)1234,"foo",3);
test_cond(len == -1);
const char *argv[3];
@@ -283,7 +283,8 @@ static void test_blocking_connection_errors(void) {
test("Returns error when host cannot be resolved: ");
c = redisConnect((char*)"idontexist.local", 6379);
test_cond(c->err == REDIS_ERR_OTHER &&
- strcmp(c->errstr,"Can't resolve: idontexist.local") == 0);
+ (strcmp(c->errstr,"Name or service not known") == 0 ||
+ strcmp(c->errstr,"Can't resolve: idontexist.local") == 0));
redisFree(c);
test("Returns error when the port is not open: ");