2N/A * The contents of this file are subject to the terms of the 2N/A * Common Development and Distribution License (the "License"). 2N/A * You may not use this file except in compliance with the License. 2N/A * See the License for the specific language governing permissions 2N/A * and limitations under the License. 2N/A * When distributing Covered Code, include this CDDL HEADER in each 2N/A * If applicable, add the following below this CDDL HEADER, with the 2N/A * fields enclosed by brackets "[]" replaced with your own identifying 2N/A * information: Portions Copyright [yyyy] [name of copyright owner] 2N/A * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. 2N/A * kva_match(): Given a key-value array and a key, return a pointer to the 2N/A * value that matches the key. 2N/A * _kva_free(): Free up memory. 2N/A * _kva_free_value(): Free up memory (value) for all the occurrences of 2N/A * new_kva(): Allocate a key-value array. 2N/A * _str2kva(): Given a string (s) of key-value pairs, separated by delimeter 2N/A * (del), place the values into the key value array (nkva). 2N/A * Returns the escaped string; if new memory is allocated, it is written 2N/A * to *res else *res will be set to NULL so it is safe to call free(*res). 2N/A * Error is flagged in *err; the application needs to set it to B_FALSE. 2N/A /* Nothing to escape. */ 2N/A * _kva2str(): Given an array of key-value pairs, place them into a string 2N/A * (buf). Use delimeter (del) to separate pairs. Use assignment character 2N/A * (ass) to separate keys and values. 2N/A * This is the inverse of _str2kva; the keys and values must be escaped. 2N/A * This version also escapes the second delimiter, typically a colon. 2N/A * Return Values: 0 Success 1 Buffer too small 2N/A /* Suppress unset and empty values. */ 2N/A /* Find first non-white space character and return pointer to it */ 2N/A /* Remove trailing spaces */ 2N/A /* Unescape should only unescape the standard seperators */ 2N/A * Always allocates new memory, for some reason when allocate fails we try 2N/A * to return an empty string (but allocating that might also fail).