[yocto] [psplash][PATCH] psplash: add option to read startup message from file

Richard Leitner richard.leitner at skidata.com
Wed May 25 01:02:38 PDT 2016


Any comments/updates on that patch of mine?


On 04/15/2016 10:49 AM, Richard Leitner wrote:
> This patch adds an option to read the displayed message from a file.
> Additionally the maximum length for the read string can be defined.
> If both, a message (STARTUP_MSG) and a file (STARTUP_MSG_FILE) are
> defined the content of the file will be appended to the message.
> The string will be cutted after the given maximum number of chars.
> 
> For these changes the following defines were introduced:
>   PSPLASH_STARTUP_MSG_MAX_LEN ... maximum lenght of the complete message
>   PSPLASH_STARTUP_MSG_FILE ...... path to the file to read
> 
> Signed-off-by: Richard Leitner <richard.leitner at skidata.com>
> ---
>  psplash-config.h |  5 +++++
>  psplash.c        | 29 ++++++++++++++++++++++++++++-
>  2 files changed, 33 insertions(+), 1 deletion(-)
> 
> diff --git a/psplash-config.h b/psplash-config.h
> index 82bb76d..7fa44fa 100644
> --- a/psplash-config.h
> +++ b/psplash-config.h
> @@ -21,6 +21,11 @@
>  
>  /* Text to output on program start; if undefined, output nothing */
>  #define PSPLASH_STARTUP_MSG ""
> +#define PSPLASH_STARTUP_MSG_MAX_LEN 32
> +
> +/* File to read and display its first line on program start;
> + * if undefined, output nothing; if MSG is defined also, append to it */
> +#define PSPLASH_STARTUP_MSG_FILE ""
>  
>  /* Bool indicating if the image is fullscreen, as opposed to split screen */
>  #define PSPLASH_IMG_FULLSCREEN 0
> diff --git a/psplash.c b/psplash.c
> index 04d3d49..b7d2d28 100644
> --- a/psplash.c
> +++ b/psplash.c
> @@ -208,6 +208,9 @@ main (int argc, char** argv)
>    int        pipe_fd, i = 0, angle = 0, ret = 0;
>    PSplashFB *fb;
>    bool       disable_console_switch = FALSE;
> +  char       msg[PSPLASH_STARTUP_MSG_MAX_LEN];
> +  int        msglen;
> +  FILE      *fd_msg;
>    
>    signal(SIGHUP, psplash_exit);
>    signal(SIGINT, psplash_exit);
> @@ -298,9 +301,33 @@ main (int argc, char** argv)
>  
>    psplash_draw_progress (fb, 0);
>  
> +  memset(msg, 0, PSPLASH_STARTUP_MSG_MAX_LEN);
> +  msglen = 0;
>  #ifdef PSPLASH_STARTUP_MSG
> -  psplash_draw_msg (fb, PSPLASH_STARTUP_MSG);
> +  snprintf(msg, PSPLASH_STARTUP_MSG_MAX_LEN, "%s", PSPLASH_STARTUP_MSG);
> +  msglen = strlen(msg);
>  #endif
> +#ifdef PSPLASH_STARTUP_MSG_FILE
> +  fd_msg = fopen (PSPLASH_STARTUP_MSG_FILE, "r");
> +  if (fd_msg)
> +    {
> +      if (msglen == 0)
> +        {
> +          fgets (msg, PSPLASH_STARTUP_MSG_MAX_LEN, fd_msg);
> +        }
> +      else
> +        {
> +          fgets (&msg[msglen + 1], PSPLASH_STARTUP_MSG_MAX_LEN - msglen - 1, fd_msg);
> +          msg[msglen] = ' ';
> +        }
> +      fclose (fd_msg);
> +    }
> +  msglen = strlen(msg);
> +#endif
> +
> +  /* draw message if we have one */
> +  if (msglen > 0)
> +    psplash_draw_msg (fb, msg);
>  
>    psplash_main (fb, pipe_fd, 0);
>  
> 



More information about the yocto mailing list