예제 #1
0
파일: load.c 프로젝트: cryptobiote/jansson
static int lex_init(lex_t *lex, get_func get, void *data)
{
    stream_init(&lex->stream, get, data);
    if(strbuffer_init(&lex->saved_text))
        return -1;

    lex->token = TOKEN_INVALID;
    return 0;
}
예제 #2
0
void node_send_json(json_t *array) {
    strbuffer_t strbuff;
    int rv = strbuffer_init(&strbuff);
    assert(rv == 0);

    if (0 == json_dump_callback(array, dump_to_strbuffer, (void *)&strbuff, 0)) {
        strbuffer_append(&strbuff, "\n");
        node_send_raw(strbuffer_value(&strbuff));
    }

    strbuffer_close(&strbuff);

    json_decref(array);
}
예제 #3
0
파일: bser.c 프로젝트: 1514louluo/watchman
static char *bdumps(json_t *json, char **end)
{
    strbuffer_t strbuff;

    if (strbuffer_init(&strbuff)) {
        return NULL;
    }

    if (w_bser_dump(json, dump_to_strbuffer, &strbuff) == 0) {
      *end = strbuff.value + strbuff.length;
      return strbuff.value;
    }

    strbuffer_close(&strbuff);
    return NULL;
}
예제 #4
0
strbuffer_t * json_token_tostr(char *js, jsmntok_t *t)
{
	if(t->start > strlen(js)
			|| t->end > strlen(js)
			|| t->end > strlen(js)
			|| (t->end - t->start) > strlen(js)
	) {
		return NULL;
	}

	strbuffer_t *string = (strbuffer_t *) json_malloc(sizeof(strbuffer_t));
	strbuffer_init(string);

	strbuffer_append_bytes(string, js + t->start, (t->end - t->start) );

	return string;
}
예제 #5
0
json_error_t* parsingError(
	json_error_code_t errCode,
	char* errMsg,
	jsmntok_t *token,
	char* jsonString
) {
	json_error_t* err = (json_error_t*) json_malloc(sizeof(json_error_t));
	err->errorMsg = (strbuffer_t*) json_malloc(sizeof(json_error_t));
	strbuffer_init(err->errorMsg);

	err->errorCode = errCode;
	strbuffer_append(err->errorMsg, errMsg);

	if( token != NULL && jsonString != NULL) {
		strbuffer_t *tokenText = json_token_tostr(jsonString, token);
		strbuffer_append(err->errorMsg, " Error was in: ");
		strbuffer_append(err->errorMsg, tokenText->value);
		strbuffer_destroy(tokenText);
	}

	return err;
}
예제 #6
0
char *strbuffer_steal_value(strbuffer_t *strbuff)
{
    char *result = strbuff->value;
    strbuffer_init(strbuff);
    return result;
}