projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add string condensing for the ETA output
[fio.git]
/
json.c
diff --git
a/json.c
b/json.c
index ea61af72c422ad575238eaef2f4b4b2153a471d2..7480a61fa98939519f3306fa583977fd8d331f40 100644
(file)
--- a/
json.c
+++ b/
json.c
@@
-35,7
+35,7
@@
static struct json_pair *json_create_pair(const char *name, struct json_value *v
return pair;
}
return pair;
}
-static struct json_value *json_create_value_int(long number)
+static struct json_value *json_create_value_int(long
long
number)
{
struct json_value *value = malloc(sizeof(struct json_value));
{
struct json_value *value = malloc(sizeof(struct json_value));
@@
-63,24
+63,28
@@
static char *strdup_escape(const char *str)
char *p, *ret;
int escapes;
char *p, *ret;
int escapes;
+ if (!strlen(str))
+ return NULL;
+
escapes = 0;
while ((input = strpbrk(input, "\\\"")) != NULL) {
escapes++;
input++;
}
escapes = 0;
while ((input = strpbrk(input, "\\\"")) != NULL) {
escapes++;
input++;
}
- p = ret = malloc(strlen(str) + escapes);
+ p = ret = malloc(strlen(str) + escapes
+ 1
);
while (*str) {
if (*str == '\\' || *str == '\"')
*p++ = '\\';
*p++ = *str++;
}
while (*str) {
if (*str == '\\' || *str == '\"')
*p++ = '\\';
*p++ = *str++;
}
+ *p = '\0';
return ret;
}
/*
return ret;
}
/*
- * Valid JSON strings must escape '"' and '/' with a prece
e
ding '/'
+ * Valid JSON strings must escape '"' and '/' with a preceding '/'
*/
static struct json_value *json_create_value_string(const char *str)
{
*/
static struct json_value *json_create_value_string(const char *str)
{
@@
-208,7
+212,7
@@
int json_object_add_value_type(struct json_object *obj, const char *name, int ty
if (type == JSON_TYPE_STRING)
value = json_create_value_string(va_arg(args, char *));
else if (type == JSON_TYPE_INTEGER)
if (type == JSON_TYPE_STRING)
value = json_create_value_string(va_arg(args, char *));
else if (type == JSON_TYPE_INTEGER)
- value = json_create_value_int(va_arg(args, long));
+ value = json_create_value_int(va_arg(args, long
long
));
else if (type == JSON_TYPE_FLOAT)
value = json_create_value_float(va_arg(args, double));
else if (type == JSON_TYPE_OBJECT)
else if (type == JSON_TYPE_FLOAT)
value = json_create_value_float(va_arg(args, double));
else if (type == JSON_TYPE_OBJECT)
@@
-244,7
+248,7
@@
int json_array_add_value_type(struct json_array *array, int type, ...)
if (type == JSON_TYPE_STRING)
value = json_create_value_string(va_arg(args, char *));
else if (type == JSON_TYPE_INTEGER)
if (type == JSON_TYPE_STRING)
value = json_create_value_string(va_arg(args, char *));
else if (type == JSON_TYPE_INTEGER)
- value = json_create_value_int(va_arg(args, long));
+ value = json_create_value_int(va_arg(args, long
long
));
else if (type == JSON_TYPE_FLOAT)
value = json_create_value_float(va_arg(args, double));
else if (type == JSON_TYPE_OBJECT)
else if (type == JSON_TYPE_FLOAT)
value = json_create_value_float(va_arg(args, double));
else if (type == JSON_TYPE_OBJECT)
@@
-346,7
+350,7
@@
static void json_print_value(struct json_value *value)
log_info("\"%s\"", value->string);
break;
case JSON_TYPE_INTEGER:
log_info("\"%s\"", value->string);
break;
case JSON_TYPE_INTEGER:
- log_info("%ld", value->integer_number);
+ log_info("%l
l
d", value->integer_number);
break;
case JSON_TYPE_FLOAT:
log_info("%.2f", value->float_number);
break;
case JSON_TYPE_FLOAT:
log_info("%.2f", value->float_number);