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