Introduce grub_util_file_sync and use it instead of fsync(fileno(f)).

Fixes build for windows.
This commit is contained in:
Vladimir Serbinenko 2013-11-27 14:13:50 +01:00
parent b1f742c103
commit 4f9541226c
10 changed files with 37 additions and 15 deletions

View file

@ -1,3 +1,8 @@
2013-11-27 Vladimir Serbinenko <phcoder@gmail.com>
Introduce grub_util_file_sync and use it instead of fsync(fileno(f)).
Fixes build for windows.
2013-11-27 Vladimir Serbinenko <phcoder@gmail.com> 2013-11-27 Vladimir Serbinenko <phcoder@gmail.com>
* gentpl.py: Don't generate platform-dependent conditionals for * gentpl.py: Don't generate platform-dependent conditionals for

View file

@ -485,6 +485,15 @@ grub_util_fd_sync (grub_util_fd_t fd)
} }
} }
void
grub_util_file_sync (FILE *f)
{
fflush (f);
if (!allow_fd_syncs)
return;
fsync (fileno (f));
}
void void
grub_util_disable_fd_syncs (void) grub_util_disable_fd_syncs (void)
{ {

View file

@ -200,6 +200,15 @@ grub_util_fd_sync (grub_util_fd_t fd)
fsync (fd); fsync (fd);
} }
void
grub_util_file_sync (FILE *f)
{
fflush (f);
if (!allow_fd_syncs)
return;
fsync (fileno (f));
}
void void
grub_util_disable_fd_syncs (void) grub_util_disable_fd_syncs (void)
{ {

View file

@ -584,12 +584,16 @@ grub_util_fopen (const char *path, const char *mode)
return ret; return ret;
} }
int fsync (int fno) void
grub_util_file_sync (FILE *f)
{ {
HANDLE hnd; HANDLE hnd;
hnd = (HANDLE) _get_osfhandle (fno);
fflush (f);
if (!allow_fd_syncs)
return;
hnd = (HANDLE) _get_osfhandle (fileno (f));
FlushFileBuffers (hnd); FlushFileBuffers (hnd);
return 0;
} }
int int

View file

@ -66,4 +66,6 @@ FILE *
grub_util_fopen (const char *path, const char *mode); grub_util_fopen (const char *path, const char *mode);
#endif #endif
void grub_util_file_sync (FILE *f);
#endif /* GRUB_EMU_MISC_H */ #endif /* GRUB_EMU_MISC_H */

View file

@ -79,10 +79,4 @@ grub_util_utf8_to_tchar (const char *in);
char * char *
grub_util_tchar_to_utf8 (LPCTSTR in); grub_util_tchar_to_utf8 (LPCTSTR in);
#ifdef __MINGW32__
int fsync (int fno);
#endif
#endif #endif

View file

@ -53,7 +53,8 @@ grub_util_create_envblk_file (const char *name)
grub_util_error (_("cannot write to `%s': %s"), namenew, grub_util_error (_("cannot write to `%s': %s"), namenew,
strerror (errno)); strerror (errno));
fsync (fileno (fp));
grub_util_file_sync (fp);
free (buf); free (buf);
fclose (fp); fclose (fp);

View file

@ -188,7 +188,7 @@ write_envblk (const char *name, grub_envblk_t envblk)
grub_util_error (_("cannot write to `%s': %s"), name, grub_util_error (_("cannot write to `%s': %s"), name,
strerror (errno)); strerror (errno));
fsync (fileno (fp)); grub_util_file_sync (fp);
fclose (fp); fclose (fp);
} }

View file

@ -491,8 +491,7 @@ grub_install_make_image_wrap (const char *dir, const char *prefix,
grub_install_make_image_wrap_file (dir, prefix, fp, outname, grub_install_make_image_wrap_file (dir, prefix, fp, outname,
memdisk_path, config_path, memdisk_path, config_path,
mkimage_target, note, comp); mkimage_target, note, comp);
fflush (fp); grub_util_file_sync (fp);
grub_util_fd_sync (fileno (fp));
fclose (fp); fclose (fp);
} }

View file

@ -285,8 +285,7 @@ main (int argc, char *argv[])
arguments.image_target, arguments.note, arguments.image_target, arguments.note,
arguments.comp); arguments.comp);
fflush (fp); grub_util_file_sync (fp);
fsync (fileno (fp));
fclose (fp); fclose (fp);
if (arguments.dir) if (arguments.dir)