diff options
-rw-r--r-- | include/osmocom/vty/command.h | 6 | ||||
-rw-r--r-- | include/osmocom/vty/vty.h | 10 | ||||
-rw-r--r-- | src/vty/command.c | 17 | ||||
-rw-r--r-- | src/vty/vty.c | 8 |
4 files changed, 22 insertions, 19 deletions
diff --git a/include/osmocom/vty/command.h b/include/osmocom/vty/command.h index 1db8ffea..0136f576 100644 --- a/include/osmocom/vty/command.h +++ b/include/osmocom/vty/command.h @@ -58,9 +58,7 @@ struct host { const char *motd; char *motdfile; - const char *prog_name; - const char *prog_version; - const char *prog_copyright; + const struct vty_app_info *app_info; }; /* There are some command levels which called from command node. */ @@ -387,6 +385,4 @@ void print_version(int print_copyright); extern void *tall_vty_cmd_ctx; -enum node_type (*vty_go_parent_cb)(struct vty *vty); - #endif /* _ZEBRA_COMMAND_H */ diff --git a/include/osmocom/vty/vty.h b/include/osmocom/vty/vty.h index f82ada1c..f0174624 100644 --- a/include/osmocom/vty/vty.h +++ b/include/osmocom/vty/vty.h @@ -127,8 +127,16 @@ static inline char *vty_newline(struct vty *vty) return VTY_NEWLINE; } +struct vty_app_info { + char *name; + char *version; + char *copyright; + void *tall_ctx; + enum node_type (*go_parent_cb)(struct vty *vty); +}; + /* Prototypes. */ -void vty_init(const char *name, const char *version, const char *copyright); +void vty_init(struct vty_app_info *app_info); int vty_read_config_file(const char *file_name, void *priv); void vty_init_vtysh (void); void vty_reset (void); diff --git a/src/vty/command.c b/src/vty/command.c index 7275a3d4..21afa5c0 100644 --- a/src/vty/command.c +++ b/src/vty/command.c @@ -84,9 +84,9 @@ const char *default_motd = ""; /* This is called from main when a daemon is invoked with -v or --version. */ void print_version(int print_copyright) { - printf("%s version %s\n", host.prog_name, host.prog_version); + printf("%s version %s\n", host.app_info->name, host.app_info->version); if (print_copyright) - printf("\n%s\n", host.prog_copyright); + printf("\n%s\n", host.app_info->copyright); } /* Utility function to concatenate argv argument into a single string @@ -1751,8 +1751,8 @@ enum node_type vty_go_parent(struct vty *vty) { assert(vty->node > CONFIG_NODE); - if (vty_go_parent_cb) - vty_go_parent_cb(vty); + if (host.app_info->go_parent_cb) + host.app_info->go_parent_cb(vty); else vty->node = CONFIG_NODE; @@ -2162,9 +2162,10 @@ gDEFUN(config_exit, DEFUN(show_version, show_version_cmd, "show version", SHOW_STR "Displays program version\n") { - vty_out(vty, "%s %s (%s).%s", host.prog_name, host.prog_version, - host.name ? host.name : "", VTY_NEWLINE); - vty_out(vty, "%s%s", host.prog_copyright, VTY_NEWLINE); + vty_out(vty, "%s %s (%s).%s", host.app_info->name, + host.app_info->version, + host.app_info->name ? host.app_info->name : "", VTY_NEWLINE); + vty_out(vty, "%s%s", host.app_info->copyright, VTY_NEWLINE); return CMD_SUCCESS; } @@ -2258,7 +2259,7 @@ DEFUN(config_write_file, /* Config file header print. */ vty_out(file_vty, "!\n! %s (%s) configuration saved from vty\n!", - host.prog_name, host.prog_version); + host.app_info->name, host.app_info->version); //vty_time_print (file_vty, 1); vty_out(file_vty, "!\n"); diff --git a/src/vty/vty.c b/src/vty/vty.c index 9012b5b5..ff17abf6 100644 --- a/src/vty/vty.c +++ b/src/vty/vty.c @@ -1633,17 +1633,15 @@ void vty_init_vtysh() extern void *tall_bsc_ctx; /* Install vty's own commands like `who' command. */ -void vty_init(const char *name, const char *version, const char *copyright) +void vty_init(struct vty_app_info *app_info) { - tall_vty_ctx = talloc_named_const(NULL, 0, "vty"); + tall_vty_ctx = talloc_named_const(app_info->tall_ctx, 0, "vty"); tall_vty_vec_ctx = talloc_named_const(tall_vty_ctx, 0, "vty_vector"); tall_vty_cmd_ctx = talloc_named_const(tall_vty_ctx, 0, "vty_command"); cmd_init(1); - host.prog_name = name; - host.prog_version = version; - host.prog_copyright = copyright; + host.app_info = app_info; /* For further configuration read, preserve current directory. */ vty_save_cwd(); |