#include <unistd.h>
#include <stdlib.h>
#include <string.h>
+#include <stdint.h>
#include "htsmsg_json.h"
#include "htsbuf.h"
}
static void
-add_long(void *opaque, void *parent, const char *name, long v)
+add_s64(void *opaque, void *parent, const char *name, int64_t v)
{
htsmsg_add_s64(parent, name, v);
}
.jd_destroy_obj = destroy_obj,
.jd_add_obj = add_obj,
.jd_add_string = add_string,
- .jd_add_long = add_long,
+ .jd_add_s64 = add_s64,
.jd_add_double = add_double,
.jd_add_bool = add_bool,
.jd_add_null = add_null,
#include <string.h>
#include <limits.h>
#include <stdio.h>
+#include <stdint.h>
#include "json.h"
#include "dbl.h"
*
*/
static char *
-json_parse_integer(const char *s, long *lp)
+json_parse_integer(const char *s, int64_t *lp)
{
char *ep;
while(*s > 0 && *s < 33)
if(s2[0] == '.' || s2[0] == 'e' || s2[0] == 'E')
return NULL; // Is floating point
- long v = strtol(s, &ep, 10);
- if(v == LONG_MIN || v == LONG_MAX)
+ int64_t v = strtoll(s, &ep, 10);
+ if(v == INT64_MIN || v == INT64_MAX)
return NULL;
if(ep == s)
const char *s2;
char *str;
double d = 0;
- long l = 0;
+ int64_t s64 = 0;
void *c;
if((c = json_parse_map(s, &s2, jd, opaque, failp, failmsg)) == NULL)
return s2;
}
- if((s2 = json_parse_integer(s, &l)) != NULL) {
- jd->jd_add_long(opaque, parent, name, l);
+ if((s2 = json_parse_integer(s, &s64)) != NULL) {
+ jd->jd_add_s64(opaque, parent, name, s64);
return s2;
} else if((s2 = json_parse_double(s, &d)) != NULL) {
jd->jd_add_double(opaque, parent, name, d);
#pragma once
+#include <stdint.h>
typedef struct json_deserializer {
void *(*jd_create_map)(void *jd_opaque);
void (*jd_add_string)(void *jd_opaque, void *parent,
const char *name, char *str);
- void (*jd_add_long)(void *jd_opaque, void *parent,
- const char *name, long v);
+ void (*jd_add_s64)(void *jd_opaque, void *parent,
+ const char *name, int64_t v);
void (*jd_add_double)(void *jd_opaque, void *parent,
const char *name, double d);