Commit 1f6a4d8c authored by Pieter Noordhuis's avatar Pieter Noordhuis
Browse files

Extract conversion specifiers to variable

Like 56ae8aa1.
parent 1ab4fc95
...@@ -97,6 +97,8 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) { ...@@ -97,6 +97,8 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) {
default: default:
/* Try to detect printf format */ /* Try to detect printf format */
{ {
static const char int_fmts[] = "diouxX";
static const char double_fmts[] = "eEfFgGaA";
char _format[16]; char _format[16];
const char *_p = c+1; const char *_p = c+1;
size_t _l = 0; size_t _l = 0;
...@@ -122,13 +124,13 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) { ...@@ -122,13 +124,13 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) {
va_copy(_cpy,ap); va_copy(_cpy,ap);
/* Integer conversion (without modifiers) */ /* Integer conversion (without modifiers) */
if (strchr("diouxX",*_p) != NULL) { if (strchr(int_fmts, *_p) != NULL) {
va_arg(ap,int); va_arg(ap,int);
goto fmt_valid; goto fmt_valid;
} }
/* Double conversion (without modifiers) */ /* Double conversion (without modifiers) */
if (strchr("eEfFgGaA",*_p) != NULL) { if (strchr(double_fmts, *_p) != NULL) {
va_arg(ap,double); va_arg(ap,double);
goto fmt_valid; goto fmt_valid;
} }
...@@ -136,7 +138,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) { ...@@ -136,7 +138,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) {
/* Size: char */ /* Size: char */
if (_p[0] == 'h' && _p[1] == 'h') { if (_p[0] == 'h' && _p[1] == 'h') {
_p += 2; _p += 2;
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) { if (*_p != '\0' && strchr(int_fmts, *_p) != NULL) {
va_arg(ap,int); /* char gets promoted to int */ va_arg(ap,int); /* char gets promoted to int */
goto fmt_valid; goto fmt_valid;
} }
...@@ -146,7 +148,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) { ...@@ -146,7 +148,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) {
/* Size: short */ /* Size: short */
if (_p[0] == 'h') { if (_p[0] == 'h') {
_p += 1; _p += 1;
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) { if (*_p != '\0' && strchr(int_fmts, *_p) != NULL) {
va_arg(ap,int); /* short gets promoted to int */ va_arg(ap,int); /* short gets promoted to int */
goto fmt_valid; goto fmt_valid;
} }
...@@ -156,7 +158,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) { ...@@ -156,7 +158,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) {
/* Size: long long */ /* Size: long long */
if (_p[0] == 'l' && _p[1] == 'l') { if (_p[0] == 'l' && _p[1] == 'l') {
_p += 2; _p += 2;
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) { if (*_p != '\0' && strchr(int_fmts, *_p) != NULL) {
va_arg(ap,long long); va_arg(ap,long long);
goto fmt_valid; goto fmt_valid;
} }
...@@ -166,7 +168,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) { ...@@ -166,7 +168,7 @@ int redis_format_vcommand(char **target, const char *format, va_list ap) {
/* Size: long */ /* Size: long */
if (_p[0] == 'l') { if (_p[0] == 'l') {
_p += 1; _p += 1;
if (*_p != '\0' && strchr("diouxX",*_p) != NULL) { if (*_p != '\0' && strchr(int_fmts, *_p) != NULL) {
va_arg(ap,long); va_arg(ap,long);
goto fmt_valid; goto fmt_valid;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment