Patch from Scott McKellar to increase const correctness in the JSON parser.
authormiker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Thu, 25 Oct 2007 12:20:16 +0000 (12:20 +0000)
committermiker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Thu, 25 Oct 2007 12:20:16 +0000 (12:20 +0000)
Also made the top level legacy_jsonParseString[Fmt] API const-correct, though this is removed within those wrapper calls to avoid potentially breaking the legacy code.

git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@1114 9efc2488-bf62-4759-914b-345cdb29e865

include/opensrf/osrf_json.h
include/opensrf/osrf_legacy_json.h
src/gateway/osrf_json_gateway.c
src/libopensrf/osrf_json_parser.c
src/libopensrf/osrf_legacy_json.c

index 5243f03..64844fd 100644 (file)
@@ -73,7 +73,7 @@ GNU General Public License for more details.
 
 struct jsonParserContextStruct {
        int state;                                              /* what are we currently parsing */
-       char* chunk;                                    /* the chunk we're currently parsing */
+       const char* chunk;                              /* the chunk we're currently parsing */
        int index;                                              /* where we are in parsing the current chunk */
        int chunksize;                                  /* the size of the current chunk */
        int flags;                                              /* parser flags */
@@ -147,7 +147,7 @@ void jsonParserFree( jsonParserContext* ctx );
  * @param datalen The size of the chunk to parser
  * @param flags Reserved
  */
-int jsonParseChunk( jsonParserContext* ctx, char* data, int datalen, int flags );
+int jsonParseChunk( jsonParserContext* ctx, const char* data, int datalen, int flags );
 
 
 /**
@@ -155,10 +155,10 @@ int jsonParseChunk( jsonParserContext* ctx, char* data, int datalen, int flags )
  * @param str The string to parser
  * @return The resulting JSON object or NULL on error
  */
-jsonObject* jsonParseString( char* str );
-jsonObject* jsonParseStringRaw( char* str );
+jsonObject* jsonParseString( const char* str );
+jsonObject* jsonParseStringRaw( const char* str );
 
-jsonObject* jsonParseStringFmt( char* str, ... );
+jsonObject* jsonParseStringFmt( const char* str, ... );
 
 /**
  * Parses a JSON string;
index a79fbbe..a825a8d 100644 (file)
@@ -33,8 +33,8 @@ GNU General Public License for more details.
 
 jsonObject* json_parse_string(char* string);
 
-jsonObject* legacy_jsonParseString(char* string);
-jsonObject* legacy_jsonParseStringFmt( char* string, ... );
+jsonObject* legacy_jsonParseString(const char* string);
+jsonObject* legacy_jsonParseStringFmt( const char* string, ... );
 
 jsonObject* json_parse_file( const char* filename );
 
index 4c6a247..cce7e8b 100644 (file)
@@ -122,7 +122,7 @@ static int osrf_json_gateway_method_handler (request_rec *r) {
 
 
        /* provide 2 different JSON parsers and serializers to support legacy JSON */
-       jsonObject* (*parseJSONFunc) (char*) = legacy_jsonParseString;
+       jsonObject* (*parseJSONFunc) (const char*) = legacy_jsonParseString;
        char* (*jsonToStringFunc) (const jsonObject*) = legacy_jsonObjectToJSON;
 
        if(dir_conf->legacyJSON) {
index 14cb45c..e7b3f26 100644 (file)
@@ -332,7 +332,7 @@ int _jsonParserHandleNumber( jsonParserContext* ctx ) {
 
 
 
-int jsonParseChunk( jsonParserContext* ctx, char* data, int datalen, int flags ) {
+int jsonParseChunk( jsonParserContext* ctx, const char* data, int datalen, int flags ) {
 
        if( !( ctx && ctx->handler && data && datalen > 0 )) return -1;
        ctx->chunksize  = datalen;
@@ -514,7 +514,7 @@ void _jsonInternalParserFree(jsonInternalParser* p) {
        free(p);
 }
 
-static jsonObject* _jsonParseStringImpl(char* str, void (*errorHandler) (const char*) ) {
+static jsonObject* _jsonParseStringImpl(const char* str, void (*errorHandler) (const char*) ) {
        jsonInternalParser* parser = _jsonNewInternalParser();
        parser->handleError = errorHandler;
        jsonParseChunk( parser->ctx, str, strlen(str),  JSON_PARSE_LAST_CHUNK );
@@ -530,7 +530,7 @@ jsonObject* jsonParseStringHandleError(
        return _jsonParseStringImpl(VA_BUF, errorHandler);
 }
 
-jsonObject* jsonParseString( char* str ) {
+jsonObject* jsonParseString( const char* str ) {
        if(!str) return NULL;
        jsonObject* obj =  _jsonParseStringImpl(str, NULL);
        jsonObject* obj2 = jsonObjectDecodeClass(obj);
@@ -538,12 +538,12 @@ jsonObject* jsonParseString( char* str ) {
        return obj2;
 }
 
-jsonObject* jsonParseStringRaw( char* str ) {
+jsonObject* jsonParseStringRaw( const char* str ) {
        if(!str) return NULL;
        return _jsonParseStringImpl(str, NULL);
 }
 
-jsonObject* jsonParseStringFmt( char* str, ... ) {
+jsonObject* jsonParseStringFmt( const char* str, ... ) {
        if(!str) return NULL;
        VA_LIST_TO_STRING(str);
        return _jsonParseStringImpl(VA_BUF, NULL);
index ae75588..a81d46d 100644 (file)
@@ -22,11 +22,11 @@ GNU General Public License for more details.
 int current_strlen; 
 
 
-jsonObject* legacy_jsonParseString( char* string) {
-       return json_parse_string( string );
+jsonObject* legacy_jsonParseString( const char* string) {
+       return json_parse_string( (char*) string );
 }
 
-jsonObject* legacy_jsonParseStringFmt( char* string, ... ) {
+jsonObject* legacy_jsonParseStringFmt( const char* string, ... ) {
        VA_LIST_TO_STRING(string);
        return json_parse_string( VA_BUF );
 }