@@ -337,6 +337,18 @@ static inline ssize_t zlog_stream_unbuffered_write(struct zlog_stream *stream, c
337
337
}
338
338
/* }}} */
339
339
340
+ static inline ssize_t zlog_stream_buf_copy (struct zlog_stream * stream , const char * str , size_t str_len ) /* {{{ */
341
+ {
342
+ if (stream -> buf_size - stream -> len <= str_len && !zlog_stream_buf_alloc_ex (stream , str_len )) {
343
+ return -1 ;
344
+ }
345
+
346
+ memcpy (stream -> buf + stream -> len , str , str_len );
347
+ stream -> len += str_len ;
348
+
349
+ return str_len ;
350
+ }
351
+
340
352
/* TODO: handle errors from this function in all calls (check for -1) */
341
353
static ssize_t zlog_stream_buf_append (struct zlog_stream * stream , const char * str , size_t str_len ) /* {{{ */
342
354
{
@@ -350,19 +362,18 @@ static ssize_t zlog_stream_buf_append(struct zlog_stream *stream, const char *st
350
362
available_len = str_len ;
351
363
}
352
364
353
- if (stream -> buf_size - stream -> len <= available_len && ! zlog_stream_buf_alloc_ex (stream , available_len )) {
365
+ if (zlog_stream_buf_copy (stream , str , available_len ) < 0 ) {
354
366
return -1 ;
355
367
}
356
368
357
- memcpy (stream -> buf + stream -> len , str , available_len );
358
- stream -> len += available_len ;
359
-
360
369
if (!finished ) {
361
370
return available_len ;
362
371
}
363
372
364
373
if (stream -> wrap ) {
365
- /* TODO: append wrap_suffix before the write */
374
+ if (stream -> wrap_suffix != NULL ) {
375
+ zlog_stream_buf_copy (stream , stream -> wrap_suffix , stream -> wrap_suffix_len );
376
+ }
366
377
zlog_stream_direct_write (stream , stream -> buf , stream -> len );
367
378
stream -> len = 0 ;
368
379
zlog_stream_prefix_ex (stream , stream -> function , stream -> line );
@@ -550,7 +561,9 @@ ssize_t zlog_stream_str(struct zlog_stream *stream, const char *str, size_t str_
550
561
zlog_bool zlog_stream_finish (struct zlog_stream * stream ) /* {{{ */
551
562
{
552
563
if (stream -> use_buffer ) {
553
- /* TODO: append stream->wrap_final_suffix */
564
+ if (stream -> wrap_final_suffix != NULL ) {
565
+ zlog_stream_buf_copy (stream , stream -> wrap_final_suffix , stream -> wrap_final_suffix_len );
566
+ }
554
567
if (external_logger != NULL ) {
555
568
external_logger (stream -> flags & ZLOG_LEVEL_MASK ,
556
569
stream -> buf + stream -> prefix_len , stream -> len - stream -> prefix_len );
0 commit comments