#include <unistd.h>
#endif
-#include <liblustre.h>
+#include <libcfs/util/string.h>
#include <lustre/lustreapi.h>
/** Quick-n'-dirty JSON string escape routine.
list = *json_items;
item = list->ljil_items;
- if (fprintf(fp, "{") < 0)
- return -errno;
+ fprintf(fp, "{");
for (i = 0; i < list->ljil_item_count; i++) {
if (item == NULL) {
llapi_err_noerrno(LLAPI_MSG_ERROR,
break;
}
- if (fprintf(fp, "\"%s\": ", item->lji_key) < 0)
- return -errno;
+ fprintf(fp, "\"%s\": ", item->lji_key);
switch (item->lji_type) {
case LLAPI_JSON_INTEGER:
- if (fprintf(fp, "%d", item->lji_integer) < 0)
- return -errno;
+ fprintf(fp, "%d", item->lji_integer);
break;
case LLAPI_JSON_BIGNUM:
- if (fprintf(fp, LPU64, item->lji_u64) < 0)
- return -errno;
+ fprintf(fp, "%llu", (unsigned long long)item->lji_u64);
break;
case LLAPI_JSON_REAL:
- if (fprintf(fp, "%f", item->lji_real) < 0)
- return -errno;
+ fprintf(fp, "%f", item->lji_real);
break;
case LLAPI_JSON_STRING:
if (llapi_json_escape_string(&escaped_string,
- item->lji_string) < 0) {
+ item->lji_string) < 0) {
if (escaped_string != NULL)
free(escaped_string);
return -errno;
}
- if (fprintf(fp, "\"%s\"", escaped_string) < 0) {
- if (escaped_string != NULL)
- free(escaped_string);
- return -errno;
- }
+ fprintf(fp, "\"%s\"", escaped_string);
if (escaped_string != NULL)
free(escaped_string);
llapi_err_noerrno(LLAPI_MSG_ERROR,
"Invalid item type: %d", item->lji_type);
/* Ensure valid JSON */
- if (fprintf(fp, "\"\"") < 0)
- return -errno;
+ fprintf(fp, "\"\"");
break;
}
if (i < list->ljil_item_count - 1)
- if (fprintf(fp, ", ") < 0)
- return -errno;
+ fprintf(fp, ", ");
item = item->lji_next;
}
- if (fprintf(fp, "}\n") < 0)
- return -errno;
+ fprintf(fp, "}\n");
return 0;
}
{
struct llapi_json_item_list *list;
struct llapi_json_item *new_item;
+ size_t len;
if (json_items == NULL || *json_items == NULL)
return -EINVAL;
if (new_item == NULL)
return -ENOMEM;
- new_item->lji_key = calloc(1, strlen(key) + 1);
+ len = strlen(key) + 1;
+ new_item->lji_key = calloc(len, sizeof(char));
if (new_item->lji_key == NULL)
return -ENOMEM;
- strncpy(new_item->lji_key, key, strlen(key));
+ strlcpy(new_item->lji_key, key, len);
new_item->lji_type = type;
new_item->lji_next = NULL;
new_item->lji_real = *(double *)val;
break;
case LLAPI_JSON_STRING:
- new_item->lji_string = calloc(1, strlen((char *)val) + 1);
+ len = strlen((char *)val) + 1;
+ new_item->lji_string = calloc(len, sizeof(char));
if (new_item->lji_string == NULL)
return -ENOMEM;
- strncpy(new_item->lji_string,
- (char *)val, strlen((char *)val));
+ strlcpy(new_item->lji_string, (char *)val, len);
break;
default:
llapi_err_noerrno(LLAPI_MSG_ERROR, "Unknown JSON type: %d",