Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
ruanhaishen
hiredis
Commits
09346dcc
Commit
09346dcc
authored
Jul 05, 2011
by
Pieter Noordhuis
Browse files
Fix preprocessor warnings
parent
0426ddad
Changes
1
Hide whitespace changes
Inline
Side-by-side
parser.c
View file @
09346dcc
...
@@ -5,9 +5,11 @@
...
@@ -5,9 +5,11 @@
#include <assert.h>
#include <assert.h>
#include "parser.h"
#include "parser.h"
#define CALLBACK(X, args...) do { \
/* The redis_protocol_t argument to the callback function must be provided by
* the caller because "ISO C99 requires rest arguments to be used". */
#define CALLBACK(X, ...) do { \
if (callbacks && callbacks->on_##X) { \
if (callbacks && callbacks->on_##X) { \
if (callbacks->on_##X(parser,
cur , ## args
) == 0) { \
if (callbacks->on_##X(parser,
__VA_ARGS__
) == 0) {
\
return pos-buf; \
return pos-buf; \
} \
} \
} \
} \
...
@@ -72,9 +74,9 @@ static const char * strstate[] = {
...
@@ -72,9 +74,9 @@ static const char * strstate[] = {
} while(0)
} while(0)
#ifdef DEBUG
#ifdef DEBUG
#define LOG(fmt,
args
...) do { \
#define LOG(fmt, ...) do {
\
fprintf(stderr, fmt "\n"
,
## args);
\
fprintf(stderr, fmt "\n",
__VA_ARGS__);
\
fflush(stderr); \
fflush(stderr);
\
} while(0)
} while(0)
#include <ctype.h>
#include <ctype.h>
...
@@ -108,7 +110,7 @@ static const char *chrtos(char byte) {
...
@@ -108,7 +110,7 @@ static const char *chrtos(char byte) {
return
buf
;
return
buf
;
}
}
#else
#else
#define LOG(fmt,
args
...) do { ; } while (0)
#define LOG(fmt, ...) do { ; } while (0)
#endif
#endif
void
redis_parser_init
(
redis_parser_t
*
parser
,
const
redis_parser_cb_t
*
callbacks
)
{
void
redis_parser_init
(
redis_parser_t
*
parser
,
const
redis_parser_cb_t
*
callbacks
)
{
...
@@ -272,7 +274,7 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
...
@@ -272,7 +274,7 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
if
(
cur
->
type
==
REDIS_STRING_T
)
{
if
(
cur
->
type
==
REDIS_STRING_T
)
{
if
(
i64
.
i64
<
0
)
{
/* nil bulk */
if
(
i64
.
i64
<
0
)
{
/* nil bulk */
CALLBACK
(
nil
);
CALLBACK
(
nil
,
cur
);
goto
done
;
goto
done
;
}
}
...
@@ -288,13 +290,13 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
...
@@ -288,13 +290,13 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
if
(
cur
->
type
==
REDIS_ARRAY_T
)
{
if
(
cur
->
type
==
REDIS_ARRAY_T
)
{
if
(
i64
.
i64
<
0
)
{
/* nil multi bulk */
if
(
i64
.
i64
<
0
)
{
/* nil multi bulk */
CALLBACK
(
nil
);
CALLBACK
(
nil
,
cur
);
goto
done
;
goto
done
;
}
}
/* Store remaining objects for a complete multi bulk */
/* Store remaining objects for a complete multi bulk */
cur
->
remaining
=
(
unsigned
)
i64
.
i64
;
cur
->
remaining
=
(
unsigned
)
i64
.
i64
;
CALLBACK
(
array
,
cur
->
remaining
);
CALLBACK
(
array
,
cur
,
cur
->
remaining
);
goto
done
;
goto
done
;
}
}
...
@@ -302,7 +304,7 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
...
@@ -302,7 +304,7 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
/* Setup content offset and length */
/* Setup content offset and length */
cur
->
coff
=
cur
->
poff
+
1
;
cur
->
coff
=
cur
->
poff
+
1
;
cur
->
clen
=
nread
-
cur
->
coff
-
1
;
/* remove \r */
cur
->
clen
=
nread
-
cur
->
coff
-
1
;
/* remove \r */
CALLBACK
(
integer
,
i64
.
i64
);
CALLBACK
(
integer
,
cur
,
i64
.
i64
);
goto
done
;
goto
done
;
}
}
...
@@ -316,14 +318,14 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
...
@@ -316,14 +318,14 @@ size_t redis_parser_execute(redis_parser_t *parser, redis_protocol_t **dst, cons
/* Everything can be read */
/* Everything can be read */
if
(
remaining
<=
available
)
{
if
(
remaining
<=
available
)
{
cur
->
remaining
=
0
;
cur
->
remaining
=
0
;
CALLBACK
(
string
,
pos
,
remaining
);
CALLBACK
(
string
,
cur
,
pos
,
remaining
);
ADVANCE
(
remaining
);
ADVANCE
(
remaining
);
MOVE
(
bulk_cr
);
MOVE
(
bulk_cr
);
}
}
/* Not everything can be read */
/* Not everything can be read */
cur
->
remaining
-=
available
;
cur
->
remaining
-=
available
;
CALLBACK
(
string
,
pos
,
available
);
CALLBACK
(
string
,
cur
,
pos
,
available
);
pos
+=
available
;
nread
+=
available
;
pos
+=
available
;
nread
+=
available
;
goto
finalize
;
goto
finalize
;
}
}
...
...
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