grab_file.c 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #include "tools.h"
  2. #include "talloc/talloc.h"
  3. #include "string/string.h"
  4. #include <sys/types.h>
  5. #include <sys/stat.h>
  6. #include <fcntl.h>
  7. #include <unistd.h>
  8. #include <errno.h>
  9. /*static int close_no_errno(int fd)
  10. {
  11. int ret = 0, serrno = errno;
  12. if (close(fd) < 0)
  13. ret = errno;
  14. errno = serrno;
  15. return ret;
  16. }*/
  17. /*void *grab_fd(const void *ctx, int fd)
  18. {
  19. int ret;
  20. unsigned int max = 16384, size = 0;
  21. char *buffer;
  22. buffer = talloc_array(ctx, char, max+1);
  23. while ((ret = read(fd, buffer + size, max - size)) > 0) {
  24. size += ret;
  25. if (size == max)
  26. buffer = talloc_realloc(ctx, buffer, char, max*=2 + 1);
  27. }
  28. if (ret < 0) {
  29. talloc_free(buffer);
  30. buffer = NULL;
  31. } else
  32. buffer[size] = '\0';
  33. return buffer;
  34. }*/
  35. /* This version adds one byte (for nul term) */
  36. /*void *grab_file(const void *ctx, const char *filename)
  37. {
  38. int fd;
  39. char *buffer;
  40. if (streq(filename, "-"))
  41. fd = dup(STDIN_FILENO);
  42. else
  43. fd = open(filename, O_RDONLY, 0);
  44. if (fd < 0)
  45. return NULL;
  46. buffer = grab_fd(ctx, fd);
  47. close_no_errno(fd);
  48. return buffer;
  49. }*/