xmlFree((void *) mem->defaultenabled);
xmlFree((void *) mem->support_level);
xmlFree((void *) mem->replacement);
+ xmlFree((void *) mem->deprecated_in);
+ xmlFree((void *) mem->removed_in);
}
free(mem);
return 0;
}
+static int process_xml_deprecatedin_node(xmlNode *node, struct member *mem)
+{
+ const char *tmp = (const char *) xmlNodeGetContent(node);
+
+ if (tmp && !strlen_zero(tmp)) {
+ xmlFree((void *) mem->deprecated_in);
+ mem->deprecated_in = tmp;
+ print_debug("Set deprecated_in for %s to %s\n", mem->name, mem->deprecated_in);
+ }
+
+ return 0;
+}
+
+static int process_xml_removedin_node(xmlNode *node, struct member *mem)
+{
+ const char *tmp = (const char *) xmlNodeGetContent(node);
+
+ if (tmp && !strlen_zero(tmp)) {
+ xmlFree((void *) mem->removed_in);
+ mem->removed_in = tmp;
+ print_debug("Set removed_in for %s to %s\n", mem->name, mem->removed_in);
+ }
+
+ return 0;
+}
+
static int process_xml_ref_node(xmlNode *node, struct member *mem, struct reference_list *refs)
{
struct reference *ref;
{ "conflict", process_xml_conflict_node },
{ "use", process_xml_use_node },
{ "member_data", process_xml_member_data_node },
+ { "deprecated_in", process_xml_deprecatedin_node },
+ { "removed_in", process_xml_removedin_node },
};
static node_handler lookup_node_handler(xmlNode *node)
const char *touch_on_change;
const char *support_level;
const char *replacement;
+ const char *deprecated_in;
+ const char *removed_in;
/*! member_data is just an opaque, member-specific string */
const char *member_data;
/*! This module is currently selected */
if (!mem->is_separator) { /* Separators lack support levels */
{ /* support level */
+ char buf2[64];
wmove(menu, end - start_y + 7, start_x);
snprintf(buf, sizeof(buf), "Support Level: %s", mem->support_level);
if (mem->replacement && *mem->replacement) {
- char buf2[64];
snprintf(buf2, sizeof(buf2), ", Replaced by: %s", mem->replacement);
strncat(buf, buf2, sizeof(buf) - strlen(buf) - 1);
}
+ if (mem->deprecated_in && *mem->deprecated_in) {
+ snprintf(buf2, sizeof(buf2), ", Deprecated in: %s", mem->deprecated_in);
+ strncat(buf, buf2, sizeof(buf) - strlen(buf) - 1);
+ }
+ if (mem->removed_in && *mem->removed_in) {
+ snprintf(buf2, sizeof(buf2), ", Removed in: %s", mem->removed_in);
+ strncat(buf, buf2, sizeof(buf) - strlen(buf) - 1);
+ }
waddstr(menu, buf);
}
}
static void display_member_info(struct member *mem)
{
char buffer[128] = { 0 };
+ char buf2[64];
struct reference *dep;
struct reference *con;
{ /* Support Level */
snprintf(buffer, sizeof(buffer), "%s", mem->support_level);
if (mem->replacement && *mem->replacement) {
- char buf2[64];
snprintf(buf2, sizeof(buf2), ", Replaced by: %s", mem->replacement);
strncat(buffer, buf2, sizeof(buffer) - strlen(buffer) - 1);
}
+ if (mem->deprecated_in && *mem->deprecated_in) {
+ snprintf(buf2, sizeof(buf2), ", Deprecated in: %s", mem->deprecated_in);
+ strncat(buffer, buf2, sizeof(buffer) - strlen(buffer) - 1);
+ }
+ if (mem->removed_in && *mem->removed_in) {
+ snprintf(buf2, sizeof(buf2), ", Removed in: %s", mem->removed_in);
+ strncat(buffer, buf2, sizeof(buffer) - strlen(buffer) - 1);
+ }
if (mem->is_separator) {
newtTextboxSetText(supportLevelDataTextbox, "");
} else {