summaryrefslogtreecommitdiffstats
path: root/core/membuffer.h
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-02-21 22:35:50 +0100
committerGravatar Robert C. Helling <helling@atdotde.de>2018-03-05 16:23:55 +0100
commitbec3e806831290f11c8b46a01dc2295ffc307ca4 (patch)
treeb7f539162aa7f30b24dbe3fdd8b75838a70e97cc /core/membuffer.h
parent9a8a0afa29776c195c6a6acbb77b5d70cecea0c9 (diff)
downloadsubsurface-bec3e806831290f11c8b46a01dc2295ffc307ca4.tar.gz
Localization: Make Qt's locale-aware formatting accessible from C
This commit introduces functions: - QString asprintf_loc(const char *cformat, ...); - int snprintf_loc(char *dst, size_t size, const char *cformat, ...); - put_format_loc(struct membuffer *, const char *fmt, ...); and their va_arg equivalents, which use Qt's QString::arg() formatting options to render the strings. The snprintf_loc() function takes care not to truncate multi-byte UTF-8 encodings. Thus, on overflow, the resulting string might be shorter than size-1. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/membuffer.h')
-rw-r--r--core/membuffer.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/core/membuffer.h b/core/membuffer.h
index bd0a46d3a..00213f615 100644
--- a/core/membuffer.h
+++ b/core/membuffer.h
@@ -22,6 +22,7 @@ struct membuffer {
extern char *detach_buffer(struct membuffer *b);
extern void free_buffer(struct membuffer *);
+extern void make_room(struct membuffer *b, unsigned int size);
extern void flush_buffer(struct membuffer *, FILE *);
extern void put_bytes(struct membuffer *, const char *, int);
extern void put_string(struct membuffer *, const char *);
@@ -29,7 +30,9 @@ extern void put_quoted(struct membuffer *, const char *, int, int);
extern void strip_mb(struct membuffer *);
extern const char *mb_cstring(struct membuffer *);
extern __printf(2, 0) void put_vformat(struct membuffer *, const char *, va_list);
+extern __printf(2, 0) void put_vformat_loc(struct membuffer *, const char *, va_list);
extern __printf(2, 3) void put_format(struct membuffer *, const char *fmt, ...);
+extern __printf(2, 3) void put_format_loc(struct membuffer *, const char *fmt, ...);
extern __printf(2, 0) char *add_to_string_va(const char *old, const char *fmt, va_list args);
extern __printf(2, 3) char *add_to_string(const char *old, const char *fmt, ...);