17 #include <drizzled/internal/my_sys.h>
22 #include <drizzled/error.h>
52 int my_sync(
int fd, myf my_flags)
58 #if defined(F_FULLFSYNC)
63 if (!(res= fcntl(fd, F_FULLFSYNC, 0)))
67 #if defined(HAVE_FDATASYNC)
72 }
while (res == -1 && errno == EINTR);
79 if ((my_flags & MY_IGNORE_BADFD) &&
80 (er == EBADF || er == EINVAL || er == EROFS))
84 else if (my_flags & MY_WME)
85 my_error(EE_SYNC, MYF(ME_BELL+ME_WAITTANG),
"unknown", errno);
91 static const char cur_dir_name[]= {FN_CURLIB, 0};
103 #ifdef NEED_EXPLICIT_SYNC_DIR
104 int my_sync_dir(
const char *dir_name, myf my_flags)
108 const char *correct_dir_name;
110 correct_dir_name= (dir_name[0] == 0) ? cur_dir_name : dir_name;
115 if ((dir_fd= my_open(correct_dir_name, O_RDONLY, MYF(my_flags))) >= 0)
117 if (my_sync(dir_fd, MYF(my_flags | MY_IGNORE_BADFD)))
119 if (my_close(dir_fd, MYF(my_flags)))
127 int my_sync_dir(
const char *, myf)
145 #ifdef NEED_EXPLICIT_SYNC_DIR
146 int my_sync_dir_by_file(
const char *file_name, myf my_flags)
148 char dir_name[FN_REFLEN];
149 size_t dir_name_length;
150 dirname_part(dir_name, file_name, &dir_name_length);
151 return my_sync_dir(dir_name, my_flags);
154 int my_sync_dir_by_file(
const char *, myf)
TODO: Rename this file - func.h is stupid.