Adjust IOC code for yajl-2.1.0 API

This commit is contained in:
Andrew Johnson
2017-05-22 22:01:24 -04:00
parent de43941083
commit 70a46e9c2c
3 changed files with 34 additions and 51 deletions

View File

@@ -107,7 +107,7 @@ static int chf_boolean(void * ctx, int boolVal)
return result;
}
static int chf_integer(void * ctx, long integerVal)
static int chf_integer(void * ctx, long long integerVal)
{
parseContext *parser = (parseContext *) ctx;
chFilter *filter = parser->filter;
@@ -132,7 +132,7 @@ static int chf_double(void * ctx, double doubleVal)
}
static int chf_string(void * ctx, const unsigned char * stringVal,
unsigned int stringLen)
size_t stringLen)
{
parseContext *parser = (parseContext *) ctx;
chFilter *filter = parser->filter;
@@ -159,7 +159,7 @@ static int chf_start_map(void * ctx)
}
static int chf_map_key(void * ctx, const unsigned char * key,
unsigned int stringLen)
size_t stringLen)
{
parseContext *parser = (parseContext *) ctx;
chFilter *filter = parser->filter;
@@ -243,15 +243,12 @@ static const yajl_callbacks chf_callbacks =
{ chf_null, chf_boolean, chf_integer, chf_double, NULL, chf_string,
chf_start_map, chf_map_key, chf_end_map, chf_start_array, chf_end_array };
static const yajl_parser_config chf_config =
{ 0, 1 }; /* allowComments = NO , checkUTF8 = YES */
static void * chf_malloc(void *ctx, unsigned int sz)
static void * chf_malloc(void *ctx, size_t sz)
{
return malloc(sz);
}
static void * chf_realloc(void *ctx, void *ptr, unsigned int sz)
static void * chf_realloc(void *ctx, void *ptr, size_t sz)
{
return realloc(ptr, sz);
}
@@ -261,14 +258,14 @@ static void chf_free(void *ctx, void *ptr)
free(ptr);
}
static const yajl_alloc_funcs chf_alloc =
static yajl_alloc_funcs chf_alloc =
{ chf_malloc, chf_realloc, chf_free };
static long chf_parse(dbChannel *chan, const char **pjson)
{
parseContext parser =
{ chan, NULL, 0 };
yajl_handle yh = yajl_alloc(&chf_callbacks, &chf_config, &chf_alloc, &parser);
yajl_handle yh = yajl_alloc(&chf_callbacks, &chf_alloc, &parser);
const char *json = *pjson;
size_t jlen = strlen(json);
yajl_status ys;
@@ -277,9 +274,7 @@ static long chf_parse(dbChannel *chan, const char **pjson)
if (!yh)
return S_db_noMemory;
ys = yajl_parse(yh, (const unsigned char *) json, (unsigned int) jlen);
if (ys == yajl_status_insufficient_data)
ys = yajl_parse_complete(yh);
ys = yajl_parse(yh, (const unsigned char *) json, jlen);
switch (ys) {
case yajl_status_ok:
@@ -290,7 +285,7 @@ static long chf_parse(dbChannel *chan, const char **pjson)
case yajl_status_error: {
unsigned char *err;
err = yajl_get_error(yh, 1, (const unsigned char *) json, (unsigned int) jlen);
err = yajl_get_error(yh, 1, (const unsigned char *) json, jlen);
printf("dbChannelCreate: %s\n", err);
yajl_free_error(yh, err);
} /* fall through */

View File

@@ -37,20 +37,20 @@ static int dbcj_boolean(void *ctx, int val) {
return 0; /* Illegal */
}
static int dbcj_integer(void *ctx, long num) {
static int dbcj_integer(void *ctx, long long num) {
parseContext *parser = (parseContext *) ctx;
epicsInt32 val32 = num;
FASTCONVERT conv = dbFastPutConvertRoutine[DBF_LONG][parser->dbrType];
epicsInt64 val64 = num;
FASTCONVERT conv = dbFastPutConvertRoutine[DBF_INT64][parser->dbrType];
if (parser->elems > 0) {
conv(&val32, parser->pdest, NULL);
conv(&val64, parser->pdest, NULL);
parser->pdest += parser->dbrSize;
parser->elems--;
}
return 1;
}
static int dblsj_integer(void *ctx, long num) {
static int dblsj_integer(void *ctx, long long num) {
return 0; /* Illegal */
}
@@ -70,7 +70,7 @@ static int dblsj_double(void *ctx, double num) {
return 0; /* Illegal */
}
static int dbcj_string(void *ctx, const unsigned char *val, unsigned int len) {
static int dbcj_string(void *ctx, const unsigned char *val, size_t len) {
parseContext *parser = (parseContext *) ctx;
char *pdest = parser->pdest;
@@ -93,7 +93,7 @@ static int dbcj_string(void *ctx, const unsigned char *val, unsigned int len) {
return 1;
}
static int dblsj_string(void *ctx, const unsigned char *val, unsigned int len) {
static int dblsj_string(void *ctx, const unsigned char *val, size_t len) {
parseContext *parser = (parseContext *) ctx;
char *pdest = parser->pdest;
@@ -118,7 +118,7 @@ static int dbcj_start_map(void *ctx) {
return 0; /* Illegal */
}
static int dbcj_map_key(void *ctx, const unsigned char *key, unsigned int len) {
static int dbcj_map_key(void *ctx, const unsigned char *key, size_t len) {
return 0; /* Illegal */
}
@@ -149,9 +149,6 @@ static yajl_callbacks dbcj_callbacks = {
dbcj_start_array, dbcj_end_array
};
static const yajl_parser_config dbcj_config =
{ 0, 0 }; /* allowComments = NO, checkUTF8 = NO */
long dbPutConvertJSON(const char *json, short dbrType,
void *pdest, long *pnRequest)
{
@@ -169,13 +166,11 @@ long dbPutConvertJSON(const char *json, short dbrType,
parser->elems = *pnRequest;
yajl_set_default_alloc_funcs(&dbcj_alloc);
yh = yajl_alloc(&dbcj_callbacks, &dbcj_config, &dbcj_alloc, parser);
yh = yajl_alloc(&dbcj_callbacks, &dbcj_alloc, parser);
if (!yh)
return S_db_noMemory;
ys = yajl_parse(yh, (const unsigned char *) json, (unsigned int) jlen);
if (ys == yajl_status_insufficient_data)
ys = yajl_parse_complete(yh);
ys = yajl_parse(yh, (const unsigned char *) json, jlen);
switch (ys) {
case yajl_status_ok:
@@ -185,7 +180,7 @@ long dbPutConvertJSON(const char *json, short dbrType,
case yajl_status_error: {
unsigned char *err = yajl_get_error(yh, 1,
(const unsigned char *) json, (unsigned int) jlen);
(const unsigned char *) json, jlen);
fprintf(stderr, "dbConvertJSON: %s\n", err);
yajl_free_error(yh, err);
}
@@ -227,13 +222,11 @@ long dbLSConvertJSON(const char *json, char *pdest, epicsUInt32 size,
parser->elems = 1;
yajl_set_default_alloc_funcs(&dbcj_alloc);
yh = yajl_alloc(&dblsj_callbacks, &dbcj_config, &dbcj_alloc, parser);
yh = yajl_alloc(&dblsj_callbacks, &dbcj_alloc, parser);
if (!yh)
return S_db_noMemory;
ys = yajl_parse(yh, (const unsigned char *) json, (unsigned int) jlen);
if (ys == yajl_status_insufficient_data)
ys = yajl_parse_complete(yh);
ys = yajl_parse(yh, (const unsigned char *) json, jlen);
switch (ys) {
case yajl_status_ok:
@@ -243,7 +236,7 @@ long dbLSConvertJSON(const char *json, char *pdest, epicsUInt32 size,
case yajl_status_error: {
unsigned char *err = yajl_get_error(yh, 1,
(const unsigned char *) json, (unsigned int) jlen);
(const unsigned char *) json, jlen);
fprintf(stderr, "dbLoadLS_JSON: %s\n", err);
yajl_free_error(yh, err);
}

View File

@@ -112,12 +112,12 @@ static int dbjl_boolean(void *ctx, int val) {
CALL_OR_STOP(pjlink->pif->parse_boolean)(pjlink, val));
}
static int dbjl_integer(void *ctx, long num) {
static int dbjl_integer(void *ctx, long long num) {
parseContext *parser = (parseContext *) ctx;
jlink *pjlink = parser->pjlink;
IFDEBUG(10)
printf("dbjl_integer(%s@%p, %ld)\n",
printf("dbjl_integer(%s@%p, %lld)\n",
pjlink->pif->name, pjlink, num);
assert(pjlink);
@@ -138,13 +138,13 @@ static int dbjl_double(void *ctx, double num) {
CALL_OR_STOP(pjlink->pif->parse_double)(pjlink, num));
}
static int dbjl_string(void *ctx, const unsigned char *val, unsigned len) {
static int dbjl_string(void *ctx, const unsigned char *val, size_t len) {
parseContext *parser = (parseContext *) ctx;
jlink *pjlink = parser->pjlink;
IFDEBUG(10)
printf("dbjl_string(%s@%p, \"%.*s\")\n",
pjlink->pif->name, pjlink, len, val);
pjlink->pif->name, pjlink, (int) len, val);
assert(pjlink);
return dbjl_value(parser,
@@ -190,7 +190,7 @@ static int dbjl_start_map(void *ctx) {
return dbjl_return(parser, result);
}
static int dbjl_map_key(void *ctx, const unsigned char *key, unsigned len) {
static int dbjl_map_key(void *ctx, const unsigned char *key, size_t len) {
parseContext *parser = (parseContext *) ctx;
jlink *pjlink = parser->pjlink;
char *link_name;
@@ -200,13 +200,13 @@ static int dbjl_map_key(void *ctx, const unsigned char *key, unsigned len) {
if (!parser->key_is_link) {
if (!pjlink) {
errlogPrintf("dbJLinkInit: Illegal second link key '%.*s'\n",
len, key);
(int) len, key);
return dbjl_return(parser, jlif_stop);
}
IFDEBUG(10) {
printf("dbjl_map_key(%s@%p, \"%.*s\")\t",
pjlink->pif->name, pjlink, len, key);
pjlink->pif->name, pjlink, (int) len, key);
printf(" jsonDepth=%d, parseDepth=%d, key_is_link=%d\n",
parser->jsonDepth, pjlink ? pjlink->parseDepth : 0, parser->key_is_link);
}
@@ -218,7 +218,7 @@ static int dbjl_map_key(void *ctx, const unsigned char *key, unsigned len) {
}
IFDEBUG(10) {
printf("dbjl_map_key(NULL, \"%.*s\")\t", len, key);
printf("dbjl_map_key(NULL, \"%.*s\")\t", (int) len, key);
printf(" jsonDepth=%d, parseDepth=00, key_is_link=%d\n",
parser->jsonDepth, parser->key_is_link);
}
@@ -334,9 +334,6 @@ static yajl_callbacks dbjl_callbacks = {
dbjl_start_map, dbjl_map_key, dbjl_end_map, dbjl_start_array, dbjl_end_array
};
static const yajl_parser_config dbjl_config =
{ 0, 0 }; /* allowComments = NO, checkUTF8 = NO */
long dbJLinkParse(const char *json, size_t jlen, short dbfType,
jlink **ppjlink, unsigned opts)
{
@@ -363,13 +360,11 @@ long dbJLinkParse(const char *json, size_t jlen, short dbfType,
parser->jsonDepth, parser->key_is_link);
yajl_set_default_alloc_funcs(&dbjl_allocs);
yh = yajl_alloc(&dbjl_callbacks, &dbjl_config, &dbjl_allocs, parser);
yh = yajl_alloc(&dbjl_callbacks, &dbjl_allocs, parser);
if (!yh)
return S_db_noMemory;
ys = yajl_parse(yh, (const unsigned char *) json, (unsigned) jlen);
if (ys == yajl_status_insufficient_data)
ys = yajl_parse_complete(yh);
ys = yajl_parse(yh, (const unsigned char *) json, jlen);
switch (ys) {
unsigned char *err;
@@ -381,7 +376,7 @@ long dbJLinkParse(const char *json, size_t jlen, short dbfType,
break;
case yajl_status_error:
err = yajl_get_error(yh, 1, (const unsigned char *) json, (unsigned) jlen);
err = yajl_get_error(yh, 1, (const unsigned char *) json, jlen);
errlogPrintf("dbJLinkInit: %s\n", err);
yajl_free_error(yh, err);
dbJLinkFree(parser->pjlink);