os_open: impl mch_open with libuv. ref #133

- use return value instead of open_req.result
- libuv uv_fs_open() returns `-errno` instead of always -1
- libuv always sets open_req.result to the return value, _except_ for OOM
  where it only sets the return value. So always use the return value.
- replace calls to mch_open macro.
- update call sites expecting -1 error
This commit is contained in:
Justin M. Keyes
2014-06-14 13:15:07 -04:00
parent bf6b0e3c0a
commit 180c84ed37
8 changed files with 53 additions and 37 deletions

View File

@@ -1575,19 +1575,19 @@ void write_viminfo(char_u *file, int forceit)
if (tempname != NULL) {
int fd;
/* Use mch_open() to be able to use O_NOFOLLOW and set file
/* Use os_open() to be able to use O_NOFOLLOW and set file
* protection:
* Unix: same as original file, but strip s-bit. Reset umask to
* avoid it getting in the way.
* Others: r&w for user only. */
# ifdef UNIX
umask_save = umask(0);
fd = mch_open((char *)tempname,
fd = os_open((char *)tempname,
O_CREAT|O_EXCL|O_WRONLY|O_NOFOLLOW,
(int)((old_info.stat.st_mode & 0777) | 0600));
(void)umask(umask_save);
# else
fd = mch_open((char *)tempname,
fd = os_open((char *)tempname,
O_CREAT|O_EXCL|O_WRONLY|O_NOFOLLOW, 0600);
# endif
if (fd < 0)