Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package chafa for openSUSE:Factory checked in at 2022-06-20 15:38:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/chafa (Old) and /work/SRC/openSUSE:Factory/.chafa.new.1548 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chafa" Mon Jun 20 15:38:30 2022 rev:15 rq:983868 version:1.12.1 Changes: -------- --- /work/SRC/openSUSE:Factory/chafa/chafa.changes 2022-06-06 12:38:49.259315498 +0200 +++ /work/SRC/openSUSE:Factory/.chafa.new.1548/chafa.changes 2022-06-20 15:39:18.775038276 +0200 @@ -1,0 +2,16 @@ +Mon Jun 20 07:53:37 UTC 2022 - Michael Vetter <mvet...@suse.com> + +- Update to 1.12.1: + * Increased GLib minimum version to 2.20. + * Added 12 new test inputs, including bad inputs to handle gracefully. + * Added a few symbols to API documentation that were accidentally left out. + * Bug fixes: + + huntr.dev CVE-2022-2061: Out-of-bounds read in libnsgif's lzw_decode() + + [unfiled] Undefined behavior in libnsgif due to uninitialized frame fields. + + [unfiled] Signed integer overflow in chafa_pack_color(). + + [unfiled] Integer overflow in normalization pass on some images. + + [unfiled] Potential unaligned access with corrupt XWD images. + + [unfiled] Integer overflow in quantization on some images. + + [unfiled] Calculating offset from NULL pointer in LodePNG. + +------------------------------------------------------------------- Old: ---- chafa-1.12.0.tar.xz New: ---- chafa-1.12.1.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ chafa.spec ++++++ --- /var/tmp/diff_new_pack.nv9lCO/_old 2022-06-20 15:39:19.239038954 +0200 +++ /var/tmp/diff_new_pack.nv9lCO/_new 2022-06-20 15:39:19.243038960 +0200 @@ -17,7 +17,7 @@ Name: chafa -Version: 1.12.0 +Version: 1.12.1 Release: 0 Summary: Image-to-text converter for terminal License: LGPL-3.0-or-later @@ -27,7 +27,7 @@ BuildRequires: ImageMagick-devel BuildRequires: freetype2-devel BuildRequires: gcc -BuildRequires: glib2-devel +BuildRequires: glib2-devel >= 2.20 BuildRequires: gtk-doc BuildRequires: libtool Requires: libchafa0 = %{version} ++++++ chafa-1.12.0.tar.xz -> chafa-1.12.1.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/AUTHORS new/chafa-1.12.1/AUTHORS --- old/chafa-1.12.0/AUTHORS 2022-03-17 05:24:37.000000000 +0100 +++ new/chafa-1.12.1/AUTHORS 2022-06-20 00:24:42.000000000 +0200 @@ -24,5 +24,6 @@ Robert-Andr?? Mauchin <zebo...@gmail.com> Roman Wagner <roman.wag...@pm.me> Sotiris Papatheodorou <soti...@papatheodorou.xyz> +Sudhakar Verma <svermai...@gmail.com> Tim Gates <tim.ga...@iress.com> ??yvind Kol??s <pip...@gimp.org> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/NEWS new/chafa-1.12.1/NEWS --- old/chafa-1.12.0/NEWS 2022-06-06 01:55:57.000000000 +0200 +++ new/chafa-1.12.1/NEWS 2022-06-20 00:24:42.000000000 +0200 @@ -1,6 +1,28 @@ Chafa releases ============== +1.12.1 (2022-06-20) +------------------- + +This release fixes one important input validation bug and several instances of +undefined behavior revealed by fuzzing. + +* Increased GLib minimum version to 2.20. + +* Added 12 new test inputs, including bad inputs to handle gracefully. + +* Added a few symbols to API documentation that were accidentally left out. + +* Bug fixes: + huntr.dev CVE-2022-2061: Out-of-bounds read in libnsgif's lzw_decode() + (Sudhakar Verma of CrowdStrike). + [unfiled] Undefined behavior in libnsgif due to uninitialized frame fields. + [unfiled] Signed integer overflow in chafa_pack_color(). + [unfiled] Integer overflow in normalization pass on some images. + [unfiled] Potential unaligned access with corrupt XWD images. + [unfiled] Integer overflow in quantization on some images. + [unfiled] Calculating offset from NULL pointer in LodePNG. + 1.12.0 (2022-06-06) ------------------- @@ -33,7 +55,7 @@ .ANS files compatible with utilities like the wonderful Ansilove, e.g: $ chafa -f symbols -c 16/8 -s 80 --symbols space+solid+half --fill stipple \ - in.jpg | tr -d '\n' | iconv -c -f utf8 -t cp432 > out.ans + in.jpg | tr -d '\n' | iconv -c -f utf8 -t cp437 > out.ans $ ansilove out.ans -o out.png * New builtin Latin symbols (available with --symbols latin). This class diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/chafa/Makefile.am new/chafa-1.12.1/chafa/Makefile.am --- old/chafa-1.12.0/chafa/Makefile.am 2022-06-06 02:07:03.000000000 +0200 +++ new/chafa-1.12.1/chafa/Makefile.am 2022-06-20 00:24:42.000000000 +0200 @@ -9,7 +9,7 @@ noinst_HEADERS = libchafa_la_CFLAGS = $(LIBCHAFA_CFLAGS) $(GLIB_CFLAGS) -DCHAFA_COMPILATION -libchafa_la_LDFLAGS = $(LIBCHAFA_LDFLAGS) -version-info 8:0:8 +libchafa_la_LDFLAGS = $(LIBCHAFA_LDFLAGS) -version-info 8:1:8 libchafa_la_LIBADD = $(GLIB_LIBS) internal/libchafa-internal.la -lm libchafa_la_SOURCES = \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/chafa/Makefile.in new/chafa-1.12.1/chafa/Makefile.in --- old/chafa-1.12.0/chafa/Makefile.in 2022-06-06 02:42:44.000000000 +0200 +++ new/chafa-1.12.1/chafa/Makefile.in 2022-06-20 00:27:51.000000000 +0200 @@ -434,7 +434,7 @@ # produce documentation. noinst_HEADERS = chafa-term-seq-doc.h chafa-term-seq-doc-in.h libchafa_la_CFLAGS = $(LIBCHAFA_CFLAGS) $(GLIB_CFLAGS) -DCHAFA_COMPILATION -libchafa_la_LDFLAGS = $(LIBCHAFA_LDFLAGS) -version-info 8:0:8 +libchafa_la_LDFLAGS = $(LIBCHAFA_LDFLAGS) -version-info 8:1:8 libchafa_la_LIBADD = $(GLIB_LIBS) internal/libchafa-internal.la -lm libchafa_la_SOURCES = \ chafa-canvas.c \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/chafa/internal/chafa-color-table.c new/chafa-1.12.1/chafa/internal/chafa-color-table.c --- old/chafa-1.12.0/chafa/internal/chafa-color-table.c 2022-05-31 01:01:59.000000000 +0200 +++ new/chafa-1.12.1/chafa/internal/chafa-color-table.c 2022-06-15 00:13:28.000000000 +0200 @@ -192,19 +192,22 @@ static inline gboolean refine_pen_choice (const ChafaColorTable *color_table, guint want_color, const gint *v, gint j, - gint *best_pen, gint *best_diff) + gint *best_pen, gint64 *best_diff) { const ChafaColorTableEntry *pj = &color_table->entries [j]; - gint a, b, d; + gint64 a, b, d; - a = POW2 (pj->v [0] - v [0]); + a = POW2 ((gint64) pj->v [0] - v [0]); profile_counter_inc (n_a); DEBUG_PEN_CHOICE (g_printerr ("a=%d\n", a)); if (a <= *best_diff) { - b = POW2 (pj->v [1] - v [1]); + /* TODO: When using gint32, the POW2 multiplication can result in overflow. + * Our workaround is to use gint64 for best_diff, a, b and d. This probably + * slows us down, though (we should measure). Is there a better fix? */ + b = POW2 ((gint64) pj->v [1] - v [1]); profile_counter_inc (n_b); DEBUG_PEN_CHOICE (g_printerr ("b=%d\n", b)); @@ -312,7 +315,7 @@ gint chafa_color_table_find_nearest_pen (const ChafaColorTable *color_table, guint32 want_color) { - gint best_diff = G_MAXINT; + gint64 best_diff = G_MAXINT64; gint best_pen = 0; gint v [2]; gint i, j, m; @@ -359,12 +362,12 @@ #if CHAFA_COLOR_TABLE_ENABLE_PROFILING gint best_pen_2 = -1; - gint best_diff_2 = G_MAXINT; + gint64 best_diff_2 = G_MAXINT64; for (i = 0; i < color_table->n_entries; i++) { const ChafaColorTableEntry *pi = &color_table->entries [i]; - gint d = color_diff (color_table->pens [pi->pen], want_color); + gint64 d = color_diff (color_table->pens [pi->pen], want_color); if (d < best_diff_2) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/chafa/internal/chafa-color.c new/chafa-1.12.1/chafa/internal/chafa-color.c --- old/chafa-1.12.0/chafa/internal/chafa-color.c 2022-05-31 01:01:58.000000000 +0200 +++ new/chafa-1.12.1/chafa/internal/chafa-color.c 2022-06-15 00:13:28.000000000 +0200 @@ -30,10 +30,10 @@ chafa_pack_color (const ChafaColor *color) { /* Assumes each channel 0 <= value <= 255 */ - return (color->ch [0] << 16) - | (color->ch [1] << 8) - | (color->ch [2]) - | (color->ch [3] << 24); /* Alpha */ + return ((guint32) color->ch [0] << 16) + | ((guint32) color->ch [1] << 8) + | ((guint32) color->ch [2]) + | ((guint32) color->ch [3] << 24); /* Alpha */ } void diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/chafa/internal/chafa-pixops.c new/chafa-1.12.1/chafa/internal/chafa-pixops.c --- old/chafa-1.12.0/chafa/internal/chafa-pixops.c 2022-05-31 01:01:58.000000000 +0200 +++ new/chafa-1.12.1/chafa/internal/chafa-pixops.c 2022-06-15 00:13:28.000000000 +0200 @@ -24,7 +24,7 @@ #include "internal/smolscale/smolscale.h" /* Fixed point multiplier */ -#define FIXED_MULT 16384 +#define FIXED_MULT 4096 /* See rgb_to_intensity_fast () */ #define INTENSITY_MAX (256 * 8) @@ -34,6 +34,10 @@ #define INDEXED_8_CROP_PCT 10 #define INDEXED_2_CROP_PCT 20 +/* Ensure there's no overflow in normalize_ch() */ +G_STATIC_ASSERT (FIXED_MULT * INTENSITY_MAX * (gint64) 255 <= G_MAXINT); +G_STATIC_ASSERT (FIXED_MULT * INTENSITY_MAX * (gint64) -255 >= G_MININT); + typedef struct { gint32 c [INTENSITY_MAX]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/configure new/chafa-1.12.1/configure --- old/chafa-1.12.0/configure 2022-06-06 02:42:45.000000000 +0200 +++ new/chafa-1.12.1/configure 2022-06-20 00:27:52.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for chafa 1.12.0. +# Generated by GNU Autoconf 2.69 for chafa 1.12.1. # # Report bugs to <h...@hpjansson.org>. # @@ -590,8 +590,8 @@ # Identity of this package. PACKAGE_NAME='chafa' PACKAGE_TARNAME='chafa' -PACKAGE_VERSION='1.12.0' -PACKAGE_STRING='chafa 1.12.0' +PACKAGE_VERSION='1.12.1' +PACKAGE_STRING='chafa 1.12.1' PACKAGE_BUGREPORT='h...@hpjansson.org' PACKAGE_URL='' @@ -1423,7 +1423,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures chafa 1.12.0 to adapt to many kinds of systems. +\`configure' configures chafa 1.12.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1493,7 +1493,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of chafa 1.12.0:";; + short | recursive ) echo "Configuration of chafa 1.12.1:";; esac cat <<\_ACEOF @@ -1648,7 +1648,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -chafa configure 1.12.0 +chafa configure 1.12.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2017,7 +2017,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by chafa $as_me 1.12.0, which was +It was created by chafa $as_me 1.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2875,7 +2875,7 @@ # Define the identity of the package. PACKAGE='chafa' - VERSION='1.12.0' + VERSION='1.12.1' cat >>confdefs.h <<_ACEOF @@ -2977,8 +2977,8 @@ CHAFA_MAJOR_VERSION=1 CHAFA_MINOR_VERSION=12 -CHAFA_MICRO_VERSION=0 -CHAFA_VERSION=1.12.0 +CHAFA_MICRO_VERSION=1 +CHAFA_VERSION=1.12.1 @@ -2992,7 +2992,7 @@ $as_echo "#define CHAFA_MINOR_VERSION 12" >>confdefs.h -$as_echo "#define CHAFA_MICRO_VERSION 0" >>confdefs.h +$as_echo "#define CHAFA_MICRO_VERSION 1" >>confdefs.h cat >>confdefs.h <<_ACEOF @@ -13690,12 +13690,12 @@ pkg_cv_GLIB_CFLAGS="$GLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.20") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.10" 2>/dev/null` + pkg_cv_GLIB_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.20" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13707,12 +13707,12 @@ pkg_cv_GLIB_LIBS="$GLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ - { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.10\""; } >&5 - ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.10") 2>&5 + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.20\""; } >&5 + ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.20") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.10" 2>/dev/null` + pkg_cv_GLIB_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.20" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -13733,14 +13733,14 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.10" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.20" 2>&1` else - GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.10" 2>&1` + GLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.20" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$GLIB_PKG_ERRORS" >&5 - as_fn_error $? "Package requirements (glib-2.0 >= 2.10) were not met: + as_fn_error $? "Package requirements (glib-2.0 >= 2.20) were not met: $GLIB_PKG_ERRORS @@ -16153,7 +16153,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by chafa $as_me 1.12.0, which was +This file was extended by chafa $as_me 1.12.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16219,7 +16219,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -chafa config.status 1.12.0 +chafa config.status 1.12.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/configure.ac new/chafa-1.12.1/configure.ac --- old/chafa-1.12.0/configure.ac 2022-06-06 02:04:28.000000000 +0200 +++ new/chafa-1.12.1/configure.ac 2022-06-20 00:24:42.000000000 +0200 @@ -6,7 +6,7 @@ m4_define([chafa_major_version], [1]) m4_define([chafa_minor_version], [12]) -m4_define([chafa_micro_version], [0]) +m4_define([chafa_micro_version], [1]) m4_define([chafa_version], [chafa_major_version.chafa_minor_version.chafa_micro_version]) @@ -74,7 +74,7 @@ dnl --- Dependency check --- -PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.10) +PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.20) AC_ARG_WITH(tools, [AS_HELP_STRING([--without-tools], [don't build command-line tools [default=on]])], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/chafa-sections.txt new/chafa-1.12.1/docs/chafa-sections.txt --- old/chafa-1.12.0/docs/chafa-sections.txt 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/chafa-sections.txt 2022-06-20 00:28:07.000000000 +0200 @@ -75,6 +75,9 @@ chafa_get_builtin_features chafa_get_supported_features chafa_describe_features +chafa_get_n_threads +chafa_set_n_threads +chafa_get_n_actual_threads </SECTION> <SECTION> @@ -94,6 +97,7 @@ chafa_symbol_map_apply_selectors chafa_symbol_map_get_allow_builtin_glyphs chafa_symbol_map_set_allow_builtin_glyphs +chafa_symbol_map_get_glyph chafa_symbol_map_add_glyph </SECTION> @@ -106,6 +110,8 @@ CHAFA_VERSION_1_4 CHAFA_VERSION_1_6 CHAFA_VERSION_1_8 +CHAFA_VERSION_1_10 +CHAFA_VERSION_1_12 ChafaPixelType chafa_calc_canvas_geometry </SECTION> @@ -155,7 +161,11 @@ chafa_term_info_emit_disable_insert chafa_term_info_emit_enable_wrap chafa_term_info_emit_disable_wrap +chafa_term_info_emit_enable_bold chafa_term_info_emit_invert_colors +chafa_term_info_emit_set_color_bg_8 +chafa_term_info_emit_set_color_fg_8 +chafa_term_info_emit_set_color_fgbg_8 chafa_term_info_emit_set_color_fg_16 chafa_term_info_emit_set_color_bg_16 chafa_term_info_emit_set_color_fgbg_16 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/chafa.1 new/chafa-1.12.1/docs/chafa.1 --- old/chafa-1.12.0/docs/chafa.1 2022-06-06 02:43:02.000000000 +0200 +++ new/chafa-1.12.1/docs/chafa.1 2022-06-20 00:28:04.000000000 +0200 @@ -2,7 +2,7 @@ .\" Title: chafa .\" Author: Hans Petter Jansson .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/> -.\" Date: 06/06/2022 +.\" Date: 06/20/2022 .\" Manual: User Commands .\" Source: chafa .\" Language: English diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/api-index-full.html new/chafa-1.12.1/docs/html/api-index-full.html --- old/chafa-1.12.0/docs/html/api-index-full.html 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/api-index-full.html 2022-06-20 00:28:07.000000000 +0200 @@ -302,6 +302,14 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-Features.html#chafa-get-n-actual-threads" title="chafa_get_n_actual_threads??()">chafa_get_n_actual_threads</a>, function in <a class="link" href="chafa-Features.html" title="Features">Features</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="chafa-Features.html#chafa-get-n-threads" title="chafa_get_n_threads??()">chafa_get_n_threads</a>, function in <a class="link" href="chafa-Features.html" title="Features">Features</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-Features.html#chafa-get-supported-features" title="chafa_get_supported_features??()">chafa_get_supported_features</a>, function in <a class="link" href="chafa-Features.html" title="Features">Features</a> </dt> <dd></dd> @@ -321,6 +329,10 @@ <dd></dd> <a name="idxS"></a><h3 class="title">S</h3> <dt> +<a class="link" href="chafa-Features.html#chafa-set-n-threads" title="chafa_set_n_threads??()">chafa_set_n_threads</a>, function in <a class="link" href="chafa-Features.html" title="Features">Features</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-ChafaSymbolMap.html#ChafaSymbolMap" title="ChafaSymbolMap">ChafaSymbolMap</a>, typedef in <a class="link" href="chafa-ChafaSymbolMap.html" title="ChafaSymbolMap">ChafaSymbolMap</a> </dt> <dd></dd> @@ -357,6 +369,10 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-ChafaSymbolMap.html#chafa-symbol-map-get-glyph" title="chafa_symbol_map_get_glyph??()">chafa_symbol_map_get_glyph</a>, function in <a class="link" href="chafa-ChafaSymbolMap.html" title="ChafaSymbolMap">ChafaSymbolMap</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-ChafaSymbolMap.html#chafa-symbol-map-new" title="chafa_symbol_map_new??()">chafa_symbol_map_new</a>, function in <a class="link" href="chafa-ChafaSymbolMap.html" title="ChafaSymbolMap">ChafaSymbolMap</a> </dt> <dd></dd> @@ -534,6 +550,10 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-enable-bold" title="chafa_term_info_emit_enable_bold??()">chafa_term_info_emit_enable_bold</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-enable-cursor" title="chafa_term_info_emit_enable_cursor??()">chafa_term_info_emit_enable_cursor</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> </dt> <dd></dd> @@ -606,6 +626,10 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-bg-8" title="chafa_term_info_emit_set_color_bg_8??()">chafa_term_info_emit_set_color_bg_8</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-bg-direct" title="chafa_term_info_emit_set_color_bg_direct??()">chafa_term_info_emit_set_color_bg_direct</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> </dt> <dd></dd> @@ -618,6 +642,10 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fgbg-8" title="chafa_term_info_emit_set_color_fgbg_8??()">chafa_term_info_emit_set_color_fgbg_8</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fgbg-direct" title="chafa_term_info_emit_set_color_fgbg_direct??()">chafa_term_info_emit_set_color_fgbg_direct</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> </dt> <dd></dd> @@ -630,6 +658,10 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fg-8" title="chafa_term_info_emit_set_color_fg_8??()">chafa_term_info_emit_set_color_fg_8</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fg-direct" title="chafa_term_info_emit_set_color_fg_direct??()">chafa_term_info_emit_set_color_fg_direct</a>, function in <a class="link" href="chafa-ChafaTermInfo.html" title="ChafaTermInfo">ChafaTermInfo</a> </dt> <dd></dd> @@ -679,6 +711,14 @@ </dt> <dd></dd> <dt> +<a class="link" href="chafa-Miscellaneous.html#CHAFA-VERSION-1-10:CAPS" title="CHAFA_VERSION_1_10">CHAFA_VERSION_1_10</a>, macro in <a class="link" href="chafa-Miscellaneous.html" title="Miscellaneous">Miscellaneous</a> +</dt> +<dd></dd> +<dt> +<a class="link" href="chafa-Miscellaneous.html#CHAFA-VERSION-1-12:CAPS" title="CHAFA_VERSION_1_12">CHAFA_VERSION_1_12</a>, macro in <a class="link" href="chafa-Miscellaneous.html" title="Miscellaneous">Miscellaneous</a> +</dt> +<dd></dd> +<dt> <a class="link" href="chafa-Miscellaneous.html#CHAFA-VERSION-1-2:CAPS" title="CHAFA_VERSION_1_2">CHAFA_VERSION_1_2</a>, macro in <a class="link" href="chafa-Miscellaneous.html" title="Miscellaneous">Miscellaneous</a> </dt> <dd></dd> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/chafa-ChafaSymbolMap.html new/chafa-1.12.1/docs/html/chafa-ChafaSymbolMap.html --- old/chafa-1.12.0/docs/html/chafa-ChafaSymbolMap.html 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/chafa-ChafaSymbolMap.html 2022-06-20 00:28:07.000000000 +0200 @@ -129,6 +129,14 @@ </tr> <tr> <td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> +</td> +<td class="function_name"> +<a class="link" href="chafa-ChafaSymbolMap.html#chafa-symbol-map-get-glyph" title="chafa_symbol_map_get_glyph??()">chafa_symbol_map_get_glyph</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> <span class="returnvalue">void</span> </td> <td class="function_name"> @@ -533,6 +541,85 @@ </div> <hr> <div class="refsect2"> +<a name="chafa-symbol-map-get-glyph"></a><h3>chafa_symbol_map_get_glyph??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a> +chafa_symbol_map_get_glyph (<em class="parameter"><code><a class="link" href="chafa-ChafaSymbolMap.html#ChafaSymbolMap" title="ChafaSymbolMap"><span class="type">ChafaSymbolMap</span></a> *symbol_map</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Unicode-Manipulation.html#gunichar"><span class="type">gunichar</span></a> code_point</code></em>, + <em class="parameter"><code><a class="link" href="chafa-Miscellaneous.html#ChafaPixelType" title="enum ChafaPixelType"><span class="type">ChafaPixelType</span></a> pixel_format</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> *pixels_out</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *width_out</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *height_out</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> *rowstride_out</code></em>);</pre> +<p>Returns data for the glyph corresponding to <em class="parameter"><code>code_point</code></em> + stored in <em class="parameter"><code>symbol_map</code></em> +. +Any of <em class="parameter"><code>pixels_out</code></em> +, <em class="parameter"><code>width_out</code></em> +, <em class="parameter"><code>height_out</code></em> + and <em class="parameter"><code>rowstride_out</code></em> + can be NULL, +in which case the corresponding data is not retrieved.</p> +<p>If <em class="parameter"><code>pixels_out</code></em> + is not NULL, a pointer to freshly allocated memory containing +height * rowstride bytes in the pixel format specified by <em class="parameter"><code>pixel_format</code></em> + +will be stored at this address. It must be freed using <a href="/usr/share/gtk-doc/html/glib/glib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> when you're +done with it.</p> +<p>Monochrome glyphs (the only kind currently supported) will be rendered as +opaque white on a transparent black background (0xffffffff for inked +pixels and 0x00000000 for uninked).</p> +<div class="refsect3"> +<a name="chafa-symbol-map-get-glyph.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>symbol_map</p></td> +<td class="parameter_description"><p>A symbol map</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>code_point</p></td> +<td class="parameter_description"><p>A Unicode code point</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>pixel_format</p></td> +<td class="parameter_description"><p>Desired pixel format of <em class="parameter"><code>pixels_out</code></em> +</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>pixels_out</p></td> +<td class="parameter_description"><p>Storage for a pointer to exported glyph data</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>width_out</p></td> +<td class="parameter_description"><p>Storage for width of glyph, in pixels</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>height_out</p></td> +<td class="parameter_description"><p>Storage for height of glyph, in pixels</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>rowstride_out</p></td> +<td class="parameter_description"><p>Storage for offset from start of one row to the next, in bytes</p></td> +<td class="parameter_annotations">??</td> +</tr> +</tbody> +</table></div> +</div> +<p class="since">Since: 1.12</p> +</div> +<hr> +<div class="refsect2"> <a name="chafa-symbol-map-add-glyph"></a><h3>chafa_symbol_map_add_glyph??()</h3> <pre class="programlisting"><span class="returnvalue">void</span> chafa_symbol_map_add_glyph (<em class="parameter"><code><a class="link" href="chafa-ChafaSymbolMap.html#ChafaSymbolMap" title="ChafaSymbolMap"><span class="type">ChafaSymbolMap</span></a> *symbol_map</code></em>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/chafa-ChafaTermInfo.html new/chafa-1.12.1/docs/html/chafa-ChafaTermInfo.html --- old/chafa-1.12.0/docs/html/chafa-ChafaTermInfo.html 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/chafa-ChafaTermInfo.html 2022-06-20 00:28:07.000000000 +0200 @@ -347,6 +347,14 @@ <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* </td> <td class="function_name"> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-enable-bold" title="chafa_term_info_emit_enable_bold??()">chafa_term_info_emit_enable_bold</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +</td> +<td class="function_name"> <a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-invert-colors" title="chafa_term_info_emit_invert_colors??()">chafa_term_info_emit_invert_colors</a>??<span class="c_punctuation">()</span> </td> </tr> @@ -355,6 +363,30 @@ <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* </td> <td class="function_name"> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-bg-8" title="chafa_term_info_emit_set_color_bg_8??()">chafa_term_info_emit_set_color_bg_8</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +</td> +<td class="function_name"> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fg-8" title="chafa_term_info_emit_set_color_fg_8??()">chafa_term_info_emit_set_color_fg_8</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +</td> +<td class="function_name"> +<a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fgbg-8" title="chafa_term_info_emit_set_color_fgbg_8??()">chafa_term_info_emit_set_color_fgbg_8</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +</td> +<td class="function_name"> <a class="link" href="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fg-16" title="chafa_term_info_emit_set_color_fg_16??()">chafa_term_info_emit_set_color_fg_16</a>??<span class="c_punctuation">()</span> </td> </tr> @@ -2064,6 +2096,45 @@ </div> <hr> <div class="refsect2"> +<a name="chafa-term-info-emit-enable-bold"></a><h3>chafa_term_info_emit_enable_bold??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +chafa_term_info_emit_enable_bold (<em class="parameter"><code>const <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a> *term_info</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dest</code></em>);</pre> +<p>Prints the control sequence for <a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-ENABLE-BOLD:CAPS"><span class="type">CHAFA_TERM_SEQ_ENABLE_BOLD</span></a>.</p> +<p><em class="parameter"><code>dest</code></em> + must have enough space to hold +<a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-LENGTH-MAX:CAPS" title="CHAFA_TERM_SEQ_LENGTH_MAX"><span class="type">CHAFA_TERM_SEQ_LENGTH_MAX</span></a> bytes, even if the emitted sequence is +shorter. The output will not be zero-terminated.</p> +<div class="refsect3"> +<a name="chafa-term-info-emit-enable-bold.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>term_info</p></td> +<td class="parameter_description"><p>A <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a></p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>dest</p></td> +<td class="parameter_description"><p>String destination</p></td> +<td class="parameter_annotations">??</td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="chafa-term-info-emit-enable-bold.returns"></a><h4>Returns</h4> +<p> Pointer to first byte after emitted string</p> +</div> +<p class="since">Since: 1.12</p> +</div> +<hr> +<div class="refsect2"> <a name="chafa-term-info-emit-invert-colors"></a><h3>chafa_term_info_emit_invert_colors??()</h3> <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* chafa_term_info_emit_invert_colors (<em class="parameter"><code>const <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a> *term_info</code></em>, @@ -2103,6 +2174,147 @@ </div> <hr> <div class="refsect2"> +<a name="chafa-term-info-emit-set-color-bg-8"></a><h3>chafa_term_info_emit_set_color_bg_8??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +chafa_term_info_emit_set_color_bg_8 (<em class="parameter"><code>const <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a> *term_info</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dest</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint8"><span class="type">guint8</span></a> pen</code></em>);</pre> +<p>Prints the control sequence for <a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-SET-COLOR-BG-8:CAPS"><span class="type">CHAFA_TERM_SEQ_SET_COLOR_BG_8</span></a>.</p> +<p><em class="parameter"><code>dest</code></em> + must have enough space to hold +<a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-LENGTH-MAX:CAPS" title="CHAFA_TERM_SEQ_LENGTH_MAX"><span class="type">CHAFA_TERM_SEQ_LENGTH_MAX</span></a> bytes, even if the emitted sequence is +shorter. The output will not be zero-terminated.</p> +<div class="refsect3"> +<a name="chafa-term-info-emit-set-color-bg-8.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>term_info</p></td> +<td class="parameter_description"><p>A <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a></p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>dest</p></td> +<td class="parameter_description"><p>String destination</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>pen</p></td> +<td class="parameter_description"><p>Pen number, 0-7</p></td> +<td class="parameter_annotations">??</td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="chafa-term-info-emit-set-color-bg-8.returns"></a><h4>Returns</h4> +<p> Pointer to first byte after emitted string</p> +</div> +<p class="since">Since: 1.12</p> +</div> +<hr> +<div class="refsect2"> +<a name="chafa-term-info-emit-set-color-fg-8"></a><h3>chafa_term_info_emit_set_color_fg_8??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +chafa_term_info_emit_set_color_fg_8 (<em class="parameter"><code>const <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a> *term_info</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dest</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint8"><span class="type">guint8</span></a> pen</code></em>);</pre> +<p>Prints the control sequence for <a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-SET-COLOR-FG-8:CAPS"><span class="type">CHAFA_TERM_SEQ_SET_COLOR_FG_8</span></a>.</p> +<p><em class="parameter"><code>dest</code></em> + must have enough space to hold +<a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-LENGTH-MAX:CAPS" title="CHAFA_TERM_SEQ_LENGTH_MAX"><span class="type">CHAFA_TERM_SEQ_LENGTH_MAX</span></a> bytes, even if the emitted sequence is +shorter. The output will not be zero-terminated.</p> +<div class="refsect3"> +<a name="chafa-term-info-emit-set-color-fg-8.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>term_info</p></td> +<td class="parameter_description"><p>A <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a></p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>dest</p></td> +<td class="parameter_description"><p>String destination</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>pen</p></td> +<td class="parameter_description"><p>Pen number, 0-7</p></td> +<td class="parameter_annotations">??</td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="chafa-term-info-emit-set-color-fg-8.returns"></a><h4>Returns</h4> +<p> Pointer to first byte after emitted string</p> +</div> +<p class="since">Since: 1.12</p> +</div> +<hr> +<div class="refsect2"> +<a name="chafa-term-info-emit-set-color-fgbg-8"></a><h3>chafa_term_info_emit_set_color_fgbg_8??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* +chafa_term_info_emit_set_color_fgbg_8 (<em class="parameter"><code>const <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a> *term_info</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *dest</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint8"><span class="type">guint8</span></a> fg_pen</code></em>, + <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint8"><span class="type">guint8</span></a> bg_pen</code></em>);</pre> +<p>Prints the control sequence for <a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-SET-COLOR-FGBG-8:CAPS"><span class="type">CHAFA_TERM_SEQ_SET_COLOR_FGBG_8</span></a>.</p> +<p><em class="parameter"><code>dest</code></em> + must have enough space to hold +<a class="link" href="chafa-ChafaTermInfo.html#CHAFA-TERM-SEQ-LENGTH-MAX:CAPS" title="CHAFA_TERM_SEQ_LENGTH_MAX"><span class="type">CHAFA_TERM_SEQ_LENGTH_MAX</span></a> bytes, even if the emitted sequence is +shorter. The output will not be zero-terminated.</p> +<div class="refsect3"> +<a name="chafa-term-info-emit-set-color-fgbg-8.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody> +<tr> +<td class="parameter_name"><p>term_info</p></td> +<td class="parameter_description"><p>A <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a></p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>dest</p></td> +<td class="parameter_description"><p>String destination</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>fg_pen</p></td> +<td class="parameter_description"><p>Foreground pen number, 0-7</p></td> +<td class="parameter_annotations">??</td> +</tr> +<tr> +<td class="parameter_name"><p>bg_pen</p></td> +<td class="parameter_description"><p>Background pen number, 0-7</p></td> +<td class="parameter_annotations">??</td> +</tr> +</tbody> +</table></div> +</div> +<div class="refsect3"> +<a name="chafa-term-info-emit-set-color-fgbg-8.returns"></a><h4>Returns</h4> +<p> Pointer to first byte after emitted string</p> +</div> +<p class="since">Since: 1.12</p> +</div> +<hr> +<div class="refsect2"> <a name="chafa-term-info-emit-set-color-fg-16"></a><h3>chafa_term_info_emit_set_color_fg_16??()</h3> <pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a>??* chafa_term_info_emit_set_color_fg_16 (<em class="parameter"><code>const <a class="link" href="chafa-ChafaTermInfo.html#ChafaTermInfo" title="ChafaTermInfo"><span class="type">ChafaTermInfo</span></a> *term_info</code></em>, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/chafa-Features.html new/chafa-1.12.1/docs/html/chafa-Features.html --- old/chafa-1.12.0/docs/html/chafa-Features.html 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/chafa-Features.html 2022-06-20 00:28:07.000000000 +0200 @@ -63,6 +63,30 @@ <a class="link" href="chafa-Features.html#chafa-describe-features" title="chafa_describe_features??()">chafa_describe_features</a>??<span class="c_punctuation">()</span> </td> </tr> +<tr> +<td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> +</td> +<td class="function_name"> +<a class="link" href="chafa-Features.html#chafa-get-n-threads" title="chafa_get_n_threads??()">chafa_get_n_threads</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<span class="returnvalue">void</span> +</td> +<td class="function_name"> +<a class="link" href="chafa-Features.html#chafa-set-n-threads" title="chafa_set_n_threads??()">chafa_set_n_threads</a>??<span class="c_punctuation">()</span> +</td> +</tr> +<tr> +<td class="function_type"> +<a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> +</td> +<td class="function_name"> +<a class="link" href="chafa-Features.html#chafa-get-n-actual-threads" title="chafa_get_n_actual_threads??()">chafa_get_n_actual_threads</a>??<span class="c_punctuation">()</span> +</td> +</tr> </tbody> </table></div> </div> @@ -138,6 +162,54 @@ <p> A string describing the features. This must be freed by caller.</p> </div> </div> +<hr> +<div class="refsect2"> +<a name="chafa-get-n-threads"></a><h3>chafa_get_n_threads??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> +chafa_get_n_threads (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> +<p>Queries the maximum number of worker threads to use for parallel processing.</p> +<div class="refsect3"> +<a name="chafa-get-n-threads.returns"></a><h4>Returns</h4> +<p> The number of threads, or -1 if determined automatically</p> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="chafa-set-n-threads"></a><h3>chafa_set_n_threads??()</h3> +<pre class="programlisting"><span class="returnvalue">void</span> +chafa_set_n_threads (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="type">gint</span></a> n</code></em>);</pre> +<p>Sets the maximum number of worker threads to use for parallel processing, +or -1 to determine this automatically. The default is -1.</p> +<p>Setting this to 0 or 1 will avoid using thread pools and instead perform +all processing in the main thread.</p> +<div class="refsect3"> +<a name="chafa-set-n-threads.parameters"></a><h4>Parameters</h4> +<div class="informaltable"><table class="informaltable" width="100%" border="0"> +<colgroup> +<col width="150px" class="parameters_name"> +<col class="parameters_description"> +<col width="200px" class="parameters_annotations"> +</colgroup> +<tbody><tr> +<td class="parameter_name"><p>n</p></td> +<td class="parameter_description"><p>Number of threads</p></td> +<td class="parameter_annotations">??</td> +</tr></tbody> +</table></div> +</div> +</div> +<hr> +<div class="refsect2"> +<a name="chafa-get-n-actual-threads"></a><h3>chafa_get_n_actual_threads??()</h3> +<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a> +chafa_get_n_actual_threads (<em class="parameter"><code><span class="type">void</span></code></em>);</pre> +<p>Queries the number of worker threads that will actually be used for +parallel processing.</p> +<div class="refsect3"> +<a name="chafa-get-n-actual-threads.returns"></a><h4>Returns</h4> +<p> Number of threads, always >= 1</p> +</div> +</div> </div> <div class="refsect1"> <a name="chafa-Features.other_details"></a><h2>Types and Values</h2> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/chafa-Miscellaneous.html new/chafa-1.12.1/docs/html/chafa-Miscellaneous.html --- old/chafa-1.12.0/docs/html/chafa-Miscellaneous.html 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/chafa-Miscellaneous.html 2022-06-20 00:28:07.000000000 +0200 @@ -85,6 +85,14 @@ <td class="function_name"><a class="link" href="chafa-Miscellaneous.html#CHAFA-VERSION-1-8:CAPS" title="CHAFA_VERSION_1_8">CHAFA_VERSION_1_8</a></td> </tr> <tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="chafa-Miscellaneous.html#CHAFA-VERSION-1-10:CAPS" title="CHAFA_VERSION_1_10">CHAFA_VERSION_1_10</a></td> +</tr> +<tr> +<td class="define_keyword">#define</td> +<td class="function_name"><a class="link" href="chafa-Miscellaneous.html#CHAFA-VERSION-1-12:CAPS" title="CHAFA_VERSION_1_12">CHAFA_VERSION_1_12</a></td> +</tr> +<tr> <td class="datatype_keyword">enum</td> <td class="function_name"><a class="link" href="chafa-Miscellaneous.html#ChafaPixelType" title="enum ChafaPixelType">ChafaPixelType</a></td> </tr> @@ -240,6 +248,18 @@ </pre> </div> <hr> +<div class="refsect2"> +<a name="CHAFA-VERSION-1-10:CAPS"></a><h3>CHAFA_VERSION_1_10</h3> +<pre class="programlisting">#define CHAFA_VERSION_1_10 (G_ENCODE_VERSION (1, 10)) +</pre> +</div> +<hr> +<div class="refsect2"> +<a name="CHAFA-VERSION-1-12:CAPS"></a><h3>CHAFA_VERSION_1_12</h3> +<pre class="programlisting">#define CHAFA_VERSION_1_12 (G_ENCODE_VERSION (1, 12)) +</pre> +</div> +<hr> <div class="refsect2"> <a name="ChafaPixelType"></a><h3>enum ChafaPixelType</h3> <p>Pixel formats supported by <a class="link" href="chafa-ChafaCanvas.html#ChafaCanvas" title="ChafaCanvas"><span class="type">ChafaCanvas</span></a> and <a class="link" href="chafa-ChafaSymbolMap.html#ChafaSymbolMap" title="ChafaSymbolMap"><span class="type">ChafaSymbolMap</span></a>.</p> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/chafa.devhelp2 new/chafa-1.12.1/docs/html/chafa.devhelp2 --- old/chafa-1.12.0/docs/html/chafa.devhelp2 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/chafa.devhelp2 2022-06-20 00:28:07.000000000 +0200 @@ -91,6 +91,7 @@ <keyword type="function" name="chafa_symbol_map_apply_selectors??()" link="chafa-ChafaSymbolMap.html#chafa-symbol-map-apply-selectors"/> <keyword type="function" name="chafa_symbol_map_get_allow_builtin_glyphs??()" link="chafa-ChafaSymbolMap.html#chafa-symbol-map-get-allow-builtin-glyphs" since="1.4"/> <keyword type="function" name="chafa_symbol_map_set_allow_builtin_glyphs??()" link="chafa-ChafaSymbolMap.html#chafa-symbol-map-set-allow-builtin-glyphs" since="1.4"/> + <keyword type="function" name="chafa_symbol_map_get_glyph??()" link="chafa-ChafaSymbolMap.html#chafa-symbol-map-get-glyph" since="1.12"/> <keyword type="function" name="chafa_symbol_map_add_glyph??()" link="chafa-ChafaSymbolMap.html#chafa-symbol-map-add-glyph" since="1.4"/> <keyword type="macro" name="CHAFA_SYMBOL_WIDTH_PIXELS" link="chafa-ChafaSymbolMap.html#CHAFA-SYMBOL-WIDTH-PIXELS:CAPS"/> <keyword type="macro" name="CHAFA_SYMBOL_HEIGHT_PIXELS" link="chafa-ChafaSymbolMap.html#CHAFA-SYMBOL-HEIGHT-PIXELS:CAPS"/> @@ -142,7 +143,11 @@ <keyword type="function" name="chafa_term_info_emit_disable_insert??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-disable-insert" since="1.6"/> <keyword type="function" name="chafa_term_info_emit_enable_wrap??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-enable-wrap" since="1.6"/> <keyword type="function" name="chafa_term_info_emit_disable_wrap??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-disable-wrap" since="1.6"/> + <keyword type="function" name="chafa_term_info_emit_enable_bold??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-enable-bold" since="1.12"/> <keyword type="function" name="chafa_term_info_emit_invert_colors??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-invert-colors" since="1.6"/> + <keyword type="function" name="chafa_term_info_emit_set_color_bg_8??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-bg-8" since="1.12"/> + <keyword type="function" name="chafa_term_info_emit_set_color_fg_8??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fg-8" since="1.12"/> + <keyword type="function" name="chafa_term_info_emit_set_color_fgbg_8??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fgbg-8" since="1.12"/> <keyword type="function" name="chafa_term_info_emit_set_color_fg_16??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fg-16" since="1.6"/> <keyword type="function" name="chafa_term_info_emit_set_color_bg_16??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-bg-16" since="1.6"/> <keyword type="function" name="chafa_term_info_emit_set_color_fgbg_16??()" link="chafa-ChafaTermInfo.html#chafa-term-info-emit-set-color-fgbg-16" since="1.6"/> @@ -171,6 +176,9 @@ <keyword type="function" name="chafa_get_builtin_features??()" link="chafa-Features.html#chafa-get-builtin-features"/> <keyword type="function" name="chafa_get_supported_features??()" link="chafa-Features.html#chafa-get-supported-features"/> <keyword type="function" name="chafa_describe_features??()" link="chafa-Features.html#chafa-describe-features"/> + <keyword type="function" name="chafa_get_n_threads??()" link="chafa-Features.html#chafa-get-n-threads"/> + <keyword type="function" name="chafa_set_n_threads??()" link="chafa-Features.html#chafa-set-n-threads"/> + <keyword type="function" name="chafa_get_n_actual_threads??()" link="chafa-Features.html#chafa-get-n-actual-threads"/> <keyword type="enum" name="enum ChafaFeatures" link="chafa-Features.html#ChafaFeatures"/> <keyword type="function" name="chafa_calc_canvas_geometry??()" link="chafa-Miscellaneous.html#chafa-calc-canvas-geometry"/> <keyword type="macro" name="CHAFA_VERSION_MIN_REQUIRED" link="chafa-Miscellaneous.html#CHAFA-VERSION-MIN-REQUIRED:CAPS" since="1.2"/> @@ -180,6 +188,8 @@ <keyword type="macro" name="CHAFA_VERSION_1_4" link="chafa-Miscellaneous.html#CHAFA-VERSION-1-4:CAPS"/> <keyword type="macro" name="CHAFA_VERSION_1_6" link="chafa-Miscellaneous.html#CHAFA-VERSION-1-6:CAPS"/> <keyword type="macro" name="CHAFA_VERSION_1_8" link="chafa-Miscellaneous.html#CHAFA-VERSION-1-8:CAPS"/> + <keyword type="macro" name="CHAFA_VERSION_1_10" link="chafa-Miscellaneous.html#CHAFA-VERSION-1-10:CAPS"/> + <keyword type="macro" name="CHAFA_VERSION_1_12" link="chafa-Miscellaneous.html#CHAFA-VERSION-1-12:CAPS"/> <keyword type="enum" name="enum ChafaPixelType" link="chafa-Miscellaneous.html#ChafaPixelType" since="1.4"/> <keyword type="constant" name="CHAFA_PIXEL_MODE_SYMBOLS" link="chafa-ChafaCanvasConfig.html#CHAFA-PIXEL-MODE-SYMBOLS:CAPS"/> <keyword type="constant" name="CHAFA_PIXEL_MODE_SIXELS" link="chafa-ChafaCanvasConfig.html#CHAFA-PIXEL-MODE-SIXELS:CAPS"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/docs/html/index.html new/chafa-1.12.1/docs/html/index.html --- old/chafa-1.12.0/docs/html/index.html 2022-06-06 03:06:41.000000000 +0200 +++ new/chafa-1.12.1/docs/html/index.html 2022-06-20 00:28:07.000000000 +0200 @@ -15,7 +15,7 @@ <div> <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">Chafa Reference Manual</p></th></tr></table></div> <div><p class="releaseinfo"> - For Chafa version 1.12.0 + For Chafa version 1.12.1 . The latest version of this documentation can be found online at <a class="ulink" href="https://hpjansson.org/chafa/ref/index.html" target="_top">https://hpjansson.org/chafa/ref/</a>. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/libnsgif/libnsgif.c new/chafa-1.12.1/libnsgif/libnsgif.c --- old/chafa-1.12.0/libnsgif/libnsgif.c 2022-05-31 01:01:58.000000000 +0200 +++ new/chafa-1.12.1/libnsgif/libnsgif.c 2022-06-15 00:13:28.000000000 +0200 @@ -299,6 +299,9 @@ } gif->frames = temp_buf; gif->frame_holders = frame + 1; + + /* Clear all frame fields */ + memset(&gif->frames[frame], 0, sizeof(gif_frame)); } /* Store our frame pointer. We would do it when allocating except we @@ -1068,6 +1071,9 @@ } gif->frame_holders = 1; + /* Clear all frame fields */ + memset(gif->frames, 0, sizeof(gif_frame)); + /* Initialise the bitmap header */ assert(gif->bitmap_callbacks.bitmap_create); gif->frame_image = gif->bitmap_callbacks.bitmap_create(gif->width, gif->height); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/libnsgif/lzw.c new/chafa-1.12.1/libnsgif/lzw.c --- old/chafa-1.12.0/libnsgif/lzw.c 2022-05-31 01:01:58.000000000 +0200 +++ new/chafa-1.12.1/libnsgif/lzw.c 2022-06-15 00:13:28.000000000 +0200 @@ -329,6 +329,10 @@ /* Code is invalid */ return LZW_BAD_CODE; + } else if (code_new >= 1 << LZW_CODE_MAX) { + /* Don't access out of bound */ + return LZW_BAD_CODE; + } else if (code_new < current_entry) { /* Code is in table */ code_out = code_new; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/lodepng/lodepng.c new/chafa-1.12.1/lodepng/lodepng.c --- old/chafa-1.12.0/lodepng/lodepng.c 2022-05-31 01:01:58.000000000 +0200 +++ new/chafa-1.12.1/lodepng/lodepng.c 2022-06-20 00:24:42.000000000 +0200 @@ -1367,8 +1367,11 @@ /*read the literal data: LEN bytes are now stored in the out buffer*/ if(bytepos + LEN > size) return 23; /*error: reading outside of in buffer*/ - lodepng_memcpy(out->data + out->size - LEN, reader->data + bytepos, LEN); - bytepos += LEN; + /*out->data can be NULL (when LEN is zero), and arithmetics on NULL ptr is undefined. so we check*/ + if (out->data) { + lodepng_memcpy(out->data + out->size - LEN, reader->data + bytepos, LEN); + bytepos += LEN; + } reader->bp = bytepos << 3u; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/Makefile.am new/chafa-1.12.1/tests/Makefile.am --- old/chafa-1.12.0/tests/Makefile.am 2022-06-05 20:48:29.000000000 +0200 +++ new/chafa-1.12.1/tests/Makefile.am 2022-06-15 00:13:28.000000000 +0200 @@ -14,6 +14,7 @@ ## --- Frontend tests --- TOOL_CHECKS = \ + chafa-tool-bad-test.sh \ chafa-tool-cmode-test.sh \ chafa-tool-format-test.sh \ chafa-tool-loader-test.sh \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/Makefile.in new/chafa-1.12.1/tests/Makefile.in --- old/chafa-1.12.0/tests/Makefile.in 2022-06-06 02:42:44.000000000 +0200 +++ new/chafa-1.12.1/tests/Makefile.in 2022-06-20 00:27:51.000000000 +0200 @@ -584,6 +584,7 @@ term-info-test.c TOOL_CHECKS = \ + chafa-tool-bad-test.sh \ chafa-tool-cmode-test.sh \ chafa-tool-format-test.sh \ chafa-tool-loader-test.sh \ @@ -937,6 +938,13 @@ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ --log-file $$b.log --trs-file $$b.trs \ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +chafa-tool-bad-test.sh.log: chafa-tool-bad-test.sh + @p='chafa-tool-bad-test.sh'; \ + b='chafa-tool-bad-test.sh'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ "$$tst" $(AM_TESTS_FD_REDIRECT) chafa-tool-cmode-test.sh.log: chafa-tool-cmode-test.sh @p='chafa-tool-cmode-test.sh'; \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-bad-test.sh new/chafa-1.12.1/tests/chafa-tool-bad-test.sh --- old/chafa-1.12.0/tests/chafa-tool-bad-test.sh 1970-01-01 01:00:00.000000000 +0100 +++ new/chafa-1.12.1/tests/chafa-tool-bad-test.sh 2022-06-15 00:13:28.000000000 +0200 @@ -0,0 +1,10 @@ +#!/bin/sh + +[ "x${srcdir}" = "x" ] && srcdir="." +. "${srcdir}/chafa-tool-test-common.sh" + +for format in $formats; do + for size in $sizes; do + run_cmd_all_bad_files "$tool -f $format -c 16 --dither fs -s $size --threads 12 -d 0 --speed max" || exit $? + done +done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-cmode-test.sh new/chafa-1.12.1/tests/chafa-tool-cmode-test.sh --- old/chafa-1.12.0/tests/chafa-tool-cmode-test.sh 2022-05-30 23:03:57.000000000 +0200 +++ new/chafa-1.12.1/tests/chafa-tool-cmode-test.sh 2022-06-15 00:13:28.000000000 +0200 @@ -6,7 +6,7 @@ for cmode in $cmodes; do for size in $sizes; do for n_threads in $thread_counts; do - run_cmd "$tool -f symbol -c $cmode -s $size --threads $n_threads --animate no" + run_cmd "$tool -f symbol -c $cmode -s $size --threads $n_threads --animate no" || exit $? done done done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-format-test.sh new/chafa-1.12.1/tests/chafa-tool-format-test.sh --- old/chafa-1.12.0/tests/chafa-tool-format-test.sh 2022-05-30 23:05:18.000000000 +0200 +++ new/chafa-1.12.1/tests/chafa-tool-format-test.sh 2022-06-15 00:13:28.000000000 +0200 @@ -6,7 +6,7 @@ for format in $formats; do for size in $sizes; do for n_threads in $thread_counts; do - run_cmd "$tool -f $format -c full -s $size --threads $n_threads --animate no" + run_cmd_all_safe_files "$tool -f $format -c full -s $size --threads $n_threads -d 0 --speed max" || exit $? done done done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-loader-test.sh new/chafa-1.12.1/tests/chafa-tool-loader-test.sh --- old/chafa-1.12.0/tests/chafa-tool-loader-test.sh 2022-06-05 21:24:31.000000000 +0200 +++ new/chafa-1.12.1/tests/chafa-tool-loader-test.sh 2022-06-15 00:13:28.000000000 +0200 @@ -7,5 +7,5 @@ for ext in $extensions; do [ "x${ext}" = "ximagemagick" ] && continue - run_cmd_single_file "$tool -f sixel --threads 12 --animate no" "good/pixel.$ext" + run_cmd_single_file "$tool -f sixel --threads 12 --animate no" "good/pixel.$ext" || exit $? done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-options-test.sh new/chafa-1.12.1/tests/chafa-tool-options-test.sh --- old/chafa-1.12.0/tests/chafa-tool-options-test.sh 2022-06-02 23:26:02.000000000 +0200 +++ new/chafa-1.12.1/tests/chafa-tool-options-test.sh 2022-06-15 00:13:28.000000000 +0200 @@ -15,7 +15,7 @@ for main_symbols in $symbol_selectors; do for fill_symbols in $symbol_selectors; do run_cmd "$tool -f $format -c 240 -s 53 --threads 12 --animate no --color-space $color_space \ ---color-extractor $color_extractor --dither $dither_type --symbols $main_symbols --fill $fill_symbols" +--color-extractor $color_extractor --dither $dither_type --symbols $main_symbols --fill $fill_symbols" || exit $? done done done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-pipe-test.sh new/chafa-1.12.1/tests/chafa-tool-pipe-test.sh --- old/chafa-1.12.0/tests/chafa-tool-pipe-test.sh 2022-06-02 23:13:08.000000000 +0200 +++ new/chafa-1.12.1/tests/chafa-tool-pipe-test.sh 2022-06-15 00:13:28.000000000 +0200 @@ -3,4 +3,4 @@ [ "x${srcdir}" = "x" ] && srcdir="." . "${srcdir}/chafa-tool-test-common.sh" -run_cmd "$tool -f symbol -c full -s 63 --threads 12 --animate no < " +run_cmd "$tool -f symbol -c full -s 63 --threads 12 --animate no < " || exit $? diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/chafa-tool-test-common.sh new/chafa-1.12.1/tests/chafa-tool-test-common.sh --- old/chafa-1.12.0/tests/chafa-tool-test-common.sh 2022-06-05 21:23:20.000000000 +0200 +++ new/chafa-1.12.1/tests/chafa-tool-test-common.sh 2022-06-15 00:13:28.000000000 +0200 @@ -1,18 +1,38 @@ #!/bin/sh -set -e - run_cmd () { cmd="$1 ${top_srcdir}/tests/data/good/card-32c-noalpha.png >/dev/null" echo "$cmd" >&2 - sh -c "$cmd" + sh -c "$cmd" || exit $? } run_cmd_single_file () { file="$2" cmd="$1 ${top_srcdir}/tests/data/$file >/dev/null" echo "$cmd" >&2 + sh -c "$cmd" || exit $? +} + +run_cmd_all_safe_files () { + # Only run on files for which we're guaranteed to have loaders. + # '$dir/*.{gif,png,xwd}' is a Bash-ism, so we can't use it. + dir="${top_srcdir}/tests/data/good" + cmd="$1 $dir/*.gif $dir/*.png $dir/*.xwd >/dev/null" + echo "$cmd" >&2 + sh -c "$cmd" || exit $? +} + +run_cmd_all_bad_files () { + # Since this only fails on crashes, it's fine to run it on absolutely + # everything (including unsupported formats, build files etc). + cmd="$1 ${top_srcdir}/tests/data/bad/* >/dev/null" + echo "$cmd" >&2 sh -c "$cmd" + result=$? + + # For corrupt files, an exit value of 1 or 2 is a fine result, + # but other values are trouble (e.g. terminated by signal). + if test $result -gt 2; then exit $result; fi } get_supported_loaders () { @@ -34,8 +54,11 @@ sizes="$(seq 1 100)" thread_counts="$(seq 1 32) 61" else + # The 13x13 size is specifically required to trigger the normalization + # overflow (see commit 60d7718f9d8fa591d3d69079fe583913c58c19d9). + formats="symbol sixel kitty iterm" cmodes="none 2 16/8 16 256 full" - sizes="1 3 17 133" + sizes="1 3 13x13 133" thread_counts="1 2 3 12 32 61" fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/data/bad/Makefile.am new/chafa-1.12.1/tests/data/bad/Makefile.am --- old/chafa-1.12.0/tests/data/bad/Makefile.am 2022-06-04 03:03:36.000000000 +0200 +++ new/chafa-1.12.1/tests/data/bad/Makefile.am 2022-06-20 00:24:42.000000000 +0200 @@ -1 +1,8 @@ -EXTRA_DIST = +EXTRA_DIST = \ + libnsgif-lzw-oob.gif \ + libnsgif-uninitialized-frame-fields.gif \ + lodepng-zero-length-literal.png \ + no-frame-data.gif \ + pixops-normalize-signed-overflow.gif \ + smolscale-unaligned-1.xwd \ + smolscale-unaligned-2.xwd diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/data/bad/Makefile.in new/chafa-1.12.1/tests/data/bad/Makefile.in --- old/chafa-1.12.0/tests/data/bad/Makefile.in 2022-06-06 02:42:44.000000000 +0200 +++ new/chafa-1.12.1/tests/data/bad/Makefile.in 2022-06-20 00:27:51.000000000 +0200 @@ -275,7 +275,15 @@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -EXTRA_DIST = +EXTRA_DIST = \ + libnsgif-lzw-oob.gif \ + libnsgif-uninitialized-frame-fields.gif \ + lodepng-zero-length-literal.png \ + no-frame-data.gif \ + pixops-normalize-signed-overflow.gif \ + smolscale-unaligned-1.xwd \ + smolscale-unaligned-2.xwd + all: all-am .SUFFIXES: Binary files old/chafa-1.12.0/tests/data/bad/libnsgif-lzw-oob.gif and new/chafa-1.12.1/tests/data/bad/libnsgif-lzw-oob.gif differ Binary files old/chafa-1.12.0/tests/data/bad/libnsgif-uninitialized-frame-fields.gif and new/chafa-1.12.1/tests/data/bad/libnsgif-uninitialized-frame-fields.gif differ Binary files old/chafa-1.12.0/tests/data/bad/lodepng-zero-length-literal.png and new/chafa-1.12.1/tests/data/bad/lodepng-zero-length-literal.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/data/bad/no-frame-data.gif new/chafa-1.12.1/tests/data/bad/no-frame-data.gif --- old/chafa-1.12.0/tests/data/bad/no-frame-data.gif 1970-01-01 01:00:00.000000000 +0100 +++ new/chafa-1.12.1/tests/data/bad/no-frame-data.gif 2022-06-15 00:13:28.000000000 +0200 @@ -0,0 +1 @@ +GIF89a???????; \ No newline at end of file Binary files old/chafa-1.12.0/tests/data/bad/pixops-normalize-signed-overflow.gif and new/chafa-1.12.1/tests/data/bad/pixops-normalize-signed-overflow.gif differ Binary files old/chafa-1.12.0/tests/data/bad/smolscale-unaligned-1.xwd and new/chafa-1.12.1/tests/data/bad/smolscale-unaligned-1.xwd differ Binary files old/chafa-1.12.0/tests/data/bad/smolscale-unaligned-2.xwd and new/chafa-1.12.1/tests/data/bad/smolscale-unaligned-2.xwd differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/data/good/Makefile.am new/chafa-1.12.1/tests/data/good/Makefile.am --- old/chafa-1.12.0/tests/data/good/Makefile.am 2022-06-06 02:16:28.000000000 +0200 +++ new/chafa-1.12.1/tests/data/good/Makefile.am 2022-06-15 00:13:28.000000000 +0200 @@ -1,8 +1,13 @@ EXTRA_DIST = \ + anim-local-cmaps.gif \ + anim.gif \ card-32c-alpha.png \ card-32c-noalpha.png \ card-full-alpha.png \ card-full-noalpha.png \ + noise-32x32-indexed.png \ + noise-32x32.gif \ + noise-32x32.png \ pixel.gif \ pixel.jpeg \ pixel.png \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tests/data/good/Makefile.in new/chafa-1.12.1/tests/data/good/Makefile.in --- old/chafa-1.12.0/tests/data/good/Makefile.in 2022-06-06 02:42:44.000000000 +0200 +++ new/chafa-1.12.1/tests/data/good/Makefile.in 2022-06-20 00:27:51.000000000 +0200 @@ -276,10 +276,15 @@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = \ + anim-local-cmaps.gif \ + anim.gif \ card-32c-alpha.png \ card-32c-noalpha.png \ card-full-alpha.png \ card-full-noalpha.png \ + noise-32x32-indexed.png \ + noise-32x32.gif \ + noise-32x32.png \ pixel.gif \ pixel.jpeg \ pixel.png \ Binary files old/chafa-1.12.0/tests/data/good/anim-local-cmaps.gif and new/chafa-1.12.1/tests/data/good/anim-local-cmaps.gif differ Binary files old/chafa-1.12.0/tests/data/good/anim.gif and new/chafa-1.12.1/tests/data/good/anim.gif differ Binary files old/chafa-1.12.0/tests/data/good/noise-32x32-indexed.png and new/chafa-1.12.1/tests/data/good/noise-32x32-indexed.png differ Binary files old/chafa-1.12.0/tests/data/good/noise-32x32.gif and new/chafa-1.12.1/tests/data/good/noise-32x32.gif differ Binary files old/chafa-1.12.0/tests/data/good/noise-32x32.png and new/chafa-1.12.1/tests/data/good/noise-32x32.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chafa-1.12.0/tools/chafa/xwd-loader.c new/chafa-1.12.1/tools/chafa/xwd-loader.c --- old/chafa-1.12.0/tools/chafa/xwd-loader.c 2022-05-31 01:01:59.000000000 +0200 +++ new/chafa-1.12.1/tools/chafa/xwd-loader.c 2022-06-15 00:13:28.000000000 +0200 @@ -213,6 +213,7 @@ ASSERT_HEADER (h->header_size >= sizeof (XwdHeader)); ASSERT_HEADER (h->header_size <= 65535); + ASSERT_HEADER (h->header_size % 4 == 0); /* For image data alignment */ ASSERT_HEADER (h->file_version == 7); ASSERT_HEADER (h->pixmap_depth == 24); @@ -235,6 +236,9 @@ ASSERT_HEADER (h->bytes_per_line >= h->pixmap_width * (h->bits_per_pixel / 8)); ASSERT_HEADER (h->bytes_per_line <= h->pixmap_width * (h->bits_per_pixel / 8) + 1024); + /* If each pixel is four bytes, reject unaligned rowstrides */ + ASSERT_HEADER (h->bits_per_pixel != 32 || h->bytes_per_line % 4 == 0); + /* Make sure the total allocation/map is not too big. */ ASSERT_HEADER (h->bytes_per_line * h->pixmap_height < (1UL << 31) - 65536 - 256 * 32);