1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-02 22:46:30 +02:00

common: Let format_text return an error.

* common/stringhelp.c (format_text): Return NULL on error.
* common/t-stringhelp.c (test_format_text): Adjust for change.
* g10/gpgcompose.c (show_help): Abort on out of core.
* g10/tofu.c (ask_about_binding): Abort on format_text error.
(show_statistics): Ditto.
(show_warning): Ditto.
--

For better re-usability function in common/ shot  better not use
xmalloc functions.

Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
Werner Koch 2017-05-15 09:58:27 +02:00
parent bc01d62dc5
commit 00b7767bc6
No known key found for this signature in database
GPG key ID: E3FDFF218E45B72B
4 changed files with 39 additions and 18 deletions

View file

@ -1443,12 +1443,13 @@ compare_version_strings (const char *my_version, const char *req_version)
/* Format a string so that it fits within about TARGET_COLS columns.
TEXT_IN is copied to a new buffer, which is returned.
Normally, target_cols will be 72 and max_cols is 80. */
* TEXT_IN is copied to a new buffer, which is returned. Normally,
* target_cols will be 72 and max_cols is 80. On error NULL is
* returned and ERRNO is set. */
char *
format_text (const char *text_in, int target_cols, int max_cols)
{
const int do_debug = 0;
/* const int do_debug = 0; */
/* The character under consideration. */
char *p;
@ -1460,7 +1461,9 @@ format_text (const char *text_in, int target_cols, int max_cols)
int copied_last_space = 0;
char *text;
text = xstrdup (text_in);
text = xtrystrdup (text_in);
if (!text)
return NULL;
p = line = text;
while (1)
@ -1514,9 +1517,9 @@ format_text (const char *text_in, int target_cols, int max_cols)
cols_with_left_space = last_space_cols;
cols_with_right_space = cols;
if (do_debug)
log_debug ("Breaking: '%.*s'\n",
(int) ((uintptr_t) p - (uintptr_t) line), line);
/* if (do_debug) */
/* log_debug ("Breaking: '%.*s'\n", */
/* (int) ((uintptr_t) p - (uintptr_t) line), line); */
/* The number of columns away from TARGET_COLS. We prefer
to underflow than to overflow. */
@ -1528,21 +1531,22 @@ format_text (const char *text_in, int target_cols, int max_cols)
max_cols. */
right_penalty += 4 * (cols_with_right_space - max_cols);
if (do_debug)
log_debug ("Left space => %d cols (penalty: %d); right space => %d cols (penalty: %d)\n",
cols_with_left_space, left_penalty,
cols_with_right_space, right_penalty);
/* if (do_debug) */
/* log_debug ("Left space => %d cols (penalty: %d); " */
/* "right space => %d cols (penalty: %d)\n", */
/* cols_with_left_space, left_penalty, */
/* cols_with_right_space, right_penalty); */
if (last_space_cols && left_penalty <= right_penalty)
/* Prefer the left space. */
{
if (do_debug)
log_debug ("Breaking at left space.\n");
/* Prefer the left space. */
/* if (do_debug) */
/* log_debug ("Breaking at left space.\n"); */
p = last_space;
}
else
{
if (do_debug)
log_debug ("Breaking at right space.\n");
/* if (do_debug) */
/* log_debug ("Breaking at right space.\n"); */
}
if (! *p)