1/* fsync.c - Synchronize a file's in-core state with storage device.
2 *
3 * Copyright 2015 Ranjan Kumar <ranjankumar.bth@gmail.comi>
4 *
5 * No Standard.
6
7USE_FSYNC(NEWTOY(fsync, "<1d", TOYFLAG_BIN))
8
9config FSYNC
10  bool "fsync"
11  default y
12  help
13    usage: fsync [-d] [FILE...]
14
15    Synchronize a file's in-core state with storage device.
16
17    -d	Avoid syncing metadata.
18*/
19
20#define FOR_fsync
21#include "toys.h"
22
23static void do_fsync(int fd, char *name)
24{
25  if (((toys.optflags & FLAG_d) ? fdatasync(fd) : fsync(fd)))
26    perror_msg("can't sync '%s'", name);
27}
28
29void fsync_main(void)
30{
31  loopfiles_rw(toys.optargs, O_RDONLY|O_NOATIME|O_NOCTTY|O_CLOEXEC,
32      0, 0, do_fsync);
33}
34