mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-02 02:18:31 +00:00
menuselect: Add ability to set deprecated and removed versions.
The "deprecated_in" and "removed_in" information can now be set in MODULEINFO for a module and is then displayed in menuselect so users can be aware of when a module is slated to be deprecated and then removed. ASTERISK-29337 Change-Id: I6952889cf08e0e9e99cf8b43f99b3cef4688087a
This commit is contained in:
committed by
George Joseph
parent
be3e469f98
commit
6aac148d59
@@ -210,6 +210,8 @@ static void free_member(struct member *mem)
|
|||||||
xmlFree((void *) mem->defaultenabled);
|
xmlFree((void *) mem->defaultenabled);
|
||||||
xmlFree((void *) mem->support_level);
|
xmlFree((void *) mem->support_level);
|
||||||
xmlFree((void *) mem->replacement);
|
xmlFree((void *) mem->replacement);
|
||||||
|
xmlFree((void *) mem->deprecated_in);
|
||||||
|
xmlFree((void *) mem->removed_in);
|
||||||
}
|
}
|
||||||
|
|
||||||
free(mem);
|
free(mem);
|
||||||
@@ -341,6 +343,32 @@ static int process_xml_replacement_node(xmlNode *node, struct member *mem)
|
|||||||
return 0;
|
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)
|
static int process_xml_ref_node(xmlNode *node, struct member *mem, struct reference_list *refs)
|
||||||
{
|
{
|
||||||
struct reference *ref;
|
struct reference *ref;
|
||||||
@@ -416,6 +444,8 @@ static const struct {
|
|||||||
{ "conflict", process_xml_conflict_node },
|
{ "conflict", process_xml_conflict_node },
|
||||||
{ "use", process_xml_use_node },
|
{ "use", process_xml_use_node },
|
||||||
{ "member_data", process_xml_member_data_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)
|
static node_handler lookup_node_handler(xmlNode *node)
|
||||||
|
@@ -70,6 +70,8 @@ struct member {
|
|||||||
const char *touch_on_change;
|
const char *touch_on_change;
|
||||||
const char *support_level;
|
const char *support_level;
|
||||||
const char *replacement;
|
const char *replacement;
|
||||||
|
const char *deprecated_in;
|
||||||
|
const char *removed_in;
|
||||||
/*! member_data is just an opaque, member-specific string */
|
/*! member_data is just an opaque, member-specific string */
|
||||||
const char *member_data;
|
const char *member_data;
|
||||||
/*! This module is currently selected */
|
/*! This module is currently selected */
|
||||||
|
@@ -279,13 +279,21 @@ static void display_mem_info(WINDOW *menu, struct member *mem, int start_y, int
|
|||||||
|
|
||||||
if (!mem->is_separator) { /* Separators lack support levels */
|
if (!mem->is_separator) { /* Separators lack support levels */
|
||||||
{ /* support level */
|
{ /* support level */
|
||||||
|
char buf2[64];
|
||||||
wmove(menu, end - start_y + 7, start_x);
|
wmove(menu, end - start_y + 7, start_x);
|
||||||
snprintf(buf, sizeof(buf), "Support Level: %s", mem->support_level);
|
snprintf(buf, sizeof(buf), "Support Level: %s", mem->support_level);
|
||||||
if (mem->replacement && *mem->replacement) {
|
if (mem->replacement && *mem->replacement) {
|
||||||
char buf2[64];
|
|
||||||
snprintf(buf2, sizeof(buf2), ", Replaced by: %s", mem->replacement);
|
snprintf(buf2, sizeof(buf2), ", Replaced by: %s", mem->replacement);
|
||||||
strncat(buf, buf2, sizeof(buf) - strlen(buf) - 1);
|
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);
|
waddstr(menu, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -110,6 +110,7 @@ static void reset_display()
|
|||||||
static void display_member_info(struct member *mem)
|
static void display_member_info(struct member *mem)
|
||||||
{
|
{
|
||||||
char buffer[128] = { 0 };
|
char buffer[128] = { 0 };
|
||||||
|
char buf2[64];
|
||||||
|
|
||||||
struct reference *dep;
|
struct reference *dep;
|
||||||
struct reference *con;
|
struct reference *con;
|
||||||
@@ -175,10 +176,17 @@ static void display_member_info(struct member *mem)
|
|||||||
{ /* Support Level */
|
{ /* Support Level */
|
||||||
snprintf(buffer, sizeof(buffer), "%s", mem->support_level);
|
snprintf(buffer, sizeof(buffer), "%s", mem->support_level);
|
||||||
if (mem->replacement && *mem->replacement) {
|
if (mem->replacement && *mem->replacement) {
|
||||||
char buf2[64];
|
|
||||||
snprintf(buf2, sizeof(buf2), ", Replaced by: %s", mem->replacement);
|
snprintf(buf2, sizeof(buf2), ", Replaced by: %s", mem->replacement);
|
||||||
strncat(buffer, buf2, sizeof(buffer) - strlen(buffer) - 1);
|
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) {
|
if (mem->is_separator) {
|
||||||
newtTextboxSetText(supportLevelDataTextbox, "");
|
newtTextboxSetText(supportLevelDataTextbox, "");
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user