ft_aprintf.c 745 B

123456789101112131415161718192021222324252627282930313233343536
  1. #include "ft_printf_internal.h"
  2. int ft_aprintf(char** output, char* format, ...)
  3. {
  4. va_list args;
  5. int result;
  6. va_start(args, format);
  7. result = ft_vaprintf(output, format, args);
  8. va_end(args);
  9. return result;
  10. }
  11. int ft_vaprintf(char** output, char* format, va_list args)
  12. {
  13. struct printf_data params;
  14. params.fd = -1;
  15. params.written = 0;
  16. params.inputBuffer = format;
  17. params.outputBuffer = NULL;
  18. params.bufferMaxSize = 0;
  19. params.realloc = 1;
  20. params.fdBuffer = NULL;
  21. params.bufferPos = 0;
  22. while (*params.inputBuffer)
  23. {
  24. if (doPrintf(&params, args) < 0)
  25. return -1;
  26. }
  27. flushBuffer(&params);
  28. *output = params.outputBuffer;
  29. return params.written;
  30. }