static void ctx_write_callback(gpointer data, gpointer user_data){ PropertyContext *ctx=(PropertyContext *) data; SchemasFileData *sData=(SchemasFileData *) user_data; xml_tags_write(sData->outF,"schema",XML_TAG_TYPE_BEGIN_ONLY,NULL,NULL); gchar buf[STRING_BUFFER_SIZE_DEFAULT]; g_snprintf(buf,STRING_BUFFER_SIZE_DEFAULT,"/schemas%s/%s",sData->schemasHome,ctx->spec->key); xml_tags_write(sData->outF,"key",XML_TAG_TYPE_SHORT,NULL,buf); xml_tags_write(sData->outF,"applyto",XML_TAG_TYPE_SHORT,NULL,buf+strlen("/schemas")); xml_tags_write(sData->outF,"owner",XML_TAG_TYPE_SHORT,NULL,sData->owner); switch(ctx->spec->valueType){ case G_TYPE_BOOLEAN: xml_tags_write(sData->outF,"type",XML_TAG_TYPE_SHORT,NULL,"bool"); break; case G_TYPE_INT: case G_TYPE_UINT: xml_tags_write(sData->outF,"type",XML_TAG_TYPE_SHORT,NULL,"int"); break; case G_TYPE_STRING: xml_tags_write(sData->outF,"type",XML_TAG_TYPE_SHORT,NULL,"string"); break; default: break; } if (ctx->spec->defaultValue){ xml_tags_write(sData->outF,"default",XML_TAG_TYPE_SHORT,NULL,ctx->spec->defaultValue); } gchar **localeArray=g_strsplit_set(sData->locales,":;",-1); int i; for(i=0;localeArray[i]!=NULL;i++){ ctx_write_locale(ctx,sData,localeArray[i]); } setlocale(LC_ALL,NULL); xml_tags_write(sData->outF,"schema",XML_TAG_TYPE_END_ONLY,NULL,NULL); }
gboolean ctx_write(PropertyContext * ctx, const gchar * schemasHome, const gchar * owner, FILE * outF) { if (ctx->spec->propertyFlags & MKDG_PROPERTY_FLAG_NO_BACKEND){ return TRUE; } mkdg_xml_tags_write(outF, "schema", MKDG_XML_TAG_TYPE_BEGIN_ONLY, NULL, NULL); gchar buf[XML_BUFFER_SIZE]; gchar *camalCasedKey=mkdg_str_dash_to_camel(ctx->spec->key); g_snprintf(buf, XML_BUFFER_SIZE, "/schemas%s",schemasHome); if (! STRING_IS_EMPTY(ctx->spec->subSection)) { g_strlcat(buf, "/", XML_BUFFER_SIZE); g_strlcat(buf, ctx->spec->subSection, XML_BUFFER_SIZE); } g_strlcat(buf, "/", XML_BUFFER_SIZE); g_strlcat(buf, camalCasedKey, XML_BUFFER_SIZE); mkdg_xml_tags_write(outF, "key", MKDG_XML_TAG_TYPE_SHORT, NULL, buf); mkdg_xml_tags_write(outF, "applyto", MKDG_XML_TAG_TYPE_SHORT, NULL, buf + strlen("/schemas")); mkdg_xml_tags_write(outF, "owner", MKDG_XML_TAG_TYPE_SHORT, NULL, owner); switch (ctx->spec->valueType) { case G_TYPE_BOOLEAN: mkdg_xml_tags_write(outF, "type", MKDG_XML_TAG_TYPE_SHORT, NULL, "bool"); break; case G_TYPE_INT: case G_TYPE_UINT: mkdg_xml_tags_write(outF, "type", MKDG_XML_TAG_TYPE_SHORT, NULL, "int"); break; case G_TYPE_STRING: mkdg_xml_tags_write(outF, "type", MKDG_XML_TAG_TYPE_SHORT, NULL, "string"); break; default: break; } if (ctx->spec->defaultValue) { mkdg_xml_tags_write(outF, "default", MKDG_XML_TAG_TYPE_SHORT, NULL, ctx->spec->defaultValue); } int i; for (i = 0; localeArray[i] != NULL; i++) { ctx_write_locale(ctx, outF, localeArray[i]); } setlocale(LC_ALL, NULL); mkdg_xml_tags_write(outF, "schema", MKDG_XML_TAG_TYPE_END_ONLY, NULL, NULL); return TRUE; }