diff --git a/src/ioc/db/dbChannel.c b/src/ioc/db/dbChannel.c index 5ce1be4ef..e16f8e740 100644 --- a/src/ioc/db/dbChannel.c +++ b/src/ioc/db/dbChannel.c @@ -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 */ diff --git a/src/ioc/db/dbConvertJSON.c b/src/ioc/db/dbConvertJSON.c index e2a453549..c9a7d449d 100644 --- a/src/ioc/db/dbConvertJSON.c +++ b/src/ioc/db/dbConvertJSON.c @@ -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); } diff --git a/src/ioc/db/dbJLink.c b/src/ioc/db/dbJLink.c index b68432f6e..109785b6d 100644 --- a/src/ioc/db/dbJLink.c +++ b/src/ioc/db/dbJLink.c @@ -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);