Feature #225 ยป 0026-astring.c-Replace-NULLs-with-nullptrs.patch
| utility/astring.c | ||
|---|---|---|
|
/* utility */
|
||
|
#include "fcintl.h"
|
||
|
#include "fcthread.h"
|
||
|
#include "log.h" /* fc_assert */
|
||
|
#include "log.h" /* fc_assert() */
|
||
|
#include "mem.h"
|
||
|
#include "support.h" /* fc_vsnprintf, fc_strlcat */
|
||
|
#include "support.h" /* fc_vsnprintf(), fc_strlcat() */
|
||
|
#include "astring.h"
|
||
| ... | ... | |
|
void astr_free(struct astring *astr)
|
||
|
{
|
||
|
if (astr->n_alloc > 0) {
|
||
|
fc_assert_ret(NULL != astr->str);
|
||
|
fc_assert_ret(astr->str != nullptr);
|
||
|
free(astr->str);
|
||
|
}
|
||
| ... | ... | |
|
void astr_clear(struct astring *astr)
|
||
|
{
|
||
|
if (astr->n == 0) {
|
||
|
/* astr_reserve is really astr_size, so we don't want to reduce the
|
||
|
* size. */
|
||
|
/* astr_reserve() is really astr_size(), so we don't want to reduce
|
||
|
* the size. */
|
||
|
astr_reserve(astr, 1);
|
||
|
}
|
||
|
astr->str[0] = '\0';
|
||
| ... | ... | |
|
}
|
||
|
/************************************************************************//**
|
||
|
Replace the spaces by line breaks when the line lenght is over the desired
|
||
|
one.
|
||
|
Replace the spaces by line breaks when the line lenght is over
|
||
|
the desired one.
|
||
|
****************************************************************************/
|
||
|
void astr_break_lines(struct astring *astr, size_t desired_len)
|
||
|
{
|
||
| ... | ... | |
|
const char *astr_build_or_list(struct astring *astr,
|
||
|
const char *const *items, size_t number)
|
||
|
{
|
||
|
fc_assert_ret_val(NULL != astr, NULL);
|
||
|
fc_assert_ret_val(0 < number, NULL);
|
||
|
fc_assert_ret_val(NULL != items, NULL);
|
||
|
fc_assert_ret_val(astr != nullptr, nullptr);
|
||
|
fc_assert_ret_val(0 < number, nullptr);
|
||
|
fc_assert_ret_val(items != nullptr, nullptr);
|
||
|
if (1 == number) {
|
||
|
/* TRANS: "or"-separated string list with one single item. */
|
||
| ... | ... | |
|
} else {
|
||
|
/* Estimate the space we need. */
|
||
|
astr_reserve(astr, number * 64);
|
||
|
/* TRANS: start of an "or"-separated string list with more than two
|
||
|
* items. */
|
||
|
/* TRANS: start of an "or"-separated string list with more than
|
||
|
* two items. */
|
||
|
astr_set(astr, Q_("?or-list:%s"), *items++);
|
||
|
while (1 < --number) {
|
||
|
/* TRANS: next elements of an "or"-separated string list with more
|
||
|
* than two items. */
|
||
|
astr_add(astr, Q_("?or-list:, %s"), *items++);
|
||
|
}
|
||
|
/* TRANS: end of an "or"-separated string list with more than two
|
||
|
* items. */
|
||
|
/* TRANS: end of an "or"-separated string list with more than
|
||
|
* two items. */
|
||
|
astr_add(astr, Q_("?or-list:, or %s"), *items);
|
||
|
}
|
||
| ... | ... | |
|
const char *astr_build_and_list(struct astring *astr,
|
||
|
const char *const *items, size_t number)
|
||
|
{
|
||
|
fc_assert_ret_val(NULL != astr, NULL);
|
||
|
fc_assert_ret_val(0 < number, NULL);
|
||
|
fc_assert_ret_val(NULL != items, NULL);
|
||
|
fc_assert_ret_val(astr != nullptr, nullptr);
|
||
|
fc_assert_ret_val(0 < number, nullptr);
|
||
|
fc_assert_ret_val(items != nullptr, nullptr);
|
||
|
if (1 == number) {
|
||
|
/* TRANS: "and"-separated string list with one single item. */
|
||
| ... | ... | |
|
} else {
|
||
|
/* Estimate the space we need. */
|
||
|
astr_reserve(astr, number * 64);
|
||
|
/* TRANS: start of an "and"-separated string list with more than two
|
||
|
* items. */
|
||
|
/* TRANS: start of an "and"-separated string list with more than
|
||
|
* two items. */
|
||
|
astr_set(astr, Q_("?and-list:%s"), *items++);
|
||
|
while (1 < --number) {
|
||
|
/* TRANS: next elements of an "and"-separated string list with more
|
||
|
* than two items. */
|
||
|
astr_add(astr, Q_("?and-list:, %s"), *items++);
|
||
|
}
|
||
|
/* TRANS: end of an "and"-separated string list with more than two
|
||
|
* items. */
|
||
|
/* TRANS: end of an "and"-separated string list with more than
|
||
|
* two items. */
|
||
|
astr_add(astr, Q_("?and-list:, and %s"), *items);
|
||
|
}
|
||