noerr.c 591 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /* CC0 (Public domain) - see LICENSE file for details */
  2. #include "noerr.h"
  3. #include <unistd.h>
  4. #include <errno.h>
  5. int close_noerr(int fd)
  6. {
  7. int saved_errno = errno, ret;
  8. if (close(fd) != 0)
  9. ret = errno;
  10. else
  11. ret = 0;
  12. errno = saved_errno;
  13. return ret;
  14. }
  15. int fclose_noerr(FILE *fp)
  16. {
  17. int saved_errno = errno, ret;
  18. if (fclose(fp) != 0)
  19. ret = errno;
  20. else
  21. ret = 0;
  22. errno = saved_errno;
  23. return ret;
  24. }
  25. int unlink_noerr(const char *pathname)
  26. {
  27. int saved_errno = errno, ret;
  28. if (unlink(pathname) != 0)
  29. ret = errno;
  30. else
  31. ret = 0;
  32. errno = saved_errno;
  33. return ret;
  34. }