| #define GIT__WIN32_NO_HIDE_FILEOPS |
| #include "fileops.h" |
| #include <errno.h> |
| |
| int git__unlink(const char *path) |
| { |
| chmod(path, 0666); |
| return unlink(path); |
| } |
| |
| int git__mkstemp(char *template) |
| { |
| char *file = mktemp(template); |
| if (file == NULL) |
| return -1; |
| return open(file, O_RDWR | O_CREAT | O_BINARY, 0600); |
| } |
| |
| int git__fsync(int fd) |
| { |
| HANDLE fh = (HANDLE)_get_osfhandle(fd); |
| |
| if (fh == INVALID_HANDLE_VALUE) { |
| errno = EBADF; |
| return -1; |
| } |
| |
| if (!FlushFileBuffers(fh)) { |
| DWORD code = GetLastError(); |
| |
| if (code == ERROR_INVALID_HANDLE) |
| errno = EINVAL; |
| else |
| errno = EIO; |
| |
| return -1; |
| } |
| |
| return 0; |
| } |
| |