printFdBuffer.c 591 B

123456789101112131415161718192021
  1. #include <unistd.h>
  2. #include <sys/param.h>
  3. #include <string.h>
  4. #include "ft_printf_internal.h"
  5. int appendToFdBuffer(struct printf_data* data, const char* buf, size_t len)
  6. {
  7. size_t sizeToWrite = MIN(data->bufferMaxSize - data->bufferPos, len);
  8. memcpy(&data->fdBuffer[data->bufferPos], buf, sizeToWrite);
  9. data->bufferPos += sizeToWrite;
  10. if (data->bufferPos == data->bufferMaxSize)
  11. {
  12. int result = write(data->fd, data->fdBuffer, data->bufferMaxSize);
  13. if (result < 0)
  14. return result;
  15. data->bufferPos = 0;
  16. }
  17. return sizeToWrite;
  18. }