zlog_buf_t *zlog_buf_new(size_t buf_size_min, size_t buf_size_max, const char *truncate_str) { zlog_buf_t *a_buf; if (buf_size_min == 0) { zc_error("buf_size_min == 0, not allowed"); return NULL; } if (buf_size_max != 0 && buf_size_max < buf_size_min) { zc_error("buf_size_max[%lu] < buf_size_min[%lu] && buf_size_max != 0", (unsigned long)buf_size_max, (unsigned long)buf_size_min); return NULL; } a_buf = calloc(1, sizeof(*a_buf)); if (!a_buf) { zc_error("calloc fail, errno[%d]", errno); return NULL; } if (truncate_str) { if (strlen(truncate_str) > sizeof(a_buf->truncate_str) - 1) { zc_error("truncate_str[%s] overflow", truncate_str); goto err; } else { strcpy(a_buf->truncate_str, truncate_str); } a_buf->truncate_str_len = strlen(truncate_str); } a_buf->size_min = buf_size_min; a_buf->size_max = buf_size_max; a_buf->size_real = a_buf->size_min; a_buf->start = calloc(1, a_buf->size_real); if (!a_buf->start) { zc_error("calloc fail, errno[%d]", errno); goto err; } a_buf->tail = a_buf->start; a_buf->end_plus_1 = a_buf->start + a_buf->size_real; a_buf->end = a_buf->end_plus_1 - 1; //zlog_buf_profile(a_buf, ZC_DEBUG); return a_buf; err: zlog_buf_del(a_buf); return NULL; }
int main(int argc, char** argv) { zlog_buf_t *a_buf; char *aa; a_buf = zlog_buf_new(10, 20, "ABC"); if (!a_buf) { zc_error("zlog_buf_new fail"); return -1; } #if 0 zlog_buf_printf(a_buf, "1234567890"); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_restart(a_buf); zlog_buf_printf(a_buf, "123456789012345"); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_restart(a_buf); zlog_buf_printf(a_buf, "1234567890123456789"); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_restart(a_buf); zlog_buf_printf(a_buf, "12345678901234567890"); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_restart(a_buf); zlog_buf_printf(a_buf, "1234567890123456789012345"); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "123456789"; zlog_buf_append(a_buf, aa, strlen(aa)); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "0"; zlog_buf_append(a_buf, aa, strlen(aa)); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "12345"; zlog_buf_append(a_buf, aa, strlen(aa)); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "6789"; zlog_buf_append(a_buf, aa, strlen(aa)); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "0"; zlog_buf_append(a_buf, aa, strlen(aa)); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "22345"; zlog_buf_append(a_buf, aa, strlen(aa)); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "abc"; int i,j; for (i = 0; i <= 5; i++) { for (j = 0; j <= 5; j++) { zlog_buf_restart(a_buf); zc_error("left[1],max[%d],min[%d]", i, j); zlog_buf_adjust_append(a_buf, aa, strlen(aa), 1, i, j); zc_error("a_buf->start[%s]", a_buf->start); zc_error("-----"); zlog_buf_restart(a_buf); zc_error("left[0],max[%d],min[%d]", i, j); zlog_buf_adjust_append(a_buf, aa, strlen(aa), 0, i, j); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); } } #endif aa = "1234567890"; zc_error("left[0],max[%d],min[%d]", 15, 5); zlog_buf_adjust_append(a_buf, aa, strlen(aa), 0, 15, 5); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); aa = "1234567890"; zlog_buf_restart(a_buf); zc_error("left[0],max[%d],min[%d]", 25, 5); zlog_buf_adjust_append(a_buf, aa, strlen(aa), 1, 25, 5); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_restart(a_buf); zc_error("left[0],max[%d],min[%d]", 19, 5); zlog_buf_adjust_append(a_buf, aa, strlen(aa), 0, 19, 5); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_restart(a_buf); zc_error("left[0],max[%d],min[%d]", 20, 5); zlog_buf_adjust_append(a_buf, aa, strlen(aa), 0, 20, 5); zc_error("a_buf->start[%s]", a_buf->start); zc_error("------------"); zlog_buf_del(a_buf); return 0; }