From patchwork Mon Aug 3 07:15:47 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Holger Freyther X-Patchwork-Id: 503022 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.osmocom.org (tmp.osmocom.org [144.76.43.76]) by ozlabs.org (Postfix) with ESMTP id B0577140E31 for ; Mon, 3 Aug 2015 17:16:02 +1000 (AEST) Received: from lists.osmocom.org (lists.osmocom.org [144.76.43.76]) by lists.osmocom.org (Postfix) with ESMTP id 2CDAE8703; Mon, 3 Aug 2015 07:15:59 +0000 (UTC) X-Original-To: openbsc@lists.osmocom.org Delivered-To: openbsc@lists.osmocom.org Received: from gandharva.secretlabs.de (gandharva.secretlabs.de [5.9.72.18]) by lists.osmocom.org (Postfix) with ESMTP id D79C086FB for ; Mon, 3 Aug 2015 07:15:57 +0000 (UTC) Received: from localhost.localdomain (ip5b41c1ec.dynamic.kabel-deutschland.de [91.65.193.236]) by gandharva.secretlabs.de (Postfix) with ESMTPSA id D432F34531 for ; Mon, 3 Aug 2015 07:15:53 +0000 (UTC) From: Holger Freyther To: openbsc@lists.osmocom.org Subject: [PATCH] vty: Change API to have node installation be done by int Date: Mon, 3 Aug 2015 09:15:47 +0200 Message-Id: <1438586147-70839-1-git-send-email-holger@freyther.de> X-Mailer: git-send-email 2.3.5 X-BeenThere: openbsc@lists.osmocom.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Development of the OpenBSC GSM base station controller List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openbsc-bounces@lists.osmocom.org Sender: "OpenBSC" From: Holger Hans Peter Freyther We are mixing enums and hope that no short-enums are used. This is leading to a lot compiler warnings generated by clang. Change the API to work with integers. Porting: The go_parent_cb implementations in the applications need to be fixed. The API change leads to a compile time warning. Fixes: abis_om2000_vty.c:46:2: warning: implicit conversion from enumeration type 'enum bsc_vty_node' to different enumeration type 'enum node_type' [-Wenum-conversion] OM2K_NODE, ^~~~~~~~~ --- include/osmocom/vty/command.h | 8 ++++---- include/osmocom/vty/vty.h | 4 ++-- src/vty/command.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/include/osmocom/vty/command.h b/include/osmocom/vty/command.h index 89dc28f..4eb519f 100644 --- a/include/osmocom/vty/command.h +++ b/include/osmocom/vty/command.h @@ -92,7 +92,7 @@ enum node_type { * configuration function pointer . */ struct cmd_node { /*! \brief Node index */ - enum node_type node; + int node; /*! \brief Prompt character at vty interface. */ const char *prompt; @@ -334,15 +334,15 @@ struct desc { /* Prototypes. */ void install_node(struct cmd_node *, int (*)(struct vty *)); -void install_default(enum node_type); -void install_element(enum node_type, struct cmd_element *); +void install_default(int node_type); +void install_element(int node_type, struct cmd_element *); void install_element_ve(struct cmd_element *cmd); void sort_node(void); /* This is similar to install_default() but it also creates * 'exit' and 'end' commands. */ -void vty_install_default(enum node_type); +void vty_install_default(int node_type); /* Concatenates argv[shift] through argv[argc-1] into a single NUL-terminated string with a space between each element (allocated using diff --git a/include/osmocom/vty/vty.h b/include/osmocom/vty/vty.h index 1dcc230..3684397 100644 --- a/include/osmocom/vty/vty.h +++ b/include/osmocom/vty/vty.h @@ -156,7 +156,7 @@ struct vty_app_info { /*! \brief \ref talloc context */ void *tall_ctx; /*! \brief call-back for returning to parent n ode */ - enum node_type (*go_parent_cb)(struct vty *vty); + int (*go_parent_cb)(struct vty *vty); /*! \brief call-back to determine if node is config node */ int (*is_config_node)(struct vty *vty, int node); /*! \brief Check if the config is consistent before write */ @@ -184,7 +184,7 @@ int vty_shell_serv (struct vty *); void vty_hello (struct vty *); void *vty_current_index(struct vty *); int vty_current_node(struct vty *vty); -enum node_type vty_go_parent(struct vty *vty); +int vty_go_parent(struct vty *vty); extern void *tall_vty_ctx; diff --git a/src/vty/command.c b/src/vty/command.c index 3ff5f77..290b12d 100644 --- a/src/vty/command.c +++ b/src/vty/command.c @@ -548,7 +548,7 @@ static int vty_dump_nodes(struct vty *vty) * \param[in] ntype Node Type * \param[cmd] element to be installed */ -void install_element(enum node_type ntype, struct cmd_element *cmd) +void install_element(int ntype, struct cmd_element *cmd) { struct cmd_node *cnode; @@ -1897,7 +1897,7 @@ char **cmd_complete_command(vector vline, struct vty *vty, int *status) * Note also that this function relies on the is_config_child callback to * recognize non-config nodes if go_parent_cb is not set. */ -enum node_type vty_go_parent(struct vty *vty) +int vty_go_parent(struct vty *vty) { switch (vty->node) { case AUTH_NODE: @@ -3319,7 +3319,7 @@ void host_config_set(const char *filename) host.config = talloc_strdup(tall_vty_cmd_ctx, filename); } -void install_default(enum node_type node) +void install_default(int node) { install_element(node, &config_help_cmd); install_element(node, &config_list_cmd); @@ -3331,7 +3331,7 @@ void install_default(enum node_type node) install_element(node, &show_running_config_cmd); } -void vty_install_default(enum node_type node) +void vty_install_default(int node) { install_default(node);