ssize_t os_write(int fd, void *buf, size_t nbyte, bool sync_flag) { int res = write(fd, buf, nbyte); if (res == -1) perror("write()"); if (sync_flag) os_fsync(fd); return res; }
w_rc_t sdisk_unix_t::sync() { if (_fd == FD_NONE) return RC(stBADFD); int n = os_fsync(_fd); /* fsync's to r/o files and devices can fail ok */ if (n == -1 && (errno == EBADF || errno == EINVAL)) n = 0; CHECK_ERRNO(n); return RCOK; }
/* * fsync */ CAMLprim value ml_fsync(value v_fd) { CAMLparam1(v_fd); int r = 0; OS_FD fd; if (OS_IS_FD(v_fd)) fd = Fd_val(v_fd); else caml_invalid_argument("fsync"); caml_enter_blocking_section(); r = os_fsync(fd); caml_leave_blocking_section(); if (0 != r) uerror("fsync",Nothing); CAMLreturn(Val_unit); }
static void d_doPrint( d_configuration config, const char* format, va_list args) { char description[512]; if(config->tracingOutputFile){ os_vsnprintf(description, sizeof(description)-1, format, args); description [sizeof(description)-1] = '\0'; fprintf(config->tracingOutputFile, "%s", description); fflush(config->tracingOutputFile); if(config->tracingSynchronous){ os_fsync(config->tracingOutputFile); } } }