Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
ruanhaishen
hiredis
Commits
1f6a4d8c
Commit
1f6a4d8c
authored
Aug 13, 2012
by
Pieter Noordhuis
Browse files
Extract conversion specifiers to variable
Like
56ae8aa1
.
parent
1ab4fc95
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/format.c
View file @
1f6a4d8c
...
@@ -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
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment