Files
RedBear-OS/recipes/tools/gettext/source/gettext-runtime/libasprintf
vasilito a399e7da08 cleanup: remove stale tracked files (1.3M lines)
Survey of the working tree found 83 tracked files
that no longer exist on disk (tracked-but-missing).
Most were inside source/ dirs (extraction differences
between git revisions) and are out of scope for this
commit. The 28 non-source tracked-but-missing files
fell into these categories:

  1. Broken self-referential symlinks in driver and
     tui recipes (5 files):
     - local/recipes/drivers/ehcid/ehcid ->
       ../../local/recipes/drivers/ehcid (loops)
     - local/recipes/drivers/ohcid/ohcid -> ...
     - local/recipes/drivers/uhcid/uhcid -> ...
     - local/recipes/drivers/usb-core/usb-core -> ...
     - local/recipes/tui/mc/mc -> ...
     These were created by the now-removed
     apply-patches.sh symlink-overlay system. Per
     AGENTS.md § 'NO OVERLAY-STYLE PATCHES', the
     overlay pattern is retired. Recipes now use the
     `path = 'source'` form in [source] blocks
     pointing at the in-tree Red Bear fork. The
     self-referential symlinks broke because the
     overlay indirection was removed.

  2. Broken absolute-path symlinks in gpu/driver
     recipes (2 files):
     - local/recipes/gpu/drivers/linux-kpi/source
       -> /mnt/data/homes/kellito/Builds/rbos/...
     - local/recipes/gpu/drivers/redox-driver-sys/source
       -> /mnt/data/homes/kellito/Builds/rbos/...
     These were committed on a different filesystem
     layout. The actual source trees are in
     `local/sources/{linux-kpi,redox-driver-sys}/`
     and are loaded via `path = 'source'` config.

  3. Tracked empty `~` (emacs backup) files in
     autotools-generated source dirs (13 files).
     Autotools regen produces `configure~`,
     `config.h.in~`, etc. whenever a developer runs
     `autoreconf` in the source dir. These are
     ephemeral working files, not upstream source.
     Re-running the cookbook's autoreconf will
     regenerate them on the next fetch.

  4. Tracked-but-missing upstream WIP recipes
     (12 recipes, 596 files):
     - recipes/wip/dev/build-system/{meson,ninja-build}
     - recipes/wip/dev/other/{bison,flex}
     - recipes/wip/libs/gnome/libepoxy
     - recipes/wip/libs/other/m4
     - recipes/wip/libs/qt/qt6/{qt6-sensors,
       qt6-sensors-local}
     - recipes/wip/wayland/qt6-wayland-smoke
     - recipes/wip/x11/{libxau,libxcb,x11proto}
     These were tracked in the upstream Redox WIP
     area but the underlying dirs/files no longer
     exist on disk (likely removed when upstream
     WIP was reorganized). They were never
     referenced by any `config/redbear-*.toml`
     and have no surviving tree dependencies.

  5. Top-level `gparted-git/` orphan (4 files):
     A staging dir from a previous attempt to add a
     gparted recipe (RBPKGBUILD + import/). The recipe
     was never finished and the postmortem H-4 says
     it was 'removed' but the dir persisted.

  6. `recipes/gpu/drivers` tracked as a file blob
     but working tree has it as a directory.
     Tree conflict from a prior overlay layout.

.gitignore additions:
  - `*\~` (emacs backup)
  - `.*.swp`, `.*.swo` (vim swap)
  These patterns prevent future accidental commits
  of ephemeral editor / autotools-regen files.

Net effect: 617 files removed, 1,304,942 lines
deleted from tracked history, 0 lines added. The
working tree is now 0 tracked-but-missing files
outside of source/ dirs (source/ extraction
differences are out of scope for this commit).
2026-06-13 00:26:21 +03:00
..

            GNU libasprintf - automatic formatted output to strings

This package makes the C formatted output routines (fprintf et al.) usable
in C++ programs.


Sample use
----------

  char *pathname = autosprintf ("%s/%s", directory, filename);
  cerr << autosprintf ("syntax error in %s:%d: %s", filename, line, errstring);


Benefits
--------

The benefits of autosprintf over the usual "piecewise meal" idiom

  cerr << "syntax error in " << filename << ":" << line << ": " << errstring;

are:

  - Reuses of the standard POSIX printf facility. Easy migration from C to C++.

  - English sentences are kept together.

  - Internationalization requires format strings, because
    1. Internationalization requires the ability for the translator to change
       the order of parts of a sentence. The POSIX printf formatted output
       functions (and thus also autosprintf) support this through the %m$ and
       *m$ syntax.
    2. Translators are used to translate one string per sentence, not
       multiple strings per sentence, and not C++ code statements.

  - Reduces the risk of programming errors due to forgotten state in the
    output stream (e.g.  'cout << hex;'  not followed by  'cout << dec;').

The benefits of autosprintf over C sprintf are:

  - Autosprintf avoids buffer overruns and truncated results.
    The C sprintf() function often leads to buffer overruns. On the other
    hand, the C snprintf() function requires extra coding for an a priori
    estimate of the result's size and truncates the result if the estimate
    was too low.

  - Autosprintf avoids memory leaks.
    Temporarily allocated memory is cleaned up automatically.


Installation
------------

See INSTALL. Usually "./configure; make; make install" should work.

The installed files are:
  - An include file "autosprintf.h" which defines the class 'autosprintf',
    in the namespace 'gnu'.
  - A library libasprintf containing this class.


Use
---

To use the class autosprintf, use

  #include "autosprintf.h"
  using gnu::autosprintf;

and link with the linker option

  -lasprintf


Misc notes
----------

An instance of class 'autosprintf' contains the formatted output result;
this string is freed when the instance's destructor is run.

The class name 'autosprintf' is meant to remind the C function sprintf(),
the GNU C library function asprintf(), and the C++ autoptr programming idiom.


Distribution
------------

    https://haible.de/bruno/gnu/libasprintf-1.0.tar.gz

Homepage
--------

    https://haible.de/bruno/packages-libasprintf.html

Bug reports
-----------

Report bugs
  - in the bug tracker at <https://savannah.gnu.org/projects/gettext>
  - or by email to <bug-gettext@gnu.org>.


Bruno Haible <brunoe@clisp.org>