/* * prop_array_externalize_to_file -- * Externalize an array to the specified file. */ bool prop_array_externalize_to_file(prop_array_t array, const char *fname) { char *xml; bool rv; int save_errno = 0; /* XXXGCC -Wuninitialized [mips, ...] */ xml = prop_array_externalize(array); if (xml == NULL) return (false); rv = _prop_object_externalize_write_file(fname, xml, strlen(xml)); if (rv == false) save_errno = errno; _PROP_FREE(xml, M_TEMP); if (rv == false) errno = save_errno; return (rv); }
static int hdaudioctl_get(int fd, int argc, char *argv[]) { prop_dictionary_t request, response; prop_array_t config; uint16_t nid, codecid; const char *xml; int error; if (argc != 2) usage(); codecid = strtol(argv[0], NULL, 0); nid = strtol(argv[1], NULL, 0); request = prop_dictionary_create(); if (request == NULL) { fprintf(stderr, "out of memory\n"); return ENOMEM; } prop_dictionary_set_uint16(request, "codecid", codecid); prop_dictionary_set_uint16(request, "nid", nid); error = prop_dictionary_sendrecv_ioctl(request, fd, HDAUDIO_FGRP_GETCONFIG, &response); if (error != 0) { perror("HDAUDIO_FGRP_GETCONFIG failed"); return error; } config = prop_dictionary_get(response, "pin-config"); xml = prop_array_externalize(config); printf("%s\n", xml); prop_object_release(response); prop_object_release(request); return 0; }