mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00
display_options: Refactor to allow obtaining the banner
Move the display options code into a separate function so that the U-Boot banner can be obtained from other code. Adjust the 'version' command to use it. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Bin Meng <bmeng.cn@gmail.com> Tested-by: Stephen Warren <swarren@nvidia.com>
This commit is contained in:
@ -17,7 +17,9 @@ const char __weak version_string[] = U_BOOT_VERSION_STRING;
|
|||||||
|
|
||||||
static int do_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
static int do_version(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
|
||||||
{
|
{
|
||||||
printf("\n%s\n", version_string);
|
char buf[DISPLAY_OPTIONS_BANNER_LENGTH];
|
||||||
|
|
||||||
|
printf(display_options_get_banner(false, buf, sizeof(buf)));
|
||||||
#ifdef CC_VERSION_STRING
|
#ifdef CC_VERSION_STRING
|
||||||
puts(CC_VERSION_STRING "\n");
|
puts(CC_VERSION_STRING "\n");
|
||||||
#endif
|
#endif
|
||||||
|
@ -56,4 +56,23 @@ int print_buffer(ulong addr, const void *data, uint width, uint count,
|
|||||||
*/
|
*/
|
||||||
int display_options(void);
|
int display_options(void);
|
||||||
|
|
||||||
|
/* Suggested length of the buffer to pass to display_options_get_banner() */
|
||||||
|
#define DISPLAY_OPTIONS_BANNER_LENGTH 200
|
||||||
|
|
||||||
|
/**
|
||||||
|
* display_options_get_banner() - Get the U-Boot banner as a string
|
||||||
|
*
|
||||||
|
* This returns the U-Boot banner string
|
||||||
|
*
|
||||||
|
* @newlines: true to include two newlines at the start
|
||||||
|
* @buf: place to put string
|
||||||
|
* @size: Size of buf (string is truncated to fit)
|
||||||
|
* @return buf
|
||||||
|
*/
|
||||||
|
char *display_options_get_banner(bool newlines, char *buf, int size);
|
||||||
|
|
||||||
|
/* This function is used for testing only */
|
||||||
|
char *display_options_get_banner_priv(bool newlines, const char *build_tag,
|
||||||
|
char *buf, int size);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,13 +13,39 @@
|
|||||||
#include <linux/ctype.h>
|
#include <linux/ctype.h>
|
||||||
#include <asm/io.h>
|
#include <asm/io.h>
|
||||||
|
|
||||||
int display_options (void)
|
char *display_options_get_banner_priv(bool newlines, const char *build_tag,
|
||||||
|
char *buf, int size)
|
||||||
{
|
{
|
||||||
#if defined(BUILD_TAG)
|
int len;
|
||||||
printf ("\n\n%s, Build: %s\n\n", version_string, BUILD_TAG);
|
|
||||||
#else
|
len = snprintf(buf, size, "%s%s", newlines ? "\n\n" : "",
|
||||||
printf ("\n\n%s\n\n", version_string);
|
version_string);
|
||||||
|
if (build_tag && len < size)
|
||||||
|
len += snprintf(buf + len, size - len, ", Build: %s",
|
||||||
|
build_tag);
|
||||||
|
if (len > size - 3)
|
||||||
|
len = size - 3;
|
||||||
|
strcpy(buf + len, "\n\n");
|
||||||
|
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifndef BUILD_TAG
|
||||||
|
#define BUILD_TAG NULL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
char *display_options_get_banner(bool newlines, char *buf, int size)
|
||||||
|
{
|
||||||
|
return display_options_get_banner_priv(newlines, BUILD_TAG, buf, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
int display_options(void)
|
||||||
|
{
|
||||||
|
char buf[DISPLAY_OPTIONS_BANNER_LENGTH];
|
||||||
|
|
||||||
|
display_options_get_banner(true, buf, sizeof(buf));
|
||||||
|
printf("%s", buf);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user