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