[VTY] Introduce "struct vty_app_info" for vty_init() function
authorHarald Welte <laforge@gnumonks.org>
Tue, 25 May 2010 21:00:45 +0000 (23:00 +0200)
committerHarald Welte <laforge@gnumonks.org>
Tue, 25 May 2010 21:38:19 +0000 (23:38 +0200)
include/osmocom/vty/command.h
include/osmocom/vty/vty.h
src/vty/command.c
src/vty/vty.c

index 1db8ffe..0136f57 100644 (file)
@@ -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 */
index f82ada1..f017462 100644 (file)
@@ -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);
index 7275a3d..21afa5c 100644 (file)
@@ -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");
 
index 9012b5b..ff17abf 100644 (file)
@@ -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();