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