+2025-02-05 Bruno Haible <bruno@clisp.org>
+
+ xstring-buffer-reversed: New module.
+ * lib/xstring-buffer-reversed.c: New file, based on
+ lib/xstring-buffer.c.
+ * lib/xstring-buffer-reversed-printf.c: New file, based on
+ lib/xstring-buffer-printf.c.
+ * modules/xstring-buffer-reversed: New file.
+
2025-02-05 Bruno Haible <bruno@clisp.org>
string-buffer-reversed: Add tests.
--- /dev/null
+/* Error-checking functions on a string buffer that accumulates from the end.
+ Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2025. */
+
+#include <config.h>
+
+/* Specification. */
+#include "string-buffer-reversed.h"
+
+#include <errno.h>
+
+#include "xalloc.h"
+
+int
+sbr_xprependvf (struct string_buffer_reversed *buffer,
+ const char *formatstring, va_list list)
+{
+ if (sbr_prependvf (buffer, formatstring, list) < 0)
+ {
+ if (errno == ENOMEM)
+ xalloc_die ();
+ return -1;
+ }
+ return 0;
+}
+
+int
+sbr_xprependf (struct string_buffer_reversed *buffer,
+ const char *formatstring, ...)
+{
+ va_list args;
+ int ret;
+
+ va_start (args, formatstring);
+ ret = sbr_xprependvf (buffer, formatstring, args);
+ va_end (args);
+ return ret;
+}
--- /dev/null
+/* Error-checking functions on a string buffer that accumulates from the end.
+ Copyright (C) 2024-2025 Free Software Foundation, Inc.
+
+ This file is free software: you can redistribute it and/or modify
+ it under the terms of the GNU Lesser General Public License as
+ published by the Free Software Foundation, either version 3 of the
+ License, or (at your option) any later version.
+
+ This file 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 Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this program. If not, see <https://www.gnu.org/licenses/>. */
+
+/* Written by Bruno Haible <bruno@clisp.org>, 2025. */
+
+#include <config.h>
+
+/* Specification. */
+#include "string-buffer-reversed.h"
+
+#include "xalloc.h"
+
+void
+sbr_xprepend1 (struct string_buffer_reversed *buffer, char c)
+{
+ if (sbr_prepend1 (buffer, c) < 0)
+ xalloc_die ();
+}
+
+void
+sbr_xprepend_desc (struct string_buffer_reversed *buffer, string_desc_t s)
+{
+ if (sbr_prepend_desc (buffer, s) < 0)
+ xalloc_die ();
+}
+
+void
+sbr_xprepend_c (struct string_buffer_reversed *buffer, const char *str)
+{
+ if (sbr_prepend_c (buffer, str) < 0)
+ xalloc_die ();
+}
+
+string_desc_t
+sbr_xdupfree (struct string_buffer_reversed *buffer)
+{
+ if (buffer->error)
+ {
+ sbr_free (buffer);
+ return sd_new_addr (0, NULL);
+ }
+ string_desc_t contents = sbr_dupfree (buffer);
+ if (sd_data (contents) == NULL)
+ xalloc_die ();
+ return contents;
+}
+
+char *
+sbr_xdupfree_c (struct string_buffer_reversed *buffer)
+{
+ if (buffer->error)
+ {
+ sbr_free (buffer);
+ return NULL;
+ }
+ char *contents = sbr_dupfree_c (buffer);
+ if (contents == NULL)
+ xalloc_die ();
+ return contents;
+}
--- /dev/null
+Description:
+Error-checking functions on a string buffer.
+
+Files:
+lib/xstring-buffer-reversed.c
+lib/xstring-buffer-reversed-printf.c
+
+Depends-on:
+string-buffer-reversed
+xalloc-die
+
+configure.ac:
+gl_MODULE_INDICATOR([xstring-buffer-reversed])
+
+Makefile.am:
+lib_SOURCES += xstring-buffer-reversed.c xstring-buffer-reversed-printf.c
+
+Include:
+"string-buffer-reversed.h"
+
+License:
+GPL
+
+Maintainer:
+all