diff options
author | Laurent Bercot <ska-skaware@skarnet.org> | 2017-07-16 11:19:51 +0000 |
---|---|---|
committer | Laurent Bercot <ska-skaware@skarnet.org> | 2017-07-16 11:19:51 +0000 |
commit | 16013c560e189bd0c4fb58e038c0f449542dba7a (patch) | |
tree | b9d2777f2e5a8108b684839f04310ffd0de82179 /src/libstddjb/filecopy_unsafe.c | |
parent | 538fd727337959b1d7b8449a578a31fd9a9c62b4 (diff) | |
download | skalibs-16013c560e189bd0c4fb58e038c0f449542dba7a.tar.xz |
Add egidingroups sysdeps, change fd_close() to void and saving errno, propagate changes
Diffstat (limited to 'src/libstddjb/filecopy_unsafe.c')
-rw-r--r-- | src/libstddjb/filecopy_unsafe.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/src/libstddjb/filecopy_unsafe.c b/src/libstddjb/filecopy_unsafe.c index 68bcc5b..a6410c1 100644 --- a/src/libstddjb/filecopy_unsafe.c +++ b/src/libstddjb/filecopy_unsafe.c @@ -1,6 +1,5 @@ /* ISC license. */ -#include <errno.h> #include <fcntl.h> #include <skalibs/djbunix.h> @@ -10,23 +9,15 @@ int filecopy_unsafe (char const *src, char const *dst, unsigned int mode) int s = open2(src, O_RDONLY) ; if (s < 0) return 0 ; d = open3(dst, O_WRONLY | O_CREAT | O_TRUNC, mode) ; - if (d < 0) - { - int e = errno ; - fd_close(s) ; - errno = e ; - return 0 ; - } - if (fd_cat(s, d) < 0) - { - int e = errno ; - fd_close(d) ; - fd_close(s) ; - errno = e ; - return 0 ; - } + if (d < 0) goto errs ; + if (fd_cat(s, d) < 0) goto errd ; fd_close(d) ; fd_close(s) ; return 1 ; +errd: + fd_close(d) ; +errs: + fd_close(s) ; + return 0 ; } |