Advertisement
trannus_aran

smart_append

Jan 20th, 2025
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.80 KB | None | 0 0
  1. int smart_append(TextBuffer* dest, const char* src) {
  2.   int src_len, src_size, remaining_space;
  3.   int current_buf_size, current_buf_len;
  4.   int const MAX_BUF_SIZE = 64;
  5.   int const MAX_BUF_INDEX = MAX_BUF_SIZE - 1;
  6.   if (dest == NULL || src == NULL)
  7.     return 1;
  8.   src_len = strlen(src);
  9.   src_size = src_len + 1;
  10.   current_buf_len = strlen(dest->buffer);
  11.   current_buf_size = current_buf_len + 1;
  12.   /* Sub buffer len from max_size, acct'ing for '\0' */
  13.   remaining_space = MAX_BUF_SIZE - current_buf_size;
  14.   if (src_size > remaining_space) {
  15.     /* Cp as much as possible, update & return 1 */
  16.     strncat(dest->buffer, src, (remaining_space - 1));
  17.     dest->length = MAX_BUF_SIZE;
  18.     return 1;  
  19.   } else {
  20.     strncat(dest->buffer, src, src_len);
  21.     dest->length += src_len;
  22.     return 0;
  23.   }
  24. }
  25.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement