1*36589d6bSRobert Mustacchi /*
2*36589d6bSRobert Mustacchi  * This file and its contents are supplied under the terms of the
3*36589d6bSRobert Mustacchi  * Common Development and Distribution License ("CDDL"), version 1.0.
4*36589d6bSRobert Mustacchi  * You may only use this file in accordance with the terms of version
5*36589d6bSRobert Mustacchi  * 1.0 of the CDDL.
6*36589d6bSRobert Mustacchi  *
7*36589d6bSRobert Mustacchi  * A full copy of the text of the CDDL should have accompanied this
8*36589d6bSRobert Mustacchi  * source.  A copy of the CDDL is also available via the Internet at
9*36589d6bSRobert Mustacchi  * http://www.illumos.org/license/CDDL.
10*36589d6bSRobert Mustacchi  */
11*36589d6bSRobert Mustacchi 
12*36589d6bSRobert Mustacchi /*
13*36589d6bSRobert Mustacchi  * Copyright 2018 Joyent, Inc.
14*36589d6bSRobert Mustacchi  */
15*36589d6bSRobert Mustacchi 
16*36589d6bSRobert Mustacchi #ifndef	_LIBVARPD_FILES_JSON_H
17*36589d6bSRobert Mustacchi #define	_LIBVARPD_FILES_JSON_H
18*36589d6bSRobert Mustacchi 
19*36589d6bSRobert Mustacchi #include <libnvpair.h>
20*36589d6bSRobert Mustacchi #include <libcustr.h>
21*36589d6bSRobert Mustacchi 
22*36589d6bSRobert Mustacchi #ifdef __cplusplus
23*36589d6bSRobert Mustacchi extern "C" {
24*36589d6bSRobert Mustacchi #endif
25*36589d6bSRobert Mustacchi 
26*36589d6bSRobert Mustacchi typedef enum nvlist_parse_json_flags {
27*36589d6bSRobert Mustacchi 	NVJSON_FORCE_INTEGER = 0x01,
28*36589d6bSRobert Mustacchi 	NVJSON_FORCE_DOUBLE = 0x02,
29*36589d6bSRobert Mustacchi 	NVJSON_ERRORS_TO_STDERR = 0x04,
30*36589d6bSRobert Mustacchi 	NVJSON_DEBUG = 0x08
31*36589d6bSRobert Mustacchi } nvlist_parse_json_flags_t;
32*36589d6bSRobert Mustacchi 
33*36589d6bSRobert Mustacchi typedef struct nvlist_parse_json_error {
34*36589d6bSRobert Mustacchi 	int nje_errno;
35*36589d6bSRobert Mustacchi 	long nje_pos;
36*36589d6bSRobert Mustacchi 	char nje_message[512];
37*36589d6bSRobert Mustacchi } nvlist_parse_json_error_t;
38*36589d6bSRobert Mustacchi 
39*36589d6bSRobert Mustacchi #define	NVJSON_ALL						\
40*36589d6bSRobert Mustacchi 	(NVJSON_FORCE_INTEGER |					\
41*36589d6bSRobert Mustacchi 	NVJSON_FORCE_DOUBLE |					\
42*36589d6bSRobert Mustacchi 	NVJSON_ERRORS_TO_STDERR |				\
43*36589d6bSRobert Mustacchi 	NVJSON_DEBUG)
44*36589d6bSRobert Mustacchi 
45*36589d6bSRobert Mustacchi extern int nvlist_parse_json(const char *, size_t, nvlist_t **,
46*36589d6bSRobert Mustacchi     nvlist_parse_json_flags_t, nvlist_parse_json_error_t *);
47*36589d6bSRobert Mustacchi 
48*36589d6bSRobert Mustacchi #ifdef __cplusplus
49*36589d6bSRobert Mustacchi }
50*36589d6bSRobert Mustacchi #endif
51*36589d6bSRobert Mustacchi 
52*36589d6bSRobert Mustacchi #endif	/* _LIBVARPD_FILES_JSON_H */
53