{
const char *ch;
bool printable = true;
- BT_ASSERT(input);
+ BT_ASSERT_DBG(input);
for (ch = input; *ch != '\0'; ch++) {
if (!isprint(*ch) && *ch != '\n' && *ch != '\r' &&
if (page_size < 0) {
BT_LOGF("Cannot get system's page size: ret=%d",
page_size);
- abort();
+ bt_common_abort();
}
return page_size;
strncpy(_tmp_fmt, *out_fmt_ch, _tmp_fmt_size); \
_tmp_fmt[_tmp_fmt_size] = '\0'; \
_count = snprintf(*buf_ch, _size, _tmp_fmt, __VA_ARGS__); \
- BT_ASSERT(_count >= 0); \
+ BT_ASSERT_DBG(_count >= 0); \
*buf_ch += MIN(_count, _size); \
} while (0)
switch (length_mod) {
case LENGTH_MOD_NONE:
- BUF_STD_APPEND_SINGLE_ARG(int);
- break;
case LENGTH_MOD_LOW_L:
- BUF_STD_APPEND_SINGLE_ARG(wint_t);
+ BUF_STD_APPEND_SINGLE_ARG(int);
break;
default:
- abort();
+ bt_common_abort();
}
break;
}
BUF_STD_APPEND_SINGLE_ARG(wchar_t *);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'd':
BUF_STD_APPEND_SINGLE_ARG(size_t);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'o':
BUF_STD_APPEND_SINGLE_ARG(size_t);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'f':
BUF_STD_APPEND_SINGLE_ARG(long double);
break;
default:
- abort();
+ bt_common_abort();
}
break;
case 'p':
if (length_mod == LENGTH_MOD_NONE) {
BUF_STD_APPEND_SINGLE_ARG(void *);
} else {
- abort();
+ bt_common_abort();
}
break;
default:
- abort();
+ bt_common_abort();
}
update_rw_fmt:
const char *fmt_ch = fmt;
char *buf_ch = buf;
- BT_ASSERT(buf);
- BT_ASSERT(fmt);
+ BT_ASSERT_DBG(buf);
+ BT_ASSERT_DBG(fmt);
while (*fmt_ch != '\0') {
switch (*fmt_ch) {
case '%':
- BT_ASSERT(fmt_ch[1] != '\0');
+ BT_ASSERT_DBG(fmt_ch[1] != '\0');
if (fmt_ch[1] == intro) {
handle_specifier(priv_data, &buf_ch,
uint64_t sep_count;
uint64_t new_len;
- BT_ASSERT(digits_per_group > 0);
- BT_ASSERT(sep != '\0');
+ BT_ASSERT_DBG(digits_per_group > 0);
+ BT_ASSERT_DBG(sep != '\0');
/* Compute new length of `str` */
orig_len = strlen(str);
- BT_ASSERT(orig_len > 0);
+ BT_ASSERT_DBG(orig_len > 0);
sep_count = (orig_len - 1) / digits_per_group;
new_len = strlen(str) + sep_count;
gchar * const *line;
unsigned int i;
- BT_ASSERT(str);
- BT_ASSERT(indent < total_length);
- BT_ASSERT(tmp_line);
- BT_ASSERT(folded);
+ BT_ASSERT_DBG(str);
+ BT_ASSERT_DBG(indent < total_length);
+ BT_ASSERT_DBG(tmp_line);
+ BT_ASSERT_DBG(folded);
if (strlen(str) == 0) {
/* Empty input string: empty output string */
/* Split lines */
lines = g_strsplit(str, "\n", 0);
- BT_ASSERT(lines);
+ BT_ASSERT_DBG(lines);
/* For each source line */
for (line = lines; *line; line++) {
/* Split words */
line_words = g_strsplit(*line, " ", 0);
- BT_ASSERT(line_words);
+ BT_ASSERT_DBG(line_words);
/*
* Indent for first line (we know there's at least one
g_strfreev(lines);
}
- BT_ASSERT(!line_words);
+ BT_ASSERT_DBG(!line_words);
if (tmp_line) {
g_string_free(tmp_line, TRUE);
}
return print_len;
}
+
+BT_HIDDEN
+int bt_common_append_file_content_to_g_string(GString *str, FILE *fp)
+{
+ const size_t chunk_size = 4096;
+ int ret = 0;
+ char *buf;
+ size_t read_len;
+ gsize orig_len = str->len;
+
+ BT_ASSERT(str);
+ BT_ASSERT(fp);
+ buf = g_malloc(chunk_size);
+ if (!buf) {
+ ret = -1;
+ goto end;
+ }
+
+ while (true) {
+ if (ferror(fp)) {
+ ret = -1;
+ goto end;
+ }
+
+ if (feof(fp)) {
+ break;
+ }
+
+ read_len = fread(buf, 1, chunk_size, fp);
+ g_string_append_len(str, buf, read_len);
+ }
+
+end:
+ if (ret) {
+ /* Remove what was appended */
+ g_string_truncate(str, orig_len);
+ }
+
+ g_free(buf);
+ return ret;
+}
+
+BT_HIDDEN
+void bt_common_abort(void)
+{
+ abort();
+}