X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fnoerr%2Fnoerr.c;h=972f3074541b650c4cb471eccd362fa809262b3c;hb=bcca516976312896eca1b0def6d3557d192baa89;hp=d6df81f7a0677dad1591473a79ed6432cead713c;hpb=650c775ff00cccd03fc84e7789a03c51d9839004;p=ccan diff --git a/ccan/noerr/noerr.c b/ccan/noerr/noerr.c index d6df81f7..972f3074 100644 --- a/ccan/noerr/noerr.c +++ b/ccan/noerr/noerr.c @@ -1,6 +1,8 @@ +/* CC0 (Public domain) - see LICENSE file for details */ #include "noerr.h" #include #include +#include int close_noerr(int fd) { @@ -15,6 +17,19 @@ int close_noerr(int fd) return ret; } +int fclose_noerr(FILE *fp) +{ + int saved_errno = errno, ret; + + if (fclose(fp) != 0) + ret = errno; + else + ret = 0; + + errno = saved_errno; + return ret; +} + int unlink_noerr(const char *pathname) { int saved_errno = errno, ret; @@ -27,3 +42,10 @@ int unlink_noerr(const char *pathname) errno = saved_errno; return ret; } + +void free_noerr(void *p) +{ + int saved_errno = errno; + free(p); + errno = saved_errno; +}