mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-11 05:14:46 -04:00
Tweak the evutil_open_closeonexec patch to work on windows, old unixes.
Windows doesn't have a mode_t as far as I can tell. Some unixes, iirc, don't like three-argument open without O_CREAT.
This commit is contained in:
parent
d2b5f7223a
commit
03dce42dfa
7
evutil.c
7
evutil.c
@ -88,7 +88,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
int
|
int
|
||||||
evutil_open_closeonexec(const char *pathname, int flags, mode_t mode)
|
evutil_open_closeonexec(const char *pathname, int flags, unsigned mode)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
|
|
||||||
@ -96,7 +96,10 @@ evutil_open_closeonexec(const char *pathname, int flags, mode_t mode)
|
|||||||
flags |= O_CLOEXEC;
|
flags |= O_CLOEXEC;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
fd = open(pathname, flags, mode);
|
if (flags & O_CREAT)
|
||||||
|
fd = open(pathname, flags, (mode_t)mode);
|
||||||
|
else
|
||||||
|
fd = open(pathname, flags);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -161,7 +161,10 @@ char EVUTIL_TOLOWER(char c);
|
|||||||
#define EVUTIL_UPCAST(ptr, type, field) \
|
#define EVUTIL_UPCAST(ptr, type, field) \
|
||||||
((type *)(((char*)(ptr)) - evutil_offsetof(type, field)))
|
((type *)(((char*)(ptr)) - evutil_offsetof(type, field)))
|
||||||
|
|
||||||
int evutil_open_closeonexec(const char *pathname, int flags, mode_t mode);
|
/* As open(pathname, flags, mode), except that the file is always opened with
|
||||||
|
* the close-on-exec flag set. (And the mode argument is mandatory.)
|
||||||
|
*/
|
||||||
|
int evutil_open_closeonexec(const char *pathname, int flags, unsigned mode);
|
||||||
|
|
||||||
int evutil_read_file(const char *filename, char **content_out, size_t *len_out,
|
int evutil_read_file(const char *filename, char **content_out, size_t *len_out,
|
||||||
int is_binary);
|
int is_binary);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user