1*2e9d4914SAndroid Build Coastguard Worker /* ---------------------------------------------------------------------------- 2*2e9d4914SAndroid Build Coastguard Worker libconfig - A library for processing structured configuration files 3*2e9d4914SAndroid Build Coastguard Worker Copyright (C) 2005-2018 Mark A Lindner 4*2e9d4914SAndroid Build Coastguard Worker 5*2e9d4914SAndroid Build Coastguard Worker This file is part of libconfig. 6*2e9d4914SAndroid Build Coastguard Worker 7*2e9d4914SAndroid Build Coastguard Worker This library is free software; you can redistribute it and/or 8*2e9d4914SAndroid Build Coastguard Worker modify it under the terms of the GNU Lesser General Public License 9*2e9d4914SAndroid Build Coastguard Worker as published by the Free Software Foundation; either version 2.1 of 10*2e9d4914SAndroid Build Coastguard Worker the License, or (at your option) any later version. 11*2e9d4914SAndroid Build Coastguard Worker 12*2e9d4914SAndroid Build Coastguard Worker This library is distributed in the hope that it will be useful, but 13*2e9d4914SAndroid Build Coastguard Worker WITHOUT ANY WARRANTY; without even the implied warranty of 14*2e9d4914SAndroid Build Coastguard Worker MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15*2e9d4914SAndroid Build Coastguard Worker Lesser General Public License for more details. 16*2e9d4914SAndroid Build Coastguard Worker 17*2e9d4914SAndroid Build Coastguard Worker You should have received a copy of the GNU Library General Public 18*2e9d4914SAndroid Build Coastguard Worker License along with this library; if not, see 19*2e9d4914SAndroid Build Coastguard Worker <http://www.gnu.org/licenses/>. 20*2e9d4914SAndroid Build Coastguard Worker ---------------------------------------------------------------------------- 21*2e9d4914SAndroid Build Coastguard Worker */ 22*2e9d4914SAndroid Build Coastguard Worker 23*2e9d4914SAndroid Build Coastguard Worker #include "wincompat.h" 24*2e9d4914SAndroid Build Coastguard Worker 25*2e9d4914SAndroid Build Coastguard Worker #if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ 26*2e9d4914SAndroid Build Coastguard Worker || defined(WIN64) || defined(_WIN64) || defined(__WIN64__) 27*2e9d4914SAndroid Build Coastguard Worker 28*2e9d4914SAndroid Build Coastguard Worker #include <errno.h> 29*2e9d4914SAndroid Build Coastguard Worker #include <io.h> 30*2e9d4914SAndroid Build Coastguard Worker fsync(int fd)31*2e9d4914SAndroid Build Coastguard Workerint fsync(int fd) 32*2e9d4914SAndroid Build Coastguard Worker { 33*2e9d4914SAndroid Build Coastguard Worker HANDLE h = (HANDLE)_get_osfhandle(fd); 34*2e9d4914SAndroid Build Coastguard Worker if(h == INVALID_HANDLE_VALUE) 35*2e9d4914SAndroid Build Coastguard Worker { 36*2e9d4914SAndroid Build Coastguard Worker errno = EBADF; 37*2e9d4914SAndroid Build Coastguard Worker return(-1); 38*2e9d4914SAndroid Build Coastguard Worker } 39*2e9d4914SAndroid Build Coastguard Worker 40*2e9d4914SAndroid Build Coastguard Worker if(!FlushFileBuffers(h)) 41*2e9d4914SAndroid Build Coastguard Worker { 42*2e9d4914SAndroid Build Coastguard Worker DWORD err = GetLastError(); 43*2e9d4914SAndroid Build Coastguard Worker switch(err) 44*2e9d4914SAndroid Build Coastguard Worker { 45*2e9d4914SAndroid Build Coastguard Worker case ERROR_ACCESS_DENIED: 46*2e9d4914SAndroid Build Coastguard Worker return(0); 47*2e9d4914SAndroid Build Coastguard Worker 48*2e9d4914SAndroid Build Coastguard Worker case ERROR_INVALID_HANDLE: 49*2e9d4914SAndroid Build Coastguard Worker errno = EINVAL; 50*2e9d4914SAndroid Build Coastguard Worker break; 51*2e9d4914SAndroid Build Coastguard Worker 52*2e9d4914SAndroid Build Coastguard Worker default: 53*2e9d4914SAndroid Build Coastguard Worker errno = EIO; 54*2e9d4914SAndroid Build Coastguard Worker } 55*2e9d4914SAndroid Build Coastguard Worker return(-1); 56*2e9d4914SAndroid Build Coastguard Worker } 57*2e9d4914SAndroid Build Coastguard Worker 58*2e9d4914SAndroid Build Coastguard Worker return(0); 59*2e9d4914SAndroid Build Coastguard Worker } 60*2e9d4914SAndroid Build Coastguard Worker 61*2e9d4914SAndroid Build Coastguard Worker #endif // WIN32 || WIN64 62