poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Move some term code from lib to src


From: Tim Rühsen
Subject: Re: [PATCH] Move some term code from lib to src
Date: Wed, 15 Apr 2020 20:19:40 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0

Sure, NP :-)

On 15.04.20 19:56, Jose E. Marchesi wrote:
> 
> Hi Tim.
> 
>     The attached patch is for discussion.
>     
>     It moves some (IMO application) code from lib/ to src/poke.c.
>     
> I'm in the middle of a considerably big reorganization of the library
> code.  If you don't mind, can we postpone this discussion for a few days
> until I merge the branch?
> 
>     
>     From 6490a215f763f689abcc0de357be1e2357479cb3 Mon Sep 17 00:00:00 2001
>     From: =?UTF-8?q?Tim=20R=C3=BChsen?= <address@hidden>
>     Date: Wed, 15 Apr 2020 19:40:30 +0200
>     Subject: [PATCH] Move some term code from lib to src
>     
>     * lib/pk-term.c (pk_term_init): Take styled_ostream_t as argument.
>       Move argument parsing to src/poke.c.
>       Move pk_term_color_p to src/poke.c.
>     * lib/pk-term.h (pk_term_init): Take styled_ostream_t as argument.
>       Remove pk_term_color_p.
>     * src/poke.c: Add functions term_color_p and term_init.
>       (initialize): Make use of term_init and term_color_p.
>     ---
>      lib/pk-term.c | 65 +++---------------------------------------------
>      lib/pk-term.h |  6 +----
>      src/poke.c    | 69 +++++++++++++++++++++++++++++++++++++++++++++++++--
>      3 files changed, 71 insertions(+), 69 deletions(-)
>     
>     diff --git a/lib/pk-term.c b/lib/pk-term.c
>     index 6307e9ae..9c49ec31 100644
>     --- a/lib/pk-term.c
>     +++ b/lib/pk-term.c
>     @@ -26,62 +26,12 @@
>      
>      /* The following global is the libtextstyle output stream to use to
>         emit contents to the terminal.  */
>     -styled_ostream_t pk_ostream;
>     +static styled_ostream_t pk_ostream;
>      
>      void
>     -pk_term_init (int argc, char *argv[])
>     +pk_term_init (styled_ostream_t ostream)
>      {
>     -  int i;
>     -
>     -  /* Process terminal-related command-line options.  */
>     -  for (i = 1; i < argc; i++)
>     -    {
>     -      const char *arg = argv[i];
>     -
>     -      if (strncmp (arg, "--color=", 8) == 0)
>     -        {
>     -          if (handle_color_option (arg + 8))
>     -            exit (EXIT_FAILURE);
>     -        }
>     -      else if (strncmp (arg, "--style=", 8) == 0)
>     -        handle_style_option (arg + 8);
>     -    }
>     -
>     -  /* Handle the --color=test special argument.  */
>     -  if (color_test_mode)
>     -    {
>     -      print_color_test ();
>     -      exit (EXIT_SUCCESS);
>     -    }
>     -
>     -  /* Note that the following code needs to be compiled conditionally
>     -     because the textstyle.h file provided by the gnulib module
>     -     libtextstyle-optional defines style_file_name as an r-value.  */
>     -
>     -#ifdef HAVE_LIBTEXTSTYLE
>     -  /* Open the specified style.  */
>     -  if (color_mode == color_yes
>     -      || (color_mode == color_tty
>     -          && isatty (STDOUT_FILENO)
>     -          && getenv ("NO_COLOR") == NULL)
>     -      || color_mode == color_html)
>     -    {
>     -      /* Find the style file.  */
>     -      style_file_prepare ("POKE_STYLE", "POKESTYLESDIR", PKGDATADIR,
>     -                          "poke-default.css");
>     -    }
>     -  else
>     -    /* No styling.  */
>     -    style_file_name = NULL;
>     -#endif
>     -
>     -  /* Create the output styled stream.  */
>     -  pk_ostream =
>     -    (color_mode == color_html
>     -     ? html_styled_ostream_create (file_ostream_create (stdout),
>     -                                   style_file_name)
>     -     : styled_ostream_create (STDOUT_FILENO, "(stdout)",
>     -                              TTYCTL_AUTO, style_file_name));
>     + pk_ostream = ostream;
>      }
>      
>      void
>     @@ -178,12 +128,3 @@ pk_term_end_hyperlink (void)
>        styled_ostream_set_hyperlink (pk_ostream, NULL, NULL);
>      #endif
>      }
>     -
>     -int
>     -pk_term_color_p (void)
>     -{
>     -  return (color_mode == color_yes
>     -          || (color_mode == color_tty
>     -              && isatty (STDOUT_FILENO)
>     -              && getenv ("NO_COLOR") == NULL));
>     -}
>     diff --git a/lib/pk-term.h b/lib/pk-term.h
>     index d42449d3..e003d11d 100644
>     --- a/lib/pk-term.h
>     +++ b/lib/pk-term.h
>     @@ -24,13 +24,9 @@
>      #include <textstyle.h>
>      
>      /* Initialize and finalize the terminal subsystem.  */
>     -void pk_term_init (int argc, char *argv[]);
>     +void pk_term_init (styled_ostream_t ostream);
>      void pk_term_shutdown (void);
>      
>     -/* Return 1 if the terminal supports colors/hyperlinks.  Return 0
>     -   otherwise.  */
>     -extern int pk_term_color_p (void);
>     -
>      /* Flush the terminal output.  */
>      extern void pk_term_flush (void);
>      
>     diff --git a/src/poke.c b/src/poke.c
>     index a40eb97a..ba9f6582 100644
>     --- a/src/poke.c
>     +++ b/src/poke.c
>     @@ -363,6 +363,71 @@ parse_args (int argc, char *argv[])
>        exit (EXIT_FAILURE);
>      }
>      
>     +/* Return 1 if the terminal supports colors/hyperlinks.  Return 0
>     +   otherwise.  */
>     +static int
>     +term_color_p (void)
>     +{
>     +  return (color_mode == color_yes
>     +          || (color_mode == color_tty
>     +              && isatty (STDOUT_FILENO)
>     +              && getenv ("NO_COLOR") == NULL));
>     +}
>     +
>     +static styled_ostream_t
>     +term_init (int argc, char *argv[])
>     +{
>     +  /* Process terminal-related command-line options.  */
>     +  for (int i = 1; i < argc; i++)
>     +    {
>     +      const char *arg = argv[i];
>     +
>     +      if (strncmp (arg, "--color=", 8) == 0)
>     +        {
>     +          if (handle_color_option (arg + 8))
>     +            exit (EXIT_FAILURE);
>     +        }
>     +      else if (strncmp (arg, "--style=", 8) == 0)
>     +        handle_style_option (arg + 8);
>     +    }
>     +
>     +  /* Handle the --color=test special argument.  */
>     +  if (color_test_mode)
>     +    {
>     +      print_color_test ();
>     +      exit (EXIT_SUCCESS);
>     +    }
>     +
>     +  /* Note that the following code needs to be compiled conditionally
>     +     because the textstyle.h file provided by the gnulib module
>     +     libtextstyle-optional defines style_file_name as an r-value.  */
>     +
>     +#ifdef HAVE_LIBTEXTSTYLE
>     +  /* Open the specified style.  */
>     +  if (color_mode == color_yes
>     +      || (color_mode == color_tty
>     +          && isatty (STDOUT_FILENO)
>     +          && getenv ("NO_COLOR") == NULL)
>     +      || color_mode == color_html)
>     +    {
>     +      /* Find the style file.  */
>     +      style_file_prepare ("POKE_STYLE", "POKESTYLESDIR", PKGDATADIR,
>     +                          "poke-default.css");
>     +    }
>     +  else
>     +    /* No styling.  */
>     +    style_file_name = NULL;
>     +#endif
>     +
>     +  /* Create the output styled stream.  */
>     +  return
>     +    (color_mode == color_html
>     +     ? html_styled_ostream_create (file_ostream_create (stdout),
>     +                                   style_file_name)
>     +     : styled_ostream_create (STDOUT_FILENO, "(stdout)",
>     +                              TTYCTL_AUTO, style_file_name));
>     +}
>     +
>      static void
>      initialize (int argc, char *argv[])
>      {
>     @@ -392,7 +457,7 @@ initialize (int argc, char *argv[])
>          poke_infodir = PKGINFODIR;
>      
>        /* Initialize the terminal output.  */
>     -  pk_term_init (argc, argv);
>     +  pk_term_init (term_init (argc, argv));
>      
>        /* Initialize the Poke Virtual Machine.  Note this should be done
>           before initializing the compiler, since the later constructs and
>     @@ -411,7 +476,7 @@ initialize (int argc, char *argv[])
>        ios_init ();
>      
>      #ifdef HAVE_HSERVER
>     -  poke_hserver_p = poke_interactive_p && pk_term_color_p ();
>     +  poke_hserver_p = poke_interactive_p && term_color_p ();
>      
>        /* Initialize and start the terminal hyperlinks server.  */
>        if (poke_hserver_p)
> 

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]