static void rdatasetstats_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) { stats_dumparg_t *dumparg = arg; FILE *fp; char typebuf[64]; const char *typestr; isc_boolean_t nxrrset = ISC_FALSE; #ifdef HAVE_LIBXML2 xmlTextWriterPtr writer; #endif if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_NXDOMAIN) != 0) { typestr = "NXDOMAIN"; } else if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_OTHERTYPE) != 0) { typestr = "Others"; } else { dns_rdatatype_format(DNS_RDATASTATSTYPE_BASE(type), typebuf, sizeof(typebuf)); typestr = typebuf; } if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_NXRRSET) != 0) nxrrset = ISC_TRUE; switch (dumparg->type) { case statsformat_file: fp = dumparg->arg; fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s%s\n", val, nxrrset ? "!" : "", typestr); break; case statsformat_xml: #ifdef HAVE_LIBXML2 writer = dumparg->arg; xmlTextWriterStartElement(writer, ISC_XMLCHAR "rrset"); xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"); xmlTextWriterWriteFormatString(writer, "%s%s", nxrrset ? "!" : "", typestr); xmlTextWriterEndElement(writer); /* name */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter"); xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", val); xmlTextWriterEndElement(writer); /* counter */ xmlTextWriterEndElement(writer); /* rrset */ #endif break; } }
static void generalstat_dump(dns_statscounter_t counter, isc_uint64_t val, void *arg) { stats_dumparg_t *dumparg = arg; FILE *fp; #ifdef HAVE_LIBXML2 xmlTextWriterPtr writer; #endif REQUIRE(counter < dumparg->ncounters); switch (dumparg->type) { case statsformat_file: fp = dumparg->arg; fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, dumparg->desc[counter]); break; case statsformat_xml: #ifdef HAVE_LIBXML2 writer = dumparg->arg; xmlTextWriterStartElement(writer, ISC_XMLCHAR dumparg->desc[counter]); xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", val); xmlTextWriterEndElement(writer); #endif break; } }
static void rdtypestat_dump(dns_rdatastatstype_t type, isc_uint64_t val, void *arg) { char typebuf[64]; const char *typestr; stats_dumparg_t *dumparg = arg; FILE *fp; #ifdef HAVE_LIBXML2 xmlTextWriterPtr writer; int xmlrc; #endif if ((DNS_RDATASTATSTYPE_ATTR(type) & DNS_RDATASTATSTYPE_ATTR_OTHERTYPE) == 0) { dns_rdatatype_format(DNS_RDATASTATSTYPE_BASE(type), typebuf, sizeof(typebuf)); typestr = typebuf; } else typestr = "Others"; switch (dumparg->type) { case statsformat_file: fp = dumparg->arg; fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, typestr); break; case statsformat_xml: #ifdef HAVE_LIBXML2 writer = dumparg->arg; TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "rdtype")); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR typestr)); TRY0(xmlTextWriterEndElement(writer)); /* name */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter")); TRY0(xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", val)); TRY0(xmlTextWriterEndElement(writer)); /* counter */ TRY0(xmlTextWriterEndElement(writer)); /* rdtype */ #endif break; } return; #ifdef HAVE_LIBXML2 error: dumparg->result = ISC_R_FAILURE; return; #endif }
static isc_result_t zone_xmlrender(dns_zone_t *zone, void *arg) { char buf[1024 + 32]; /* sufficiently large for zone name and class */ dns_rdataclass_t rdclass; isc_uint32_t serial; xmlTextWriterPtr writer = arg; isc_stats_t *zonestats; isc_uint64_t nsstat_values[dns_nsstatscounter_max]; int xmlrc; isc_result_t result; TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "zone")); dns_zone_name(zone, buf, sizeof(buf)); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR buf)); TRY0(xmlTextWriterEndElement(writer)); rdclass = dns_zone_getclass(zone); dns_rdataclass_format(rdclass, buf, sizeof(buf)); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "rdataclass")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR buf)); TRY0(xmlTextWriterEndElement(writer)); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "serial")); if (dns_zone_getserial2(zone, &serial) == ISC_R_SUCCESS) TRY0(xmlTextWriterWriteFormatString(writer, "%u", serial)); else TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR "-")); TRY0(xmlTextWriterEndElement(writer)); zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters")); result = dump_counters(zonestats, statsformat_xml, writer, NULL, nsstats_xmldesc, dns_nsstatscounter_max, nsstats_index, nsstat_values, ISC_STATSDUMP_VERBOSE); if (result != ISC_R_SUCCESS) goto error; TRY0(xmlTextWriterEndElement(writer)); /* counters */ } TRY0(xmlTextWriterEndElement(writer)); /* zone */ return (ISC_R_SUCCESS); error: return (ISC_R_FAILURE); }
static void opcodestat_dump(dns_opcode_t code, isc_uint64_t val, void *arg) { FILE *fp; isc_buffer_t b; char codebuf[64]; stats_dumparg_t *dumparg = arg; #ifdef HAVE_LIBXML2 xmlTextWriterPtr writer; int xmlrc; #endif isc_buffer_init(&b, codebuf, sizeof(codebuf) - 1); dns_opcode_totext(code, &b); codebuf[isc_buffer_usedlength(&b)] = '\0'; switch (dumparg->type) { case statsformat_file: fp = dumparg->arg; fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", val, codebuf); break; case statsformat_xml: #ifdef HAVE_LIBXML2 writer = dumparg->arg; TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "opcode")); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR codebuf)); TRY0(xmlTextWriterEndElement(writer)); /* name */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter")); TRY0(xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", val)); TRY0(xmlTextWriterEndElement(writer)); /* counter */ TRY0(xmlTextWriterEndElement(writer)); /* opcode */ #endif break; } return; #ifdef HAVE_LIBXML2 error: dumparg->result = ISC_R_FAILURE; return; #endif }
static isc_result_t zone_xmlrender(dns_zone_t *zone, void *arg) { char buf[1024 + 32]; /* sufficiently large for zone name and class */ dns_rdataclass_t rdclass; isc_uint32_t serial; xmlTextWriterPtr writer = arg; stats_dumparg_t dumparg; dns_stats_t *zonestats; xmlTextWriterStartElement(writer, ISC_XMLCHAR "zone"); dns_zone_name(zone, buf, sizeof(buf)); xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"); xmlTextWriterWriteString(writer, ISC_XMLCHAR buf); xmlTextWriterEndElement(writer); rdclass = dns_zone_getclass(zone); dns_rdataclass_format(rdclass, buf, sizeof(buf)); xmlTextWriterStartElement(writer, ISC_XMLCHAR "rdataclass"); xmlTextWriterWriteString(writer, ISC_XMLCHAR buf); xmlTextWriterEndElement(writer); serial = dns_zone_getserial(zone); xmlTextWriterStartElement(writer, ISC_XMLCHAR "serial"); xmlTextWriterWriteFormatString(writer, "%u", serial); xmlTextWriterEndElement(writer); dumparg.type = statsformat_xml; dumparg.arg = writer; dumparg.desc = nsstats_xmldesc; dumparg.ncounters = dns_nsstatscounter_max; zonestats = dns_zone_getrequeststats(zone); if (zonestats != NULL) { xmlTextWriterStartElement(writer, ISC_XMLCHAR "counters"); dns_generalstats_dump(zonestats, generalstat_dump, &dumparg, DNS_STATSDUMP_VERBOSE); xmlTextWriterEndElement(writer); /* counters */ } xmlTextWriterEndElement(writer); /* zone */ return (ISC_R_SUCCESS); }
void Service::PutParams(xmlTextWriterPtr writer) { Persist::PutParams(writer); PutString(writer, "label", service_label); PutHexBinary(writer, "service_identifier", service_identifier); PutString(writer, "country", country); PutUnsignedEnum(writer, "language", LANGUAGES, language); PutString(writer, "language_long", language_long); // needed for DRM, not for AMSS if(service_descriptor != -1) PutUnsigned(writer, "service_descriptor", service_descriptor); if(audio_ref.length()>0) PutString(writer, "audio_ref", audio_ref); if(data_ref.length()>0) PutString(writer, "data_ref", data_ref); if(afs_ref.size()>0) { xmlTextWriterStartElement(writer, BAD_CAST "afs_refs"); for(size_t i=0; i<afs_ref.size(); i++) PutString(writer, "afs_ref", afs_ref[i]); xmlTextWriterEndElement(writer); } if(conditional_access) { xmlTextWriterStartElement(writer, BAD_CAST "conditional_access"); PutUnsigned(writer, "ca_system_identifer", ca_system_identifier); xmlTextWriterStartElement(writer, BAD_CAST "ca_data"); for(size_t i=0; i<ca_data.size(); i++) { xmlTextWriterWriteFormatString(writer, "%02x", ca_data[i]); } xmlTextWriterEndElement(writer); } if(announcement.size()>0) { xmlTextWriterStartElement(writer, BAD_CAST "announcements"); for(size_t i=0; i<announcement.size(); i++) announcement[i].Configuration(writer); xmlTextWriterEndElement(writer); } }
void isc_taskmgr_renderxml(isc_taskmgr_t *mgr, xmlTextWriterPtr writer) { isc_task_t *task; LOCK(&mgr->lock); /* * Write out the thread-model, and some details about each depending * on which type is enabled. */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "thread-model"); #ifdef ISC_PLATFORM_USETHREADS xmlTextWriterStartElement(writer, ISC_XMLCHAR "type"); xmlTextWriterWriteString(writer, ISC_XMLCHAR "threaded"); xmlTextWriterEndElement(writer); /* type */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "worker-threads"); xmlTextWriterWriteFormatString(writer, "%d", mgr->workers); xmlTextWriterEndElement(writer); /* worker-threads */ #else /* ISC_PLATFORM_USETHREADS */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "type"); xmlTextWriterWriteString(writer, ISC_XMLCHAR "non-threaded"); xmlTextWriterEndElement(writer); /* type */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); xmlTextWriterWriteFormatString(writer, "%d", mgr->refs); xmlTextWriterEndElement(writer); /* references */ #endif /* ISC_PLATFORM_USETHREADS */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "default-quantum"); xmlTextWriterWriteFormatString(writer, "%d", mgr->default_quantum); xmlTextWriterEndElement(writer); /* default-quantum */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "tasks-running"); xmlTextWriterWriteFormatString(writer, "%d", mgr->tasks_running); xmlTextWriterEndElement(writer); /* tasks-running */ xmlTextWriterEndElement(writer); /* thread-model */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "tasks"); task = ISC_LIST_HEAD(mgr->tasks); while (task != NULL) { LOCK(&task->lock); xmlTextWriterStartElement(writer, ISC_XMLCHAR "task"); if (task->name[0] != 0) { xmlTextWriterStartElement(writer, ISC_XMLCHAR "name"); xmlTextWriterWriteFormatString(writer, "%s", task->name); xmlTextWriterEndElement(writer); /* name */ } xmlTextWriterStartElement(writer, ISC_XMLCHAR "references"); xmlTextWriterWriteFormatString(writer, "%d", task->references); xmlTextWriterEndElement(writer); /* references */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "id"); xmlTextWriterWriteFormatString(writer, "%p", task); xmlTextWriterEndElement(writer); /* id */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "state"); xmlTextWriterWriteFormatString(writer, "%s", statenames[task->state]); xmlTextWriterEndElement(writer); /* state */ xmlTextWriterStartElement(writer, ISC_XMLCHAR "quantum"); xmlTextWriterWriteFormatString(writer, "%d", task->quantum); xmlTextWriterEndElement(writer); /* quantum */ xmlTextWriterEndElement(writer); UNLOCK(&task->lock); task = ISC_LIST_NEXT(task, link); } xmlTextWriterEndElement(writer); /* tasks */ UNLOCK(&mgr->lock); }
void daeLIBXMLPlugin::writeAttribute( daeMetaAttribute* attr, daeElement* element ) { static daeChar atomicTypeBuf[TYPE_BUFFER_SIZE]; if (element == NULL) return; if ( attr->getCount(element) == 0 ) { //we don't have a value if its required print it empty else just skip if ( attr->getIsRequired() ) { xmlTextWriterStartAttribute( writer, (xmlChar*)(daeString)attr->getName() ); xmlTextWriterEndAttribute( writer ); } return; } else if ( attr->getCount(element) == 1 ) { //single value or an array of a single value char* elemMem = attr->get(element, 0); // !!!GAC recoded the suppression logic so you could enable suppressions individually if(!attr->getIsRequired()) { // This attribute was not required and might get suppressed int typeSize = attr->getType()->getSize(); if(attr->getDefault() != NULL) { #if 1 // The attribute has a default, convert the default to binary and suppress // output of the attribute if the value matches the default. // DISABLE THIS CODE IF YOU WANT DEFAULT VALUES TO ALWAYS EXPORT if(typeSize >= TYPE_BUFFER_SIZE) { fprintf(stderr, "daeMetaAttribute::print() - buffer too small for default value of %s in %s\n", (daeString)attr->getName(),(daeString)attr->getContainer()->getName()); fflush(stderr); return; } attr->getType()->stringToMemory((daeChar*)attr->getDefault(),atomicTypeBuf); if(memcmp(atomicTypeBuf,elemMem,typeSize) == 0) return; #endif } else { #if 1 // The attribute does not have a default, suppress it if its value is all zeros (binary) // DISABLE THIS CODE IF YOU WANT OPTIONAL ATTRIBUTES THAT HAVE A VALUE OF ZERO TO EXPORT // Disabling this code may cause some unused attributes to be exported if _isValid is not // enabled and properly used. int i; for(i=0; i<typeSize;i++) { if(elemMem[i] != 0) break; } if(i == typeSize && attr->getContainer()->getValueAttribute() != attr && attr->getType()->getTypeEnum() != daeAtomicType::BoolType && attr->getType()->getTypeEnum() != daeAtomicType::EnumType ) return; #endif } } // Convert the attribute to a string if (attr->getType()->memoryToString(elemMem, atomicTypeBuf, TYPE_BUFFER_SIZE)== false) { fprintf(stderr, "daeMetaAttribute::print() - buffer too small for %s in %s\n", (daeString)attr->getName(),(daeString)attr->getContainer()->getName()); fflush(stderr); } // Suppress attributes that convert to an empty string. if (strlen(atomicTypeBuf) == 0) return; // Is this a value attribute or something else? if (attr->getContainer()->getValueAttribute() == attr) { // Always export value attributes xmlTextWriterWriteString( writer, (xmlChar*)atomicTypeBuf); } else { // Suppress attributes not marked as containing valid values // DO NOT TURN THIS ON TILL ALL USER CODE HAS BEEN CHANGED TO SET _isValid OR // ATTRIBUTES THAT WERE CREATED/SET BY USER CODE MAY NOT EXPORT. #if 0 // NOTE: even if a value is marked REQUIRED by the schema, if _isValid isn't true it means // the value in this parameter was never set and may be garbage, so we suppress it even though it is required. // To change this add && !_isRequired to the expression below. if(!attr->getIsValid() ) return; #endif // Export the attribute name and value xmlTextWriterWriteAttribute( writer, (xmlChar*)(daeString)attr->getName(), (xmlChar*)atomicTypeBuf); } } else { if (attr->getContainer()->getValueAttribute() != attr) { xmlTextWriterStartAttribute( writer, (xmlChar*)(daeString)attr->getName() ); } for( int i = 0; i < attr->getCount(element); i++ ) { char* elemMem = attr->get(element, i); if (attr->getType()->memoryToString(elemMem, atomicTypeBuf, TYPE_BUFFER_SIZE)== false) { fprintf(stderr, "daeMetaArrayAttribute::print() - buffer too small for %s in %s\n", (daeString)attr->getName(),(daeString)attr->getContainer()->getName()); fflush(stderr); } xmlTextWriterWriteFormatString( writer, "%s ", (xmlChar*)atomicTypeBuf ); } if (attr->getContainer()->getValueAttribute() != attr) { xmlTextWriterEndAttribute( writer ); } } }
void Stylesheet::save () // Saves the stylesheet to its native xml format. { // If no name is given, we work with the template. It can't be saved. if (name.empty()) return; // Start the new xml document. xmlBufferPtr buffer = xmlBufferCreate(); xmlTextWriterPtr writer = xmlNewTextWriterMemory(buffer, 0); xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); xmlTextWriterSetIndent(writer, 1); xmlTextWriterStartElement(writer, BAD_CAST "bibledit-configuration"); // Get the combined information, and write it to the document. for (unsigned int i = 0; i < styles.size(); i++) { StyleV2 * style = styles[i]; // Open a style for the marker xmlTextWriterStartElement(writer, BAD_CAST "style"); xmlTextWriterWriteFormatAttribute (writer, BAD_CAST "marker", "%s", style->marker.c_str()); // Write values. if (!style->name.empty()) { xmlTextWriterStartElement(writer, BAD_CAST "name"); xmlTextWriterWriteFormatString(writer, "%s", style->name.c_str()); xmlTextWriterEndElement(writer); } if (!style->info.empty()) { xmlTextWriterStartElement(writer, BAD_CAST "info"); xmlTextWriterWriteFormatString(writer, "%s", style->info.c_str()); xmlTextWriterEndElement(writer); } xmlTextWriterStartElement(writer, BAD_CAST "type"); xmlTextWriterWriteFormatString(writer, "%d", style->type); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "subtype"); xmlTextWriterWriteFormatString(writer, "%d", style->subtype); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "fontsize"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->fontsize).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "italic"); xmlTextWriterWriteFormatString(writer, "%s", style->italic.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "bold"); xmlTextWriterWriteFormatString(writer, "%s", style->bold.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "underline"); xmlTextWriterWriteFormatString(writer, "%s", style->underline.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "smallcaps"); xmlTextWriterWriteFormatString(writer, "%s", style->smallcaps.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "superscript"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->superscript).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "justification"); xmlTextWriterWriteFormatString(writer, "%s", style->justification.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "spacebefore"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->spacebefore).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "spaceafter"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->spaceafter).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "leftmargin"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->leftmargin).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "rightmargin"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->rightmargin).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "firstlineindent"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->firstlineindent).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "spancolumns"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->spancolumns).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "color"); xmlTextWriterWriteFormatString(writer, "%d", style->color); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "print"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->print).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userbool1"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->userbool1).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userbool2"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->userbool2).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userbool3"); xmlTextWriterWriteFormatString(writer, "%s", convert_to_string (style->userbool3).c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userint1"); xmlTextWriterWriteFormatString(writer, "%d", style->userint1); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userint2"); xmlTextWriterWriteFormatString(writer, "%d", style->userint2); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userint3"); xmlTextWriterWriteFormatString(writer, "%d", style->userint3); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userstring1"); xmlTextWriterWriteFormatString(writer, "%s", style->userstring1.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userstring2"); xmlTextWriterWriteFormatString(writer, "%s", style->userstring2.c_str()); xmlTextWriterEndElement(writer); xmlTextWriterStartElement(writer, BAD_CAST "userstring3"); xmlTextWriterWriteFormatString(writer, "%s", style->userstring3.c_str()); xmlTextWriterEndElement(writer); // Close the style. xmlTextWriterEndElement(writer); } // Close document and write it to disk. xmlTextWriterEndDocument(writer); xmlTextWriterFlush(writer); ustring filename = stylesheet_xml_filename (name); g_file_set_contents(filename.c_str(), (const gchar *)buffer->content, -1, NULL); // Free memory. if (writer) xmlFreeTextWriter(writer); if (buffer) xmlBufferFree(buffer); }
static isc_result_t dump_counters(isc_stats_t *stats, statsformat_t type, void *arg, const char *category, const char **desc, int ncounters, int *indices, isc_uint64_t *values, int options) { int i, index; isc_uint64_t value; stats_dumparg_t dumparg; FILE *fp; #ifdef HAVE_LIBXML2 xmlTextWriterPtr writer; int xmlrc; #endif #ifndef HAVE_LIBXML2 UNUSED(category); #endif dumparg.type = type; dumparg.ncounters = ncounters; dumparg.counterindices = indices; dumparg.countervalues = values; memset(values, 0, sizeof(values[0]) * ncounters); isc_stats_dump(stats, generalstat_dump, &dumparg, options); for (i = 0; i < ncounters; i++) { index = indices[i]; value = values[index]; switch (dumparg.type) { case statsformat_file: fp = arg; fprintf(fp, "%20" ISC_PRINT_QUADFORMAT "u %s\n", value, desc[index]); break; case statsformat_xml: #ifdef HAVE_LIBXML2 writer = arg; if (category != NULL) { TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR category)); TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "name")); TRY0(xmlTextWriterWriteString(writer, ISC_XMLCHAR desc[index])); TRY0(xmlTextWriterEndElement(writer)); /* name */ TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR "counter")); } else { TRY0(xmlTextWriterStartElement(writer, ISC_XMLCHAR desc[index])); } TRY0(xmlTextWriterWriteFormatString(writer, "%" ISC_PRINT_QUADFORMAT "u", value)); TRY0(xmlTextWriterEndElement(writer)); /* counter */ if (category != NULL) TRY0(xmlTextWriterEndElement(writer)); /* category */ #endif break; } } return (ISC_R_SUCCESS); #ifdef HAVE_LIBXML2 error: return (ISC_R_FAILURE); #endif }
gboolean saveNotes(char *uri) { GList *it = notesList; struct noteItem *ni = NULL; int rc; GtkWidget *dialog = NULL; xmlTextWriterPtr writer; /* Create a new XmlWriter for uri, with no compression. */ writer = xmlNewTextWriterFilename(uri, 0); if (writer == NULL) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Error creating the xml writer."); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlCleanupParser(); return FALSE; } /* Start the document with the xml default for the version, encoding * UTF-8 and the default for the standalone declaration. */ rc = xmlTextWriterStartDocument(writer, NULL, "UTF-8", NULL); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not start document. %d.", rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } /* Start root element. It's okay to use "BAD_CAST" since there * are no non-ascii letters. */ rc = xmlTextWriterStartElement(writer, BAD_CAST "notes"); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not start element \"notes\". %d.", rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } /* Save all notes which do exist. Leave out empty slides. */ while (it) { ni = (struct noteItem *)(it->data); if (ni->text != NULL && g_strcmp0("", ni->text) != 0) { /* Start of "slide" element. */ rc = xmlTextWriterStartElement(writer, BAD_CAST "slide"); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not start element \"slide\". %d.", rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } /* Write page number as attribute. */ rc = xmlTextWriterWriteFormatAttribute(writer, BAD_CAST "number", "%d", ni->number); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not write attribute \"number\"" " for slide %d. %d.", ni->number, rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } /* Write note as element content. */ rc = xmlTextWriterWriteFormatString(writer, "%s", ni->text); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not write string" " for slide %d. %d.", ni->number, rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } /* End of "slide" element. */ rc = xmlTextWriterEndElement(writer); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not end element \"slide\". %d.", rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } } it = g_list_next(it); } /* Here we could close open elements using the function * xmlTextWriterEndElement, but since we do not want to write any * other elements, we simply call xmlTextWriterEndDocument, which * will do all the work. */ rc = xmlTextWriterEndDocument(writer); if (rc < 0) { dialog = gtk_message_dialog_new(GTK_WINDOW(win_preview), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "xml: Could not end document. %d.", rc); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); xmlFreeTextWriter(writer); xmlCleanupParser(); return FALSE; } xmlFreeTextWriter(writer); xmlCleanupParser(); /* Report success. */ return TRUE; }