Mercurial > repos > rliterman > csp2
diff CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/textstyle.h @ 69:33d812a61356
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 17:55:14 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/include/textstyle.h Tue Mar 18 17:55:14 2025 -0400 @@ -0,0 +1,707 @@ +/* Public API of the libtextstyle library. + Copyright (C) 2006-2007, 2019-2021 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. */ + +/* Written by Bruno Haible <bruno@clisp.org>, 2006, 2019. */ + +#ifndef _TEXTSTYLE_H +#define _TEXTSTYLE_H + +#include <stdarg.h> +#include <stddef.h> +#include <stdio.h> +#include <textstyle/stdbool.h> +#include <textstyle/woe32dll.h> + +/* Meta information. */ +#include <textstyle/version.h> + +/* ----------------------------- From ostream.h ----------------------------- */ + +/* Describes the scope of a flush operation. */ +typedef enum +{ + /* Flushes buffers in this ostream_t. + Use this value if you want to write to the underlying ostream_t. */ + FLUSH_THIS_STREAM = 0, + /* Flushes all buffers in the current process. + Use this value if you want to write to the same target through a + different file descriptor or a FILE stream. */ + FLUSH_THIS_PROCESS = 1, + /* Flushes buffers in the current process and attempts to flush the buffers + in the kernel. + Use this value so that some other process (or the kernel itself) + may write to the same target. */ + FLUSH_ALL = 2 +} ostream_flush_scope_t; + + +/* An output stream is an object to which one can feed a sequence of bytes. */ + +struct any_ostream_representation; +typedef struct any_ostream_representation * ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void ostream_write_mem (ostream_t first_arg, const void *data, size_t len); +extern void ostream_flush (ostream_t first_arg, ostream_flush_scope_t scope); +extern void ostream_free (ostream_t first_arg); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* Write a string's contents to a stream. */ +extern void ostream_write_str (ostream_t stream, const char *string); + +/* Writes formatted output to a stream. + Returns the size of formatted output, or a negative value in case of an + error. */ +extern ptrdiff_t ostream_printf (ostream_t stream, const char *format, ...) +#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3 + __attribute__ ((__format__ (__printf__, 2, 3))) +#endif + ; +extern ptrdiff_t ostream_vprintf (ostream_t stream, + const char *format, va_list args) +#if (__GNUC__ == 3 && __GNUC_MINOR__ >= 1) || __GNUC__ > 3 + __attribute__ ((__format__ (__printf__, 2, 0))) +#endif + ; + +#ifdef __cplusplus +} +#endif + +/* ------------------------- From styled-ostream.h ------------------------- */ + +/* A styled output stream is an object to which one can feed a sequence of + bytes, marking some runs of text as belonging to specific CSS classes, + where the rendering of the CSS classes is defined through a CSS (cascading + style sheet). */ + +/* styled_ostream_t is a subtype of ostream_t. */ +typedef ostream_t styled_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void styled_ostream_write_mem (styled_ostream_t first_arg, const void *data, size_t len); +extern void styled_ostream_flush (styled_ostream_t first_arg, ostream_flush_scope_t scope); +extern void styled_ostream_free (styled_ostream_t first_arg); +extern void styled_ostream_begin_use_class (styled_ostream_t first_arg, const char *classname); +extern void styled_ostream_end_use_class (styled_ostream_t first_arg, const char *classname); +extern const char *styled_ostream_get_hyperlink_ref (styled_ostream_t first_arg); +extern const char *styled_ostream_get_hyperlink_id (styled_ostream_t first_arg); +extern void styled_ostream_set_hyperlink (styled_ostream_t first_arg, const char *ref, const char *id); +/* Like styled_ostream_flush (first_arg, FLUSH_THIS_STREAM), except that it + leaves the destination with the current text style enabled, instead + of with the default text style. + After calling this function, you can output strings without newlines(!) + to the underlying stream, and they will be rendered like strings passed + to 'ostream_write_mem', 'ostream_write_str', or 'ostream_write_printf'. */ +extern void styled_ostream_flush_to_current_style (styled_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Test whether a given output stream is a styled_ostream. */ +extern bool is_instance_of_styled_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* -------------------------- From file-ostream.h -------------------------- */ + +/* file_ostream_t is a subtype of ostream_t. */ +typedef ostream_t file_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void file_ostream_write_mem (file_ostream_t first_arg, const void *data, size_t len); +extern void file_ostream_flush (file_ostream_t first_arg, ostream_flush_scope_t scope); +extern void file_ostream_free (file_ostream_t first_arg); +/* Accessors. */ +extern FILE *file_ostream_get_stdio_stream (file_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream referring to FP. + Note that the resulting stream must be closed before FP can be closed. */ +extern file_ostream_t file_ostream_create (FILE *fp); + + +/* Test whether a given output stream is a file_ostream. */ +extern bool is_instance_of_file_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* --------------------------- From fd-ostream.h --------------------------- */ + +/* fd_ostream_t is a subtype of ostream_t. */ +typedef ostream_t fd_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void fd_ostream_write_mem (fd_ostream_t first_arg, const void *data, size_t len); +extern void fd_ostream_flush (fd_ostream_t first_arg, ostream_flush_scope_t scope); +extern void fd_ostream_free (fd_ostream_t first_arg); +/* Accessors. */ +extern int fd_ostream_get_descriptor (fd_ostream_t stream); +extern const char *fd_ostream_get_filename (fd_ostream_t stream); +extern bool fd_ostream_is_buffered (fd_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream referring to the file descriptor FD. + FILENAME is used only for error messages. + Note that the resulting stream must be closed before FD can be closed. */ +extern fd_ostream_t fd_ostream_create (int fd, const char *filename, + bool buffered); + + +/* Test whether a given output stream is a fd_ostream. */ +extern bool is_instance_of_fd_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* -------------------------- From term-ostream.h -------------------------- */ + +/* Querying and setting of text attributes. + The stream has a notion of the current text attributes; they apply + implicitly to all following output. The attributes are automatically + reset when the stream is closed. + Note: Not all terminal types can actually render all attributes adequately. + For example, xterm cannot render POSTURE_ITALIC nor the combination of + WEIGHT_BOLD and UNDERLINE_ON. */ + +/* Colors are represented by indices >= 0 in a stream dependent format. */ +typedef int term_color_t; +/* The value -1 denotes the default (foreground or background) color. */ +enum +{ + COLOR_DEFAULT = -1 /* unknown */ +}; + +typedef enum +{ + WEIGHT_NORMAL = 0, + WEIGHT_BOLD, + WEIGHT_DEFAULT = WEIGHT_NORMAL +} term_weight_t; + +typedef enum +{ + POSTURE_NORMAL = 0, + POSTURE_ITALIC, /* same as oblique */ + POSTURE_DEFAULT = POSTURE_NORMAL +} term_posture_t; + +typedef enum +{ + UNDERLINE_OFF = 0, + UNDERLINE_ON, + UNDERLINE_DEFAULT = UNDERLINE_OFF +} term_underline_t; + +/* The amount of control to take over the underlying tty in order to avoid + garbled output on the screen, due to interleaved output of escape sequences + and output from the kernel (such as when the kernel echoes user's input + or when the kernel prints '^C' after the user pressed Ctrl-C). */ +typedef enum +{ + TTYCTL_AUTO = 0, /* Automatic best-possible choice. */ + TTYCTL_NONE, /* No control. + Result: Garbled output can occur, and the terminal can + be left in any state when the program is interrupted. */ + TTYCTL_PARTIAL, /* Signal handling. + Result: Garbled output can occur, but the terminal will + be left in the default state when the program is + interrupted. */ + TTYCTL_FULL /* Signal handling and disabling echo and flush-upon-signal. + Result: No garbled output, and the the terminal will + be left in the default state when the program is + interrupted. */ +} ttyctl_t; + +/* term_ostream_t is a subtype of ostream_t. */ +typedef ostream_t term_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void term_ostream_write_mem (term_ostream_t first_arg, const void *data, size_t len); +extern void term_ostream_flush (term_ostream_t first_arg, ostream_flush_scope_t scope); +extern void term_ostream_free (term_ostream_t first_arg); +extern term_color_t term_ostream_rgb_to_color (term_ostream_t first_arg, int red, int green, int blue); +extern term_color_t term_ostream_get_color (term_ostream_t first_arg); +extern void term_ostream_set_color (term_ostream_t first_arg, term_color_t color); +extern term_color_t term_ostream_get_bgcolor (term_ostream_t first_arg); +extern void term_ostream_set_bgcolor (term_ostream_t first_arg, term_color_t color); +extern term_weight_t term_ostream_get_weight (term_ostream_t first_arg); +extern void term_ostream_set_weight (term_ostream_t first_arg, term_weight_t weight); +extern term_posture_t term_ostream_get_posture (term_ostream_t first_arg); +extern void term_ostream_set_posture (term_ostream_t first_arg, term_posture_t posture); +extern term_underline_t term_ostream_get_underline (term_ostream_t first_arg); +extern void term_ostream_set_underline (term_ostream_t first_arg, term_underline_t underline); +extern const char *term_ostream_get_hyperlink_ref (term_ostream_t first_arg); +extern const char *term_ostream_get_hyperlink_id (term_ostream_t first_arg); +extern void term_ostream_set_hyperlink (term_ostream_t first_arg, const char *ref, const char *id); +/* Like term_ostream_flush (first_arg, FLUSH_THIS_STREAM), except that it + leaves the terminal with the current text attributes enabled, instead of + with the default text attributes. + After calling this function, you can output strings without newlines(!) + to the underlying file descriptor, and they will be rendered like strings + passed to 'ostream_write_mem', 'ostream_write_str', or + 'ostream_write_printf'. */ +extern void term_ostream_flush_to_current_style (term_ostream_t first_arg); +/* Accessors. */ +extern int term_ostream_get_descriptor (term_ostream_t stream); +extern const char *term_ostream_get_filename (term_ostream_t stream); +extern ttyctl_t term_ostream_get_tty_control (term_ostream_t stream); +extern ttyctl_t term_ostream_get_effective_tty_control (term_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream referring to the file descriptor FD. + FILENAME is used only for error messages. + TTY_CONTROL specifies the amount of control to take over the underlying tty. + The resulting stream will be line-buffered. + Note that the resulting stream must be closed before FD can be closed. */ +extern term_ostream_t + term_ostream_create (int fd, const char *filename, ttyctl_t tty_control); + + +/* Test whether a given output stream is a term_ostream. */ +extern bool is_instance_of_term_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* ------------------------- From memory-ostream.h ------------------------- */ + +/* memory_ostream_t is a subtype of ostream_t. */ +typedef ostream_t memory_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void memory_ostream_write_mem (memory_ostream_t first_arg, const void *data, size_t len); +extern void memory_ostream_flush (memory_ostream_t first_arg, ostream_flush_scope_t scope); +extern void memory_ostream_free (memory_ostream_t first_arg); +extern void memory_ostream_contents (memory_ostream_t first_arg, const void **bufp, size_t *buflenp); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream that accumulates the output in a memory buffer. */ +extern memory_ostream_t memory_ostream_create (void); + + +/* Test whether a given output stream is a memory_ostream. */ +extern bool is_instance_of_memory_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* -------------------------- From iconv-ostream.h -------------------------- */ + +#if LIBTEXTSTYLE_USES_ICONV + +/* iconv_ostream_t is a subtype of ostream_t. */ +typedef ostream_t iconv_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void iconv_ostream_write_mem (iconv_ostream_t first_arg, const void *data, size_t len); +extern void iconv_ostream_flush (iconv_ostream_t first_arg, ostream_flush_scope_t scope); +extern void iconv_ostream_free (iconv_ostream_t first_arg); +/* Accessors. */ +extern const char *iconv_ostream_get_from_encoding (iconv_ostream_t stream); +extern const char *iconv_ostream_get_to_encoding (iconv_ostream_t stream); +extern ostream_t iconv_ostream_get_destination (iconv_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream that converts from FROM_ENCODING to TO_ENCODING, + writing the result to DESTINATION. */ +extern iconv_ostream_t iconv_ostream_create (const char *from_encoding, + const char *to_encoding, + ostream_t destination); + + +/* Test whether a given output stream is an iconv_ostream. */ +extern bool is_instance_of_iconv_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +#endif /* LIBTEXTSTYLE_USES_ICONV */ + +/* -------------------------- From html-ostream.h -------------------------- */ + +/* html_ostream_t is a subtype of ostream_t. */ +typedef ostream_t html_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void html_ostream_write_mem (html_ostream_t first_arg, const void *data, size_t len); +extern void html_ostream_flush (html_ostream_t first_arg, ostream_flush_scope_t scope); +extern void html_ostream_free (html_ostream_t first_arg); +extern void html_ostream_begin_span (html_ostream_t first_arg, const char *classname); +extern void html_ostream_end_span (html_ostream_t first_arg, const char *classname); +extern const char *html_ostream_get_hyperlink_ref (html_ostream_t first_arg); +extern void html_ostream_set_hyperlink_ref (html_ostream_t first_arg, const char *ref); +/* Like html_ostream_flush (first_arg, FLUSH_THIS_STREAM), except that it + leaves the destination with the current text style enabled, instead + of with the default text style. + After calling this function, you can output strings without newlines(!) + to the underlying stream, and they will be rendered like strings passed + to 'ostream_write_mem', 'ostream_write_str', or 'ostream_write_printf'. */ +extern void html_ostream_flush_to_current_style (html_ostream_t stream); +/* Accessors. */ +extern ostream_t html_ostream_get_destination (html_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream that takes input in the UTF-8 encoding and + writes it in HTML form on DESTINATION. + This stream produces a sequence of lines. The caller is responsible + for opening the <body><html> elements before and for closing them after + the use of this stream. + Note that the resulting stream must be closed before DESTINATION can be + closed. */ +extern html_ostream_t html_ostream_create (ostream_t destination); + + +/* Test whether a given output stream is a html_ostream. */ +extern bool is_instance_of_html_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* ----------------------- From term-styled-ostream.h ----------------------- */ + +/* term_styled_ostream_t is a subtype of styled_ostream_t. */ +typedef styled_ostream_t term_styled_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void term_styled_ostream_write_mem (term_styled_ostream_t first_arg, const void *data, size_t len); +extern void term_styled_ostream_flush (term_styled_ostream_t first_arg, ostream_flush_scope_t scope); +extern void term_styled_ostream_free (term_styled_ostream_t first_arg); +extern void term_styled_ostream_begin_use_class (term_styled_ostream_t first_arg, const char *classname); +extern void term_styled_ostream_end_use_class (term_styled_ostream_t first_arg, const char *classname); +extern const char *term_styled_ostream_get_hyperlink_ref (term_styled_ostream_t first_arg); +extern const char *term_styled_ostream_get_hyperlink_id (term_styled_ostream_t first_arg); +extern void term_styled_ostream_set_hyperlink (term_styled_ostream_t first_arg, const char *ref, const char *id); +extern void term_styled_ostream_flush_to_current_style (term_styled_ostream_t first_arg); +/* Accessors. */ +extern term_ostream_t term_styled_ostream_get_destination (term_styled_ostream_t stream); +extern const char *term_styled_ostream_get_css_filename (term_styled_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream referring to the file descriptor FD, styled with + the file CSS_FILENAME. + FILENAME is used only for error messages. + TTY_CONTROL specifies the amount of control to take over the underlying tty. + Note that the resulting stream must be closed before FD can be closed. + Return NULL upon failure. */ +extern term_styled_ostream_t + term_styled_ostream_create (int fd, const char *filename, + ttyctl_t tty_control, + const char *css_filename); + + +/* Test whether a given output stream is a term_styled_ostream. */ +extern bool is_instance_of_term_styled_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* ----------------------- From html-styled-ostream.h ----------------------- */ + +/* html_styled_ostream_t is a subtype of styled_ostream_t. */ +typedef styled_ostream_t html_styled_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void html_styled_ostream_write_mem (html_styled_ostream_t first_arg, const void *data, size_t len); +extern void html_styled_ostream_flush (html_styled_ostream_t first_arg, ostream_flush_scope_t scope); +extern void html_styled_ostream_free (html_styled_ostream_t first_arg); +extern void html_styled_ostream_begin_use_class (html_styled_ostream_t first_arg, const char *classname); +extern void html_styled_ostream_end_use_class (html_styled_ostream_t first_arg, const char *classname); +extern const char *html_styled_ostream_get_hyperlink_ref (html_styled_ostream_t first_arg); +extern const char *html_styled_ostream_get_hyperlink_id (html_styled_ostream_t first_arg); +extern void html_styled_ostream_set_hyperlink (html_styled_ostream_t first_arg, const char *ref, const char *id); +extern void html_styled_ostream_flush_to_current_style (html_styled_ostream_t first_arg); +/* Accessors. */ +extern ostream_t html_styled_ostream_get_destination (html_styled_ostream_t stream); +extern html_ostream_t html_styled_ostream_get_html_destination (html_styled_ostream_t stream); +extern const char *html_styled_ostream_get_css_filename (html_styled_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream that takes input in the UTF-8 encoding and + writes it in HTML form on DESTINATION, styled with the file CSS_FILENAME. + Note that the resulting stream must be closed before DESTINATION can be + closed. */ +extern html_styled_ostream_t + html_styled_ostream_create (ostream_t destination, + const char *css_filename); + + +/* Test whether a given output stream is a html_styled_ostream. */ +extern bool is_instance_of_html_styled_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* ----------------------- From noop-styled-ostream.h ----------------------- */ + +/* noop_styled_ostream_t is a subtype of styled_ostream_t. */ +typedef styled_ostream_t noop_styled_ostream_t; + +/* Functions that invoke the methods. */ +#ifdef __cplusplus +extern "C" { +#endif +extern void noop_styled_ostream_write_mem (noop_styled_ostream_t first_arg, const void *data, size_t len); +extern void noop_styled_ostream_flush (noop_styled_ostream_t first_arg, ostream_flush_scope_t scope); +extern void noop_styled_ostream_free (noop_styled_ostream_t first_arg); +extern void noop_styled_ostream_begin_use_class (noop_styled_ostream_t first_arg, const char *classname); +extern void noop_styled_ostream_end_use_class (noop_styled_ostream_t first_arg, const char *classname); +extern const char *noop_styled_ostream_get_hyperlink_ref (noop_styled_ostream_t first_arg); +extern const char *noop_styled_ostream_get_hyperlink_id (noop_styled_ostream_t first_arg); +extern void noop_styled_ostream_set_hyperlink (noop_styled_ostream_t first_arg, const char *ref, const char *id); +extern void noop_styled_ostream_flush_to_current_style (noop_styled_ostream_t first_arg); +/* Accessors. */ +extern ostream_t noop_styled_ostream_get_destination (noop_styled_ostream_t stream); +extern bool noop_styled_ostream_is_owning_destination (noop_styled_ostream_t stream); +#ifdef __cplusplus +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Create an output stream that delegates to DESTINATION and that supports + the styling operations as no-ops. + If PASS_OWNERSHIP is true, closing the resulting stream will automatically + close the DESTINATION. + Note that if PASS_OWNERSHIP is false, the resulting stream must be closed + before DESTINATION can be closed. */ +extern noop_styled_ostream_t + noop_styled_ostream_create (ostream_t destination, bool pass_ownership); + + +/* Test whether a given output stream is a noop_styled_ostream. */ +extern bool is_instance_of_noop_styled_ostream (ostream_t stream); + + +#ifdef __cplusplus +} +#endif + +/* ------------------------------ From color.h ------------------------------ */ + +#ifdef __cplusplus +extern "C" { +#endif + + +/* Whether to output a test page. */ +extern LIBTEXTSTYLE_DLL_VARIABLE bool color_test_mode; + +/* Color option. */ +enum color_option { color_no, color_tty, color_yes, color_html }; +extern LIBTEXTSTYLE_DLL_VARIABLE enum color_option color_mode; + +/* Style to use when coloring. */ +extern LIBTEXTSTYLE_DLL_VARIABLE const char *style_file_name; + +/* --color argument handling. Return an error indicator. */ +extern bool handle_color_option (const char *option); + +/* --style argument handling. */ +extern void handle_style_option (const char *option); + +/* Print a color test page. */ +extern void print_color_test (void); + +/* Assign a default value to style_file_name if necessary. + STYLE_FILE_ENVVAR is an environment variable that, when set to a non-empty + value, specifies the style file to use. This environment variable is meant + to be set by the user. + STYLESDIR_ENVVAR is an environment variable that, when set to a non-empty + value, specifies the directory with the style files, or NULL. This is + necessary for running the testsuite before "make install". + STYLESDIR_AFTER_INSTALL is the directory with the style files after + "make install". + DEFAULT_STYLE_FILE is the file name of the default style file, relative to + STYLESDIR. */ +extern void style_file_prepare (const char *style_file_envvar, + const char *stylesdir_envvar, + const char *stylesdir_after_install, + const char *default_style_file); + + +#ifdef __cplusplus +} +#endif + +/* ------------------------------ From misc.h ------------------------------ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Create an output stream referring to the file descriptor FD, styled with + the file CSS_FILENAME if possible. + FILENAME is used only for error messages. + TTY_CONTROL specifies the amount of control to take over the underlying tty. + Note that the resulting stream must be closed before FD can be closed. */ +extern styled_ostream_t + styled_ostream_create (int fd, const char *filename, + ttyctl_t tty_control, + const char *css_filename); + +/* Set the exit value upon failure within libtextstyle. */ +extern void libtextstyle_set_failure_exit_code (int exit_code); + +#ifdef __cplusplus +} +#endif + +/* ----------------------- Exported gnulib overrides ----------------------- */ + +#if defined _WIN32 && ! defined __CYGWIN__ + +# include <io.h> + +# ifdef __cplusplus +extern "C" { +# endif + +# if !((defined isatty && defined _GL_UNISTD_H) || defined GNULIB_overrides_isatty) /* don't override gnulib */ +extern int libtextstyle_isatty (int fd); +# undef isatty +# define isatty libtextstyle_isatty +# endif + +# ifdef __cplusplus +} +# endif + +#endif + +/* ------------------------------------------------------------------------- */ + +#endif /* _TEXTSTYLE_H */